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