簡單來說,是的,DeepSeek的思維鏈展示的就是真實的思考過程。
我覺得題主問這個問題是因為DeepSeek,包括其他會深度思考的模型介面設計給人一個誤解,就是思考和輸出是分開的,有原則上區別的:
但是這隻是網頁展示的不同,對於大語言模型來說,思考的過程和輸出的過程並沒有本質的不同,都是在接受到prompt之後對token的預測。只是思考的過程前後有特殊的token這個標籤標起來了,所以在設計網頁的時候可以把他們當做小字輸出。
但是這種展示上的不同不應該給用戶帶來誤解,無論是思考還是輸出,本質上都是模型的輸出。只是模型通過訓練(強化學習或者監督學習),訓會了在輸出最終結果之前,先輸出一些思考的token。
DeepSeek,包括o1, o3, Sonnet 3.7, Grok 3這一系列帶深度思考的模型,本質上都是對思維鏈這個技巧的應用。在2022年的時候,就有文章討論過這個技巧,最著名的就是那個Let's think step by step。後來還有generated knowledge approach,least-to-most approach 現在去看prompt engineer的教程,這些都是作為prompt的高級技巧來介紹的:先生成一些基礎的知識,然後逐步深入,在這個基礎上生成最終答案。
而深度思考模型,是通過訓練讓大語言模型能夠自發的選擇這樣的路徑,而不用通過人的prompt——人的prompt說到底還是更符合人的習慣和邏輯,而這未必符合大語言模型的邏輯。
因為大語言模型容易給人一種「像人」的感覺,但是本質上起作用的還是注意力機制和next token prediction,也就是大語言模型始終是在根據前面的內容提示在預測下一個token應該是什麼。那麼這意味著「過程」是重要的。
對我們人類來說,12+19 = 31是自然的,我們說:
我們先計算2+9 = 11, 哦,最末一位是1,然後十位數我們要進一位,所以第二位應該是1+1+1=3,最終結果是31.
和我們直接給出31的答案是一樣的,人類的知識不會因為你給出步驟而發生實質性變化。
但是對大語言模型來說,這兩者是很不一樣的。如果大語言模型要直接給出正確的結果,那就需要先預測出來3這個token,而為了預測出來3這個token,模型必須很好的把注意力分配給1,1,+,2和9,然後知道「因為2和9的存在,所以下一個token是3而不是2」,這意味著你需要找個地方來儲存這個中間結果,如果沒有地方儲存的話,你需要直接預測就對注意力的容錯特別小。而當預測出來3之後,又需要知道「因為2和9的存在,並且最近的這一位token是3,所以下一位應該是1」。
但是用思維鏈的話,思維鏈會試圖先拆分這個加法:
我們先計算2+9 = 11, 最末一位是1,所以十位數我們要進一位。那麼十位數應該是1+1+1=3,最終結果是31.
先計算2+9,這個負擔是很輕的,可以直接預測出來11,因為11是兩位數,所以自然的就可以預測出來後面那句關於「進位」的解釋。那麼在預測十位數的時候,因為進位這個提示和前面的十位數的兩個1,更容易的預測出1+1+1=3這個式子,那麼接下來把3和1組合成31也就順理成章了。
每一個token被預測出來,它背後的運算都是包括了這個token之前所有的token。在這個例子裡面,思維鏈就承載了儲存中間結果,增大注意力分配容錯性,促使注意力收斂到正確結果的作用。
所以大語言模型生成的過程就有點像左腳踩右腳上天的過程,通過不斷地生成中間的token,平滑了注意力分配,從而更容易生成正確的結果。當然現在的大語言模型在這方面做的遠遠比上面的例子更複雜,像DS的Aha moment (啊哈,我好像發現了一個更好的方法),Anthoropic的reflexion(且慢,我需要仔細想一想這段代碼是不是正確的),都是通過訓練的技巧自動誘導出來的。
當然談到這裡可能會說,那為什麼要讓LLM生成人類可以理解的token呢?直接用張量思考不就好了?說到底還不是為了模擬人類思維?
這個問題就比較前沿了。因為現在也有Continuous CoT這個研究方向,真的就是「用張量思考」,直接用last hidden state 來作為新的輸入,思考全程都是人看不懂向量,只有在最後一步會用softmax切分出token的概率。
這個看起來很炫,但是仔細想一下還是好壞都有的。不說「可解釋性」這種人為的標準,就說最終結果,Continuous的CoT並不是全面壓倒目前的人話思考。
背後有一個這樣的權衡:
連續的CoT優點在於,token的空間天然是連續的——人類世界只有貓和狗,不存在31%的貓+69%的狗這種token,但是在張量空間是連續的,這樣的東西沒有理由不存在,所以當LLM用人類的語言思考的時候,相當於每預測一個token,都要用人類的標準切分一次概率,然後用人類能看懂的字寫出來,這個切分的過程會損失掉一些資訊,但是直接用張量思考就沒這個問題。
但是反過來說,你最終還是要變成人類能看懂的語言的。每預測一個token就用softmax把張量空間離散化,會幫助最終結果收斂,在思維過程中出現的噪音和擾動在離散化的過程中會自動的切掉——你預測的張量位置是31%的貓+69%的狗,但是顯示成人類能理解的token就是「狗」,那麼相當於31%的貓就被切掉了,那麼這31%是噪音還是額外的資訊?其實是兼而有之的。
從結果看,COCONUT在數學這種對token切分要求很高的任務上(數學對概率的分佈要求很陡峭,因為只要錯了一點點,整個全部都是錯的),還是弱於傳統的CoT,但是在推理任務上有優勢。
Hao, Shibo, et al. "Training large language models to reason in a continuous latent space."arXiv preprint arXiv:2412.06769(2024).
Liu, Jiacheng, et al. "Generated knowledge prompting for commonsense reasoning."arXiv preprint arXiv:2110.08387(2021).
Wei, Jason, et al. "Chain-of-thought prompting elicits reasoning in large language models."Advances in neural information processing systems35 (2022): 24824-24837.
Zhou, Denny, et al. "Least-to-most prompting enables complex reasoning in large language models."arXiv preprint arXiv:2205.10625(2022).