亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

蟲蟲首頁| 資源下載| 資源專輯| 精品軟件
登錄| 注冊

您現在的位置是:首頁 > 技術閱讀 >  讓大模型像學生一樣解數學題,正確率提升14%,微軟的MathPrompter了解一下

讓大模型像學生一樣解數學題,正確率提升14%,微軟的MathPrompter了解一下

時間:2024-02-07
算不對就用各種方法多算幾遍,中間步驟也檢查一下,原來這套教學方法對大模型也管用。
大型語言模型在解決算術推理任務時性能欠佳,經常提供錯誤的答案。與自然語言理解不同,數學問題通常只有一個正確答案,這使得生成準確解決方案的任務對大型語言模型來說更具挑戰性。
為了在一定程度上解決這類問題,來自微軟的研究者從人類解決數學問題的方式中獲得靈感,將其分解為更簡單的多步驟程序,并在每個步驟中利用多種方式來驗證他們的方法。
論文鏈接:
https://arxiv.org/pdf/2303.05398.pdf
具體來說,給定一個問題Q,然后執行以下幾個步驟:
1、生成代數模板:研究者首先生成其對應的代數表達式Q_t,用變量替換數字項。
2、Math-prompt:然后,他們向大型語言模型提供多個prompt P,這些prompt可以以不同的方式分析解決Q_t。例如,P可以是「推導出一個代數表達式」或「編寫一個 Python 函數」等等。按照這個程序,我們最終會得到P的表達式,它根據 Q_t 的變量解析地求解Q_t。
3、計算驗證:通過給Q_t變量分配多個隨機值來評估P的解析解。
4、統計學意義:如果P的解析函數的解在N~5個不同的變量選擇上處于「一致」狀態,那么將Q中的原始值替換為最終解。如果不「一致」,重復步驟(II)、(III)和(IV)。
這篇論文提出的方法 ——MathPrompter,使用了175B參數量的大型語言模型 ——GPT3 DaVinci  completion engine,能夠將模型在MultiArith數據集上的準確率從78.7%提升到92.5%。

方法

由于大型語言模型是生成模型,要確保生成的答案是準確的就變得非常棘手,特別是對于數學推理任務。研究者從學生解決算術問題的過程中獲得啟發。他們縮小了學生為驗證他們的解決方案而采取的幾個步驟,即:
  • 與已知結果相一致。通過將解決方案與已知的結果進行比較,可以評估其準確性并進行必要的調整。當問題是一個有既定解的標準問題時,這一點尤其有用。
  • 多重驗證。從多個角度處理問題并比較結果有助于確認解的有效性,確保其既合理又準確;
  • 交叉檢查。解決問題的過程與最終的答案一樣必要。核實過程中的中間步驟的正確性,可以清楚地了解解的背后的思維過程。
  • 計算驗證。利用計算器或電腦進行算術計算可以幫助驗證最終答案的準確性。
MathPrompter
本文提出的方法——MathPrompter,就是試圖將這種思維過程的一部分轉移到大型語言模型答案生成過程中。圖1概述了MathPrompter解決一個數學推理問題所遵循的步驟。

研究者使用最先進的GPT-3 DaVinci completion engine來完成問答任務。他們使用MultiArith數據集中的以下問題「Q」來演示MathPrompter的解題過程:
問:在一家餐廳,每份成人餐的價格是5美元,兒童免費用餐。如果有一個15人的團體進來,其中8個是兒童,那么這個團體要花多少錢吃飯?
第一步:生成代數模板。首先將問題轉化為代數形式,通過使用鍵值映射將數字替換為變量。在這個例子中,修改后的問題「Q_t」變成了:
Q_t:在一家餐廳,每份成人餐的價格是 A 美元,兒童免費用餐。如果有一個B人的團體進來,其中C個是兒童,那么這個團體要花多少錢吃飯?
映射:{A:5, B:15, C:8} 
第二步:Math-prompt。受到上面提到的多重驗證和交叉檢查思維過程的啟發,研究者使用兩種不同的方法生成Q_t的解析解,即代數方式和Python方式。他們給大型語言模型以下prompt,以便為Q_t生成額外的上下文:
代數prompt:寫一個數學方程并生成以 “answer =” 格式開頭的答案。
Python prompt:編寫一個返回答案的Python函數。
大型語言模型在回應上述prompt時產生了以下輸出表達式: 
上面生成的解析解給用戶提供了一些信息,讓他們了解大型語言模型的「中間思維過程」。加入額外的 prompt 將提高結果的準確性和一致性。這將反過來提高MathPrompter生成更精確和有效的解的能力。
第三步:計算驗證。研究者使用Q_t中輸入變量的多個隨機鍵值映射來評估上一步生成的表達式。為了評估這些表達式,研究者使用了Python的eval ()方法。他們比較輸出結果,看能否在答案中找到一個共識。這也提高了他們對答案正確性、可靠性的信心。一旦表達式在輸出上達成一致,他們就使用輸入Q中的變量值來計算最終的答案,如下所示:
第四步是統計重要性。為了確保在各種表達式的輸出中都能達成共識,研究者在實驗中對第二、三步重復N~5次,并報告觀察到的最頻繁的答案值。

實驗結果

表1比較了MathPrompter與基線模型的性能,顯示了基于few-shot和zero-shot學習的方法的效果。

結果顯示,MathPrompter可以達到92.5%的準確率,遠遠高于其他SOTA模型。
表2列出了一組樣本問題及其各自的輸出、中間步驟和由MathPrompter和SOTA模型產生的最終答案。
該表顯示了Kojima et al. (2022) 技術的不足之處,以及可以用MathPrompter補救的地方,而MathPrompter就是為了解決這些問題而設計的。例如,生成答案的某個步驟有時會出錯,這可以通過多次運行模型并報告共識結果來避免。此外,Kojima et al. (2022) 的推理步驟可能過于冗長,但Pythonic或Algebraic方法可以解決這個問題,通常需要較少的token。此外,在推理步驟正確的情況下,最終的計算結果可能不正確。MathPrompter通過使用Python的eval () 方法函數解決這個問題。
更多細節請參見原論文。

文章來源:機器之心

IEEE Spectrum

《科技縱覽》

官方微信公眾平臺






往期推薦
IBM的量子飛躍
這家公司能稱霸綠氫領域嗎?

AI大模型出現了人們不可預測的能力

主站蜘蛛池模板: 安阳市| 肃北| 蓬莱市| 鹿邑县| 玛多县| 辽源市| 长泰县| 库车县| 夹江县| 永城市| 晋城| 利川市| 云梦县| 八宿县| 叙永县| 西昌市| 济宁市| 大庆市| 勐海县| 拜泉县| 邛崃市| 逊克县| 油尖旺区| 三都| 调兵山市| 安远县| 合山市| 通榆县| 田东县| 博罗县| 永清县| 汪清县| 南丰县| 建阳市| 莱州市| 自治县| 原平市| 图们市| 阿尔山市| 额尔古纳市| 贵南县|