參考博客:https://blog.csdn.net/u012526436/article/details/86295971 講解非常好!
模型使用 Layer normalization而不使用Batch normalization的原因見之前博客。
網絡層數較深的時候會出現網絡退化問題,就是層數深的神經網絡比層數淺的神經網絡誤差還要大,這個時候可以使用殘差模塊來解決。(https://zhuanlan.zhihu.com/p/80226180)
- transformer模型總述
transformer是一個簡單的模型,僅僅依賴於注意力機制,並沒有用到RNN和CNN,他有編碼器和解碼器,編碼器有兩個子層,一個是multi-head self-attention(它的講解看最上面的博客),另一個是前饋神經網絡。解碼器有三個子層,有兩個層和編碼器是一樣的,還有一個層加入了MASK的multi-head self-attention(多頭注意力機制),這個層是在t時刻預測輸出時不能看到t時刻以后的輸入,保證訓練和預測是一致的。
- transformer模型三個注意力機制的區別
在transformer中一共有三個地方用到了注意力機制,左邊的attention的輸入就是輸入句子轉化的向量,k q v三個向量實際上是一樣的,都是表示一個詞,q和k計算一個詞與句子中每個詞的相似度,之后對每個v進行加權求和,這就是自注意力機制。右邊的MASKed multi-head self-attention就是在t時刻預測輸出時不能看到t時刻以后的輸入,其他是一樣的。但是右邊的multi-head self-attention並不是自注意力機制,它的k和v向量來自編碼器的輸出,q向量來自上一個多頭注意力機制的輸出,計算k和q向量的相似度,然后再對v向量進行加權求和。