Transformer技術(shù)原理綜述
1、前言
最近,AIGC(AI-Generated Content,人工智能生成內(nèi)容)發(fā)展迅速,不僅被消費(fèi)者追捧,而且備受技術(shù)和產(chǎn)業(yè)界關(guān)注。2022年9月23日,紅杉美國發(fā)表文章《生成式AI:一個(gè)創(chuàng)造性的新世界》,認(rèn)為 AIGC會代表新一輪范式轉(zhuǎn)移的開始。2022年10月,Stability AI發(fā)布開源模型Stable Diffusion,可以根據(jù)用戶輸入的文字描述(稱為提示詞,prompts)自動(dòng)生成圖像,即文生圖(Text-to-Image). Stable Diffusion、DALL-E 2、Midjourney、文心一格等可以生成圖片的AIGC模型引爆了AI作畫領(lǐng)域,AI作畫風(fēng)行一時(shí),標(biāo)志人工智能向藝術(shù)領(lǐng)域滲透。下圖展示了由百度“文心一格”平臺創(chuàng)作的“未來機(jī)甲”主題作品。
圖1 由百度“文心一格”平臺創(chuàng)作的AI畫作
AIGC領(lǐng)域的迅猛發(fā)展,離不開深度神經(jīng)網(wǎng)絡(luò)的進(jìn)步。具體地說,是Transform模型的出現(xiàn),賦予了神經(jīng)網(wǎng)絡(luò)更加強(qiáng)大的全局計(jì)算能力,減少了網(wǎng)絡(luò)訓(xùn)練耗時(shí),提高了網(wǎng)絡(luò)模型的表現(xiàn)能力。當(dāng)前表現(xiàn)較為優(yōu)秀的AIGC領(lǐng)域模型,其技術(shù)底層架構(gòu)中均包含Attention和 Transform技術(shù)。
2、發(fā)展歷史
2.1 深度神經(jīng)網(wǎng)絡(luò)
以深度神經(jīng)網(wǎng)絡(luò)為代表的信息技術(shù)的發(fā)展,推動(dòng)了人工智能領(lǐng)域的進(jìn)步與拓展。2006年,Hinton等人利用單層的RBM自編碼預(yù)訓(xùn)練使得深層的神經(jīng)網(wǎng)絡(luò)訓(xùn)練得以實(shí)現(xiàn);2012年,Hinton和Alex Krizhevsky設(shè)計(jì)的AlexNet神經(jīng)網(wǎng)絡(luò)模型在ImageNet競賽中實(shí)現(xiàn)圖像識別分類,成為新一輪人工智能發(fā)展的起點(diǎn)。當(dāng)前流行的深度神經(jīng)網(wǎng)絡(luò)是仿照生物神經(jīng)網(wǎng)絡(luò)所提出的概念。在生物神經(jīng)網(wǎng)絡(luò)中,生物神經(jīng)元層層傳遞接收到的信息,多個(gè)神經(jīng)元信息匯總得到最終的結(jié)果。使用類比生物神經(jīng)單元設(shè)計(jì)的邏輯神經(jīng)單元構(gòu)建的數(shù)學(xué)模型被稱為人工神經(jīng)網(wǎng)絡(luò)。在人工神經(jīng)網(wǎng)絡(luò)中,邏輯神經(jīng)單元被用來探索輸入數(shù)據(jù)和輸出數(shù)據(jù)間的隱藏關(guān)系,當(dāng)數(shù)據(jù)量較小時(shí),淺層的神經(jīng)網(wǎng)絡(luò)就可以滿足一些任務(wù)的要求,然而,隨著數(shù)據(jù)規(guī)模的不斷擴(kuò)大,深度神經(jīng)網(wǎng)絡(luò)開始顯示出其得天獨(dú)厚的優(yōu)勢。
2.2 注意力機(jī)制
注意力機(jī)制(Attention Mechanism)由Bengio團(tuán)隊(duì)于2014年提出并在近年廣泛的應(yīng)用在深度學(xué)習(xí)中的各個(gè)領(lǐng)域,例如在計(jì)算機(jī)視覺方向用于捕捉圖像上的感受野,或者NLP中用于定位關(guān)鍵token或者特征。大量實(shí)驗(yàn)證明,添加了注意力機(jī)制的模型在圖像分類、分割、追蹤、增強(qiáng)以及自然語言識別、理解、問答、翻譯中均取得顯著的效果提升。
注意力機(jī)制仿照視覺注意力機(jī)制而來。視覺注意力機(jī)制是人類大腦的一種天生的能力。當(dāng)我們看到一幅圖片時(shí),先是快速掃過圖片,然后鎖定需要重點(diǎn)關(guān)注的目標(biāo)區(qū)域。比如當(dāng)我們觀察下述圖片時(shí),注意力很容易就集中在了嬰兒臉部、文章標(biāo)題和文章首句等位置。試想,如果每個(gè)局部信息都不放過,那么必然耗費(fèi)很多精力,不利于人類的生存進(jìn)化。同樣地,在深度學(xué)習(xí)網(wǎng)絡(luò)中引入類似的機(jī)制,可以簡化模型,加速計(jì)算。從本質(zhì)上理解,Attention是從大量信息中有篩選出少量重要信息,并聚焦到這些重要信息上,忽略大多不重要的信息。
圖2 人類注意力機(jī)制示意圖
3、技術(shù)詳解
智能Transformer模型拋棄了傳統(tǒng)的CNN和RNN單元,整個(gè)網(wǎng)絡(luò)結(jié)構(gòu)完全是由注意力機(jī)制組成。在本章節(jié)中,我們會首先介紹 Transformer模型的總體流程,之后詳細(xì)介紹其中涉及的位置編碼信息和Self-Attention計(jì)算。
3.1 流程總述
圖3 注意力機(jī)制流程圖
如上圖所示,Transformer由Encoder模塊和Decoder模塊兩個(gè)部分組成,Encoder和Decoder都包含N個(gè)block。以執(zhí)行翻譯任務(wù)為例,Transformer的工作流程大體如下:
第一步:獲取輸入句子的每一個(gè)單詞的表示向量X,X由單詞自身Embedding和單詞位置的Embedding相加得到。
第二步:將得到的單詞表示向量矩陣傳入Encoder模塊中,Encoder模塊對于輸入數(shù)據(jù)采用Attention方法進(jìn)行計(jì)算。經(jīng)過N個(gè)Encoder模塊后可以得到句子所有單詞的編碼信息矩陣,每一個(gè)Encoder模塊輸出的矩陣維度與輸入完全一致。
第三步:將Encoder模塊輸出的編碼信息矩陣傳遞到Decoder模塊中,Decoder會依次根據(jù)當(dāng)前翻譯過的單詞i翻譯下一個(gè)單詞i+1。與Encoder結(jié)構(gòu)相同,Decoder結(jié)構(gòu)也使用Attention方法進(jìn)行計(jì)算。在使用的過程中,翻譯到單詞i+1的時(shí)候需要通過Mask操作遮蓋住i+1之后的單詞。
3.2 Self-Attention計(jì)算
Transform模型的核心是注意力計(jì)算,其可以通過公式表示為
其中,Q,K,V分別表示Query,Key,Value,這三個(gè)概念取自于信息檢索系統(tǒng),舉個(gè)簡單的搜索的例子來說。當(dāng)你在某電商平臺搜索某件商品時(shí),你在搜索引擎上輸入的內(nèi)容便是Query,然后搜索引擎根據(jù)Query為你匹配Key(例如商品的種類,顏色,描述等),然后根據(jù)Query和Key的相似度得到匹配的內(nèi)容(Value)。
self-attention中的Q,K,V也是起著類似的作用,在矩陣計(jì)算中,點(diǎn)積是計(jì)算兩個(gè)矩陣相似度的方法之一,因此上述公式中使用了Q矩陣乘以K矩陣的轉(zhuǎn)置進(jìn)行相似度的計(jì)算。為了防止內(nèi)積過大,需要除以d的平方根,最后對結(jié)果施以softmax激活函數(shù)。
3.3 位置編碼
Transformer中除了單詞自身的Embedding,還需要使用位置Embedding表示單詞出現(xiàn)在句子中的位置。因?yàn)門ransformer不采用RNN的結(jié)構(gòu),而是使用全局信息,不能利用單詞的順序信息,而這部分信息對于NLP或CV而言均非常重要。所以Transformer中使用位置Embedding保存單詞在序列中的相對或絕對位置。
位置Embedding用PE表示,PE的維度與單詞Embedding是一樣的。PE可以通過訓(xùn)練得到,也可以使用某種公式計(jì)算得到。在Transformer中采用了后者,計(jì)算公式如下:
其中,pos表示單詞在句子中的位置,d表示PE的維度,其大小與單詞自身Embedding相同,2i表示偶數(shù)的維度,2i+1表示奇數(shù)維度。
4、總結(jié)
Transformer的重點(diǎn)是Self-Attention結(jié)構(gòu),通過多維的Attention結(jié)構(gòu),網(wǎng)絡(luò)可以捕獲單詞之間多種維度上的隱藏關(guān)系,然而Transformer本身是不能利用單詞的順序信息的,因此需要在輸入中添加位置Embedding,用以存儲單詞的位置信息。與循環(huán)神經(jīng)網(wǎng)絡(luò)相比,Transformer網(wǎng)絡(luò)可以比較好地并行訓(xùn)練,與卷積神經(jīng)網(wǎng)絡(luò)相比,Transformer網(wǎng)絡(luò)計(jì)算兩個(gè)位置之間的關(guān)聯(lián)所需的操作次數(shù)不隨距離增長,可以突破卷積神經(jīng)網(wǎng)絡(luò)受限于感受野大小的計(jì)算距離。同時(shí),Transformer網(wǎng)絡(luò)可以產(chǎn)生更具可解釋性的模型。我們可以從模型中檢查注意力分布,各個(gè)注意頭(attention head)可以學(xué)會執(zhí)行不同的任務(wù)。