谷歌證實大模型能頓悟,特殊方法能讓模型快速泛化,或將打破大模型黑箱
在特定情況下,人工智能模型會超越訓練數據進行泛化。在人工智能研究中,這種現象被稱為「頓悟」,而谷歌現在正在提供對最近發現的深入了解。
在訓練過程中,人工智能模型有時似乎會突然「理解」一個問題,盡管它們只是記住了訓練數據。在人工智能研究中,這種現象被稱為「頓悟」,這是美國作家Robert A. Heinlein創造的一個新詞,主要在計算機文化中用來描述一種深刻的理解。
當人工智能模型發生頓悟時,模型會突然從簡單地復制訓練數據轉變為發現可推廣的解決方案——因此,你可能會得到一個實際上構建問題模型以進行預測的人工智能系統,而不僅僅是一個隨機的模仿者。
谷歌團隊:「頓悟」是一種「有條件的現象」
「頓悟」在希望更好地理解神經網絡學習方式的人工智能研究人員中引起了很大的興趣。這是因為「頓悟」表明模型在記憶和泛化時可能具有不同的學習動態,了解這些動態可能為神經網絡學習提供重要見解。
盡管最初是在單個任務上訓練的小型模型中觀察到,但谷歌的最新研究表明,頓悟也可以發生在較大的模型中,并且在某些情況下可以被可靠地預測。然而,在大型模型中檢測這種頓悟動態仍然是一個挑戰。
在這篇文章中,谷歌研究人員提供了有關這一現象和當前研究的視覺展示。該團隊對超過1000個不同訓練參數的小型模型進行了算法任務的訓練,展示了「有條件的現象——如果模型大小、權重衰減、數據大小和其他超參數不合適,這種現象會消失。」
了解「頓悟」可能會改進大型AI模型
根據該團隊的說法,仍然有許多未解之謎,例如哪些模型限制會可靠地引起「頓悟」,為什么模型最初更喜歡記住訓練數據,以及研究中用于研究小型模型中這一現象的方法在大型模型中是否適用。
對「頓悟」的理解進步可能會為未來大型AI模型的設計提供信息,使它們能夠可靠且快速地超越訓練數據。
在2021年,研究人員在對一系列微型模型進行玩具任務訓練時發現:一組模型,在經過更長時間的訓練后,突然從僅僅「記住」之前的訓練數據,轉變為在未見過的輸入上表現出正確的泛化能力。
這種現象被稱為「頓悟」,并引發了一系列的興趣和研究。
更復雜的模型是否也會在經過更長時間的訓練后突然表現出泛化能力呢?
大型語言模型看起來似乎具有很強的對外部世界的理解能力,但可能模型只是在重復記憶訓練過的海量文本數據的片段,而沒有真正理解其內容。
到底如何判斷它們是在泛化還是在記憶?
在這篇文章中,研究人員將研究一個微型模型的訓練動態過程,并對其找到的解決方案進行逆向工程——在此過程中,研究人員將闡述這個令人振奮的新興機制中那些能被研究人員理解的部分。
雖然如何將這些技術應用于當今最大的模型,現在還沒有頭緒。但從小模型入手可以更容易地培養直覺,隨著研究人員的逐步努力,關于大型語言模型的這些關鍵問題也將最終獲得解答。
頓悟模加法
模加法是檢測「頓悟」最好的方法。
(模加法指的是兩個數據相加,如果合大于某一個值,結果就自動回歸某一個值。以12小時計時為例,時間相加超過12點之后就會自動歸零,就是一個典型的模加法。)
突然的泛化往往發生在在對于訓練數據的記憶之后,模型一開始的輸出與訓練數據吻合,但隨著訓練不斷持續,和測試數據的吻合度不斷提高,出現了泛化。這個過程就叫做「頓悟」
上圖來自于一個被訓練來進行預測a+b mod 67 (即a+b的合超過67之后就會歸零的模加法)的模型。
研究人員首先隨機將所有成對數據分成測試數據集和訓練數據集。
在訓練過程中,訓練數據被用來調整模型,讓模型輸出正確答案,而測試數據僅用于檢查模型是否已經學會了一個通用的解決方案。
模型的架構也很簡單:
一個具有24個神經元的單層MLP。模型的所有權重如下面的熱圖所示;通過將鼠標懸停在上面的線性圖上,可以看到它們在訓練過程中如何變化。
模型通過選擇與輸入a和b對應的兩列,然后將它們相加以創建一個包含24個獨立數字的向量來進行預測。接下來,它將向量中的所有負數設置為0,最后輸出與更新向量最接近的
列。
模型的權重最初非常嘈雜,但隨著測試數據上的準確性提高和模型逐漸開始泛化,它們開始展現出周期性的模式。
在訓練結束時,每個神經元,也就是熱圖的每一行在輸入數字從0增加到66時會多次在高值和低值之間循環。
如果研究人員根據神經元在訓練結束時的循環頻率將其分組,并將每個神經元分別繪制成一條單獨的線,會更容易看出產生的變化。
這些周期性的模式表明模型正在學習某種數學結構;當模型開始計算測試樣本時出現這種現象,意味著模型開始出現泛化了。
但是為什么模型會拋開記憶的解決方案?而泛化的解決方案又是什么呢?
在0和1的數列中訓練模型泛化
同時解決這兩個問題確實很困難。研究人員可以設計一個更簡單的任務,其中研究人員知道泛化解決方案應該是什么樣的,然后嘗試理解模型最終是如何學習它的。
研究人員又設計了一個方案,他們先隨機生成30個由0和1組成的數字組成一個數列,然后訓練一個模型去預測數列中前三個數字中是否有奇數個1,如果有奇數個1,輸出就為1,否則輸出為0。
例如,010110010110001010111001001011等于1 。
000110010110001010111001001011等于0。
基本上這就是稍微復雜一些的異或運算,略微帶有一些干擾噪聲。
而如果一個模型產生了泛化能力,應該就只關注序列的前三位數字進行輸出;如果模型是在記憶訓練數據,它就會使用到后邊的干擾數字。
研究人員的模型仍然是一個單層MLP,使用固定的1,200個序列進行訓練。
起初,只有訓練數據準確性增加了,說明模型正在記憶訓練數據。
與模算數一樣,測試數據的準確性一開始基本上是隨機的。
但是模型學習了一個泛化解決方案后,測試數據的準確性就急劇上升。
下面的權重圖標顯示,在記憶訓練數據時,模型看起來密集而嘈雜,有許多數值很大的權重(顯示為深紅色和藍色方塊)分布在數列靠后的位置,表明模型正在使用所有的數字進行預測。
隨著模型泛化后獲得了完美的測試數據準確性,研究人員看到,與干擾數字相關的所有權重都變為灰色,值非常低,模型權重全部集中在前三位數字上了。
這與研究人員預期的泛化結構相一致。
通過這個簡化的例子,更容易理解為什么會發生這種情況:
其實在訓練過程中,研究人員的要求是模型要同時完成兩個目標,一個是盡量高概率地輸出正確的數字(稱為最小化損失),另一個是使用盡量小的全權重來完成輸出(稱為權重衰減)。
在模型泛化之前,訓練損失略微增加(輸出準確略微降低),因為它在減小與輸出正確標簽相關的損失的同時,也在降低權重,從而獲得盡可能小的權重。
而測試數據損失的急劇下降,讓模型看起來像是似乎突然開始了泛化,但其實不是,這個過程在之前就已經在進行了。
但是,如果觀察記錄模型在訓練過程中的權重,大部分權重是平均分布在這兩個目標之間的。
當與干擾數字相關的最后一組權重被權重衰減這個目標「修剪」掉時,泛化馬上就發生了。
何時發生頓悟?
值得注意的是,「頓悟」是一種偶然現象——如果模型大小、權重衰減、數據大小以及其他超參數不合適,它就不會出現。
當權重衰減過小時,模型無法擺脫對訓練數據的過擬合。
增加更多的權重衰減會推動模型在記憶后進行泛化。進一步增加權重衰減會導致測試數據和訓練數據的不準確率提高;模型直接進入泛化階段。
當權重衰減過大時,模型將無法學到任何東西。
在下面的內容中,研究人員使用不同的超參數在「1和0」任務上訓練了一千多個模型。
因為訓練是有噪聲的,所以每組超參數都訓練了九個模型。
可以看到,這個「1和0」任務模擬出了模型的記憶和泛化,但為什么這種情況會發生在模加法中呢?
首先,讓我們更多地了解一層MLP如何通過構建一個可解釋的泛化解決方案來解決模加法。
五個神經元的模加法
舉個例子,模加法問題a+b mod 67是周期性的。
從數學上講,可以將式子的和看成是將a和b繞在一個圓圈上來表示。
泛化模型的權重也具有周期性,也就是說,解決方案可能也會有周期性。
研究人員訓練了一個更簡單的模型,利用cos和sin構建一個嵌入矩陣,將a和b放在一個圓上。
模型只用了5個神經元就完美地找到了解決方案。
然后還是回到a+b mod 67的問題上,研究人員從頭訓練模型,沒有內置周期,這個模型有很多頻率。
然后研究人員使用離散傅里葉變換分離出頻率,會分離出輸入數據中的周期性模式。
而結果就和之前在數列中數1的任務一樣,隨著模型的泛化,權重會迅速衰減到很低。
而且在不同的頻率任務中,模型也都出現了「頓悟」
進一步的問題
什么原因導致泛化的出現?
雖然研究人員現在對用單層MLP解決模加法的機制以及它們在訓練過程中出現的原因有了深入的了解,但仍然存在許多關于記憶和泛化的有趣的懸而未決的問題。
從廣義上講,權重衰減確實會導致多種模型不再記憶訓練數據 。
其他有助于避免過度擬合的技術包括 dropout、較小的模型,甚至數值不穩定的優化算法 。
這些方法以復雜、非線性的方式相互作用,使得很難預先預測最終什么原因和方式會導致泛化。
為什么記憶比概括更容易?
一種理論:記憶訓練數據集的解決方法可能比泛化解決方法多得多。
因此從統計上看,記憶應該更有可能先發生。
有研究表明泛化與結構良好的表示相關。然而,這不是必要條件;一些沒有對稱輸入的 MLP 變體在求解模加法時學習的「循環」表示較少 。
研究人員還觀察到,結構良好的表示并不是泛化的充分條件。
比如這個小模型(沒有權重衰減的情況下訓練)開始泛化,然后切換到使用周期性嵌入進行記憶。
甚至可以找到模型開始泛化的超參數,然后切換到記憶,然后再切換回泛化!
而較大的模型呢?
首先,之前的研究證實了小型Transformer和MLP算法任務中的頓悟現象。
涉及特定超參數范圍內的圖像、文本和表格數據的更復雜的任務也出現了頓悟
研究人員認為:
1)訓練具有更多歸納偏差和更少移動部件的更簡單模型,
2)用它們來解釋更大模型難以理解的部分是如何工作的
3)根據需要重復。
都可以有效幫助理解更大的模型。
而且本文中這種機制化的可解釋性方法可能有助于識別模式,從而使神經網絡所學算法的研究變得容易,甚至有自動化的潛力。