CRF用過了,不妨再了解下更快的MEMM?

2021-02-14 PaperWeekly

©PaperWeekly 原創 · 作者|蘇劍林

單位|追一科技

研究方向|NLP、神經網絡

HMM、MEMM、CRF 被稱為是三大經典概率圖模型,在深度學習之前的機器學習時代,它們被廣泛用於各種序列標註相關的任務中。一個有趣的現象是,到了深度學習時代,HMM 和 MEMM 似乎都「沒落」了,舞臺上就只留下 CRF。相信做 NLP 的讀者朋友們就算沒親自做過也會聽說過 BiLSTM+CRF 做中文分詞、命名實體識別等任務,卻幾乎沒有聽說過 BiLSTM+HMM、BiLSTM+MEMM 的,這是為什麼呢?今天就讓我們來學習一番 MEMM,並且通過與 CRF 的對比,來讓我們更深刻地理解概率圖模型的思想與設計。

從 MEMM 全稱 Maximum Entropy Markov Model,中文名可譯為「最大熵馬爾可夫模型」。不得不說,這個名字可能會嚇退 80% 的初學者:最大熵還沒搞懂,馬爾可夫也不認識,這兩個合起來怕不是天書?而事實上,不管是 MEMM 還是 CRF,它們的模型都遠比它們的名字來得簡單,它們的概念和設計都非常樸素自然,並不難理解。 

回顧 CRF

作為對比,我們還是來回顧一下 CRF。說是「回顧」,是因為筆者之前已經撰文介紹過 CRF 了,如果對 CRF 還不是很了解的讀者,可以先去閱讀舊作簡明條件隨機場CRF介紹 | 附帶純Keras實現。簡單起見,本文介紹的 CRF 和 MEMM 都是最簡單的「線性鏈」版本。

本文都是以序列標註為例,即輸入序列 x=(x1,x2,…,xn),希望輸出同樣長度的標籤序列 y=(y1,y2,…,yn),那麼建模的就是概率分布:

CRF 把 y 看成一個整體,算一個總得分,計算公式如下:

這個打分函數的特點就是顯式地考慮了相鄰標籤的關聯,其實 g(yk−1,yk) 被稱為轉移矩陣。現在得分算出來了,概率就是得分的 softmax,所以最終概率分布的形式設為:

如果僅局限於概念的話,那麼 CRF 的介紹到此就結束了。總的來說,就是將目標序列當成一個整體,先給目標設計一個打分函數,然後對打分函數進行整體的 softmax,這個建模理念跟普通的分類問題是一致的。CRF 的困難之處在於代碼實現,因為上式的分母項包含了所有路徑的求和,這並不是一件容易的事情,但在概念理解上,筆者相信並沒有什麼特別困難之處。

更樸素的 MEMM

現在我們來介紹 MEMM,它可以看成一個極度簡化的 seq2seq 模型。對於目標 (1) ,它考慮分解:

然後假設標籤的依賴只發生在相鄰位置,所以:

接著仿照線性鏈 CRF 的設計,我們可以設:

至此,這就得到了 MEMM 了。由於 MEMM 已經將整體的概率分布分解為逐步的分布之積了,所以算 loss 只需要把每一步的交叉熵求和。

兩者的關係

將式 (6) 代回式 (5) ,我們可以得到:

對比式 (7) 和式 (3),我們可以發現,MEMM 跟 CRF 的區別僅在於分母(也就是歸一化因子)的計算方式不同,CRF 的式 (3) 我們稱之為是全局歸一化的,而 MEMM 的式 (7) 我們稱之為是局部歸一化的。

這一節我們來分析 MEMM 的優劣、改進與效果。 

MEMM 的優劣

MEMM 的一個明顯的特點是實現簡單、速度快,因為它只需要每一步單獨執行 softmax,所以 MEMM 是完全可以並行的,速度跟直接逐步 Softmax 基本一樣。

而對於 CRF,式 (3) 的分母並不是那麼容易算的,它最終轉化為一個遞歸計算,可以在 O(n) 的時間內算出來(具體細節還請參考簡明條件隨機場CRF介紹 | 附帶純Keras實現),遞歸就意味著是串行的,因此當我們模型的主體部分是高度可並行的架構(比如純 CNN 或純 Attention 架構)時,CRF 會嚴重拖慢模型的訓練速度。後面我們有比較 MEMM 和 CRF 的訓練速度(當然,僅僅是訓練慢了,預測階段 MEMM 和 CRF 的速度都一樣)。 

至於劣勢,自然也是有的。前面我們提到過,MEMM 可以看成是一個極度簡化的 seq2seq 模型。既然是這樣,那麼普通 seq2seq 模型有的弊端它都有。seq2seq 中有一個明顯的問題是 exposure bias,對應到 MEMM 中,它被稱之為 label bias,大概意思是:在訓練 MEMM 的時候,對於當前步的預測,都是假設前一步的真實標籤已知。

這樣一來,如果某個標籤 A 後面只能接標籤 B ,那麼模型只需要通過優化轉移矩陣就可以實現這一點,而不需要優化輸入 x 對 B 的影響(即沒有優化好 f(B;x));然而,在預測階段,真實標籤是不知道的,我們可能無法以較高的置信度預測前一步的標籤 A ,而由於在訓練階段,當前步的 f(B;x) 也沒有得到強化,所以當前步 B 也無法準確預測,這就有可能導致錯誤的預測結果。 

雙向 MEMM

label bias可能不好理解,但我們可以從另外一個視角看 MEMM 的不足:事實上,相比 CRF,MEMM 明顯的一個不夠漂亮的地方就是它的不對稱性——它是從左往右進行概率分解的。

筆者的實驗表明,如果能解決這個不對稱性,能夠稍微提高 MEMM 的效果。筆者的思路是:將 MEMM 也從右往左做一遍,這時候對應的概率分布是:

然後也算一個交叉熵,跟從左往右的式 (7) 的交叉熵平均,作為最終的 loss。這樣一來,模型同時考慮了從左往右和從右往左兩個方向,並且也不用增加參數,彌補了不對稱性的缺陷。作為區分,筆者類比 Bi-LSTM 的命名,將其稱為 Bi-MEMM。 

註:Bi-MEMM 這個名詞並不是在此處首次出現,據筆者所查,首次提出 Bi-MEMM 這個概念的,是論文 Bidirectional Inference with the Easiest-First Strategy for Tagging Sequence Data [1],裡邊的 Bi-MEMM 是指一種 MEMM 的雙向解碼策略,跟本文的 Bi-MEMM 含義並不相同。

為了驗證和比較 MEMM 的效果,筆者將 CRF 和 MEMM 同時寫進了 bert4keras [2] 中,並且寫了中文分詞 [3] 和中文命名實體識別 [4] 兩個腳本。在這兩個腳本中,從 CRF 切換到 MEMM 非常簡單,只需將 ConditionalRandomField 替換為 MaximumEntropyMarkovModel 。 詳細的實驗數據就不貼出來了,反正就是一些數字罷了,下面直接給出一些相對比較的結果: 1. 相同的實驗參數下,Bi-MEMM 總是優於 MEMM,MEMM 總是優於 Softmax; 2. 相同的實驗參數下,CRF 基本上不差於 Bi-MEMM; 3. 當編碼模型能力比較強時,CRF 與 Bi-MEMM 效果持平;當編碼模型較弱時,CRF 優於 Bi-MEMM,幅度約為 0.5% 左右; 4. 用 12 層 bert base 模型作為編碼模型時,Bi-MEMM 比 CRF 快 25%;用 2 層 bert base 模型作為編碼模型時,Bi-MEMM 比 CRF 快 1.5 倍。註:由於筆者發現 Bi-MEMM 效果總比 MEMM 略好,並且兩者的訓練時間基本無異,所以 bert4keras 裡邊的 MaximumEntropyMarkovModel 默認就是 Bi-MEMM。

根據上面的結論,在深度學習時代,MEMM 的「沒落」似乎就可以理解了——MEMM 除了訓練速度快點之外,相比 CRF 似乎也就沒什麼好處了,兩者的預測速度是一樣的,而很多時候我們主要關心預測速度和效果,訓練速度稍微慢點也無妨。

這兩個模型的比較結果是有代表性的,可以說這正是所有全局歸一化和局部歸一化模型的差異:全局歸一化模型效果通常好些,但實現通常相對困難一些;局部歸一化模型效果通常不超過全局歸一化模型,但勝在易於實現,並與易於拓展。 

如何易於拓展?這裡舉兩個方向的例子。 

第一個例子,假如標籤數很大的時候,比如用序列標註的方式做文本糾錯或者文本生成時(相關例子可以參考論文 Fast Structured Decoding for Sequence Models [5]),標籤的數目就是詞表裡邊的詞彙數 |V| ,就算用了 subword 方法,詞彙數少說也有一兩萬,這時候轉移矩陣的參數量就達到數億(),難以訓練。

讀者可能會想到低秩分解,不錯,低秩分解可以將轉移矩陣的參數量控制為 2d|V| ,其中 d 是分解的中間層維度。不幸的是,對於 CRF 來說,低秩分解不能改變歸一化因子計算量大的事實,因為 CRF 的歸一化因子依然需要恢復為 |V| × |V| 的轉移矩陣才能計算下去,所以對於標籤數目巨大的場景,CRF 無法直接使用。

但幸運的是,對於 MEMM 來說,低秩分解可以有效低降低訓練時的計算量,從而依然能夠有效的使用。bert4keras 裡邊所帶的 MaximumEntropyMarkovModel 已經把低秩序分解集成進去了,有興趣的讀者可以查看源碼了解細節。 

第二個例子,上述介紹的 CRF 和 MEMM 都只考慮相鄰標籤之間的關聯,如果我要考慮更複雜的鄰接關聯呢?比如同時考慮  跟  的關聯?

這時候 CRF 的全局歸一化思路就很難操作了,歸根結底還是歸一化因子難算;但如果是 MEMM 的局部歸一化思路就容易進行。事實上,筆者之前設計的信息抽取分層標註思路,也可以說是一種跟 MEMM 類似的局部歸一化的概率圖模型,它考慮的關聯就更複雜化了。

本文介紹並簡單推廣了跟 CRF 一樣同為概率圖經典案例的 MEMM,它與 CRF 的區別主要是歸一化方式上的不一樣,接著筆者從實驗上對兩者做了簡單的比較,得出 MEMM 訓練更快但效果不優於 CRF 的結論。儘管如此,筆者認為 MEMM 仍有可取之處,所以最後構思了 MEMM 的一些拓展。

[1] https://www.aclweb.org/anthology/H05-1059/

[2] https://github.com/bojone/bert4keras

[3] https://github.com/bojone/bert4keras/blob/master/examples/task_sequence_labeling_cws_crf.py

[4] https://github.com/bojone/bert4keras/blob/master/examples/task_sequence_labeling_ner_crf.py

[5] https://arxiv.org/abs/1910.11555

點擊以下標題查看更多往期內容: 

#投 稿 通 道#

 讓你的論文被更多人看到 

如何才能讓更多的優質內容以更短路逕到達讀者群體,縮短讀者尋找優質內容的成本呢?答案就是:你不認識的人。

總有一些你不認識的人,知道你想知道的東西。PaperWeekly 或許可以成為一座橋梁,促使不同背景、不同方向的學者和學術靈感相互碰撞,迸發出更多的可能性。 

PaperWeekly 鼓勵高校實驗室或個人,在我們的平臺上分享各類優質內容,可以是最新論文解讀,也可以是學習心得技術乾貨。我們的目的只有一個,讓知識真正流動起來。

📝 來稿標準:

• 稿件確係個人原創作品,來稿需註明作者個人信息(姓名+學校/工作單位+學歷/職位+研究方向) 

• 如果文章並非首發,請在投稿時提醒並附上所有已發布連結 

• PaperWeekly 默認每篇文章都是首發,均會添加「原創」標誌

📬 投稿郵箱:

• 投稿郵箱:hr@paperweekly.site 

• 所有文章配圖,請單獨在附件中發送 

• 請留下即時聯繫方式(微信或手機),以便我們在編輯發布時和作者溝通

🔍

現在,在「知乎」也能找到我們了

進入知乎首頁搜索「PaperWeekly」

點擊「關注」訂閱我們的專欄吧

關於PaperWeekly

PaperWeekly 是一個推薦、解讀、討論、報導人工智慧前沿論文成果的學術平臺。如果你研究或從事 AI 領域,歡迎在公眾號後臺點擊「交流群」,小助手將把你帶入 PaperWeekly 的交流群裡。

▽ 點擊 | 閱讀原文 | 查看作者博客

相關焦點

  • tensorflow中crf源碼解析
    剛學習lstm+crf時,就閱讀過crf層的源碼,發現時間一久,就忘了。這次準備重新閱讀一下,順便做個筆記。主要的目的是深入理解代碼細節,提高自己編寫模型的能力。本文假定大家對lstm+crf的基本原理基本清楚。
  • 10行模型代碼帶你完成Bi-LSTM+CRF的NLP任務!
    這LSTM聽說比一般的RNN牛逼,那這雙向的LSTM豈不是更牛逼了?(BERT心想:渣渣)不管是實際業務需要,還是參加一些NLP比賽,亦或是參加面試,都有可能用到NER,那雙向LSTM+CRF簡直就是NER界的標配。今天我們就手把手教大家如何用Keras優雅的搭建Bi-LSTM+CRF模型。我們假設大家已經有了可供訓練的數據(文末提供數據)。
  • Hanlp分詞之CRF中文詞法分析詳解
    java -cp hanlp.jar com.hankcs.hanlp.model.crf.crfpp.crf_learn -T cws.bin cws.txt與CRF++兼容由於C++的運行效率和內存效率優於Java,所以推薦直接利用CRF++執行大規模訓練
  • 用 Keras+LSTM+CRF 的實踐命名實體識別NER
    文本分詞、詞性標註和命名實體識別都是自然語言處理領域裡面很基礎的任務,他們的精度決定了下遊任務的精度,其實在這之前我並沒有真正意義上接觸過命名實體識別這項工作,雖然說讀研期間斷斷續續也參與了這樣的項目,但是畢業之後始終覺得一知半解的感覺,最近想重新撿起來,以實踐為學習的主要手段來比較系統地對命名實體識別這類任務進行理解、學習和實踐應用。
  • 男性鬍子生長快好不好?提醒:或4個因素有關,不妨了解下
    男性鬍子生長快好不好?提醒:或4個因素有關,不妨了解下男性進入青春期之後,隨著身體的逐步發育,睪丸逐步逐步成熟,分泌的雄激素逐漸佔據了「主導地位」。受此影響,第二性徵發育越來越明顯明。然而,由於各種因素的問題,有些人的鬍子生長速度很快,需要每天打理才行;而有些人卻生長比較慢,不需要每天打理,甚至有些人從來不剃鬍子,那麼對於鬍子生長快到底好不好呢?今天我們就來聊聊這個話題。
  • 97.5%準確率的深度學習中文分詞(字嵌入+Bi-LSTM+CRF)
    摘要深度學習當前在NLP領域發展也相當快,翻譯,問答,摘要等基本都被深度學習佔領了。
  • 自然語言處理條件隨機場CRF
    稍不同於linear CRF,HMM可以用有向圖模型來表示,因為states與observations之間存在著明顯的依賴關係。 表示前一個state,事實上它可以有更豐富的表達。例如特徵函數可以表示當前的state與任意一個observation或者 state甚至future state的關係。也就是說,特徵方程的存在允許CRF有十分自由的特徵表達,
  • 這幾款沐浴露你用過嗎?便宜大碗又好用,不妨來了解一下!
    這幾款沐浴露你用過嗎?便宜大碗又好用,不妨來了解一下秋冬季節,這個天氣比較乾燥,我今天就想為大家介紹幾款沐浴露,補水保溼,而且還帶有淡淡的香氣。這幾款沐浴露你都用過嗎?怡人的香味超好的體驗!便宜大碗又好用,快來一起了解一下吧。
  • 吃哪些食物血糖上升最快?不想飯後血糖「爆表」,不妨了解下
    閱讀本文前,請您先點擊上面的「藍色字體」,再點擊「關注」,這樣您就可以繼續免費收到最新文章了。每天都有分享。
  • 女性「黃體酮」快減少時,身體或會有4個信號,不妨了解下
    女性「黃體酮」快減少時,身體或會有4個信號,不妨了解下1、腿抽筋尤其是在女性懷孕之後,到了孕晚期是很容易出現小腿抽筋的情況,這也是說明孕媽媽的體內該物質不多,無法正常的傳送給胎寶寶所引起的一個正常現象,但是如果女性在平時,也容易出現這種小腿抽筋的情況時,那我們就需要引起重視了,因為可能是體內的這種孕酮含量過少,所導致體內的激素受到了異常的影響而引起。
  • NLP-入門實體命名識別(NER)+Bilstm-CRF模型原理Pytorch代碼詳解——最全攻略
    參考:BiLSTM+crf的一些理解(也是很有幫助的資料,記錄如下)model中由於CRF中有轉移特徵,即它會考慮輸出label之間的順序性,所以考慮用CRF去做BiLSTM的輸出層。將text欄位及bio label轉換為映射的數字,輸入模型即可訓練現在的很多NLP的網紅模型,無非是將文字到數字的映射建立的更合理。是可拓展的。另外,這裡的模型訓練是適用 model.neg_log_likelihood() 。
  • 預產期過了,腹中寶寶還「賴著」不出來?不妨了解下正確催產方法
    預產期過了,腹中寶寶還「賴著」不出來?get一些正確催產方法!預產期過了,腹中寶寶還「賴著」不出來?不妨了解下正確催產方法在醫學上規定,以末次月經的第1天開始計算,預產期按照整個孕期為280天的這個標準,每個妊娠月28天,一共10個妊娠月。
  • 【NER】NLP-入門實體命名識別(NER)+Bilstm-CRF模型原理Pytorch代碼詳解——最全攻略
    參考:BiLSTM+crf的一些理解(也是很有幫助的資料,記錄如下)model中由於CRF中有轉移特徵,即它會考慮輸出label之間的順序性,所以考慮用CRF去做BiLSTM的輸出層。將text欄位及bio label轉換為映射的數字,輸入模型即可訓練現在的很多NLP的網紅模型,無非是將文字到數字的映射建立的更合理。是可拓展的。另外,這裡的模型訓練是適用 model.neg_log_likelihood() 。
  • python代碼實戰 | 用 TensorFlow 實現序列標註:基於bi-LSTM+CRF和字符嵌入實現NER和POS
    幾個月後,作為法國大學高等理工學院碩士論文的一部分,我正在 Proxem 研究更高級的序列標籤模型。Tensorflow vs Theano  當時,Tensorflow剛剛開源,Theano是使用最廣泛的框架。對於那些不熟悉這兩者的人來說,Theano在矩陣級別運行,而Tensorflow則提供了大量預編碼層和有用的訓練機制。
  • 為什麼中國女性用衛生巾,而外國人卻用衛生棉條?不妨了解一下
    ,還是選擇習慣性的用衛生棉條呢?為什麼中國女性用衛生巾,而外國人卻用衛生棉條?不妨了解一下外國人喜歡用衛生棉條歐美國家的女性普遍都是使用衛生棉條,它人們認為衛生棉條要比衛生巾好用的多,來月經的時候也不用擔心漏出的問題,也不怕太慢長痱子,夏天是每個女人的噩夢,月經到來的時候直逼40度,衛生巾還需要墊在下面就像是刀塞著火爐似
  • 或許很多人不清楚,不妨了解下!
    所以現在的人即便再晚再累,也要刷了牙之後再睡,但是牙縫裡還老是有異物,為什麼牙縫裡掏出來的東西很臭?或許很多人不清楚,不妨了解下! 這部分東西一般來說,大部分都是食物殘渣,由於在口腔停留過長時間,細菌和消化酶在高溫環境下發酵,慢慢形成腐敗,時間長了就會有難聞的氣味了,這樣人們在挑出食物的時候就會有一種臭味的發生。
  • 關於「優生」,女性健康比男性更重要?很多人不服,不妨了解下
    關於「優生」,女性健康比男性更重要?很多人不服,不妨了解下來自父親精細胞與母親的卵細胞結合,形成受精卵,十月懷胎,誕下了健康的小寶寶。一個新生命的誕生,是夫妻兩人愛情的結晶,是一個新的希望,讓一個家庭變得完美,是一件無比興奮的喜事。
  • 很多女性因此而煩惱,不妨了解下
    「波大無腦」不無道理,給我們豐胸提供了一個新思路,不妨了解下在生活中我們經常會遇到這樣的調侃,說有些女性胸部非常豐滿,可是頭腦卻非常「簡單」,俗稱「胸大無腦」。當然,在生活當中遇到這樣的調侃,或多或少有些貶義。
  • 為何說要「快吃甜食慢吃酸」?可惜很多人都搞反了,不妨了解下
    為何說要「快吃甜食慢吃酸」?可惜很多人都搞反了,不妨了解下「酸」與「甜」,是我們食物「五味」中非常重要的兩種。酸味食物可以讓我們「開胃」,當我們食慾不佳的時候,往往就會想到要吃些酸味的食物來解膩,刺激我們的食慾。