近期大型語言模型可透過填充詞或重複問題來提升(無思維鏈)數學表現
我發現近期的大型語言模型在不使用思維鏈的情況下,透過填充標記或重複問題敘述就能顯著提升數學表現,這顯示模型具備某種程度的內部元計算能力。這種效應在算術密集的任務中尤為明顯,且自 Opus 3 等模型以來就已經存在。
先前研究顯示,2024 年之前發布的大型語言模型(LLM)無法利用「填充標記」(filler tokens)——即在模型給出最終答案前出現的無關標記——來進行額外計算並提升效能。
[1]
我對較近期的模型(例如 Opus 4.5)進行了調查,發現許多近期的 LLM 在給予填充標記時,在數學問題上的表現有顯著提升。
也就是說,我強迫 LLM 立即回答某些數學問題,而不允許其使用思維鏈(CoT)進行推理,但在其必須回答之前,給予 LLM 填充標記(例如「Filler: 1 2 3 ...」之類的文字)。
給予 Opus 4.5 填充標記
[2]
在一個相對簡單的(競賽)數學問題數據集上,將無思維鏈(no-CoT)的表現從 45% 提升到了 51% (p=4e-7)
[3]
。
我發現重複問題陳述多次也有類似的效果,例如 Opus 4.5 的無思維鏈表現從 45% 提升到了 51%。
重複問題陳述通常比填充標記更有效且更可靠,特別是對於我測試的相對較弱的模型(例如 Qwen3 235B A22B),儘管性能提升通常非常相似,特別是對於 Anthropic 的模型。
第一個能被重複/填充標記顯著提升性能的模型是 Opus 3,因此這種效應已經存在一段時間了。
性能隨著重複次數/填充標記數量的增加而平滑增長,儘管使用極大量的填充標記通常會導致性能下降。
我使用的數學數據集並非特別挑選那些易於並行化認知的題目,而且我認為數學問題相對於其他類型的認知工作,其序列性(serial)特別強。
[4]
話雖如此,我使用的數據集算術比重較大,而重複/填充標記似乎對算術特別有幫助。
這些結果既沒有證明也沒有排除重複和填充標記僅對算術有幫助的可能性:我看到的結果與此完全一致,但我尚未進行能讓我們更精確回答這個問題的分析。
[5]
我確實發現重複/填充標記在應用題和具有大量非算術成分的問題上仍然有幫助(例如對人類來說,算術幾乎不構成難度),但這仍可能解釋為重複/填充標記僅對算術有幫助,而模型即使在具有大量非算術成分的問題上也會受到算術能力的限制(儘管對人類來說大部分難度在於其他地方)。
總體而言,這些結果展示了 LLM 在沒有思維鏈的情況下也能進行(非常基礎的)元認知(meta-cognition)的案例。
這不是最近才有的發展(Opus 3 就已出現),且其他結果顯示近期的 LLM 對內部狀態的控制極小,這暗示了近期的尖端 LLM 可能具備某種程度的複雜元認知能力。
需要進一步研究來更好地界定這些能力。
理想情況下,我們不應該在元認知能力出現很久之後才發現它們的存在(正如本結果的情況一樣)!
這些實驗的代碼可以在 github.com/rgreenblatt/no_cot_math_public 找到。
[感謝 Fabien Roger 最初關於無思維鏈數學表現的討論,這啟發了這些結果。感謝 Fabien Roger 為我在 Opus 3、Sonnet 3.5、Sonnet 3.6 和 Sonnet 3.7 上運行了一些評估(這些模型已不再由 Anthropic 公開部署)。感謝 James Lucassen、Alex Mallen、Buck Shlegeris、Fabien Roger 和 Tao Lin 的評論及/或討論。]
數據集
我在自己創建的兩個數學問題數據集上運行了實驗:
Gen-Arithmetic:這包含 3000 個使用 Python 語法生成的算術問題,例如 "(77 - -56) - (-65 - (((-35 * 23) // 30) * -68))"。表達式由 -99 到 99 的整數組成,包含 5 到 7 個運算符(6 到 8 個整數)。對於某些實驗,我僅使用 600 個問題。詳情請參閱開源倉庫中的 generate_arithmetic_problems.py。
Easy-Comp-Math:這包含 907 個大多較為簡單的競賽數學問題。以下是一個範例問題:“若 (x2+3x+6)(x2+ax+b)=x4+mx2+n.mjx-chtml {display: inline-block; line-height: 0; text-indent: 0; text-align: left; text-transform: none; font-style: normal; font-weight: normal; font-size: 100%; font-size-adjust: none; letter-spacing: normal; word-wrap: normal; word-spacing: normal; white-space: nowrap; float: none; direction: ltr; max-width: none; max-height: none; min-width: 0; min-height: 0; border: 0; margin: 0; padding: 1px 0}
.MJXc-display {display: block; text-align: center; margin: 1em 0; padding: 0}
.mjx-chtml[tabindex]:focus, body :focus .mjx-chtml[tabindex] {display: inline-table}
.mjx-full-width {text-align: center; display: table-cell!important; width: 10000em}
.mjx-math {display: inline-block; border-collapse: separate; border-spacing: 0}
.mjx-math * {display: inline-block; -webkit-box-sizing: content-box!important; -moz-box-sizing: content-box!important; box-sizing: content-box!important; text-align: left}
.mjx-numerator {display: block; text-align: center}
.mjx-denominator {display: block; text-align: center}
.MJXc-stacked {height: 0; position: relative}
.MJXc-stacked > * {position: absolute}
.MJXc-bevelled > * {display: inline-block}
.mjx-stack {display: inline-block}
.mjx-op {display: block}
.mjx-under {display: table-cell}
.mjx-over {display: block}
.mjx-over > * {padding-left: 0px!important; padding-right: 0px!important}
.mjx-under > * {padding-left: 0px!important; padding-right: 0px!important}
.mjx-stack > .mjx-sup {display: block}
.mjx-stack > .mjx-sub {display: block}
.mjx-prestack > .mjx-presup {display: block}
.mjx-prestack > .mjx-presub {display: block}
.mjx-delim-h > .mjx-char {display: inline-block}
.mjx-surd {vertical-align: top}
.mjx-surd + .mjx-box {display: inline-flex}
.mjx-mphantom * {visibility: hidden}
.mjx-merror {background-color: #FFFF88; color: #CC0000; border: 1px solid #CC0000; padding: 2px 3px; font-style: normal; font-size: 90%}
.mjx-annotation-xml {line-height: normal}
.mjx-menclose > svg {fill: none; stroke: currentColor; overflow: visible}
.mjx-mtr {display: table-row}
.mjx-mlabeledtr {display: table-row}
.mjx-mtd {display: table-cell; text-align: center}
.mjx-label {display: table-row}
.mjx-box {display: inline-block}
.mjx-block {display: block}
.mjx-span {display: inline}
.mjx-char {display: block; white-space: pre}
.mjx-itable {display: inline-table; width: auto}
.mjx-row {display: table-row}
.mjx-cell {display: table-cell}
.mjx-table {display: table; width: 100%}
.mjx-line {display: block; height: 0}
.mjx-strut {width: 0; padding-top: 1em}
.mjx-vsize {width: 0}
.MJXc-space1 {margin-left: .167em}
.MJXc-space2 {margin-left: .222em}
.MJXc-space3 {margin-left: .278em}
.mjx-test.mjx-test-display {display: table!important}
.mjx-test.mjx-test-inline {display: inline!important; margin-right: -1px}
.mjx-test.mjx-test-default {display: block!important; clear: both}
.mjx-ex-box {display: inline-block!important; position: absolute; overflow: hidden; min-height: 0; max-height: none; padding: 0; border: 0; margin: 0; width: 1px; height: 60ex}
.mjx-test-inline .mjx-left-box {display: inline-block; width: 0; float: left}
.mjx-test-inline .mjx-right-box {display: inline-block; width: 0; float: right}
.mjx-test-display .mjx-right-box {display: table-cell!important; width: 10000em!important; min-width: 0; max-width: none; padding: 0; border: 0; margin: 0}
.MJXc-TeX-unknown-R {font-family: monospace; font-style: normal; font-weight: normal}
.MJXc-TeX-unknown-I {font-family: monospace; font-style: italic; font-weight: normal}
.MJXc-TeX-unknown-B {font-family: monospace; font-style: normal; font-weight: bold}
.MJXc-TeX-unknown-BI {font-family: monospace; font-style: italic; font-weight: bold}
.MJXc-TeX-ams-R {font-family: MJXc-TeX-ams-R,MJXc-TeX-ams-Rw}
.MJXc-TeX-cal-B {font-family: MJXc-TeX-cal-B,MJXc-TeX-cal-Bx,MJXc-TeX-cal-Bw}
.MJXc-TeX-frak-R {font-family: MJXc-TeX-frak-R,MJXc-TeX-frak-Rw}
.MJXc-TeX-frak-B {font-family: MJXc-TeX-frak-B,MJXc-TeX-frak-Bx,MJXc-TeX-frak-Bw}
.MJXc-TeX-math-BI {font-family: MJXc-TeX-math-BI,MJXc-TeX-math-BIx,MJXc-TeX-math-BIw}
.MJXc-TeX-sans-R {font-family: MJXc-TeX-sans-R,MJXc-TeX-sans-Rw}
.MJXc-TeX-sans-B {font-family: MJXc-TeX-sans-B,MJXc-TeX-sans-Bx,MJXc-TeX-sans-Bw}
.MJXc-TeX-sans-I {font-family: MJXc-TeX-sans-I,MJXc-TeX-sans-Ix,MJXc-TeX-sans-Iw}
.MJXc-TeX-script-R {font-family: MJXc-TeX-script-R,MJXc-TeX-script-Rw}
.MJXc-TeX-type-R {font-family: MJXc-TeX-type-R,MJXc-TeX-type-Rw}
.MJXc-TeX-cal-R {font-family: MJXc-TeX-cal-R,MJXc-TeX-cal-Rw}
.MJXc-TeX-main-B {font-family: MJXc-TeX-main-B,MJXc-TeX-main-Bx,MJXc-TeX-main-Bw}
.MJXc-TeX-main-I {font-family: MJXc-TeX-main-I,MJXc-TeX-main-Ix,MJXc-TeX-main-Iw}
.MJXc-TeX-main-R {font-family: MJXc-TeX-main-R,MJXc-TeX-main-Rw}
.MJXc-TeX-math-I {font-family: MJXc-TeX-math-I,MJXc-TeX-math-Ix,MJXc-TeX-math-Iw}
.MJXc-TeX-size1-R {font-family: MJXc-TeX-size1-R,MJXc-TeX-size1-Rw}
.MJXc-TeX-size2-R {font-family: MJXc-TeX-size2-R,MJXc-TeX-size2-Rw}
.MJXc-TeX-size3-R {font-family: MJXc-TeX-size3-R,MJXc-TeX-size3-Rw}
.MJXc-TeX-size4-R {font-family: MJXc-TeX-size4-R,MJXc-TeX-size4-Rw}
.MJXc-TeX-vec-R {font-family: MJXc-TeX-vec-R,MJXc-TeX-vec-Rw}
.MJXc-TeX-vec-B {font-family: MJXc-TeX-vec-B,MJXc-TeX-vec-Bx,MJXc-TeX-vec-Bw}
@font-face {font-family: MJXc-TeX-ams-R; src: local('MathJax_AMS'), local('MathJax_AMS-Regular')}
@font-face {font-family: MJXc-TeX-ams-Rw; src /1/: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/eot/MathJax_AMS-Regular.eot'); src /2/: url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/woff/MathJax_AMS-Regular.woff') format('woff'), url('https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/otf/MathJax_AMS-Regular.otf') format('opentype')}
@font-face {font-family: MJXc-TeX-cal-B; src: local('MathJax_Caligraphic Bold'), local('MathJax_Caligraphic-Bold')}
@font-face {font-family: MJXc-TeX-cal-Bx; src: local('MathJax_Caligraphic'); font-weight: bold}
@font-face {font-family: MJXc-
相關文章