1. 程式人生 > 資訊 >OpenAI 新發現:GPT-3 做小學數學題能得 55 分,驗證勝過微調

OpenAI 新發現:GPT-3 做小學數學題能得 55 分,驗證勝過微調

現在小學數學題有多難?小學生拍圖上傳作題 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 倍的大引數模型,力證引數並非越大越好,這一新方法是什麼?

1 訓練驗證器:從錯誤中學習的模型

像 GPT-3 這樣的大型語言模型有許多驚人的技能,包括模仿多種寫作風格,自動程式設計、自然對話、語義搜尋等。然而,它們很難完成需要精確的多步驟推理的任務,比如解決小學數學應用題。

「小明每半小時喝一瓶水。一個普通的數獨難題要花他 45 分鐘。一個極難的數獨需要 4 倍的時間。做一道極難的數獨的時間他喝了多少瓶水?」

在這樣的數學題中,GPT-3 要匹配人類在複雜邏輯領域中的表現,一味提高參數,是解決辦法的長遠之策嗎?

並不!OpenAI 在新方法中提到,為什麼不讓模型學會識別自己的錯誤呢?從許多候選的解決方案中選擇出最佳方案!

為此,OpenAI 訓練了驗證器(verifier),來評估所提出的解決方案是否正確。可比通過更新模型引數,最小化所有訓練 token 的交叉熵損失的方法要多一個思路。

增加一個“驗證”模組,通過反覆試錯,學習,再計算,原先微調無法解決的 GPT-3 邏輯推理能力,在新方法中得到進步。

對於兩種思路,OpenAI 通過新的 GSM8K 資料集來測試兩種方法:

  • 高質量:GSM8K 中的問題都是人工設計的,避免了錯誤問題的出現。

  • 高多樣性:GSM8K 中的問題都被設計得相對獨特,避免了來自相同語言模板或僅在表面細節上有差異的問題。

  • 中等難度:GSM8K 中的問題分佈對大型 SOTA 語言模型是有挑戰的,但又不是完全難以解決的。這些問題不需要超出早期代數水平的概念,而且絕大多數問題都可以在不明確定義變數的情況下得到解決。

  • 自然語言解決方案:GSM8K 中的解決方案是以自然語言而不是純數學表示式的形式編寫的。模型由此生成的解決方案也可以更容易被人理解。此外,OpenAI 也期望它能闡明大型語言模型內部獨白的特性。

GSM8K 中的三個問題示例,紅色為計算的註釋

在 GSM8K 資料集上,OpenAI 測試了新方法驗證(verification)和基線方法微調(fine-tuning)生成的答案。

即 4 種不同的解決方案:6B 微調、6B 驗證、175B 微調和 175B 驗證。

在效能展示中,OpenAI 提供了十個數學題例項,其中一個是的解決方案如下:

小明種了 5 棵樹。他每年從每棵樹上收集 6 個檸檬。他十年能得到多少檸檬?

175B 驗證正確

175B 微調錯誤

6B 驗證正確

6B 微調正確

很明顯,驗證方法(verification)比基線方法微調(fine-tuning)在回答數學應用題上有了很大的提升。

在完整的訓練集上,採用「驗證」方法的 60 億引數模型,會略微優於採用「微調」的 1750 億引數模型!

但大模型也不是一無是處,採用「驗證」的 1750 億引數模型還是比採用「驗證」方法的 60 億引數模型學習速度更快,只需要更少的訓練問題,就能超過微調基線。

OpenAI 發現,只要資料集足夠大,大模型就能從「驗證」中獲得強大的效能提升。

但是,對於太小的資料集,驗證器會通過記憶訓練集中的答案而過度擬合,而不是學習基本的數學推理這種更有用的屬性。

所以,根據目前的結果進行推斷,「驗證」似乎可以更有效地擴充套件到額外的資料。

大模型畢竟有大模型的優勢,如果之後能夠用大模型 + 驗證的方式,將會使得模型效能再上一個 level !

2 新方法是如何驗證的?

驗證器訓練時,只訓練解決方案是否達到正確的最終答案,將其標記為正確或不正確。但是在實踐中,一些解決方案會使用有缺陷的推理得出正確的最終答案,從而導致誤報。

現在的驗證器具體訓練方法分為三步走:

  • 先把模型的「生成器」在訓練集上進行 2 個 epoch 的微調。

  • 從生成器中為每個訓練問題抽取 100 個解答,並將每個解答標記為正確或不正確。

  • 在資料集上,驗證器再訓練單個 epoch。

生成器只訓練 2 個 epoch 是因為 2 個 epoch 的訓練就足夠學習這個領域的基本技能了。如果採用更長時間的訓練,生成的解決方案會過度擬合。

測試時,解決一個新問題,首先要生成 100 個候選解決方案,然後由驗證器打分,排名最高的解決方案會被最後選中。

訓練驗證器既可以在全部的生成解決方案裡進行單個標量預測(single scalar prediction),也可以在解決方案的每個 token 後進行單個標量預測,OpenAI 選擇後者,即訓練驗證器在每個 token 之後進行預測。

如下圖所示,它們分別標記為“解決方案級別”和“token 級別”。

在 b 圖中,通過消融實驗驗證訓練驗證器中使用目標(objective)的作用,OpenAI 將使用兩個目標與僅使用驗證目標進行比較。

在 c 圖中,OpenAI 對生成器和驗證器的大小進行了實驗,研究發現使用大的生成器、小的驗證器組合效能顯著優於小的生成器、大的驗證器組合。

3 寫在最後

通過 OpenAI 所展現出的 10 個數學例項是看出,使用驗證方法比單純擴大引數要更加智慧,但缺點是並不穩定。比如在另一個問題例項中,僅有 175B 驗證模型輸出正確結果:小明是一所私立學校的院長,他有一個班。小紅是一所公立學校的院長,他有兩個班,每個班的人數是小明班級人數 120 人的 1/8。問兩所學校的總人數是多少?

AI 發展道阻且長,目前絕大多數的機器學習仍依賴於資料堆砌,缺乏根本性的技術突破,存在一定的發展瓶頸。Google 工程總監 Ray Kurzweil 曾表示,直到 2029 年,人類才有超過 50% 的概率打造出 AGI 系統,還有一部分專家表示至少要到 2099 年或 2200 年。

現下,通過在一些簡單的領域試驗新路徑,識別和避免機器學習的錯誤是推動模型發展的關鍵方法,比如這種簡單的小學數學題。最終當我們試圖將模型應用到邏輯上更復雜的領域時,那些不被瞭解的黑箱子將變得越來越透明。