transformers---BERT

transformers---BERT

BERT模型主要包括兩個部分,encoder和decoder,encoder可以理解為一個加強版的word2vec模型,以下是對於encoder部分的內容

預訓練任務

  • MLM任務
    MLM任務通過單詞表示來表示上下文關係
  • NSP任務
    NSP任務通過句子向量表示句間的關係

1. BERT模型的輸入

  • wordpiece embedding 單詞向量
  • position embedding 位置編碼向量
    兩種生成方式:
    • 相對位置編碼

      \[PE_{(pos,2i)}=sin(\frac{pos}{10000^{\frac{2i}{model}}}) \]

      \[PE_{(pos,2i+1)}=cos(\frac{pos}{10000^{\frac{2i}{model}}}) \]

    • 通過模型學習生成
  • segment embedding 區分文中的上下句,應用在問答匹配中

2. self-attention

  • 句子向量
    \(\downarrow \ \ \ \ \downarrow\)

  • Input Embedding + Position Embedding
    \(\downarrow\)

  • \[X_{embedding}\in R^{batch size\ *\ seq len\ *\ embed dim} \]

    \(\downarrow\) 線性映射(學到多重含義,分配三個權重(\(W_Q,W_k,W_v\))

  • \(Q=Linear(X_{embedding})=X_{embedding}W_Q\)
    \(K=Linear(K_{embedding})=K_{embedding}W_K\)
    \(V=Linear(V_{embedding})=V_{embedding}W_V\)
    \(\downarrow\) multi head atention(\(head size=embed dim/head size\))

  • \(Q,K,V \rightarrow[batch size,seq len,head size,embed dim/h\)
    \((Q,K,V)^T \rightarrow[batch size,head size, seq len,embed dim/h]\)

    head_size:即多頭注意力機制中的head, \(head size=embed dim/head num\)
    embed_size:句子中每個字的編碼向量的長度
    seq_len:句子的長度
    20210419200009.png

    如圖:C1C2表示第一個字和第二個字的注意力機制結果
    \(Attention(Q,K,V)=softmax(\frac{QK^T}{\sqrt{d_k}})V\)
    20210419200031.png
    \(\frac{QK^T}{\sqrt{d_k}}\)的第一列和\(V\)的第一行決定了結果中的第一個值,這樣保證了結果向量中每個元素包含了該句中所有字的特徵

    note:
    Attention mask
    在encoder的過程中,輸入句子的\(seq len\)是不等長的,此時需要對句子進行補全,如果使用0補全,使用softmax函數\(softmax=\sigma(z)=\frac{e^{z_i}}{\sum^{k}_{j=1}e^{z_j}}\),e=0時,將導致補0的部分參與到運算中
    解決辦法:給補0的部分添加偏置\(Z_{illeagl}=Z_{illeagl}+bias ,\ bias\rightarrow -\infty\)
    此時,\(e^{-\infty}=0 ,\ e^{Z_{illegal}}=0\),便面了無效區參與運算。

3. Layer Normalization 殘差連接

  • \(X=X_{embedding}+Attention(Q,K,V)\)
Tags: