這文章其實也是李宏毅老師 2023 年機器學習課程的個人一些學習整理,李老師上課的內容&口吻很精彩,很建議大家直接看李老師的課程影片:
完整的所有課程在這裏
在上一篇文章中,我們已探討了大模型所展現的幾種特殊現象。本篇將鎖定"大資料"為主題,跟您分享其各種令人訝異的發現。
首先,我們先來看大資料對模型有什麼根本的影響。
我們為何需要數以十億計的資料?
一般來說,若我們希望語言模型能回答問題,基本上會需要達成兩個條件。第一,模型必須能理解我們人類的語言,也就是具有對語句句法、語義的理解能力。第二,模型需要擁有我們人類的知識。
為何人類的知識認知這麼重要呢?讓我們以一個例子說明。假設有人說:「我的手剛剛被冰水燙到了」。這句話在句法上無可挑剔,但卻與我們的常識相違背。我們知道冰水不可能燙傷人,所以讓語言模型不只聽得懂我們的話,更能辨識出其中的對錯,就必須要有語法與世界知識。
在我們明確了解語法與世界知識的重要性之後,來我們來參考一篇名為"When Do You Need Billions of Words of Pretraining Data?"的論文中的一張圖表。
該圖表的橫軸代表的是資料量(字數),縱軸則是語言模型的效能。在曲線部分,藍紫色代表的是句法的學習、紫色代表的是語義部分、淺藍色則代表對我們世界知識的學習。從這張圖表我們可以觀察到,當資料量達到一百萬個字左右,語言模型就會明顯開始學習我們語言的語法;而當資料量超過十億個字後,語言模型就會開始快速累積對我們世界知識的理解。
因此,我們能從這張圖表中大概了解,若要自行訓練語言模型,大概需要多少數量的資料,以及資料量夠大時,對模型有什麼基本的影響了。
選擇大模型或大資料
在我們對大模型與大資料有基本理解後,如果我們只有固定的運算資源,應該選擇大模型還是大資料呢?
早些時候,大家都在競爭模型的規模。例如,我們可以看到如上圖,從2020年的GPT-3的1750億個參數,到2021年的Gopher的2800億個參數,再到2022年的MT-NLG的5300億。但是,這種一昧的增大模型參數真的是正確的選擇嗎?DeepMind在2022年的"Training Compute-Optimal Large Language Models"這篇論文給了我們很好的答案。
在固定運算資源下,如何選擇最佳參數?
選擇大模型還是大資料的問題上,DeepMind採取了一種簡單直接的方法:他們將各種規模的運算資源,配上不同的參數數量以及不同的資料量來進行訓練,並將每組的訓練結果劃在圖表上(如上圖)。
該圖表的橫軸代表的是參數數量,縱軸則是損失值。你可以將其視為錯誤率,而不同顏色的曲線代表的是不同的運算資源。我們可以看到,每種運算資源所代表的曲線都有一個最低點,這個最低點其實就代表該運算資源下,最適合的參數數量。
基於上述的結果,DeepMind進一步分析出每個運算資源下最佳訓練結果的參數量以及資料量並製作成下圖。
圖表內的橫軸代表的是運算資源,而縱軸則分別是參數數量(左圖)以及資料量(右圖)。驚人的是,運算資源與最佳的訓練參數數量與資料量呈現出一種線性等比關係。而且從圖表內各運算資源對應到的理想訓練資料量看來,不論是 GPT-3 或者 Gopher 之前訓練的資料都太小了。而該如何去驗證這樣的假設呢? 圖內的綠色基準線則是DeepMind拿來進行驗證的實驗目標。
Chinchilla與Gopher的對決
上圖中的綠色基準線實際上就是Gopher當初訓練的運算資源,DeepMind接著根據圖表上對應的參數數量(63B)以及資料量(1.4T)訓練出一個名為Chinchilla的語言模型,並直接將其與Gopher在實際任務中進行效能比較。
以下是實際比較的結果,你可以看到,Chinchilla這個規模比Gopher小很多的模型,卻因為增加了訓練資料,幾乎完全擊敗了Gopher模型(Gopher模型只贏了4個任務)。
從上述的研究結果,我們可以看到,繼續增大模型的規模已經不再具有太大的意義,更重要的反而是增加訓練資料。
這也解釋了為什麼Meta最近發布的LLaMA模型在論文開頭就直接引用這個論文,說明他們選擇使用更大的資料作為訓練基礎的原因。