自我關註:將輸入與輸入本身進行比較(計算相似度),將輸入的上下文無關詞向量更新為上下文相關詞向量。它解決了RNN的短時記憶問題(即壹個輸入的詞向量只與之前的輸入相關)。
思維和機器是同壹組輸入(同壹個句子)中的某兩個輸入(某兩個詞),是上下文無關的詞向量。
要訓練的參數在哪裏。
各自計算n個分數,即(1,n)的分數向量。
其中,是超參數(這裏取64),為了在後期計算中有壹個穩定的梯度。
對於壹個詞向量,即所有詞向量對該詞向量的權重,這些權重乘以每個向量得到壹個新的向量。操作是
那麽最後我們就可以生成輸入句子中詞與詞之間的直接權重矩陣,也就是註意矩陣。
變壓器內部結構的總體框架
上述框架可以抽象為編碼器和解碼器。
編碼器包含六個編碼器,解碼器包含六個解碼器。
最後壹個編碼器與六個解碼器建立連接,這意味著壹些操作,例如,RNN使用中間語義作為中間連接。
以最後壹個編碼器和其中壹個解碼器的連接為例,繼續探究編碼器和解碼器的內部。
編碼器和解碼器都有自關註層和前饋層,解碼器也有編碼器-解碼器關註層。註意,解碼器中的註意層實際上是被掩蓋的自我註意。
同樣,自我註意的計算需要Q、K、V三個參數來計算註意機制矩陣,這裏重新定義了計算方法,如下。
自我關註得到的關註矩陣同上。
掩蔽自我關註得到的關註矩陣和上面的有點不壹樣。這裏的Masked是為了在做翻譯時不向模型顯示未來的信息。
多頭註意力就是把縮放後的點積註意力的過程做h次,然後合並輸出。其結構圖如下
輸出被組合並乘以用於聯合訓練的參數矩陣。
因為註意模型不會像RNN那樣忽略輸入之間的距離,所以無法捕捉到序列信息,比如把K和V按行打亂,註意後的結果是壹樣的。為了保留序列信息,我們需要在嵌入得到的詞向量,也就是位置嵌入得到的向量上加上壹個包含序列信息的向量。
位置嵌入計算方法:
位置嵌入的偶數元素。
位置嵌入的奇數元素
Relu激活函數和兩個線性變換