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