模型大十倍,性能提升幾倍?谷歌研究員進(jìn)行了一番研究
隨著深度學(xué)習(xí)模型的體量越來(lái)越大,進(jìn)行任何形式的超參數(shù)調(diào)整都會(huì)變得非常昂貴,因?yàn)槊看斡?xùn)練運(yùn)行都可能要花費(fèi)數(shù)百萬(wàn)美元。因此一些研究旨在探究「隨著模型大小增加,性能提高程度」的規(guī)律。進(jìn)行這種規(guī)律預(yù)測(cè)有助于讓更小規(guī)模的研究拓展到更大更貴,但性能更高的環(huán)境。
通過(guò)利用在多個(gè)模型大小上執(zhí)行的小規(guī)模實(shí)驗(yàn),人們可以找到簡(jiǎn)單的函數(shù)比例關(guān)系(通常是冪律關(guān)系),這些函數(shù)可以在花費(fèi)訓(xùn)練所需的計(jì)算之前預(yù)測(cè)大型模型的性能。
理論是美好的,實(shí)際上想這么做顯然會(huì)遇到一些困難。如果不夠謹(jǐn)慎,推斷擴(kuò)展性能可能會(huì)產(chǎn)生誤導(dǎo),導(dǎo)致公司投資數(shù)百萬(wàn)來(lái)訓(xùn)練一個(gè)性能不比小模型更好的模型。本文會(huì)通過(guò)一個(gè)示例來(lái)介紹這是如何發(fā)生的,以及發(fā)生這種情況的一種原因。
作為研究擴(kuò)展效應(yīng)的示例,假設(shè)我們的目標(biāo)是在具有 3 個(gè)隱藏層的寬得夸張的 MLP 中訓(xùn)練 ImageNet。我們要從 64、128 和 256 隱藏大小開(kāi)始,并使用這些來(lái)選擇超參數(shù),在本例中為 Adam 找到了 3e-4 的學(xué)習(xí)率。我們還將訓(xùn)練的長(zhǎng)度固定為 30k 權(quán)重更新,每 batch 有 128 張圖像。
接下來(lái),我們就可以試圖理解我們的模型是如何隨著隱藏層大小而變化的了。我們可以訓(xùn)練各種大小的模型,并查看性能如何變化,繪制結(jié)果。
具有不同隱藏層體量的 8 個(gè)不同模型的性能(以藍(lán)色顯示)。擬合出來(lái)的線性回歸(黑色虛線)在理想情況下應(yīng)該能夠預(yù)測(cè)給定隱藏層大小的損失。
你會(huì)發(fā)現(xiàn),這數(shù)據(jù)看起來(lái)驚人地呈線性分布。太好了,我們找到了「規(guī)律」!我們可以用最小二乘法找到這種線性關(guān)系的系數(shù):loss(hsize) = 7.0 - 0.275 log(hsize)。根據(jù)經(jīng)驗(yàn),這似乎在隱藏層大小上保持了兩個(gè)數(shù)量級(jí)以上。
漂亮的插值讓人感到興奮,我們認(rèn)為我們可以將隱藏大小外推一個(gè)數(shù)量級(jí)以上來(lái)訓(xùn)練更大的模型。然而令人沮喪的是,我們發(fā)現(xiàn)實(shí)際情況下模型的性能大大偏離了預(yù)測(cè)曲線。
較大模型(紅色顯示)實(shí)現(xiàn)的性能非常差,并且大大低于我們對(duì)較小規(guī)模模型(黑色虛線)的預(yù)測(cè)。
在現(xiàn)實(shí)世界中,考慮到最近一段時(shí)間模型的體量,這樣的差錯(cuò)可能會(huì)導(dǎo)致數(shù)千甚至上百萬(wàn)美元。在大于 100 億的參數(shù)范圍內(nèi),進(jìn)行任何形式的實(shí)驗(yàn)來(lái)找出模型的錯(cuò)誤幾乎是不可能的。
幸運(yùn)的是,我們的示例工作規(guī)模很小,因此可以負(fù)擔(dān)得起對(duì)實(shí)驗(yàn)進(jìn)行詳盡無(wú)遺的測(cè)試——在這種情況下,我們可以運(yùn)行 12 個(gè)模型大小,每個(gè)模型具有 12 個(gè)不同的學(xué)習(xí)率(每個(gè)有 3 個(gè)隨機(jī)初始化),共計(jì) 432 次試驗(yàn)。
上圖展示了我們使用 12 種不同的學(xué)習(xí)率訓(xùn)練 12 種不同模型大小的結(jié)果。每個(gè)小圖用了不同的表示方法。在 (a) 中展示了不同隱藏層大小實(shí)現(xiàn)的損失,學(xué)習(xí)率以彩色顯示——我們之前的推斷是使用單一的學(xué)習(xí)率。在 (b) 中,我們展示了給定學(xué)習(xí)率的損失,其中隱藏層數(shù)量以顏色區(qū)分。較大的模型達(dá)到較低的損失,但需要較小的學(xué)習(xí)率。在 (c) 中,我們展示了顯示學(xué)習(xí)率與隱藏層大小的熱圖,這里的每個(gè)像素都是完整訓(xùn)練運(yùn)行的結(jié)果。在 (d) 中,我們查看給定隱藏層大小的最佳學(xué)習(xí)率。
有了這些數(shù)據(jù),故事就變得很清楚了,也就不足為奇了。隨著我們?cè)黾幽P痛笮?,最佳學(xué)習(xí)率會(huì)縮小。我們還可以看到,如果我們簡(jiǎn)單地以較小的學(xué)習(xí)率進(jìn)行訓(xùn)練,我們將在給定模型大小下接近我們最初預(yù)測(cè)的性能。我們甚至可以對(duì)最佳學(xué)習(xí)率和模型大小之間的關(guān)系進(jìn)行建模,然后使用這個(gè)模型來(lái)提出另一種預(yù)測(cè)。最佳學(xué)習(xí)率與隱藏層大小 (d) 的關(guān)系圖看起來(lái)是線性的,因此結(jié)合起來(lái)不會(huì)有太大的障礙。
即使有了這樣的修正,我們?cè)趺粗肋@不是再次用一些其他超參數(shù)來(lái)實(shí)現(xiàn)的 trick,會(huì)在下一個(gè)隱藏大小的數(shù)量級(jí)上造成嚴(yán)重錯(cuò)誤?學(xué)習(xí)率似乎很重要,但是學(xué)習(xí)率時(shí)間表呢?其他優(yōu)化參數(shù)呢?架構(gòu)決策呢?寬度和深度之間的關(guān)系如何?初始化呢?浮點(diǎn)數(shù)的精度(或缺乏)呢?在許多情況下,各種超參數(shù)的默認(rèn)值和接受值都設(shè)置在相對(duì)較小的范圍內(nèi)——誰(shuí)能說(shuō)它們適用于更大的模型?
隨著訓(xùn)練大模型成為了學(xué)界業(yè)界的新潮流,模型體量擴(kuò)展關(guān)系的問(wèn)題似乎不斷出現(xiàn)。即使是簡(jiǎn)單的事情,如使用此處所示的模型體量和學(xué)習(xí)率之比也并不總是能成功(例如為語(yǔ)言模型指定微調(diào)過(guò)程)。
在這里值得記住的是討論模型體量關(guān)系的論文《Scaling Laws for Neural Language Models》:https://arxiv.org/abs/2001.08361
其討論了很多問(wèn)題如寬度、深度、體量、和 LR 之間的關(guān)系,還有 Batch size 大小的關(guān)系(https://arxiv.org/abs/1812.06162),但研究者也承認(rèn)忽略了很多其他的問(wèn)題。他們還討論了計(jì)算量和數(shù)據(jù)大小的關(guān)系,但在這里我們不討論或進(jìn)行改變。
他們提出的縮放定律是在假設(shè)基礎(chǔ)模型是用性能最好的超參數(shù)訓(xùn)練的假設(shè)下設(shè)計(jì)的。
所以對(duì)于潛在的誤導(dǎo)性推斷,我們能做些什么呢?在理想的情況下,我們將充分了解模型的各個(gè)方面如何隨比例變化,并利用這種理解來(lái)設(shè)計(jì)更大尺度的模型。沒(méi)有這一點(diǎn),外推似乎令人擔(dān)憂,并可能導(dǎo)致代價(jià)高昂的錯(cuò)誤。然而,考慮到有多少因素在起作用,要達(dá)到完全理解這一點(diǎn)是不可能的。考慮到計(jì)算成本,在每個(gè)尺度上調(diào)整每個(gè)參數(shù)看來(lái)并不是正確的解決方案。
那該怎么辦?一種潛在的解決方式是使用縮放定律來(lái)預(yù)測(cè)性能極限。隨著規(guī)模的擴(kuò)大,如果性能偏離冪律關(guān)系,人們應(yīng)該將其視為未正確調(diào)整或設(shè)置好的信號(hào)。聽(tīng)說(shuō)這是 OpenAI 經(jīng)常使用的思路。換句話說(shuō),當(dāng)擴(kuò)展沒(méi)有按預(yù)期工作時(shí),這可能意味著正在發(fā)生一些有趣的事情。知道該怎么做,或者要調(diào)整哪些參數(shù)來(lái)修復(fù)這種性能下降可能極具挑戰(zhàn)性。
在我看來(lái),必須平衡使用縮放定律來(lái)推斷更大范圍的性能,并實(shí)際評(píng)估性能。從某種意義上來(lái)說(shuō),這是顯而易見(jiàn)的,它們只實(shí)踐中所做工作的粗略近似。隨著模型尺度研究的發(fā)展,我們希望這種平衡可以更加明確,并且可以更多地利用縮放關(guān)系來(lái)實(shí)現(xiàn)更多的小規(guī)模研究。
以這個(gè)特定的例子為例,雖然我們發(fā)現(xiàn)用固定的學(xué)習(xí)率進(jìn)行簡(jiǎn)單的性能預(yù)測(cè)并不能外推,但我們確實(shí)發(fā)現(xiàn)了模型大小和學(xué)習(xí)率之間的線性關(guān)系,這導(dǎo)致模型可以在測(cè)試的模型大小范圍內(nèi)進(jìn)行推測(cè)。如果我們嘗試推斷更大的模型,是否還有其他一些我們遺漏的因素呢?這是有可能的,不運(yùn)行實(shí)驗(yàn)很難知道。