編者按:ChatGPT以近乎狂熱之勢席捲了全網。在沉浸於“ChatGPT潮”的同時,讓我們也來深入瞭解一下它和基石技術 - 大模型 Transformer吧。
Dale Markowitz的這篇文章為我們深入淺出地介紹了Transformer的重要性、創新性、應用領域等。
以下是譯文,Enjoy!
作者 | Dale Markowitz
編譯 | 嶽揚
你知聽說過這句話嗎?當你擁有一把錘子時,所有東西看起來都像釘子。那麼,在機器學習中,我們似乎真的發現了一個神奇的錘子,對於它來說,所有的東西都是釘子,它們被稱為Transformers。
Transformers是可以被設計用來翻譯文字、寫詩和文章的模型,甚至可以生成計算機程式碼。很多備受矚目的模型就是基於Transfomer, 如風靡全網的ChatGPT, AlphaFold 2(這個模型可以根據蛋白質的基因序列預測其結構),以及其他強大的自然語言處理(NLP)模型,如GPT-3、BERT、T5、Switch、Meena等等。
如果你想在機器學習,特別是NLP方面跟上時代的步伐,那麼至少要對Transformers有一定的瞭解。因此,在這篇文章中,我們將討論Transformers是什麼,它們如何工作,以及它們為什麼如此有影響力。
Transformers是神經網路架構的一種型別。簡而言之,神經網路是一種非常有效的模型型別,用於分析影像、影片、音訊和文字等複雜資料型別。但有不同型別的神經網路為不同型別的資料進行最佳化。例如,對於分析影像,我們通常會使用卷積神經網路[1]或 “CNNs”。其實可以說它們模仿了人腦處理視覺資訊的方式。
卷積神經網路,由Wikicommons的Renanar2提供
而自2012年[2]左右開始,我們在用CNN解決視覺問題方面已經相當成功,比如識別照片中的物體、識別人臉和手寫數字。但在很長一段時間裡,沒有任何類似的好方法存在於語言任務(翻譯、文字總結、文字生成、命名實體識別等)的處理中。這是不幸的,因為語言是我們人類交流的主要方式。
在2017年出現Transformers之前,我們使用深度學習來理解文字的方式是使用一種叫做迴圈神經網路或RNN的模型:
RNN的圖片,由Wikimedia提供
比方說,你想把一個英語句子翻譯成法語。RNN會把英語句子作為輸入,一次處理一個詞,然後按順序輸出它們的法語對應詞。這裡的關鍵是“按順序”。在語言中,單詞的順序很重要,不能隨便更改。
"Jane went looking for trouble."
上面這句話與下面下面這句話的意思完全不同。
"Trouble went looking for Jane."
因此,任何要理解語言的模型都必須捕捉到單詞的順序,而遞迴神經網路(recurrent neural networks)透過一次處理一個單詞的方法來做到這一點。
但是,RNN也存在很多問題。首先,它們在處理大型文字序列時很吃力,比如長段文字或文章。當到了一個段落的結尾時,它們會忘記開頭髮生了什麼。例如,一個基於RNN的翻譯模型可能難以記住一個長段落的主題。
更糟的是,RNNs很難訓練。它們很容易受到所謂的梯度消失/膨脹問題[3]影響(有時你只需重新開始訓練,然後祈禱)。更麻煩的是,由於它們是按順序處理單詞,RNNs很難達到並行化。這意味著你不能透過使用更多的GPU來加快訓練,這反過來意味著你不能在所有的資料上訓練它們。
01 進入Transformers的世界
Transformers是由谷歌和多倫多大學的研究人員在2017年開發的,最初是為了做翻譯。但與遞迴神經網路(RNN)不同,Transformers可以非常有效地進行並行化操作。這意味著,如果有合適的硬體條件,你可以訓練一些真正的大模型。
多大的大模型?
非常大。
如果要說一件關於 Transformers 的事情,那應該會是:將一個具有良好擴充套件性的模型與一個巨大的資料集相結合,其結果可能會讓你大吃一驚。
02 Transformers是如何工作的?
原始論文中的Transformer示意圖
雖然原始論文[4]的圖表有點嚇人,但Transformer背後的創新可以歸結為三個主要概念。
Positional Encodings位置編碼
Attention注意力
Self-Attention自注意力
2.1 Positional Encodings位置編碼
讓我們從第一個——位置編碼開始介紹。比方說,我們正試圖將文字從英語翻譯成法語。RNNs,即用AI進行文字翻譯的老方法,透過按順序處理單詞來理解詞序。但這也是使它們難以並行化的原因。
Transformers透過一種叫做位置編碼的創新方法繞過了這個障礙。這個想法是把你的輸入序列中的所有單詞(在這個例子中是一個英語句子)用它的順序給每個單詞附加一個數字。因此,要給你的網路提供一個序列,如:
[("Dale", 1), ("says", 2), ("hello", 3), ("world", 4)]
從概念上講,你可以認為這是把理解詞序的負擔從神經網路的結構轉移到資料本身。
起初,在Transformers對任何資料進行訓練之前,它不知道如何解釋這些位置編碼。但隨著模型看到越來越多的句子及其編碼的例子,它學會了如何有效地使用它們。
我在這裡做了許多簡化——原作者是使用正弦函式來進行位置編碼,而不是簡單的整數1、2、3、4,但重點是一樣的。將詞序儲存為資料,而不是結構,這樣神經網路就變得更容易訓練了。
2.2 Attention注意力
Transformers的下一個重要部分叫做注意力。
注意力是一種神經網路結構,如果你在學習機器學習,你就能夠經常聽到。事實上,2017年介紹Transformers的論文的標題並不叫《We Present You the Transformer》。相反,它被稱為 “Attention is All You Need”。
注意力[5]是在論文的兩年前,即2015年,在文字翻譯的背景下引入的。為了理解它,請看原始論文中的這個例句。
The agreement on the European Economic Area was signed in August 1992.
現在想一下,將這句話翻譯成法語的相應內容:
L’accord sur la zone économique européenne a été signé en août 1992.
翻譯這句話的一個壞方法是:透過英語句子中的每個單詞找到其法語的對應詞,一次一個單詞。這樣做效果並不好,原因有幾個。首先,法語翻譯中的一些詞被顛倒了:英語是 “European Economic Area”,而法語是 “la zone économique européenne”。另外,法語是一種帶有性別色彩的語言。形容詞 “économique” 和 “européenne” 必須採用陰性形式,以配合陰性物件 “la zone”。
注意力(Attention)是一種機制,允許文字模型在決定如何翻譯輸出句子中的單詞時 “檢視” 原句中的每一個單詞。這裡有該過程的視覺化圖片,來自那篇關於注意力的論文。
原圖來自論文《Neural Machine Translation by Jointly Learning to Align and Translate (2015)》
這是一種熱力圖,顯示了模型在輸出法語句子中的每個詞時 “關注” 的地方。正如我們想要的那樣,當模型輸出 “européenne” 這個詞時,它重點關注了 “European”和 “Economic”這兩個輸入詞。
那麼,模型是如何知道它在每個步驟中應該 “關注”哪些詞的呢?這是從訓練資料中學習到的東西。透過看到數以千計的法語和英語句子的例子,該模型學會了哪些型別的詞是相互依賴的。它學會了如何遵循詞性別、複數和其他語法規則。
自2015年出現以來,注意力機制一直是自然語言處理的一個非常有用的工具,但在其原始形式下,它是與遞迴神經網路一起使用的。所以,2017年Transformers論文的創新之處在於,在某些部分完全拋棄了RNN。這就是為什麼2017年的論文被稱為 “Attention is all you need”。
2.3 Self-Attention自注意力
Transformers的最後一部分(也許是最有影響的一部分)是對注意力的一種改變,稱為 “自注意力”。
我們剛才談到的那種注意力有助於在英語和法語句子中對齊單詞,這對翻譯很重要。但是,如果你不是要翻譯單詞,而是要建立一個能夠理解語言中潛在意義和模式的模型——一種可以用來完成任何數量的語言任務的模型,那該怎麼辦呢?
一般來說,使神經網路變得強大、令人激動和酷的原因是它們通常會自動建立它們所訓練的資料的有意義的內部表示。例如,當你檢查視覺神經網路的各層時,你會發現有幾組神經元可以“識別”邊緣、形狀,甚至像眼睛和嘴巴這樣的高階結構。一個根據文字資料訓練的模型可能會自動學習語篇、語法規則,以及單詞是否是同義詞。
一個神經網路學習的語言內部表徵越好,它在任何語言任務中的表現就越好。而事實證明,如果把注意力放在輸入文字本身上,它可以是一個非常有效的方法。
以這兩句話為例。
“Server, can I have the check?”
“Looks like I just crashed the server.”
server這個詞在這裡有兩種截然不同的意思,我們人類可以透過觀察周圍的詞來輕易地將其區分開來。自注意力允許神經網路在它周圍的詞的背景下理解一個詞。
因此,當一個模型處理第一句中的 “server”一詞時,它可能會注意到“check”一詞。
在第二句中,該模型可能會注意到 “crashed”這個詞,以確定“server”是指一臺機器。
自注意力有助於神經網路區分單詞、進行語篇標記、實體解析、學習語義角色以及更多[6]。
如果你想了解更深入的技術解釋,我強烈建議你看看Jay Alammar的博文:http://jalammar.github.io/ill...。
03 Transformers能做什麼?
BERT是最受歡迎的基於Transformers的模型之一,是 “Bidirectional Encoder Representations from Transformers” 的簡稱。它是由谷歌的研究人員在2018年推出的,並很快進入了幾乎所有的NLP專案(包括谷歌搜尋[7])。
BERT指的不僅僅是一種模型架構,而是一個經過訓練的模型本身,你可以在這裡(https://github.com/google-res...)免費下載和使用它。它是由谷歌的研究人員在一個巨大的文字語料庫上訓練出來的,並且已經成為NLP的瑞士軍刀,可以擴充套件解決一堆不同的任務,比如。
- 文字總結
- 問題回答
- 文字分類
- 命名實體解析
- 文字相似性
- 攻擊性/冒犯性語言檢測
- 瞭解使用者查詢內容
- ...
BERT證明,你可以在無標籤的資料上進行訓練來建立比較好的語言模型,比如從維基百科和Reddit收集的文字,然後這些大型 “基礎”模型可以用特定領域的資料來適應許多不同的使用情況。
由OpenAI建立的模型GPT-3[8],其生成文字的能力有目共睹。(編者:最近爆火的ChatGPT也有Transformer的功勞!)。谷歌研究院推出的Meena[9]是一款基於Transformers的聊天機器人(akhem,“conversational agent”),可以就幾乎任何話題進行對話(本文作者曾經花了20分鐘與Meena爭論什麼是人類)。
Transformers也在NLP之外掀起了波瀾,它可以譜寫音樂,透過文字描述中生成影像,並預測蛋白質結構。