1. 程式人生 > >詞法分析之Bi-LSTM-CRF框架

詞法分析之Bi-LSTM-CRF框架

詞法分析是NLP的一項重要的基礎技術,包括分詞、詞性標註、實體識別等,其主要演算法結構為基於Bi-LSTM-CRF演算法體系,下面對Bi-LSTM-CRF演算法體系進行介紹。

引言

首先拋開深層的技術原因,來從巨集觀上看一下為什麼LSTM(Bi-LSTM)後接CRF效果會好。
首先引用一篇英文文獻關於這個問題的介紹:

For sequence labeling (or general structured prediction) tasks, it is beneficial to consider the corelations between labels in neighborhoods and jointly decode the best chain of labels for a given input sentence

. For example, in POS tagging an adjective is more likely to be followed by a noun than a verb, and in NER with standard BIO2 annotation I-ORG cannot follow I-PER. Therefore, we model label sequence jointly using a conditional random field (CRF), instead of decoding each label independently

總結起來就是,用CRF是為獲取全域性最優的輸出序列

,相當於對lstm資訊的再利用

另外,引用知乎使用者“穆文”的回答,從網路結構上來講,Bi-LSTM-CRF套用的還是CRF這個大框架,只不過把LSTM在每個t時刻在第i個tag上的輸出,看作是CRF特徵函式裡的“點函式”(只與當前位置有關的特徵函式),然後“邊函式”(與前後位置有關的特徵函式)還是用CRF自帶的。這樣就將線性鏈CRF裡原始的wf這種形式的特徵函式(線性)變成LSTM的輸出f1(非線性),這就在原始CRF中引入了非線性,可以更好的擬合數據。

Bi-LSTM-CRF演算法體系架構圖

image

雙向LSTM(Bi-LSTM)

雙向LSTM的架構如下圖所示:
這裡寫圖片描述

與傳統LSTM不同,雙向LSTM同時考慮了過去的特徵(通過前向過程提取)和未來的特徵(通過後向過程提取)

。看起來雖然很複雜,但是簡單考慮一下,所謂的後向過程相當於將原始序列逆向輸入到LSTM中。所以從這個角度來看,雙向LSTM相當於兩個LSTM,一個正向輸入序列,一個反向輸入序列,再將兩者的輸出結合起來作為最終的結果。

學習過程

Bi-LSTM layer的輸出維度是tag size,這就相當於是每個詞wi對映到tag的發射概率值,設Bi-LSTM的輸出矩陣為P,其中Pi,j代表詞wi對映到tagj的非歸一化概率。對於CRF來說,我們假定存在一個轉移矩陣A,則Ai,j代表tagi轉移到tagj的轉移概率。

對於輸入序列X對應的輸出tag序列y,定義分數為:

s(X,y)=i=0nAyi,yi+1+i=0nPi,yi

對輸入序列X所對應的每個輸出tag序列y計算這個分數,選擇出分數最大的一個作為最終的輸出tag序列。

可以看出優化目標為maxs(X,y),優化方法為動態優化演算法,細節見 Conditional random fields: Probabilistic
models for segmenting and labeling sequence
data.

參考