0
| 本文作者: 我在思考中 | 2021-11-02 09:59 |

現在小學數學題有多難?小學生拍圖上傳作題App找不到現成答案,稍微變換下題設語句,就要買會員換人工答題。
一時間小學生紛紛成了“氪金玩家”。
即便是題目換湯不換藥,講題APP還是罷了工。如果有一款能聽懂大白話的作題軟件能有多好!
近日,OpenAI訓練了一個新系統,可解決小學數學題,稱其提升了GPT-3的邏輯推理問題。
自去年6月11日以來,OpenAI公布GPT-3語言模型,GPT-3成為OpenAI的旗艦語言生成算法,參數規模達1750億,在文本生成上與人類寫作相媲美。
三個月后,OpenAI 又推出用于數學問題的 GPT-f,利用基于 Transformer 語言模型的生成能力進行自動定理證明。
時至今日,GPT-3的能力依據被冠以“大力出奇跡”,光憑解答小學程度的幾道數學題,就能蓋過對OpenAI的質疑聲嗎?

論文地址:https://arxiv.org/pdf/2110.14168.pdf
數據集地址:https://github.com/openai/grade-school-math
其中涉及一大難點:GPT-3真的懂邏輯嗎?即便是數學語言不同于大白話,但依舊涉及很多邏輯關系,一步錯步步錯。
為此,OpenAI 基于四個設計原則創建了 GSM8K 數據集供GPT-3反復訓練,即數據集為高質量、高多樣性、中等難度和自然語言的答題形式。
GSM8K 數據集由 8.5K 個高質量小學數學應用題組成,每個問題需要 2 到 8 步解決,涉及到加減乘除整合運算,難度近乎9-12歲的小學數學題。
結果發現,60億參數的GPT-3采用“新方法”,準確率直接翻倍!甚至追平了擁有1750億參數,采用微調方法的GPT-3模型。

新方法挑戰比自己高30倍的大參數模型,力證參數并非越大越好,這一新方法是什么?
像GPT-3這樣的大型語言模型有許多驚人的技能,包括模仿多種寫作風格,自動編程、自然對話、語義搜索等。然而,它們很難完成需要精確的多步驟推理的任務,比如解決小學數學應用題。
「小明每半小時喝一瓶水。一個普通的數獨難題要花他45分鐘。一個極難的數獨需要4倍的時間。做一道極難的數獨的時間他喝了多少瓶水?」
在這樣的數學題中,GPT-3要匹配人類在復雜邏輯領域中的表現,一味提高參數,是解決辦法的長遠之策嗎?
并不!OpenAI在新方法中提到,為什么不讓模型學會識別自己的錯誤呢?從許多候選的解決方案中選擇出最佳方案!
為此,OpenAI訓練了驗證器(verifier),來評估所提出的解決方案是否正確。可比通過更新模型參數,最小化所有訓練token的交叉熵損失的方法要多一個思路。
增加一個“驗證”模塊,通過反復試錯,學習,再計算,原先微調無法解決的GPT-3邏輯推理能力,在新方法中得到進步。
對于兩種思路,OpenAI通過新的GSM8K數據集來測試兩種方法:
高質量:GSM8K中的問題都是人工設計的,避免了錯誤問題的出現。
高多樣性:GSM8K中的問題都被設計得相對獨特,避免了來自相同語言模板或僅在表面細節上有差異的問題。
中等難度:GSM8K中的問題分布對大型SOTA語言模型是有挑戰的,但又不是完全難以解決的。這些問題不需要超出早期代數水平的概念,而且絕大多數問題都可以在不明確定義變量的情況下得到解決。
自然語言解決方案:GSM8K中的解決方案是以自然語言而不是純數學表達式的形式編寫的。模型由此生成的解決方案也可以更容易被人理解。此外,OpenAI也期望它能闡明大型語言模型內部獨白的特性。

在GSM8K數據集上,OpenAI測試了新方法驗證(verification)和基線方法微調(fine-tuning)生成的答案。
即4種不同的解決方案:6B微調、6B 驗證、175B 微調和 175B 驗證。
在性能展示中,OpenAI提供了十個數學題實例,其中一個是的解決方案如下:
小明種了 5 棵樹。他每年從每棵樹上收集 6 個檸檬。他十年能得到多少檸檬?




很明顯,驗證方法(verification)比基線方法微調(fine-tuning)在回答數學應用題上有了很大的提升。
在完整的訓練集上,采用「驗證」方法的60億參數模型,會略微優于采用「微調」的1750億參數模型!

但大模型也不是一無是處,采用「驗證」的1750億參數模型還是比采用「驗證」方法的60億參數模型學習速度更快,只需要更少的訓練問題,就能超過微調基線。
OpenAI發現,只要數據集足夠大,大模型就能從「驗證」中獲得強大的性能提升。
但是,對于太小的數據集,驗證器會通過記憶訓練集中的答案而過度擬合,而不是學習基本的數學推理這種更有用的屬性。
所以,根據目前的結果進行推斷,「驗證」似乎可以更有效地擴展到額外的數據。
大模型畢竟有大模型的優勢,如果之后能夠用大模型+驗證的方式,將會使得模型性能再上一個level !
驗證器訓練時,只訓練解決方案是否達到正確的最終答案,將其標記為正確或不正確。但是在實踐中,一些解決方案會使用有缺陷的推理得出正確的最終答案,從而導致誤報。

現在的驗證器具體訓練方法分為三步走:
先把模型的「生成器」在訓練集上進行2個epoch的微調。
從生成器中為每個訓練問題抽取100個解答,并將每個解答標記為正確或不正確。
在數據集上,驗證器再訓練單個epoch。
生成器只訓練2個epoch是因為2個epoch的訓練就足夠學習這個領域的基本技能了。如果采用更長時間的訓練,生成的解決方案會過度擬合。
測試時,解決一個新問題,首先要生成100個候選解決方案,然后由驗證器打分,排名最高的解決方案會被最后選中。
訓練驗證器既可以在全部的生成解決方案里進行單個標量預測(single scalar prediction),也可以在解決方案的每個 token 后進行單個標量預測,OpenAI 選擇后者,即訓練驗證器在每個 token 之后進行預測。
如下圖所示,它們分別標記為“解決方案級別”和“token 級別”。
在b圖中,通過消融實驗驗證訓練驗證器中使用目標(objective)的作用, OpenAI 將使用兩個目標與僅使用驗證目標進行比較。
在c圖中,OpenAI 對生成器和驗證器的大小進行了實驗,研究發現使用大的生成器、小的驗證器組合性能顯著優于小的生成器、大的驗證器組合。

通過OpenAI所展現出的10個數學實例是看出,使用驗證方法比單純擴大參數要更加智能,但缺點是并不穩定。比如在另一個問題實例中,僅有175B驗證模型輸出正確結果:小明是一所私立學校的院長,他有一個班。小紅是一所公立學校的院長,他有兩個班,每個班的人數是小明班級人數120人的1/8。問兩所學校的總人數是多少?
AI發展道阻且長,目前絕大多數的機器學習仍依賴于數據堆砌,缺乏根本性的技術突破,存在一定的發展瓶頸。Google 工程總監 Ray Kurzweil 曾表示,直到 2029 年,人類才有超過 50% 的概率打造出 AGI 系統,還有一部分專家表示至少要到2099年或2200年。
現下,通過在一些簡單的領域試驗新路徑,識別和避免機器學習的錯誤是推動模型發展的關鍵方法,比如這種簡單的小學數學題。最終當我們試圖將模型應用到邏輯上更復雜的領域時,那些不被了解的黑箱子將變得越來越透明。

雷鋒網