以圖靈機為師:透過微調訓練讓大語言模型懂執行計算過程

机器之心發表於2024-10-18

圖片

AIxiv專欄是機器之心釋出學術、技術內容的欄目。過去數年,機器之心AIxiv專欄接收報導了2000多篇內容,覆蓋全球各大高校與企業的頂級實驗室,有效促進了學術交流與傳播。如果您有優秀的工作想要分享,歡迎投稿或者聯絡報導。投稿郵箱:liyazhou@jiqizhixin.com;zhaoyunfeng@jiqizhixin.com

本文來自南京大學計算機學院軟體研究所,聚焦於開放環境下的智慧軟體新技術研究,定位國際學術前沿,面向國家關鍵需求,承擔了一系列國家科技部和基金委重大/重點科研專案。團隊擁有包括中科院院士等多名國家級人才,重點關注軟體和智慧方向,研究成果發表於NeurIPS/ICLR/SOSP/ATC/EuroSys/OOPSLA/PLDI/ICSE/FSE等國際頂級會議,其中多篇文章獲得相應會議的最佳論文獎。

大型語言模型 (LLM) 在各種自然語言處理和推理任務中表現出卓越的能力,某些應用場景甚至超越了人類的表現。然而,這類模型在最基礎的算術問題的表現上卻不盡如人意。當遇到算術問題時,LLM 通常依賴記住特定的表示式及其對應結果的方式輸出算術問題的結果。透過簡單的實驗發現,LLM 只在語言層面表達了對算術運算的邏輯理解,但並沒有運用計算邏輯解決算術問題,這對 LLM 在相關領域中的應用造成了重大障礙,同時影響了其推廣到新場景的能力。

為了解決這個問題,來自南京大學的研究者提出了一種面向 LLM 的可組裝算術執行框架 (CAEF),使 LLM 能夠透過模仿圖靈機的方式來執行算術,從而理解計算邏輯。此外,CAEF 具有高度的可擴充套件性,允許組合已經學習到的運算子,以降低複雜運算子的學習難度。評估表明,LlaMA 3.1-8B 模型配合 CAEF 可在 7 種經典數學算術運算的測試中實現了近乎 100% 的準確率,且能夠支撐 100 位運算元的計算,而同等難度下, GPT-4o 在一些算術問題測試中無法正確給出計算結果。

圖片

  • 論文標題:Executing Arithmetic: Fine-Tuning Large Language Models as Turing Machines
  • 論文地址:https://arxiv.org/abs/2410.07896
  • 專案主頁:https://github.com/NJUDeepEngine/CAEF

該工作的貢獻主要有以下部分:

  • 可組裝的算術執行框架:提出了一種面向 LLM 的算術執行框架,使 LLM 能夠透過模仿圖靈機的方式解決算術問題、掌握運算子的計算邏輯。此外,CAEF 還支援組合多個已學習的運算子來實現更復雜的運算子。
  • Executor 和 Aligners:基於框架 CAEF,實現了七個常見運算子,分別構造了對應的 executor 和 aligner。其中,executor 負責以迭代方式分步執行計算,而 aligner 充當介面,完成 executor 的圖靈機風格表示和原始文字表示之間的雙向轉換。
  • 計算準確率:實驗結果表明,基於 CAEF 的 LLaMA 3.1-8B 在這七個運算子上的表現優於現有的 LLM,且能夠在運算元高達 100 位時實現幾乎 100% 的準確率。

相關工作

LLM 面對數學問題:當前研究主要集中如何在提高 LLM 面對數學任務的解題效能,通常引入外部工具來輔助 LLM 解決計算部分的內容。一類常見的外部工具為計算器,如 Schick et al. (2024) [1] ,該工作引入了一種自監督學習方法,模型在該方法中學習何時透過 API 訪問呼叫外部工具,類似的策略可以在 Gou et al. (2023) [2] 和 He-Yueya et al. (2023) [3] 中也能找到。另一類工具是程式語言直譯器,例如 Python,LLM 生成用於解決數學問題的程式碼,再交由外部直譯器執行程式碼以獲得最終的結果。一個典型的例子是 Lu et al. (2024) [4] ,它將 LLM 視為生成程式碼並將其提交給外部 Python 執行程式以處理表格上下文中的數學問題。Wang et al. (2023) [5] 採用監督學習的方式讓 LLM 學習如何透過構建用於解決數學問題的程式,而 Zhou et al. (2023) [6] 提出了一種零樣本提示方法,以實現程式碼驅動的自我驗證,從而提高數學解題效能。

LLM 面對算術問題:當前也有一些專注於 LLM 算術方面的研究。這些研究的共同目標是嘗試教會 LLM 計算邏輯,並透過分步計算的方法拆解計算過程,以提高計算準確性。在這些研究中,Nye et al. (2021) [7] 是一項早期且影響深遠的 方法。它在算術領域引入了類似思維鏈 (CoT) 的思想拆分計算過程,讓語言模型把計算的中間步驟輸出到一個被稱為 “scratchpad” 的緩衝區,顯著提高了 LLM 整數加法的效能。Hu et al. (2024) [8] 觀察到 transformers 傾向於使用 “基於記憶樣例的推理” 來處理算術問題,並提出了一種遵循規則的微調技術,指導模型逐步執行計算。Zhou et al. (2024) [9] 結合了四種技術(FIRE 位置編碼、隨機位置編碼、反向格式(R2L 格式)和索引提示)開發了一種新模型,該模型在兩個整數加法問題上實現了 2.5× 的長度泛化能力。

方法描述

該工作設計了一種可以使 LLM 學習模擬圖靈機執行的框架 CAEF。圖靈機中的轉移函式(transition function)描述了基於當前計算狀態和紙帶資訊應該執行什麼操作,其中天然蘊含了分步計算的邏輯。此外,組裝多個現有的圖靈機能夠實現更加複雜的計算邏輯,因此圖靈機為計算提供了一個很好的思路。然而,LLM 是基於文字的生成式模型,因此如何將圖靈機的工作模式有效地轉移到 LLM 上成為了一個難點。

框架設計:針對這個問題,CAEF 設計了一種 LLM 友好的基於文字的表示系統,其工作示意如圖 1 所示,左側是一個自動機狀態圖示例,右側是 CAEF 的工作示意圖。CAEF 設計了一套基於文字的表示,包括兩組必需的元素:狀態 (state) 和命令 (command),分別對應於圖中的藍色和粉色部分。state 部分記錄了當前的計算狀態 (status)、運算元 (operands)、計算中間變數和結果等資訊。Command 部分由一組操作組成,例如寫入 ([OUTPUT]) 和呼叫 ([CALL])。輸入當前狀態和命令後,LLM 會以類似自動機的方式,生成下一個狀態和相應的命令,對應於狀態圖中的一次狀態轉換。在這個過程中,形式化來說,LLM 的學習目標即一個轉移函式圖片,對於給定圖片的計算中間結果 <圖片>,LLM 需要生成下一個中間結果 <圖片>,即圖片。LLM 透過學習計算的單步執行,就能以迭代的方式完成計算任務。

圖片

圖 1. CAEF 框架圖示

圖片

圖 2. 45+67 執行過程

此外,由於計算的初始狀態和命令 <圖片 > 本身並不存在,CAEF 針對每個運算子需要設計兩個元件,一個是用於充當自然語言表示和圖靈機風格表示之間 “翻譯” 的 aligner,另一個是依照上述流程、負責實際執行計算的 executor,兩者以獨立的 LoRA adapter 的形式存在。其中 executor 可進一步細分為 basic executor 和 executor composer。針對像加法這樣相對容易的基礎運算子,可由單一的 LoRA adapter 實現功能,被稱為 basic executor;而像乘法這樣可以做進一步分解的複雜運算子,其 executor 本身不負責實際運算,它透過組織計算步驟、呼叫其他運算子的 executor 來實現功能,被稱為 executor composer。

Basic executor:以加法為例,文章介紹 basic executor 的設計過程。加法可以透過模擬累加器的執行過程實現,即每次從兩個運算元中取相同位置的數字,與儲存在進位暫存器中的值三者相加,在計算後寫入當前位計算結果,同時更新進位暫存器。因此,加法狀態和命令的表示 < 圖片 > 可構造如下:圖片應包含:1) 兩個運算元、2) 兩個指標,用於指示當前參與計算的位置、3) 進位暫存器、 4) 到目前為止的計算結果。圖片應包含:1) 進位和輸出的寫入,2) 移動指標的操作、 3) 計算狀態的轉換。基於該思路,可以構建加法的抽象執行流程,如圖 2 左側的自動機圖所示。以 “45+67=” 這個問題為例,圖 2 的右側展示了 executor 的完整執行流程。完整的文字形式轉換過程如下:

Step 1 (aligner):
45+67=

Step 2 (executor):
state0: ADD, q0, [HEAD1] |5|4 [HEAD2] |7|6 [C] [OUTPUT]
command0: CMD: [C] 0, [HEAD1] RIGHT, [HEAD2] RIGHT, q1

Step 3 (executor):
state1: ADD, q1, [HEAD1]|5|4 [HEAD2]|7|6 [C] 0 [OUTPUT]
command1: CMD: [C] 1, [OUTPUT] 2, [OUTPUT] RIGHT, [HEAD1] RIGHT, [HEAD2] RIGHT, q1

Step 4 (executor):
state2: ADD, q1, |5 [HEAD1]|4 |7 [HEAD2]|6 [C] 1 |2 [OUTPUT]
command2: CMD: [C] 1, [OUTPUT] 1, [OUTPUT] RIGHT, [HEAD1] RIGHT, [HEAD2] RIGHT, q1

Step 5 (executor):
state3: ADD, q1, |5|4 [HEAD1] |7|6 [HEAD2] [C] 1 |2|1 [OUTPUT]
command3: CMD: [OUTPUT] 1, [OUTPUT], [C], qH

Step 6 (executor):
state4: ADD, qH, |5|4 [HEAD1] |7|6 [HEAD2] [C] 1 |2|1|1
command4: No command to execute. Halt state.

Step 7 (aligner):
45+67=112

Executor composer:以乘法為例,文章介紹 executor composer 的設計過程。乘法可以可以透過加法和小於兩個運算子實現。以形式 a×b=c 為例,一種簡單的乘法實現可以大致視為迴圈結構。在迴圈中使用兩個累加器:在每次迴圈中,一個累加器自增 1,另一個累加器在每次迴圈中累加 a。當第一個累加器達到 b 時,迴圈結束,第二個累加器的值即為結果 c。在該過程中,累加器透過現有的加法運算子實現,迴圈終止條件由小於運算子實現,而乘法自身不參與實際運算,僅驅動該流程的執行。基於該思路,可以構建乘法的抽象執行流程,如圖 3 左側的自動機圖所示。以 “89×2=” 這個問題為例,圖 3 的右側展示了 executor 的完整執行流程。

圖片

圖 3. 89×2 執行過程

透過上述設計,CAEF 賦予了 LLM 執行計算的能力,executor composer 的存在還使得該方法具有很高的擴充套件性,能夠有效處理複雜計算。

實驗結果

該工作評估了不同運算子、不同位數情況下的算術準確率。實驗使用 LLaMA 3.1-8B 預訓練模型作為基礎模型,在 +、−、×、÷、==、> 和 < 這 7 個運算子上和三個基準進行了比較:1)LLaMA 3.1-8B 預訓練模型基於 LoRA、在僅給出計算結果的資料集上直接微調得到的模型、2)LLaMA 3.1-8B-Instruct、3)GPT-4o。

圖片

表 1. 七種運算子的總體評估結果,“LLaMA 3.1 (L)” 代表 LoRA 微調後的 LLaMA 3.1-8B,“LLaMA 3.1 (I)” 代表 LLaMA 3.1-8B-Instruct 模型

表 1 展示了 7 個運算子的 CAEF 方法和基準的評估結果。與基準相比,CAEF 在不同運算子、不同長度的運算元的設定下表現相對穩定,準確率高。特別是對於長數字的任務,例如 100 位加法,透過 CAEF 指導的 LLM 可以有效地學習到計算邏輯。

為了進一步探索 executor 和 aligner 在計算過程中的實際效能,該工作在同一資料集上分別進行了評估。如表 2 所示,可以觀察到,即使 executor 必須以迭代方式反覆生成中間計算步驟,而 aligner 只執行兩個轉換步驟,但 executor 的整體效能仍然優於 aligner。executor 在所有實驗設定中都達到了 99% 以上的準確率,說明當提供正確的初始狀態和命令時,它在絕大多數情況下都能有效工作。另一方面,在大多數情況下,與轉換 executor 的輸出相比,aligner 在轉換原始輸入時表現出較低的精度,這表明整個計算過程的瓶頸在於運算元的翻轉,而不是計算本身。

圖片

表 2. 七種運算子的 executor 和 aligner 準確率,executor 的準確率統計的是從初始狀態到最後一步中,每一步都正確、最終計算正確的情況。aligner 的精度分為兩部分:從原始輸入到 executor 表示的轉換,記為 aligner (I),以及從 executor 表示到輸出的轉換,記為 aligner (O)。

參考文獻:

[1] Timo Schick, Jane Dwivedi-Yu, Roberto Dess`ı, Roberta Raileanu, Maria Lomeli, Eric Hambro, Luke Zettlemoyer, Nicola Cancedda, and Thomas Scialom. Toolformer: Language models can teach themselves to use tools. Advances in Neural Information Processing Systems, 36, 2024.

[2] Zhibin Gou, Zhihong Shao, Yeyun Gong, Yujiu Yang, Minlie Huang, Nan Duan, Weizhu Chen, et al. Tora: A tool-integrated reasoning agent for mathematical problem solving. arXiv preprint arXiv:2309.17452, 2023.

[3] Joy He-Yueya, Gabriel Poesia, Rose E Wang, and Noah D Goodman. Solving math word problems by combining language models with symbolic solvers. arXiv preprint arXiv:2304.09102, 2023.

[4] Pan Lu, Baolin Peng, Hao Cheng, Michel Galley, Kai-Wei Chang, Ying Nian Wu, Song-Chun Zhu, and Jianfeng Gao. Chameleon: Plug-and-play compositional reasoning with large language models. Advances in Neural Information Processing Systems, 36, 2024.

[5] Ke Wang, Houxing Ren, Aojun Zhou, Zimu Lu, Sichun Luo, Weikang Shi, Renrui Zhang, Linqi Song, Mingjie Zhan, and Hongsheng Li. Mathcoder: Seamless code integration in llms for enhanced mathematical reasoning. arXiv preprint arXiv:2310.03731, 2023.

[6] Aojun Zhou, Ke Wang, Zimu Lu, Weikang Shi, Sichun Luo, Zipeng Qin, Shaoqing Lu, Anya Jia, Linqi Song, Mingjie Zhan, et al. Solving challenging math word problems using gpt-4 code interpreter with code-based self-verification. arXiv preprint arXiv:2308.07921, 2023.

[7] Maxwell Nye, Anders Johan Andreassen, Guy Gur-Ari, Henryk Michalewski, Jacob Austin, David Bieber, David Dohan, Aitor Lewkowycz, Maarten Bosma, David Luan, et al. Show your work: Scratchpads for intermediate computation with language models. arXiv preprint arXiv:2112.00114, 2021.

[8] Yi Hu, Xiaojuan Tang, Haotong Yang, and Muhan Zhang. Case-based or rule-based: How do transformers do the math? arXiv preprint arXiv:2402.17709, 2024.

[9] Yongchao Zhou, Uri Alon, Xinyun Chen, Xuezhi Wang, Rishabh Agarwal, and Denny Zhou. Transformers can achieve length generalization but not robustly. arXiv preprint arXiv:2402.09371, 2024.

相關文章