ChatGPT紅得發紫,強得讓人類心悸,但在它的背後,還隱藏著一位真正的大佬。可以說,與它相比,ChatGPT其實隻是它的一個跟班小弟。或者說,隻是它掌控傢族中的一個比較靚的仔。這位大佬自2017年問世以來,隱約已成為AI領域的基石王者。它的名字叫做——Transformer。
一、Chat不重要,GPT才重要
先拆解一下ChatGPT,它由Chat與GPT兩部分組成。
聊天不重要,GPT才重要。
那什麼是GPT,它的全英文是Generative Pre-trained Transformer。
翻譯過來就是——生成式預訓練的變形金剛。
先問ChatGPT——你是誰?
我是誰,它是這樣解釋的:
GPT是基於Transformer架構的預訓練語言模型,可以生成自然語言文本。Transformer是基於自註意力機制的深度學習模型架構,它在自然語言處理領域中得到廣泛的應用,如機器翻譯、文本分類和生成模型等。
GPT是基於Transformer模型的改進版本,主要是針對生成任務進行優化,通過預訓練學習自然語言的語義和語法規律,進而生成高質量的文本。
因此,GPT可以看作是Transformer模型在生成任務上的一個應用擴展。
短短的自我介紹中,ChatGPT就四次提到Transformer。
Transformer模型結構圖,圖/Google Research
Transformer到底是什麼,讓ChatGPT如此迷戀?
這隻變形金剛,到底是隻什麼怪獸?
二、強大的變形金剛Transformer
Transformer的定義清晰明:
是用於自然語言處理(NLP)的神經網絡架構。
在Transformer出現之前,人工智能研究領域百傢爭鳴。
Transformer出現之後,格局開始變,開始打壓如日中天的循環神經網絡(RNN)和卷積神經網絡(CNN)。
Transformer架構使用註意力機制,能夠處理長序列的依賴關系。
這讓它具有以下明顯優點:
❶ 並行計算:由於自註意力機制的引入,Transformer可以實現並行計算,加快訓練速度。
❷ 長序列處理:相比傳統的循環神經網絡和卷積神經網絡,Transformer可以處理更長的序列,這是由於自註意力機制可以學習到全局的序列信息。
❸ 模塊化結構:Transformer由編碼器和解碼器兩部分組成,每部分都包含多層相同的模塊,這種模塊化結構使得Transformer更易於擴展和調整。
Transformer在各種任務中的表現,也將不斷得到改善和優化,發展日新月益。
自2017年推出之後, Transformer已經形成自己的傢族體系。
基於GPT架構,ChatGPT就隱藏在GPT-3的後面。
現在你就明白,它為什麼叫變形金剛。
它的確是可以演變成各種不同的角色,而且個個都挺厲害。
三、統一自然語言NLP
人工智能的一大研究方向,首先是自然語言處理NLP領域。
自從Transformers出現後,全球NLP領域的人工智能的工程師們望風景從。
Transformers在該領域的進展所向披靡,不可阻擋,原因如下:
❶ 模型大小和訓練數據規模的增加:大規模的Transformers模型,如GPT-3.5、bert、T5等,有些模型參數量達到千億級別,具有更強表達能力。
❷ 多語言和跨語言應用:由於Transformers模型具有更強泛化能力,因此可以被應用於多語言和跨語言任務,如機器翻譯、跨語言文本分類等。
❸ 與其他模型的結合和拓展:與其他模型結合使用,如結合卷積神經網絡(CNN)或循環神經網絡(RNN)進行多模態學習等。
❹ 解釋性和可解釋性:隨著越來越多的機器學習算法被應用於實際場景,對於模型的解釋性和可解釋性要求也越來越高。
LLM成長的時間線,圖/amatriain.net
在自然語言處理NLP領域,總體的趨勢是:LSTM/CNN→Transformer。
NLP領域分為兩大不同類型的任務:
❶ 理解類人工智能
❷ 生成式人工智能
這兩個領域的研發,已經收斂到兩個不同的預訓練模型框架裡:
❶ 自然語言理解,技術體系統一到以Bert為代表的“雙向語言模型預訓練+應用Fine-tuning”模式;
❷ 自然語言生成類任務,其技術體系則統一到以GPT為代表的“自回歸語言模型(即從左到右單向語言模型)+Zero /Few Shot Prompt”模式。
而這兩大模型都是基於Transformers,而且兩者也出現技術統一趨向。
在自然語言處理NLP這個領域,Transformer基本上已經一統天下。
以至於那些還沉迷於CNN,RNN的工程師被警告:
放棄戰鬥吧,向Transformer投降!
四、藏不住的野心:統一計算機視覺CV
除NLP,人工智能的另一分支是計算機視覺CV。
Transformer最開始,隻是專註於自然語言的處理。NLP曾經落後於計算機視覺,但是Transformer的出現迅速地改變現狀。
一出生就風華正茂,用來形容Transformer毫不為過。它催生一大批舉世矚目的模型,達到令人類不安的程度。
隨著Transformer統一NLP,計算機視覺領域顯然受到啟發。
一直沉迷於CNN神經網絡中的科學傢,開始想知道Transformer是否可以在計算機視覺方面取得類似的效果。
不試不知道,一試嚇一跳。
Transformer在計算機視覺領域同樣治療效果明顯:
❶ 圖像分類
ViT(Vision Transformer)是一種將Transformer應用於圖像分類的模型。在ImageNet等基準數據集上取得與卷積神經網絡(CNN)相媲美的結果。
圖/Google Research
❷ 目標檢測
DETR(DEtection TRansformer)是基於Transformer的目標檢測模型。DETR在COCO數據集上取得與 Faster R-CNN 方法相當的結果。
❸ 語義分割
Transformer可以用於語義分割任務,其中每個像素被視為一個token。在Cityscapes、ADE20K和COCO-Stuff等數據集上取得領先的結果。
以上例子都是Transformer的應用,它在計算機視覺領域也是虎視耽耽。
五、花8分鐘時間,拆解Transformer這隻變形金剛
Transformer為何如此強大,我們花8分鐘來解剖它。
以下內容來自Jay Alammar:
Transformers可以被看做一個黑盒,以文本翻譯中的法-英翻譯任務為例,這個黑箱接受一句法語作為輸入,輸出一句相應的英語。
那麼在這個黑盒子裡面都有什麼呢?
裡面主要有兩部分組成:Encoder 和 Decoder。
輸入一個文本的時候,該文本數據會先經過一個叫Encoders的模塊,對該文本進行編碼。然後將編碼後的數據再傳入一個叫Decoders的模塊進行解碼,解碼後就得到翻譯後的文本。
Encoders為編碼器,Decoders為解碼器。
細心的同學可能已經發現,上圖中的Decoders後邊加個s,那就代表有多個編碼器唄,沒錯,這個編碼模塊裡邊,有很多小的編碼器,一般情況下,Encoders裡邊有6個小編碼器,同樣的,Decoders裡邊有6個小解碼器。
在編碼部分,每一個的小編碼器的輸入,是前一個小編碼器的輸出。而每一個小解碼器的輸入,不光是它的前一個解碼器的輸出,還包括整個編碼部分的輸出。
那每一個小編碼器裡邊又是什麼呢?
放大一個encoder,發現裡邊的結構是一個自註意力機制+一個前饋神經網絡。
先來看下Self-attention是什麼樣子的。
通過幾個步驟來解釋:
(1) 首先,Self-attention的輸入就是詞向量,即整個模型的最初的輸入是詞向量的形式。自註意力機制,顧名思義就是自己和自己計算一遍註意力,即對每一個輸入的詞向量,我們需要構建Self-attention的輸入。
(2) 接下來就要計算註意力得分,這個得分是通過計算Q與各個單詞的K向量的點積得到的。以X1為例,分別將Q1和K1、K2進行點積運算,假設分別得到得分112和96。
(3) 將得分分別除以一個特定數值8(K向量的維度的平方根,通常K向量的維度是64)這能讓梯度更加穩定。
(4) 將上述結果進行softmax運算得到,softmax主要將分數標準化,使他們都是正數並且加起來等於1。
(5) 將V向量乘上softmax的結果,這個思想主要是為保持我們想要關註的單詞的值不變,而掩蓋掉那些不相關的單詞。
(6) 將帶權重的各個V向量加起來,至此,產生在這個位置上(第一個單詞)的Self-attention層的輸出,其餘位置的Self-attention輸出也是同樣的計算方式。
將上述的過程總結為一個公式就可以用下圖表示:
Self-attention層到這裡就結束嗎?
還沒有,論文為進一步細化自註意力機制層,增加“多頭註意力機制”的概念,這從兩個方面提高自註意力層的性能。
第一個方面,它擴展模型關註不同位置的能力,這對翻譯一下句子特別有用,因為我們想知道“it”是指代的哪個單詞。
第二個方面,它給自註意力層多個“表示子空間”。對於多頭自註意力機制,不止有一組Q/K/V權重矩陣。
經過多頭註意力機制後,就會得到多個權重矩陣Z,我們將多個Z進行拼接就得到Self-attention層的輸出:
上述我們經過self-attention層,我們得到self-attention的輸出,self-attention的輸出即是前饋神經網絡層的輸入,然後前饋神經網絡的輸入隻需要一個矩陣就可以,不需要八個矩陣,所以我們需要把這8個矩陣壓縮成一個,我們怎麼做呢?隻需要把這些矩陣拼接起來然後用一個額外的權重矩陣與之相乘即可。
最終的Z就作為前饋神經網絡的輸入。
接下來就進入小編碼器裡邊的前饋神經網模塊。
然後在Transformer中使用6個encoder,為解決梯度消失的問題,在Encoders和Decoder中都是用殘差神經網絡的結構,即每一個前饋神經網絡的輸入,不光包含上述Self-attention的輸出Z,還包含最原始的輸入。
上述說到的encoder是對輸入(機器學習)進行編碼,使用的是自註意力機制+前饋神經網絡的結構,同樣的,在ecoder中使用的也是同樣的結構。
以上,就講完Transformer編碼和解碼兩大模塊,那麼我們回歸最初的問題,將“Je suis etudiant”翻譯成“I am a student”,解碼器輸出本來是一個浮點型的向量,怎麼轉化成“I am a student”這兩個詞呢?
這個工作是最後的線性層接上一個Softmax,其中線性層是一個簡單的全連接神經網絡,它將解碼器產生的向量投影到一個更高維度的向量(logits)上。
假設我們模型的詞匯表是10000個詞,那麼logits就有10000個維度,每個維度對應一個惟一的詞的得分。之後的Softmax層將這些分數轉換為概率。選擇概率最大的維度,並對應地生成與之關聯的單詞作為此時間步的輸出就是最終的輸出啦!
假設詞匯表維度是6,那麼輸出最大概率詞匯的過程如下:
以上就是Transformer的框架,但是還有最後一個問題,我們都知道RNN中的每個輸入是時序的,是又先後順序的,但是Transformer整個框架下來並沒有考慮順序信息,這就需要提到另一個概念:“位置編碼”。
Transformer中確實沒有考慮順序信息,那怎麼辦呢,我們可以在輸入中做手腳,把輸入變得有位置信息不就行,那怎麼把詞向量輸入變成攜帶位置信息的輸入呢?
我們可以給每個詞向量加上一個有順序特征的向量,發現sin和cos函數能夠很好的表達這種特征,所以通常位置向量用以下公式來表示:
六、Transformer,在AI領域能形成大統一理論嗎?
從以上技術可以看出:Transformer是通用深度學習模型。
它的適用性非常強,原因在於它的自註意力機制(self-attention mechanism),可以更好地處理序列數據。
那這裡就要談一個更前沿的技術:跨模態。
也就是人工智能領域,能否創造一個可以處理語言、文字、圖片、視頻的大統一模型。
如果在物理世界,那就有點像愛因斯坦追求的“大統一理論”。
在跨模態應用中,Transformer模型通常使用圖像和文本特征作為輸入信息。
❶ 使用自註意力機制來學習兩個模態之間的關系。
❷ 使用多模態自註意力機制(multi-modal self-attention)來處理多個模態之間的關系。
Transformer應用於跨模態任務的效果非常好,在跨模態上取得成功的幾個例子:
CLIP:CLIP是一種使用Transformer的聯合訓練框架,同時使用圖像和文本來預訓練模型。該模型能夠將自然語言描述和圖像聯系起來,在多個視覺推理任務上取得非常出色的表現。
DALL-E:DALL-E是OpenAI發佈的一個模型,該模型通過預訓練得到非常強大的生成能力,在生成包括飛行的大象、色彩斑斕的沙漏等具有挑戰性的圖像時表現出色。
通過DALL-E生成的圖像
AI繪畫的老玩傢一定知道這兩個產品。
Transformer在各個方向上齊頭並進,形成龐大的Transformer傢族。
那麼,Transformer會在AI領域能形成大統一理論嗎?
現在得出這樣的結論為時過早,AI領域應用非常復雜,需要結合各種技術和算法才能解決,期待單一的模型解決所有問題,有點難。
但人類對於AGI的期待,又是實實在在的。
七、記住那些無名的技術英雄
Transformer如此強大,仍然沒有幾個人知道。就算是背後站著Google這樣的巨人,同樣被大眾忽略。
此時光芒四射的ChatGPT,連太陽的光輝都能夠遮蓋。可實際上,沒有Transformer的開源,就沒有ChatGPT。
從技術譜系上來看,ChatGPT隻是Transformer傢族中的一員。其它譜系的成員,同樣表現優秀且傑出。
如果一定要說未來誰能引領人工智能世界,我更相信是Transformer而非ChatGPT。
這裡引出來另一個問題,我們不能隻看到成功的山姆·阿爾特曼(Sam Altman),還要看到ChatGPT後面更多的技術英雄。例如:
Ashish Vaswani等人:提出自註意力機制Transformer模型;
Bradly C. Stadie等人:提出RLHF這種人類反饋機制;
Ilya Sutskever, Oriol Vinyals等人:提出Seq2Seq模型;
EleutherAI團隊:創建GPT-Neo模型的社區項目,是GPT-3的一個分支。
Hugging Face團隊:開發PyTorch和TensorFlow庫。
Brown等人:在GPT-3論文中提出新穎的訓練策略。
圖/amatriain.net
這樣的人還有很多,也許他們隻是充滿著理想主義的科學傢、工程師、數學傢和程序員,他們在商業上毫無追求,也不是最後的名利收割者。
但是,我們需要記住這些人。
當我看著Transformer那張經典的技術原理圖時,莫名會有一種心悸,甚至百感交集,這裡面容納上千上萬智者的心血啊。真的美,又真的讓人痛。對知識的追求,千折百回,這是我們人類最值得驕傲的品質吧。
當你看到Transformer的原理圖時,你會感動嗎?