AI 研究發展的主要推動力是什麼?在最近的一次演講中,OpenAI 研究科學家 Hyung Won Chung 給出了自己的答案。
近日,史丹佛大學《CS25: Transformers United V4》課程迎來了一位我們熟悉的技術牛人:Hyung Won Chung。
Chung 是 OpenAI ChatGPT 團隊的研究科學家,博士畢業於麻省理工學院,之後曾在谷歌從事了三年多的研究工作,參與了 PaLM、Flan-T5 和 BLOOM 等多個重要專案。機器之心之前曾報導過他的另一個熱門演講:《OpenAI 科學家最新大語言模型演講火了,洞見 LLM 成功的關鍵》。
在這次演講中,他將闡述 AI 研究的主要推動力並嘗試透過 Transformer 的發展(尤其是編碼器 - 解碼器 Transformer 和僅解碼器 Transformer 的比較)來理解這個主要推動力。因此,這並不是一次關注技術細節的演講,而是側重於分享觀點。
演講開篇,Chung 向來聽講的學生表示了鼓勵:「這間教室中的某些人將會塑造 AI 的未來。」
而要洞見未來,我們必須瞭解歷史。這就引出這次演講的核心:Transformer 的早期歷史以及一些 Transformer 架構。
眾所周知,AI 領域發展很快,讓人難以追趕,而且就算是經驗豐富的研究者,也不可能瞭解所有最新進展;與此同時,人們對過去的關注卻不夠,因為它們看起來似乎已經過時無用了。
但 Chung 認為回首過去是很重要的,當然他所指的並不是去研究過去的技術,而是研究「變化(change)」本身,也就是透過了解過去來理解現在,從而洞見從過去到現在的發展之路,然後基於此展望未來。
具體來說,為了研究「變化」,我們可以按以下三步進行:
首先,我們需要找到這一變化背後的主要推動力。當然,變化的推動力往往很多,這裡關注的是主要推動力。然後,理解這些主要推動力。之後便可以基於這些理解來預測未來的發展方向。
為了佐證自己的觀點,Chung 在現場做了一個小實驗:丟筆。
首先,找到導致筆落下的主要推動力:重力。這裡忽略摩擦力等其它因素。
接下來理解重力:牛頓力學能提供一個很好的模型。
之後,基於該模型,我們就能預測這支筆的未來運動軌跡。
當然,這個示例非常簡單。在日常生活和工作中,一般意義上的預測未來卻非常困難,因為其涉及大量複雜驅動力的互相交織,以至於我們幾乎無法辦到。如下圖所示,預測難度會隨主要推動力的數量增長而大幅提升。
那這和 AI 領域有什麼關係呢?
如今的 AI 領域堪稱百花齊放,幾乎每天都有新技術、新模型、新智慧體、新基準、新產品等等出現,人們已經無力緊跟每一項最新進展了,那麼我們該如何預測 AI 研究的未來呢?
AI 研究的主要推動力是什麼?
類似地,我們首先需要找到 AI 研究的主要推動力。Chung 認為確實存在著一個推動大量甚至全部 AI 研究的主要推動力,而且這個推動力可能比我們之前預想的更簡單一些 —— 也就是更靠近以上圖表的左側。
那麼這個主要推動力是什麼呢?
首先來看 Rich Sutton 做的一張圖。其中,y 軸是 1 美元所能買到的算力(請注意這是對數刻度), x 軸是時間。
可以看到,其變化趨勢幾乎就是指數級的 —— 每隔 5 年,算力成本就會降低 10 倍。這是一個非常強大且已經持續了 100 多年的趨勢。這種趨勢是無可抗拒的;我們需要思考該如何去利用這樣的趨勢。事實上,這正是 AI 研究的主要推動力,是 AI 實現 scaling(規模擴充套件)的基礎。
算力成本指數級下降如何推動了 AI 研究呢?
這要從 AI 研究者的工作談起。AI 研究者的工作是教會機器學會普適性的思考,而人們通常採用的方式以某種數學方式建模我們自身思考的方式,然後將其整合到機器之中。
但問題來了:我們並不完全理解我們自身的思考方式。因此,AI 研究者其實是在建模一種他們根本不瞭解的東西。這種方法自然存在根本性缺陷。
如果採用這種正規化,也確實能得到一些解決問題的結構,然後 AI 研究者可以基於此寫出一些研究論文並開發出一些工具,但之後這就會變成一個瓶頸,限制進一步的擴充套件。更根本的問題是,這會限制給予機器的自由度,進而在某個時候造成適得其反的結果。
Chung 表示,這種情況已經持續了幾十年。他談到了 Rich Sutton 寫的一篇文章《苦澀的教訓》,他也認為這是「AI 領域最重要的一篇文章」。
簡單總結起來,這篇文章寫到過去 70 年 AI 領域的發展可總結成使用越來越弱的建模假設來開發越來越通用的方法,同時使用更多資料和計算量(即規模擴充套件)。舉個例子,從技術角度看,2000 年左右的 AI 的設計方法就比現在 AI 的更困難。
這是 AI 研究領域一直以來的正規化,並沒有什麼新奇的地方。
但現在的 AI 卻遠比 2000 年的 AI 強大。Chung 在此給出了自己的關鍵洞見:計算成本的下降是指數級的,這就意味著成本降低的速度超過了 AI 研究者精進自身的速度,而 AI 研究者不應該去對抗這種大勢,而應當盡力去利用它。
接下來 Chung 透過一張圖表進行了說明。
圖中,x 軸是計算量,y 軸是效能,兩條線則各自表示一種正規化。More structure(更多結構)是指採用更多建模假設、更精妙的數學形式等複雜設計的正規化,相對的就是 Less structure(更少結構)正規化。
可以看到,當計算量較少時,更多結構正規化的表現通常更好,但是由於某種結構上的瓶頸,就算增大計算量,其效能也難再進一步提升。而對於更少結構正規化,由於模型的自由度更高,因此一開始其效果不佳,而隨著其獲得的計算量增長,它也開始有效果了並還越來越好。因此這種正規化更具擴充套件性。
這就意味著我們應該直接選擇結構最少、模型最自由的方法嗎?
答案當然是否定的。
我們可以思考一下結構還要進一步更少的情況,如下圖中的紅線所示。此時要讓模型有效,所需的計算量將大幅增長。
因此,結構的多少取決於我們現在的實際情況。我們不可能什麼都不做,只是無限地等待下去,直到出現最通用的情況。
假設我們現在處於圖中豎直虛線的位置,那麼選擇「更少結構」就比選擇「進一步更少結構」更好,因為後者對現在的我們毫無用處。
但關鍵需要記住:新增一些結構的原因是算力不夠。之後算力足夠時,我們可以移除這些結構。
也就是說,在給定的計算量、資料、演算法和架構下,存在一個最優的歸納偏置或結構。這實際上也是當前 AI 領域各種進展的原因。但是,這些歸納偏置或結構會阻礙未來進一步的規模擴充套件,因此當未來有更多算力或更少的演算法等時,就需要將它們移除。
Chung 表示,AI 研究社群在新增結構方面做得很好,因為這能用來發論文;但在移除結構方面做得還不夠,因為這沒多少好處。他呼籲 AI 研究社群更多關注這一方面。他說這也是一個苦澀的教訓,並表示:「長期來看更好的東西在短期來看幾乎必定更糟糕。」
他認為這算是 AI 研究領域的一個特有現象,因為當前的 AI 研究正規化是基於學習的方法,也就是說讓模型自由地選擇學到什麼。而正因為模型獲得了學習的自由,所以早期的時候情況顯得很混亂,效果也不好。然後,隨著投入的算力增多,模型也越來越好。
總結一下:AI 研究背後的主要推動力是:成本指數級下降的算力和相關的規模擴充套件。
用 Transformer 的發展歷程理解 AI 研究的主要推動力
找到了 AI 研究的主要推動力,接下來我們就需要理解它,這也是 Chung 這次演講的重點。為此,Chung 將帶我們一道回顧 Transformer 的發展歷史,分析不同時期研究者做出的關鍵結構選擇及其原因 —— 這些結構選擇在當時是否為最優的可能已經不重要,我們現在或許也應該移除它們了。
現在稍微加點技術內容:Transformer 架構是怎樣的?
Transformer 有多種變體。Chung 將探討其中三種:編碼器 - 解碼器、僅編碼器、僅解碼器。其中編碼器 - 解碼器 Transformer 是原始版本的 Transformer,其結構也更多;僅編碼器 Transformer 的代表是 BERT;而僅解碼器 Transformer 家族則包括 GPT-3 等語言模型,其結構遠少於編碼器 - 解碼器版本。
僅編碼器 Transformer 雖然有些用途,但實際上在大多數情況下並不很有用,因此 Chung 先簡單談了談它,然後重點比較了編碼器 - 解碼器 Transformer 與僅解碼器 Transformer。
我們首先在一個非常高的層級上看看 Transformer:Transformer 是一種序列模型,而序列模型的輸入為一個序列,而序列中的元素可以是詞或影像等等。這是一個普適的概念。
在下圖的示例中,序列元素是詞,而詞構成的序列就是句子:「Unicode characters like emojis may be split.」。
首先,第一步是 token 化。這需要某種編碼方案,從而以計算機能理解的方式表示詞。這裡是將序列 token 化為一定數量的整數,從而得到一個整數序列。
然後,現在的主導正規化是將每個序列元素表示成一個向量,從而得到一個向量序列。
最後就要用到序列模型了,其目標是建模序列元素之間的互動關係,具體的做法就是計算這些向量元素之間的點積。如果點積較高,則可以說它們關聯得更緊密。
Transformer 這類特殊的序列模型使用了所謂的注意力(attention)來建模這種互動關係。
編碼器 - 解碼器 Transformer
下面深入原始的編碼器 - 解碼器 Transformer 的細節:
可以看到,它有很多元件,而它在這裡需要執行一個機器翻譯任務:將英語「That is good」翻譯成德語。
我們先看向左側,這是其中的編碼器。首先,它需要將那句英語編碼成密集向量(圖中表示成了大小為 3 的向量)。然後,執行點積,也就是圖中的線 —— 可以看到,這裡的每個 token 都連線了所有其它 token。這被稱為雙向自注意力(bidirectional self-attention)。
之後是一些 MLP 或前向層。它們不進行互動,只是為各個 token 執行一些乘法。
而這只是其中一層,實際的 Transformer 編碼器會重複 N 層。
最後會得到一個向量序列,其中每個向量都表示一個序列元素(這裡是詞)。這就是編碼器的輸出。
然後看向右側的解碼器。同樣這也會堆疊很多層。
訓練時,向解碼器輸入應該得到的答案:[BOS] Das ist gut。其中 [BOS] 是指「序列開始」。
同樣,將其編碼成密集向量,只是之後使用的注意力是因果自注意力(causal self-attention),也就是說時間步驟 t 的 token 只能關注 t 以及之前的 token,因為當模型開始生成翻譯結果時,它無法看到未來的 token。在訓練時,這可以透過掩碼(masking)方法來實現。
之後,同樣的重複 N 層,最後得到輸出序列:Das ist gut [EOS]。其中 [EOS] 是指「序列結束」。因此這是一種序列到序列的對映。
這就是編碼器 - 解碼器 Transformer 的總體概況。接下來 Chung 指出了某個重要的注意力模式,也就是將解碼器和編碼器連線起來的跨注意力機制(cross-attention mechanism)。具體來說,對於編碼器輸出的序列中的每個向量表徵,解碼器應該關注其中一些。有趣的是,解碼器中的所有層關注的都是解碼器最終層的輸出。
僅編碼器 Transformer
暫時請記住這一設計,後面會用。我們先看另一種架構:僅編碼器 Transformer。
可以看到,僅編碼器 Transformer 與編碼器 - 解碼器架構的編碼器部分基本一樣。
以同樣的輸入為例(前面增加了一個特殊 token [CLS]),經過編碼器處理後,這裡會得到表示整個序列的單個向量(而不是一個序列)。
假如這裡的任務是情緒分析,就需要在後面增加針對該特定任務的層,以將這個向量對映成分類標籤(這裡是積極和消極)的機率。
這類架構的傑出代表是 BERT。2018 年 BERT 剛問世就在語言理解任務基準 GLUE 上刷榜了,因為大多情況都可以將序列放入分類標籤中。
Chung 表示這就是當時 AI 領域取得的進步。在我們考慮解決問題時,我們通常希望簡化問題,然後向問題新增結構來取得進展,但這裡新增的結構其實是放棄生成部分。這樣一來,問題就簡單多了:不再是序列到序列,而是序列到分類標籤。
基於此,在 2018 和 2019 年那兩年,湧現了很多研究 BERT 的論文。Chung 打趣地說:「我們稱之為 BERT 工程。」實際上就是對 BERT 做一些細微的修改,使之在 GLUE 基準上提升一點點,然後寫一篇論文。那時候很混亂,但如果高屋建瓴地看,放棄生成序列的做法確實能帶來很大的效能增益,但難以長期持續,所以實際上用處不大。因此,後面也不會過多談及僅編碼器 Transformer。
僅解碼器 Transformer
Chung 表示僅解碼器 Transformer 是他的最愛。乍一看這似乎很複雜,但那其實都是注意力,這個架構實際上很簡單。
對於僅解碼器 Transformer,有的人有一個誤解:該架構的作用是語言建模的下一 token 預測,不能用來監督學習。但實際上可以做到,其訣竅就是將輸入與目標輸出連線起來。這樣一來,就變成了簡單的序列到序列。
其中因果自注意力機制的作用有兩個:處理目標序列和輸入序列之間的交叉注意力以及實現每個序列之中的自注意力學習。這裡的關鍵設計是自注意力也能作為跨注意力,並且輸入和目標在一定程度上共享引數。
將編碼器 - 解碼器變成僅解碼器
接下來,透過將結構更多的編碼器 - 解碼器 Transformer 變成僅解碼器 Transformer,Chung 將帶我們看到並理解這兩種架構之間的差異。
首先在跨注意力方面,如上圖所示,左側的編碼器 - 解碼器有粉色標記的跨注意力,而右側的僅解碼器沒有。如果我們想把左側架構變成右側的,那麼就需要去掉這些跨注意力。注意力機制大概有 4 個投射矩陣,並且自注意力和跨注意力實際上有同樣的引數量和形狀,因此可以選擇共享它們。這樣一來,它們就變成了基本一樣的注意力。
第二個差異是引數共享,也就是說在輸入和目標序列之間,編碼器 - 解碼器架構使用了不同的引數,而僅解碼器只有一個堆疊,也就是使用了共享引數。因此,如果要將左邊變成右邊,就需要共享左邊的編碼器引數。
第三個差異是目標到輸入的注意力模式。在編碼器 - 解碼器架構中,這是透過跨注意力實現的;而在僅解碼器架構中,都是自注意力。差異在於,在編碼器 - 解碼器架構中,解碼器中的每一層都關注編碼器的最終層輸出;而在僅解碼器架構中,則是在各層本身之中。為了將左側變成右側,就需要將注意力帶回各層之中。
最後一個差異是輸入注意力。編碼器 - 解碼器架構有雙向注意力,而僅解碼器有單向注意力。為了讓它們匹配,這裡的做法很簡單:直接去掉編碼器 - 解碼器架構中的一個方向。
這樣一來,這兩種架構就幾乎一模一樣了,只在跨注意力有一點差異,但它們的引數量是一樣的。Chung 表示,如果使用同樣的方法和資料針對同樣的任務訓練它們,那麼得到的結果也會差不多,因此可以說它們是一樣的。
下表總結了這四項差異:
那麼相比於僅解碼器 Transformer,編碼器 - 解碼器架構多了哪些結構呢?
首先,在編碼器 - 解碼器架構中,輸入序列和目標序列足夠不同,因此對該架構而言,分開使用不同的引數是有效的。
Chung 繼續以機器翻譯為例進行了說明。在 2017 年 Transformer 剛誕生的時候,翻譯是一個非常受歡迎的任務,因為其難度還很大;而且這還是一個序列到序列任務,可以透過一個 GLUE 分數來度量,從而為研究者提供一個最佳化基準。
在機器翻譯任務中,輸入和目標是不同語言的序列。如果模型的學習目標就只是執行翻譯,那麼讓編碼器中的引數處理英語並讓解碼器中的引數用於德語就是非常合理的做法,也是很自然的做法。
但現在的語言模型就不只是執行翻譯了,甚至都可以說不只是關於語言的,而是為了學習知識。Chung 表示這些能力都是「下一 token 預測的副產品」。那麼,在這種情況下,對於同樣的知識,如果只是語言不同,再將引數分開還合理嗎?Chung 認為這並不合理,也不自然。而且也正是因為沒有分開,現代語言模型所能做的事情要多得多。
Chung 又給出了另一個例子。這是他兩年前還在谷歌時做的一項有關指令微調的研究《Scaling Instruction-Finetuned Language Models》。簡單來說,該研究就是使用學術資料集來微調已經完成預訓練的模型。
這裡我們來看看對兩個不同的架構進行指令微調所獲得的增益。如下圖所示,上面五個資料基於模型 Flan T5,這是一種編碼器 - 解碼器架構的模型;下面的 PaLM 則是僅解碼器架構。
Chung 表示,他們花了大量時間來最佳化 PaLM,而對於 T5 則僅僅用了三天,結果 T5 獲得效能增益卻要大得多。
Chung 說:「我當時對此深感困惑。」因此在這篇論文發表之後,他又做了進一步的研究,希望找到這一現象背後的原因。他的假設是這與長度有關。
他們使用的學術資料集包含 1832 個任務。這些任務基本都有一個特點:輸入長但目標輸出短。輸入長的原因是讓任務變得複雜和困難,而目標短則是為了方便評估。因此,輸入序列的長度分佈就如以上上圖所示,目標序列的長度分佈則是以上下圖那樣。對於編碼器 - 解碼器架構,就是編碼器和解碼器分別處理一種不同型別的序列,而它也正好擅長這種情況 —— 適合處理這個學術資料集。Chung 說:「我認為這就是一個意外。」
現在,越來越多用例涉及到生成更長的目標序列,並且像是聊天這樣的應用還涉及到將這一輪的輸出用作下一輪的輸入,編碼器 - 解碼器架構的這種針對非常特定資料集的優勢就沒有了。畢竟如果下一輪的輸入和上一輪的輸出一樣,那麼為輸入和目標分開配置引數就沒有道理了。
這是編碼器 - 解碼器中的第一個歸納偏置或結構,另一個結構則是其目標元素只能關注已經完全編碼的元素,即編碼器的最終輸出。
通常而言,在深度神經網路中,較低層和較高層編碼資訊的層級是不一樣的。比如在計算機視覺模型中,較低層編碼的是線條、點、顏色等基礎特徵,而更高層會將這些特徵組合起來,編碼更復雜的資訊,比如貓臉。因此,這種深度學習也被稱為分層表徵學習。
那問題就來了:如果解碼器的第 1 層也是關注編碼器的最終層(它們可能有非常不同的資訊層級),那麼這是否會成為一個資訊瓶頸呢?
當然,Chung 也指出在實踐中,這還不成問題,因為 T5 的編碼器層也不過 20 多層,但如果編碼器的層數再多十倍乃至百倍呢?
然後就是編碼器 - 解碼器架構比僅解碼器多的最後一個結構:雙向的輸入注意力。
2018 年誕生的 BERT 中的「B」便是指雙向(bidirectional)。那時候,人們在競相解決問答 SQuAD 任務 —— 這是一個非常困難的任務。這種新增的技巧能帶來很大收益。雙向對於此類任務還是很用的,大概將 SQuAD 分數提升了大約 20 點 —— 很大的進步。
但是,Chung 表示,一旦規模變得足夠大,這種增加雙向性質的技巧就不重要了。他及團隊用 Flan 2 嘗試了雙向和單向微調,結果效能差異不大;但對於多輪聊天等應用,開發雙向注意力的難度很大。
原因也很容易理解。對於每一輪對話,都必須重新編碼新的輸入。對於單向架構來說,編碼新輸入的訊息就夠了。但對於雙向架構,每一輪都需要再次編碼新輸入,如下圖的例子所示。
也就是說,在 2018 年表現很好的雙向注意力已經被規模擴充套件接替了,而且由於雙向注意力的工程開發難度更大,我們也不需要它了。
結語
最後,Chung 簡單總結了這次演講的內容:
找到了 AI 研究的主要推動力,即計算成本呈指數級下降以及相關的規模擴充套件;
為了理解這種主要推動力,分析了編碼器 - 解碼器 Transformer 比僅解碼器 Transformer 多的結構並從規模擴充套件角度思考了其意義。
他表示,分析過去的架構並非毫無用處,這能為我們提供一個更加統一的視角,幫助我們瞭解有哪些結構其實最終可能被規模擴充套件接替。他說:「我們能很好地共同塑造 AI 的未來。」