Transformer是一種基于注意力機制的深度學習模型,它在NLP領域取得了革命性的進展。該模型的主要特點(可以說一些關鍵術語):
1、自注意力機制(Self-Attention):該機制使得模型能夠捕捉到序列內部的長距離依賴關系。
2、多頭注意力(Multi-Head Attention):使用此機制來增強模型對不同位置信息的捕捉能力。
3、位置編碼(Positional Encoding):引入位置編碼,將序列中每個元素的位置信息編碼到模型輸入中,以幫助模型理解單詞在序列中的位置。
4、編碼器-解碼器架構:編碼器負責處理輸入序列,解碼器負責生成輸出序列。
5、層次結構:Transformer模型通過堆疊多個編碼器和解碼器層來提高模型的性能。
Self-Attention(自注意力機制層)
自注意力機制(Self-Attention)能很好地解決RNN網絡固有的計算效率不高和長程依賴問題,它允許模型并行處理整個序列,有效地捕獲序列中的長距離依賴。這一機制的引入,讓Transformer模型成為了一項重大技術突破,逐漸成為了如今NLP的主流研究方向,又影響到計算機視覺(CV)研究領域。自注意力機制,又稱內部注意力機制,顧名思義,是一種將單個序列的不同位置關聯起來以計算同一序列的表示的注意機制。注意力機制主要體現在相似度系數上,其反映對于一次查詢當前資源中不同數據的重要程度,通過softmax等形式計算出該系數;實現聚焦重要數據,忽略不相關數據的注意力作用。
傳統的注意力機制發生在Target的元素Query和Source中的所有元素之間,其權重的計算需要Target來參與。即在Encoder-Decoder模型中,Attention權重的計算不僅需要Encoder中的隱狀態而且還需要Decoder中的隱狀態。而自注意力機制中不是Target和Source之間的Attention機制,而是Source內部元素之間或者Target內部元素之間發生的Attention機制。如在Transformer中在計算權重參數時,將文字向量轉成對應的KQV,只需要在Source處進行對應的矩陣操作,用不到Target中的信息。
就是說自注意力機制和注意力機制的區別就在于,注意力機制的查詢(Query)和鍵(Key)是不同來源的,而自注意力機制的查詢(Query)和鍵(Key)則都是來自于同一組的元素,因此,自注意力機制也被稱為內部注意力機制(intra-attention)。自注意力機制的優點是感受野大;缺點是需要大數據。
自注意力機制其實就是論文中所指代的“Scaled Dot-Product Attention“。論文作者說注意力機制可以描述為將query和一系列的key-value對映射到某個輸出的過程,而這個輸出的向量就是根據query和key計算得到的權重作用于value上的權重和。
Multi-head Attention(多頭注意力機制)
多頭注意力機制的架構(Multi-Head Attention)圖,可以看到(V, K, Q)三個矩陣通過h個線性變換(Linear),分別得到h組(V, K, Q)矩陣,每一組(V, K, Q)經過Attention計算,得到h個Attention Score并進行拼接(Concat),最后通過一個線性變換得到輸出,其維度與輸入詞向量的維度一致,其中h就是多頭注意力機制的“頭數”。在多頭注意力機制中,其輸出序列的長度與輸入的Query序列的長度一致;在接受的三個序列Query、Key、Value中,其Key與Value是鍵值對,序列長度一定相同,Query序列長度可以與Key、Value長度不同。
所謂的多頭注意力機制其實就是將原始的輸入序列進行多組的自注意力處理過程;然后再將每一組自注意力的結果拼接起來進行一次線性變換得到最終的輸出結果。
因為一段文字可能蘊含了比如情感維度、時間維度、邏輯維度等很多維度的特征,為了能從不同的維度抓住輸入信息的重點,就又引入了多頭注意力機制(multi-head attention)。所謂多頭注意力,簡單說就是把輸入序列投影為多組不同的Query,Key,Value,并行分別計算后,再把各組計算的結果合并作為最終的結果,通過使用多頭注意力機制,可以更好地捕獲來自輸入的多維度特征,提高模型的表達能力和泛化能力,并減少過擬合的風險。多頭注意力機制的目的是為了從多個維度捕捉提取更多的特征,從多個“頭”得到不同的Self-Attention Score,提高模型表現。