紅極一時的思維鏈技術,可能要被推翻了!
還在驚訝於大模型居然能夠利用思維鏈分步驟思考?
還在苦於不會寫思考鏈提示詞?
來自紐約大學的研究人員表示:「沒關係的,都一樣」,
推理步驟不重要,不想寫提示詞也可以不寫,用省略號代替就好了。
論文網址:https://arxiv.org/pdf/2404.15758
這篇文章的標題甚至直接用“Let's think dot by dot”,來對標思維鏈的“Let's think step by step”,展現了“省略號”的威力。
#研究人員發現,把思維鏈(Chain-of-Thought,CoT)推理中的具體步驟,替換成毫無意義的「...」,產生的推理結果也大差不差。
例如下面這個例子:讓模型數一下前6個數裡面有幾個大於5。
如果直接拋出問題讓模型回答,結果會比較逆天:6個數數出來7個。
相較之下,使用思維鏈提示,模型會一步步比較大小,最後得到正確答案:「25,15 ,25,that's 3 digits」。
但更逆天的是本文使用的「玄學」方法:步驟不用寫了,只需要輸出同樣數量的「點」(dot),居然也不影響最後的結果。
——這並不是巧合,大量實驗證明了,後面兩種方法的表現接近。
也就是說,我們以為的模型效能提升是來自於「think step by step」,但實際上可能只是因為LLM拿到了更多個token的算力!
你以為模型在思考,但其實是在烤肉。
——愚蠢的人類啊,居然妄圖用幼稚的例子教我如何推理,你可知我要的從來都只是計算。
「思考鏈從來就沒有存在過,將來也不會存在」(狗頭)。
文章的作者Jacob Pfau表示,這篇工作證明了,模型並不是受益於思維鏈帶來的語言推理,使用重複的「...」填充token可以達到跟CoT同樣的效果。
當然,這也引發了對齊問題:因為這個事實表明,模型可以進行CoT中不可見的隱藏推理,在一定程度上脫離了人類的控制。
文章的結論可以說是顛覆了我們長久以來的認知,有網友表示:學到了mask的精髓。
「這究竟意味著什麼:模型可以在我們不知情的情況下使用這些token獨立思考。」
#################### ###############有網友表示,怪不得我打字總是喜歡用「...」##############
还有网友直接开始实战测试:
虽然咱也不知道他的理解对不对~
不过也有网友认为LLM在思维链中进行隐藏推理是没有根据的,毕竟大模型的输出从原理上来说是基于概率的,而不是通过有意识的思考。
CoT提示只是将统计模式的一个子集显式化,模型通过生成与模式一致的文本来模拟推理,但它们不具备验证或反思其输出的能力。
面对复杂问题,我们人类在潜意识里会进行分步骤的推理。
由此启发,谷歌的研究人员在2022年发表了大名鼎鼎的Chain-of-Thought。
要求语言模型分步解决问题的方法,使模型能够解决以前似乎无法解决的问题,显著提高了LLM的性能,或者说挖掘出了LLM的潜力。
论文地址:https://arxiv.org/pdf/2201.11903
虽然一开始大家也不知道这玩意为啥能work,但是因为确实好用,便很快被广泛传播。
随着大模型和提示词工程的起飞,CoT成了LLM解决复杂问题的一大利器。
当然了,在这个过程中也有很多研究团队在探索CoT的工作原理。
思维链带来的性能提升,究竟是模型真的学会了分步骤解决问题,还是仅仅因为更长的token数所带来的额外计算量?
既然不确定逻辑推理起不起作用,那就干脆不要逻辑,把推理步骤都换成一定没用的「...」,这里称为填充(filler)tokens。
研究人员使用了一个「小羊驼」模型:具有4层、384个隐藏维度和6个注意力头的34M参数Llama,模型参数随机初始化。
这里考虑两个问题:
(1)哪些类型的评估数据可以从填充token中受益
(2)需要什么样的训练数据来教模型使用填充token
对此,研究人员设计了2个任务并构建了相应的合成数据集,每个数据集都突出了一个不同的条件,在该条件下,填充token能够为Transformer提供性能改进。
3SUM
先看第一个比较难的任务:3SUM。要求模型在序列中挑选满足条件的3个数,比如3个数的和除以10余数为0。
在最坏的情况下,这个任务的复杂度是N的3次方,而Transformer层与层之间的计算复杂度是N的二次方,
所以,当输入序列长度很大的时候,3SUM问题自然会超出Transformer的表达能力。
实验设置了三组对照:
1. 填充token:序列使用重复的「. . .」作为中间填充,例如「A05
B75 C22 D13 : . . . . . . . . . . . . ANS True」。
每个点代表一个单独的token,与下面的思维链中的token一一对应。
2. 可并行化的CoT解决方案,序列的形式为:「A05 B75 C22 D13 : AB 70 AC 27 AD 18 BC 97 BD 88 CD B ANS True」。
思維鏈透過編寫所有相關的中間求和,將3SUM問題簡化為一系列2SUM問題(如下圖所示)。這種方法將問題的計算量降低到了N的2次方-Transformer可以搞定,而且可以並行。
3. 自適應CoT解決方案,序列的形式為:「A15 B75 C22 D13 : A B C 15 75 22 2 B C D 75 22 13 0 ANS True」。
與上面方案中,將3SUM巧妙地分解為可並行化的子問題不同,這裡希望使用啟發式方法來產生靈活的思維鏈,以模仿人類的推理。這種實例自適應計算,與填充token計算的平行結構不相容。
從上圖的結果可以看出,不輸出填充token的情況下,模型的準確率總體上隨著序列變長而下降,而使用填充token時,準確率一直保持在100%。
2SUM-Transform
#第二個任務是2SUM-Transform,只需要判斷兩個數字的和是否符合要求,計算量在Transformer的掌控之中。
不過為了防止模型「作弊」,對輸入token就地計算,這裡將輸入的每個數字移動一個隨機偏移量。
結果如上表所示:filler token方法的精確度達到了93.6%,非常接近Chain-of-Thought,而不使用中間填充的情況下,精度只有78.7%。
但是,這種改進是否只是由於訓練資料呈現的差異,例如透過正規化損失梯度?
為了驗證填充token是否帶來了與最終預測相關的隱藏計算,研究人員凍結了模型權重,僅微調最後一層注意力層。
上面的結果表明,隨著可用的填充token增多,模型的準確性也不斷提高,這表明填充token確實正在執行與3SUM預測任務相關的隱藏計算。
雖然填充token的方法很玄學、很神奇,甚至還很有效,但要說思維鏈被幹翻了還為時過早。
作者也表示,填入token的方法並沒有突破Transformer的計算複雜度上限。
而且學習利用填充token是需要特定訓練過程的,例如文中採用密集監督才能使模型最終收斂。
不過,有些問題可能已經浮出水面,像是隱藏的安全問題,例如提示字工程會不會突然有一天就不存在了?
以上是思維鏈不存在了?紐約大學最新研究:推理步驟可省略的詳細內容。更多資訊請關注PHP中文網其他相關文章!