BiLSTM +CRF 原理介紹


  • 數據格式

                   ”O”表示非實體;”B”表示實體;”I”表示實體內

  • BiLSTM + CRF 模型

 

   模型的結構:

  1. 句子𝑥中的每一個單元都代表着由character embedding或word embedding構成的向量。其中,character embedding是隨機初始化的,word embedding是通過數據訓練得到的。所有的 embeddings 在訓練過程中都會調整到最優。
  2. 這些 embeddings 為BiLSTM-CRF模型的輸入,輸出的是句子𝑥中每個單元的標簽。

 

 

     盡管一般不需要詳細了解BiLSTM層的原理,但是為了更容易知道CRF層的運行原理,我們需要知道BiLSTM的輸出層。這些分值將作為CRF的輸入. 如下圖所示, BiLSTM層的輸出為每一個標簽的預測分值,例如對於單元𝑤0,BiLSTM層輸出的是1.5 (B-Person), 0.9 (I-Person), 0.1 (B-Organization), 0.08 (I-Organization) 0.05 (O)

  如下圖(1)所示, “B-Person”有最高分值—— 1.5,因此我們可以挑選“B-Person”作為w0的預測標簽. 同理,我們可以得到w1—“I-Person”,w2—“O” ,w3—“B-Organization”,w4—“O”. 由於BiLSTM的輸出為單元的每一個標簽分值,我們可以挑選分值最高的一個作為該單元的標簽。雖然我們可以得到句子x中每個單元的正確標簽,但是我們不能保證標簽每次都是預測正確的(如下圖2所示), 即所謂的標記偏置的問題。所以CRF的功能就是增加了一些約束規則,來大大降低預測錯誤的概率。

(圖1)

(圖2)

  • CRF的作用

  CRF層可以為最后預測的標簽添加一些約束來保證預測的標簽是合法的。在訓練數據訓練過程中,這些約束可以通過CRF層自動學習到。

  這些約束可以是:

  1. 句子中第一個詞總是以標簽“B-“ 或“O”開始,而不是“I-”
  2. 標簽“B-label1 I-label2 I-label3 I-…”, label1, label2, label3應該屬於同一類實體。例如,“B-Person I-Person” 是合法的序列, 但是“B-Person I-Organization” 是非法標簽序列。
  3. 標簽序列“O I-label” is 非法的.實體標簽的首個標簽應該是“B-“ ,而非“I-“, 換句話說,有效的標簽序列應該是“O B-label”。

  現在大家可能會有一個疑問標簽的score怎么計算?

  • 標簽的Score

  如下圖所示, 確切的說,這個矩陣是 BiLSTM-CRF 模型的一個參數。在你訓練模型之前,你可以隨機地初始化矩陣中所有的 transition score。在之后的訓練過程中,這些隨機初始化的 score 將會被自動更新。換句話說,CRF 層可以自己學習到這些約束。我們並不需要手動創建這樣一個矩陣。這些分數值會隨着訓練的迭代次數的增加,變得越來越 “合理”。

  根據CRF的約束分析,我們可以知道:

  1. 句子中的第一個單詞的標記應該是以“B-“ 或者 “O”開頭, 並不會是 “I-”形式的標記。(“START” 到 “I-Person or I-Organization” 的轉移值非常的小。)
  2. 在“B-label1 I-label2 I-label3 I-…”這樣形式的標注序列中, label1, label2, label3 … 應該是同種實體的標簽。比如,“B-Person I-Person” 是合理有效的標注序列,而 “B-Person I-Organization” 則不是。(“B-Organization” to “I-Person” 轉移值為0.0003)
  3. 標簽序列“O I-label” 是 非法的.實體標簽的首個標簽應該是“B-” ,而非“I-”(“START” to “I-Person”)
  • 損失函數

  CRF 的損失函數由真實轉移路徑值和所有可能轉移路徑值兩部分組成。真實路徑表示在所有可能轉移路徑中具有最高 score 的路徑。比如, 我們也有一個由 5 個單詞組成的句子,那么標簽的可能轉移路徑有:

      1.START B-Person B-Person B-Person B-Person B-Person END

      2.START B-Person I-Person B-Person B-Person B-Person END
      …
      i.START B-Person I-Person O B-Organization O END
      …
      N.O O O O O O O

      假定每一個可能的路徑有一個分數值𝑃𝑖  , 那么對於所有 N 條可能的路徑的總分數值為𝑃𝑡𝑜𝑡𝑎𝑙=𝑃1+𝑃2+𝑃3+…+𝑃𝑁=𝑒𝑆1+𝑒𝑆2+𝑒𝑆3+…+𝑒𝑆𝑁,e 是數學常量 e。

  那么有Loss Function——>𝐿𝑜𝑠𝑠𝐹𝑢𝑛𝑐𝑡𝑖𝑜𝑛=𝑃𝑅𝑒𝑎𝑙𝑃𝑎𝑡ℎ/𝑃1+𝑃2+𝑃3+…+𝑃𝑁, 在訓練階段,BiLSTM-CRF模型的參數值將會一直不停的被更新,來提高真實路徑的分數值所占的比重。 

  現在把損失函數變成log損失函數:

    

參考文獻:

https://www.jianshu.com/p/566c6faace64

https://createmomo.github.io/2017/09/12/CRF_Layer_on_the_Top_of_BiLSTM_1/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM