Transformer解析
為什么要有Transformer的架構
Seq2seq + attention 有2個限制:
Transformer架構
論文attention is all your need的論文中的架構:
輸入
embedding要考慮詞序
為什么?
encoder-decoder架構
transformer包含一堆編碼器和解碼器,藍色部分是 encoder stack,紫色部分是decoder stack。
而每個encoder和decoder的內部結構:
Multihead Attention
和self-attention的區別是:使用不同的K、Q、V,得到多個attention vector,形成n個vector得到一個matrix。(n是樣本數,d是embedding的feature維度數)
從multihead attention層 ——> add + normalize層
layernorm層將上一層得到的context matrix + 開始的輸入matrix,進行歸一化。歸一化的目的:對每個樣本進行歸一化。
為什么Transformer塊使用LayerNorm而不是BatchNorm?LayerNorm 在Transformer的位置是哪里?
區別:Batch Normalization 的處理對象是對一批樣本, Layer Normalization 的處理對象是單個樣本。Batch Normalization 是對這批樣本的同一維度特征做歸一化, Layer Normalization 是對這單個樣本的所有維度特征做歸一化。
add + normalize層 ——> feedforward 層
經過上一層的歸一化后,進行線性變換。
Transformer的encoder stack部分由多個encoder串聯在一起,例如上一個encoder輸出后,輸入到下一個encoder。
decoder部分
Decoder 結構,從下到上依次是:
- Masked Multi-Head Self-Attention
- Multi-Head Encoder-Decoder Attention
- FeedForward Network
輸入
decoder輸入:encode的embedding + 起始符號
decoder內部和encode相似,不過最下面一個的muultihead attention經過mask
接著將這第一個單詞作為最下面masked multi-head attention的輸入
Masked Multi-Head Self-Attention
參考博客:transformer詳解
之后再做 softmax,就能將 - inf 變為 0,得到的這個矩陣即為每個字之間的權重
Multi-Head Encoder-Decoder Attention
Encoder最后輸出的context matrix,將其復制成2份,作為decoder attention部分中的K和V。Q作為Decoder中Masked Multi-Head Self-Attention的輸出。
輸出
decode出來后
問答:
https://blog.csdn.net/taoqick/article/details/107010068
總結
以上是生活随笔為你收集整理的Transformer解析的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2021年武大CS\南大CS\哈工CS\
- 下一篇: 纪念碑谷ar版攻略8关