編碼器模型哪去了?如果 BERT 效果好,那為什麼不擴充套件它?編碼器 - 解碼器或僅編碼器模型怎麼樣了?
在大型語言模型(LLM)領域,現在是僅解碼器模型(如 GPT 系列模型)獨領風騷的時代。那編碼器 - 解碼器或僅編碼器模型發展如何呢?為什麼曾經盛名一時的 BERT 卻漸漸少有人關注了?
近日,AI 創業公司 Reka 的首席科學家和聯合創始人 Yi Tay 釋出了一篇部落格文章,分享了他的看法。Yi Tay 在參與創立 Reka 之前曾在 Google Research 和谷歌大腦工作過三年多時間,參與過 PaLM、UL2、Flan-2、Bard 等著名 LLM 以及 PaLI-X 和 ViT-22B 等多模態模型的研發工作。以下為他的部落格文章內容。
基礎簡介
總體上看,過去這些年的 LLM 模型架構主要分為三大正規化:僅編碼器模型(如 BERT)、編碼器 - 解碼器模型(如 T5)、僅解碼器模型(如 GPT 系列模型)。人們常常搞不清楚這些,並且對這些分類方法和架構有所誤解。
首先要理解的一點是:編碼器 - 解碼器模型實際上也是自迴歸模型。在編碼器 - 解碼器模型中,解碼器本質上依然是因果解碼器。其無需預填充解碼器模型,而是會將某些文字解除安裝到編碼器,然後再透過交叉注意力傳送給解碼器。是的,T5 模型也是語言模型!
這類模型的一種變體是字首語言模型(Prefix Language Model),簡稱 PrefixLM,其工作方式幾乎一樣,只是沒有交叉注意力(以及其它一些小細節,比如編碼器 / 解碼器之間共享權重以及沒有編碼器瓶頸)。PrefixLM 有時也被稱為非因果解碼器。簡單來說,編碼器 - 解碼器、僅解碼器模型和 PrefixLM 整體上差別不大!
在 Hyung Won 近期的精彩講座中,他嫻熟地解釋了這些模型之間的關係。詳情可參閱機器之心的報導:《AI 研究的主要推動力會是什麼?ChatGPT 團隊研究科學家:算力成本下降》
同時,BERT 這樣的僅編碼器模型的去噪方式不一樣(即 in-place);並且從某種程度上講,僅編碼器模型要在預訓練之後真正發揮作用,需要依靠分類「任務」頭。後來,T5 等模型採用了一種「修改版」的去噪目標,其使用了一種序列到序列的格式。
為此,需要指出:T5 中的去噪並非一種新的目標函式(在機器學習意義上),而是一種跨輸入的資料變換,即你也可以使用一個因果解碼器訓練跨度損壞目標(span corruption objective )。
人們總是假設編碼器 - 解碼器模型必定是去噪模型,部分原因是 T5 實在過於具有代表性。但事實並不總是如此。你可以使用常規的語言建模任務(比如因果語言建模)訓練編碼器 - 解碼器。反過來,也可以使用跨度損壞任務訓練因果解碼器。正如我前面說的那樣,這基本上就是一種資料變換。
還有一點值得注意:一般來說,有 2N 個引數的編碼器 - 解碼器的計算成本與有 N 個引數的僅解碼器模型一樣,這樣一來,它們的 FLOP 和引數量之比就不一樣了。這就像是在輸入和目標之間分配「模型稀疏性」。
這不是什麼新東西,也不是我自己想出來的。2019 年的 T5 論文中就有,並且 UL2 論文也再次強調了這一點。
目前來說,很高興能把這一點說清楚。現在來說目標。
關於去噪目標(它沒起作用嗎?無法擴充套件嗎?還是太容易了?)
這裡的去噪目標是指「跨度損壞」任務的任意變體。這有時候被稱為「填充」或「填空」。表達它的方式有很多,比如跨度長度、隨機性、sentinel token 等。想必你已明白其中關鍵。
儘管 BERT 式模型的去噪目標基本是就地的(in-place,比如分類頭位於掩碼 token 上),但「T5 風格」要更現代一點,即透過編碼器 - 解碼器或僅解碼器模型來處理資料變換。在這樣的資料變換中,被掩蔽的 token 只是會被「移回去」以便模型給出預測。
預訓練的主要目標是以儘可能最高效和有效的方式構建與下游任務對齊的內部表徵。這種內部表徵越好,就更容易將這些學習到的表徵用於後續任務。我們都知道,簡單的下一詞預測「因果語言建模」目標表現出色,並且已成為 LLM 革命的核心。現在的問題是去噪目標是否同樣出色。
根據公開資訊,我們知道 T5-11B 的效果相當好,即使在對齊和經過監督式微調之後(Flan-T5 XXL 的 MMLU 分數是 55+,在當時來說,這個規模的模型已經相當好了)。因此,我們可以得出這樣的結論:去噪目標的遷移過程(預訓練→對齊)在這個規模上相對來說效果不錯。
我的看法是,去噪目標的效果很好,但還不足以單獨作為目標。一個巨大的缺點源自所謂的更少的「損失暴露(loss exposure)」。在去噪目標中,僅有少量 token 會被掩蔽和得到學習(即被考慮到損失中)。反過來,在常規的語言建模中,這接近於 100%。這使得每個 FLOP 的樣本效率非常低,這使得在 flop 基礎上的比較中,去噪目標的劣勢很大。
去噪目標的另一個缺點是其比常規語言建模更不自然,因為它會以一種奇怪的方式重新設定輸入 / 輸出的格式,這使得它們不太適合少樣本學習。(但在少樣本任務上,仍可能透過調整這些模型讓其表現得相當優良。)因此,我認為去噪目標應該只能用作常規語言建模的補充目標。
統一的早期以及 BERT 類模型消失的原因
類似 BERT 的模型逐漸消失,現在已經沒多少人再談它們了。這也能解釋為什麼我們現在看不到超大規模的 BERT 模型了。原因是什麼?這很大程度上是因為任務 / 建模正規化的統一和轉變。BERT 式模型很繁瑣,但 BERT 模型被棄用的真正原因是:人們希望一次性完成所有任務,因此採用了一種更好的去噪方法 —— 使用自迴歸模型。
在 2018-2021 年期間,出現了一種隱含的正規化轉變:從單任務微調轉變成大規模多工模型。這慢慢地將我們導向了統一的 SFT 模型,這就是我們如今看到的通用模型。使用 BERT 卻很難做到這一點。我認為這與「去噪」關係不大。對於還想使用這樣的模型(即 T5)的人,他們找到了一種重新表達去噪預訓練任務的方法,這使得如今 BERT 式模型已經基本上被棄用了,因為我們已有更好的替代方案。
更確切地說,編碼器 - 解碼器和僅解碼器模型無需特定於任務的分類頭就能用於多種任務。對於編碼器 - 解碼器,研究者和工程師開始發現放棄編碼器的效果就和 BERT 編碼器差不多。此外,這還能保留雙向注意力的優勢 —— 該優勢讓 BERT 在小規模(往往是生產規模)上可與 GPT 競爭。
去噪目標的價值
去噪預訓練目標也能以一種類似常規語言建模的方式學習預測下一個詞。但是,不同於常規因果語言建模,這需要對序列使用一種資料變換,使得模型可以學習「填空」,而不是簡單地預測從左到右的自然文字。
值得注意的是,去噪目標有時也稱為「填充任務」,有時會與常規語言建模任務一起在預訓練過程中混合使用。
雖然確切的配置和實現細節可能有所不同,但當今的現代 LLM 可能在某種程度上組合使用語言建模和填充。有趣的是,這種「語言模型 + 填充」的混合實際上也大概在同一時期四處傳播(如 UL2、FIM、GLM、CM3),許多團隊都帶來了自己獨具特色的混合方案。順帶一提,目前已知的以這種方式訓練的最大模型很可能是 PaLM-2。
還需要說明一點,預訓練任務混合也可以按順序堆疊,不一定必須同時混合,比如 Flan-T5 起初是在 1T 跨度損壞 token 上訓練的,然後換到前饋語言建模目標的 100B token,之後再進行 flan 指令微調。某種程度上講,這適合混合去噪 / LM 目標模型。需要明確的是,字首語言建模目標(不要與架構混淆)單純只是因果語言建模,其有一個隨機確定和傳送到輸入端的分割點(沒有損失和非因果掩碼)。
順便一提,填充可能起源於程式碼 LLM 領域,其中「填空」更像是寫程式碼所需的一個功能。同時,UL2 的動機更多是將去噪目標和雙向 LLM 擅長的任務類別與固有的生成任務(例如總結或開放式生成)統一起來。這種自迴歸式的解碼「向後移」的優點是:其不僅能讓模型學習更長程的依賴關係,還能讓其隱式地受益於非顯式的雙向注意力(因為為了填空,你已經看過了未來)。
有一個傳說中的經驗:去噪目標學習的表徵在特定任務類別上表現更好,有時候還會有更高的樣本效率。在 U-PaLM 論文中,我們展示了少量的跨度損壞 up-training 如何改變在一組 BIG-Bench 任務上的行為和湧現現象。在此基礎上,對使用這一目標訓練的模型進行微調通常可以得到更好的監督式微調模型,尤其是當規模較小時。
在單任務微調方面,可以看到 PaLM-1 62B 模型被小得多的 T5 模型擊敗。在相對較小的規模上,「雙向注意力 + 去噪目標」是一記漂亮的組合拳!我相信很多實踐者也注意到了這種情況,尤其是在生產應用中。
雙向注意力如何呢?
對語言模型來說,雙向注意力是一種有趣的「歸納偏置」—— 人們常常將其與目標和模型骨幹混淆。在不同的計算領域,歸納偏置的用途也各不相同,並且也可能對擴充套件曲線造成不同的影響。話雖如此,相比於較小規模,雙向注意力在規模較大時可能就沒那麼重要了,或者可能對不同的任務或模態有不同的影響。舉個例子,PaliGemma 使用了 PrefixLM 架構。
Hyung Won 也在他的演講中指出:PrefixLM 模型(使用雙向注意力的僅解碼器模型)也存在快取問題,這是這類架構的一個固有缺陷。但是,我認為有很多方法可以解決這個缺陷,但這超出了本文的範圍。
編碼器 - 解碼器架構的優缺點
相比於僅解碼器模型,編碼器 - 解碼器架構有優勢也有劣勢。第一種情況是編碼器端不受因果掩碼的限制。在某種程度上,你可以在注意力層上放開手腳,激進地執行池化或任何形式的線性注意力,而不必擔心自迴歸的設計限制。這是一種將不太重要的「上下文」解除安裝到編碼器的好方法。你也能把編碼器做小點,這也是個優勢。
必需編碼器 - 解碼器架構的一個例子是 Charformer,其中大膽使用了編碼器並緩解了位元組層面的模型的速度劣勢。在編碼器方面進行創新可以快速獲益,同時無需擔心因果掩碼的重大缺陷。
同時,相比於 PrefixLM,編碼器 - 解碼器的一個缺點是輸入和目標必須分配固定的預算。舉個例子,如果輸入預算是 1024 token,那麼編碼器端就必須填充到這個值,而這可能會浪費大量計算。相反,在 PrefixLM 中,輸入和目標可以直接連線起來,從而可以緩解這個問題。
與當今模型的相關性和關鍵要點
當今時代,要成為一位合格的 LLM 研究者和實踐者,一項關鍵能力是能同時從架構方面和預訓練方面推斷歸納偏置。理解其中微妙的差異可幫助人們進行外推和持續創新。
以下是我的關鍵要點:
編碼器 - 解碼器和僅解碼器模型都是自迴歸模型,它們在實現層面上有差異,也有各自的優缺點。它們是略有不同的歸納偏置。至於選用哪一種,這取決於下游用例和應用限制。與此同時,對於大多數 LLM 用例和利基用例而言,可以認為 BERT 式的編碼器模型已經過時。
去噪目標主要能作為因果語言模型的補充。它們已經被成功用作訓練階段的「支援目標」。使用去噪目標訓練因果語言模型通常能帶來某種程度的幫助。儘管這在程式碼模型領域非常常見(即程式碼填充),但對於如今的通用模型,使用因果語言模型加某個去噪目標來進行預訓練的做法也挺常見。
雙向注意力能給較小規模模型帶來很大助益,但對較大模型來說可有可無。這大都是傳言。我認為雙向注意力具有一種歸納偏置,就類似於對 Transformer 模型做的許多其它型別的修改。
最後,總結一下。目前已經沒有大規模版本的 BERT 模型在運營了:BERT 模型已被棄用,取而代之的是更靈活的去噪(自迴歸)T5 模型。這主要是由於正規化統一,即人們更喜歡使用一個通用模型去執行各種任務(而不是使用特定於某任務的模型)。與此同時,自迴歸去噪有時可作為因果語言模型的副目標。
原文連結:https://www.yitay.net/blog/model-architecture-blogpost-encoders-prefixlm-denoising