Transformer技術原理綜述

1、前言
最近,AIGC(AI-Generated Content,人工智能生成內容)發展迅速,不僅被消費者追捧,而且備受技術和產業界關注。2022年9月23日,紅杉美國發表文章《生成式AI:一個創造性的新世界》,認為 AIGC會代表新一輪范式轉移的開始。2022年10月,Stability AI發布開源模型Stable Diffusion,可以根據用戶輸入的文字描述(稱為提示詞,prompts)自動生成圖像,即文生圖(Text-to-Image). Stable Diffusion、DALL-E 2、Midjourney、文心一格等可以生成圖片的AIGC模型引爆了AI作畫領域,AI作畫風行一時,標志人工智能向藝術領域滲透。下圖展示了由百度“文心一格”平臺創作的“未來機甲”主題作品。

圖1 由百度“文心一格”平臺創作的AI畫作
AIGC領域的迅猛發展,離不開深度神經網絡的進步。具體地說,是Transform模型的出現,賦予了神經網絡更加強大的全局計算能力,減少了網絡訓練耗時,提高了網絡模型的表現能力。當前表現較為優秀的AIGC領域模型,其技術底層架構中均包含Attention和 Transform技術。
2、發展歷史
2.1 深度神經網絡
以深度神經網絡為代表的信息技術的發展,推動了人工智能領域的進步與拓展。2006年,Hinton等人利用單層的RBM自編碼預訓練使得深層的神經網絡訓練得以實現;2012年,Hinton和Alex Krizhevsky設計的AlexNet神經網絡模型在ImageNet競賽中實現圖像識別分類,成為新一輪人工智能發展的起點。當前流行的深度神經網絡是仿照生物神經網絡所提出的概念。在生物神經網絡中,生物神經元層層傳遞接收到的信息,多個神經元信息匯總得到最終的結果。使用類比生物神經單元設計的邏輯神經單元構建的數學模型被稱為人工神經網絡。在人工神經網絡中,邏輯神經單元被用來探索輸入數據和輸出數據間的隱藏關系,當數據量較小時,淺層的神經網絡就可以滿足一些任務的要求,然而,隨著數據規模的不斷擴大,深度神經網絡開始顯示出其得天獨厚的優勢。
2.2 注意力機制
注意力機制(Attention Mechanism)由Bengio團隊于2014年提出并在近年廣泛的應用在深度學習中的各個領域,例如在計算機視覺方向用于捕捉圖像上的感受野,或者NLP中用于定位關鍵token或者特征。大量實驗證明,添加了注意力機制的模型在圖像分類、分割、追蹤、增強以及自然語言識別、理解、問答、翻譯中均取得顯著的效果提升。
注意力機制仿照視覺注意力機制而來。視覺注意力機制是人類大腦的一種天生的能力。當我們看到一幅圖片時,先是快速掃過圖片,然后鎖定需要重點關注的目標區域。比如當我們觀察下述圖片時,注意力很容易就集中在了嬰兒臉部、文章標題和文章首句等位置。試想,如果每個局部信息都不放過,那么必然耗費很多精力,不利于人類的生存進化。同樣地,在深度學習網絡中引入類似的機制,可以簡化模型,加速計算。從本質上理解,Attention是從大量信息中有篩選出少量重要信息,并聚焦到這些重要信息上,忽略大多不重要的信息。

圖2 人類注意力機制示意圖
3、技術詳解
智能Transformer模型拋棄了傳統的CNN和RNN單元,整個網絡結構完全是由注意力機制組成。在本章節中,我們會首先介紹 Transformer模型的總體流程,之后詳細介紹其中涉及的位置編碼信息和Self-Attention計算。
3.1 流程總述

圖3 注意力機制流程圖
如上圖所示,Transformer由Encoder模塊和Decoder模塊兩個部分組成,Encoder和Decoder都包含N個block。以執行翻譯任務為例,Transformer的工作流程大體如下:
第一步:獲取輸入句子的每一個單詞的表示向量X,X由單詞自身Embedding和單詞位置的Embedding相加得到。
第二步:將得到的單詞表示向量矩陣傳入Encoder模塊中,Encoder模塊對于輸入數據采用Attention方法進行計算。經過N個Encoder模塊后可以得到句子所有單詞的編碼信息矩陣,每一個Encoder模塊輸出的矩陣維度與輸入完全一致。
第三步:將Encoder模塊輸出的編碼信息矩陣傳遞到Decoder模塊中,Decoder會依次根據當前翻譯過的單詞i翻譯下一個單詞i+1。與Encoder結構相同,Decoder結構也使用Attention方法進行計算。在使用的過程中,翻譯到單詞i+1的時候需要通過Mask操作遮蓋住i+1之后的單詞。
3.2 Self-Attention計算
Transform模型的核心是注意力計算,其可以通過公式表示為

其中,Q,K,V分別表示Query,Key,Value,這三個概念取自于信息檢索系統,舉個簡單的搜索的例子來說。當你在某電商平臺搜索某件商品時,你在搜索引擎上輸入的內容便是Query,然后搜索引擎根據Query為你匹配Key(例如商品的種類,顏色,描述等),然后根據Query和Key的相似度得到匹配的內容(Value)。
self-attention中的Q,K,V也是起著類似的作用,在矩陣計算中,點積是計算兩個矩陣相似度的方法之一,因此上述公式中使用了Q矩陣乘以K矩陣的轉置進行相似度的計算。為了防止內積過大,需要除以d的平方根,最后對結果施以softmax激活函數。
3.3 位置編碼
Transformer中除了單詞自身的Embedding,還需要使用位置Embedding表示單詞出現在句子中的位置。因為Transformer不采用RNN的結構,而是使用全局信息,不能利用單詞的順序信息,而這部分信息對于NLP或CV而言均非常重要。所以Transformer中使用位置Embedding保存單詞在序列中的相對或絕對位置。
位置Embedding用PE表示,PE的維度與單詞Embedding是一樣的。PE可以通過訓練得到,也可以使用某種公式計算得到。在Transformer中采用了后者,計算公式如下:

其中,pos表示單詞在句子中的位置,d表示PE的維度,其大小與單詞自身Embedding相同,2i表示偶數的維度,2i+1表示奇數維度。
4、總結
Transformer的重點是Self-Attention結構,通過多維的Attention結構,網絡可以捕獲單詞之間多種維度上的隱藏關系,然而Transformer本身是不能利用單詞的順序信息的,因此需要在輸入中添加位置Embedding,用以存儲單詞的位置信息。與循環神經網絡相比,Transformer網絡可以比較好地并行訓練,與卷積神經網絡相比,Transformer網絡計算兩個位置之間的關聯所需的操作次數不隨距離增長,可以突破卷積神經網絡受限于感受野大小的計算距離。同時,Transformer網絡可以產生更具可解釋性的模型。我們可以從模型中檢查注意力分布,各個注意頭(attention head)可以學會執行不同的任務。































