官术网_书友最值得收藏!

1.1 Transformer基礎

Transformer模型由Google于2017年提出,用于解決序列到序列(Sequence-to-Sequence,Seq2Seq)任務,該模型摒棄了傳統的卷積神經網絡(Convolutional Neural Network,CNN)和循環神經網絡(Recurrent Neural Network,RNN)結構,采用注意力(Attention)機制,在減少計算量和提高并行效率的同時取得了更加優異的效果。

為了解決Seq2Seq任務,Transformer模型的結構由編碼器(Encoder)和解碼器(Decoder)兩部分組成,如圖1-1所示,左邊為編碼器部分,右邊為解碼器部分。編碼器部分主要由6個(圖1-1左邊的數字N為6)相同的層堆疊而成,而每一層都包含兩個子層,分別為多頭注意力(Multi-Head Attention)層和前饋網絡(Feed-Forward Network,FFN)層,并采用相加和層歸一化(Layer Normalization,LayerNorm)操作連接兩個子層。解碼器部分也是由6個(圖1-1右邊的數字N為6)相同的層堆疊而成,除了編碼器的兩層之外,又插入一個掩碼多頭注意力層,用于將編碼器的輸出與解碼器的輸入相融合。Transformer模型在解碼器部分的注意力機制上增加了上三角掩碼矩陣,防止在模型訓練過程中出現信息泄露情況,保證模型在計算當前位置信息時不受后面位置信息的影響。

圖1-1 Transformer模型結構

多頭注意力層由多個縮放點積注意力(Scaled Dot-Product Attention)的自注意力(Self-Attention)機制組成,如圖1-2所示。

注意力機制一般可以看作將查詢(Query)和一組鍵值對(Key Value Pair)映射到高維空間,即對Value進行加權求和計算,其中加權求和時的權重值是由Query與Key計算得出的。對于縮放點積注意力來說,將查詢向量(Q)與鍵向量(K)進行相乘,再進行大小為的縮放,經過歸一化后,與值向量(V)進行相乘,獲取最終輸出,計算公式如下:

圖1-2 多頭注意力層結構

由于QK相乘得到向量時,向量中值之間的方差會變大,即向量中不同維度的取值波動變大,如果直接進行歸一化,會導致較大的值更大,較小的值更小,因此進行參數縮放,使得參數之間的差距變小,訓練效果更好。由于解碼器部分的特殊性,注意力機制中QK相乘后,還需要額外乘上一個掩碼矩陣。

多頭注意力是將多個縮放點積注意力的輸出結構進行拼接,再通過全連接層變換得到最終結構,計算公式如下:

MultiHead(QKV)=Concat(head1,…,headhW0

在不同位置中,QKV的獲取方式不同。編碼器部分的多頭注意力層和解碼器部分的第一個多頭注意力層的QKV是由輸入向量經過3種不同的全連接層變換得來的。解碼器部分的第二個多頭注意力層的Q是由第一個多頭注意力層輸出向量經過全連接變換得來的,KV則是編碼器部分的輸出向量。

Transformer中的FFN層則由兩個全連接層加上ReLU激活函數組成,計算公式如下:

FFN(x)=max(0,xW1+b1W2+b2

每一層采用層歸一化的原因是層歸一化不受訓練批次大小的影響,并且可以很好地應用在時序數據中,不需要額外的存儲空間。

由于注意力機制與CNN結構一樣,無法表示文本的時序性,相比于LSTM結構等循環神經網絡,在NLP領域效果要差一些,因此引入位置信息編碼,相當于使模型具備解決時序性內容的能力,這也是Transformer成功的重要因素之一。Transformer采用了絕對位置編碼策略,通過不同頻率的正余弦函數組成每個時刻的位置信息,計算公式如下:

Transformer模型目前已經成為主流框架,不僅在NLP任務上大放異彩,并且在計算機視覺(Computer Vision,CV)任務上嶄露頭角,目前主流的大型語言模型基本上都采用了Transformer模型結構。相較于CNN來說,Transformer模型可以獲取全局的信息。相較于RNN來說,Transformer模型擁有更快的計算速度,可以并行計算,并且注意力機制也有效地解決了長序列遺忘的問題,具有更強的長距離建模能力。

Transformer結構仍存在一些缺點,例如:組成Transformer的自注意力機制的計算復雜度為OL2),當輸入長度L過大時,會導致計算量爆炸;Transformer獲取內容位置信息的方式全部來源于位置信息編碼等。因此,出現了很多Transformer結構的變種,例如Sparse Transformer、Longformer、BigBird、Routing Transformer、Reformer、Linformer、Performer、Synthesizer和Transformer-XL等,也涌現出了各種位置編碼,如RoPE、ALiBi等,用于解決上述問題。本節主要介紹原始Transformer的結構,上述變體以及位置編碼就不過多介紹了,若想了解更多可以閱讀相關論文。

主站蜘蛛池模板: 望江县| 辉县市| 廊坊市| 和田市| 新平| 安泽县| 杭锦旗| 太原市| 东辽县| 临清市| 建瓯市| 沈丘县| 新兴县| 湖南省| 濮阳县| 抚远县| 察隅县| 色达县| 广汉市| 巫山县| 信丰县| 东乌珠穆沁旗| 永修县| 余姚市| 嘉荫县| 邵武市| 嘉义县| 竹山县| 定日县| 左权县| 沙坪坝区| 含山县| 商南县| 吉林省| 阳江市| 阜康市| 上饶市| 平武县| 承德市| 铜山县| 南靖县|