HanLP《自然語言處理入門》筆記--5.感知機模型與序列標(biāo)注

筆記轉(zhuǎn)載于GitHub項目https://github.com/NLP-LOVE/Introduction-NLP

5. 感知機分類與序列標(biāo)注

第4章我們利用隱馬爾可夫模型實現(xiàn)了第一個基于序列標(biāo)注的中文分詞器熙兔,然而效果并不理想社牲。事實上埋市,隱馬爾可夫模型假設(shè)人們說的話僅僅取決于一個隱藏的{B.M,E,S序列结榄,這個假設(shè)太單純了,不符合語言規(guī)律梢莽。語言不是由這么簡單的標(biāo)簽序列生成萧豆,語言含有更多特征,而隱馬彌可夫模型沒有捕捉到昏名。隱馬彌可夫模型能捕捉的特征僅限于兩種: 其一涮雷,前一個標(biāo)簽是什么;其二轻局,當(dāng)前字符是什么洪鸭。

為了利用更多的特征,線性模型( linear model )應(yīng)運而生仑扑。線性模型由兩部分構(gòu)成: 一系列用來提取特征的特征函數(shù) φ览爵,以及相應(yīng)的權(quán)重向量 w。

本章將深人講解感知機算法的原理夫壁,以及在分類和序列標(biāo)注上的應(yīng)用拾枣。在序列標(biāo)注應(yīng)用部分沃疮,我們將實現(xiàn)基于感知機的中文分詞器盒让。由于感知機序列標(biāo)注基于分類梅肤,并且分類問題更簡單,所以我們先學(xué)習(xí)分類問題邑茄。

5.1 分類問題

  1. 定義

    分類指的是預(yù)測樣本所屬類別的一類問題姨蝴。二分類也可以解決任意類別數(shù)的多分類問題(one vs rest)。

    • 將類型class1看作正樣本肺缕,其他類型全部看作負(fù)樣本左医,然后我們就可以得到樣本標(biāo)記類型為該類型的概率 p1。

    • 然后再將另外類型class2看作正樣本同木,其他類型全部看作負(fù)樣本浮梢,同理得到 p2。

    • 以此循環(huán)彤路,我們可以得到該待預(yù)測樣本的標(biāo)記類型分別為類型 class i 時的概率 pi秕硝,最后我們?nèi)?pi 中最大的那個概率對應(yīng)的樣本標(biāo)記類型作為我們的待預(yù)測樣本類型。

    • 總之還是以二分類來依次劃分洲尊,并求出最大概率結(jié)果远豺。

    image
  1. 應(yīng)用

    在NLP領(lǐng)域,絕大多數(shù)任務(wù)可以用分類來解決坞嘀。文本分類天然就是一個分類問題躯护。關(guān)鍵詞提取時,對文章中的每個單詞判斷是否屬于關(guān)鍵詞丽涩,于是轉(zhuǎn)化為二分類問題棺滞。在指代消解問題中,對每個代詞和每個實體判斷是否存在指代關(guān)系矢渊,又是一個二分類問題检眯。在語言模型中,將詞表中每個單詞作為一種類別昆淡,給定上文預(yù)測接下來要出現(xiàn)的單詞锰瘸。

5.2 線性分類模型

線性模型是傳統(tǒng)機器學(xué)習(xí)方法中最簡單最常用的分類模型,用一條線性的直線或高維平面將數(shù)據(jù)一分為二昂灵。

image

直線將平面分割為兩部分避凝,分別對應(yīng)男女。對于任何姓名眨补,計算它落入哪個區(qū)域管削,就能預(yù)測它的性別。這樣的區(qū)域稱為決策區(qū)域撑螺,它們的邊界稱為決策邊界含思。二維空間中,如果決策邊界是直線,則稱為線性分類模型: Y = Wx + b含潘。

如果是任意維度空間中的線性決策邊界統(tǒng)稱為分離超平面

image

推廣到 D 維空間饲做,分離超平面的方程為:

\sum_{i=1}^{D} w_{i} x_{i}+b=0

其中,w 是權(quán)重遏弱,b 偏置(截距)盆均,可以寫成向量的形式:

\hat{y}={sign}(w \cdot x)=\{\begin{array}{cc}{-1,} {w \cdot x \leqslant 0} \\ {1,} {w \cdot x>0}\end{array}
\begin{aligned} &\boldsymbol{w}=\left[w_{1}, \cdots, w_{D}, b\right]\\ &x=\left[x_{1}, \cdots, x_{D}, 1\right] \end{aligned}\\ \hat{y}=\operatorname{sign}(\boldsymbol{w} \cdot \boldsymbol{x})=\left\{\begin{array}{cc} {-1,} & {\boldsymbol{w} \cdot \boldsymbol{x} \leqslant 0} \\ {1,} & {\boldsymbol{w} \cdot \mathbf{x}>0} \end{array}\right.

5.3 感知機算法

找出這個分離超平面其實就是感知機算法。感知機算法則是一種迭代式的算法:在訓(xùn)練集上運行多個迭代漱逸,每次讀入一個樣本泪姨,執(zhí)行預(yù)測,將預(yù)測結(jié)果與正確答案進行對比饰抒,計算誤差肮砾,根據(jù)誤差更新模型參數(shù),再次進行訓(xùn)練袋坑,直到誤差最小為止唇敞。

image
  • 損失函數(shù): 從數(shù)值優(yōu)化的角度來講,迭代式機器學(xué)習(xí)算法都在優(yōu)化(減小)一個損失函數(shù)( loss function )咒彤。損失函數(shù) J(w) 用來衡量模型在訓(xùn)練集上的錯誤程度疆柔,自變量是模型參數(shù) w,因變量是一個標(biāo)量镶柱,表示模型在訓(xùn)練集上的損失的大小旷档。
  • 梯度下降: 給定樣本,其特征向量 x 只是常數(shù)歇拆,對 J(w) 求導(dǎo)鞋屈,得到一個梯度向量 Δw,它的反方向一定是當(dāng)前位置損失函數(shù)減小速度最快的方向故觅。如果參數(shù)點 w 反方向移動就會使損失函數(shù)減小厂庇,叫梯度下降。
  • 學(xué)習(xí)率: 梯度下降的步長叫做學(xué)習(xí)率输吏。
  • 隨機梯度下降(SGD): 如果算法每次迭代隨機選取部分樣本計算損失函數(shù)的梯度权旷,則稱為隨機梯度下降。
image

這時候問題來了贯溅,假如數(shù)據(jù)本身線性不可分拄氯,感知機損失函數(shù)不會收斂,每次迭代分離超平面都會劇烈振蕩它浅。這時可以對感知機算法打補丁译柏,使用投票感知機或平均感知機。

  1. 投票感知機和平均感知機

    投票感知機:每次迭代的模型都保留姐霍,準(zhǔn)確率也保留鄙麦,預(yù)測時典唇,每個模型都給出自己的結(jié)果,乘以它的準(zhǔn)確率加權(quán)平均值作為最終結(jié)果胯府。

    投票感知機要求存儲多個模型及加權(quán)介衔,計算開銷較大,更實際的做法是取多個模型的權(quán)重的平均盟劫,這就是平均感知機

5.4 基于感知機的人名性別分類

解決人名性別分類的監(jiān)督學(xué)習(xí)流程:

  • 標(biāo)注人名分類語料庫
  • 利用感知機算法訓(xùn)練線性模型
  • 利用線性模型給人名分類与纽,評估準(zhǔn)確率侣签。
  1. 人名性別語料庫

    筆者整理了一份人名性別語料庫 cnname

    運行下面代碼后會自動下載。

    預(yù)料格式為逗號分隔的 .csv急迂,第一列為姓名影所,第二列為性別:

    趙伏琴,女
    錢沐楊,男
    孫竹珍,女
    李潮陽,男
    
  2. 訓(xùn)練

    代碼詳見:classify_name.py

    https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch05/classify_name.py

    運行結(jié)果如下:

    下載 http://file.hankcs.com/corpus/cnname.zip 到 /usr/local/lib/python3.7/site-packages/pyhanlp/static/data/test/cnname.zip
    100.00%, 1 MB, 256 KB/s, 還有 0 分  0 秒   
    =====樸素感知機算法=====
    訓(xùn)練集準(zhǔn)確率: P=85.44 R=85.06 F1=85.25
    特征數(shù)量: 9089
    趙建軍=男
    沈雁冰=男
    陸雪琪=女
    李冰冰=女
    測試集準(zhǔn)確率: P=82.85 R=82.90 F1=82.88
    =====平均感知機算法=====
    訓(xùn)練集準(zhǔn)確率: P=93.62 R=83.06 F1=88.02
    特征數(shù)量: 9089
    趙建軍=男
    沈雁冰=男
    陸雪琪=女
    李冰冰=女
    測試集準(zhǔn)確率: P=90.92 R=80.39 F1=85.33
    

5.5 結(jié)構(gòu)化預(yù)測問題

自然語言處理問題大致可分為兩類,一種是分類問題僚碎,另一種就是結(jié)構(gòu)化預(yù)測問題猴娩,序列標(biāo)注只是結(jié)構(gòu)化預(yù)測的一個特例,對感知機稍作拓展勺阐,分類器就能支持結(jié)構(gòu)化預(yù)測卷中。

  1. 定義

    信息的層次結(jié)構(gòu)特點稱作結(jié)構(gòu)化。那么結(jié)構(gòu)化預(yù)測(structhre渊抽,prediction)則是預(yù)測對象結(jié)構(gòu)的一類監(jiān)督學(xué)習(xí)問題蟆豫。相應(yīng)的模型訓(xùn)練過程稱作結(jié)構(gòu)化學(xué)習(xí)(stutured laming )。分類問題的預(yù)測結(jié)果是一個決策邊界懒闷, 回歸問題的預(yù)測結(jié)果是一個實數(shù)標(biāo)量十减,而結(jié)構(gòu)化預(yù)測的結(jié)果則是一個完整的結(jié)構(gòu)。

    自然語言處理中有許多任務(wù)是結(jié)構(gòu)化預(yù)測愤估,比如序列標(biāo)注預(yù)測結(jié)構(gòu)是一整個序列帮辟,句法分析預(yù)測結(jié)構(gòu)是一棵句法樹,機器翻譯預(yù)測結(jié)構(gòu)是一段完整的譯文玩焰。這些結(jié)構(gòu)由許多部分構(gòu)成由驹,最小的部分雖然也是分類問題(比如中文分詞時每個字符分類為{B,M,E,S} ),但必須考慮結(jié)構(gòu)整體的合理程度。

  2. 結(jié)構(gòu)化預(yù)測與學(xué)習(xí)流程

    結(jié)構(gòu)化預(yù)測的過程就是給定一個模型 λ 及打分函數(shù) score昔园,利用打分函數(shù)給一些備選結(jié)構(gòu)打分荔棉,選擇分?jǐn)?shù)最高的結(jié)構(gòu)作為預(yù)測輸出,公式如下:
    \hat{y}=\arg \max _{y \in Y} \operatorname{score}_{\lambda}(x, y)
    其中蒿赢,Y 是備選結(jié)構(gòu)的集合润樱。既然結(jié)構(gòu)化預(yù)測就是搜索得分最高的結(jié)構(gòu) y,那么結(jié)構(gòu)化學(xué)習(xí)的目標(biāo)就是想方設(shè)法讓正確答案 y 的得分最高羡棵。不同的模型有不同的算法壹若,對于線性模型,訓(xùn)練算法為結(jié)構(gòu)化感知機。

5.6 線性模型的結(jié)構(gòu)化感知機算法

  1. 結(jié)構(gòu)化感知機算法

    要讓線性模型支持結(jié)構(gòu)化預(yù)測店展,必須先設(shè)計打分函數(shù)养篓。打分函數(shù)的輸入有兩個缺一不可的參數(shù): 特征 x 和結(jié)構(gòu) y。但之前介紹的線性模型的“打分函數(shù)”只接受一個自變量 x赂蕴。

    做法是定義新的特征函數(shù) ?(x,y)柳弄,把結(jié)構(gòu) y 也作為一種特征,輸出新的“結(jié)構(gòu)化特征向量”概说。新特征向量與權(quán)重向量做點積后碧注,就得到一個標(biāo)量,將其作為分?jǐn)?shù):
    \operatorname{score}(x, y)=w \cdot \phi(x, y)
    打分函數(shù)有了糖赔,取分值最大的結(jié)構(gòu)作為預(yù)測結(jié)果萍丐,得到結(jié)構(gòu)化預(yù)測函數(shù):
    \hat{y}=\arg \max _{y \in Y}(w \cdot \phi(x, y))
    預(yù)測函數(shù)與線性分類器的決策函數(shù)很像,都是權(quán)重向量點積特征向量放典。那么感知機算法也可以拓展復(fù)用逝变,得到線性模型的結(jié)構(gòu)化學(xué)習(xí)算法。

    • 讀入樣本 (x,y)奋构,進行結(jié)構(gòu)化預(yù)測 \hat{y}=\arg \max_{y \in Y}(w \cdot \phi(x, y))

    • 與正確答案相比壳影,若不相等,則更新參數(shù): 獎勵正確答案觸發(fā)的特征函數(shù)的權(quán)重弥臼,否則進行懲罰:

      w \leftarrow w+\phi\left(x^{(i)}, y\right)-\phi\left(x^{(i)}, \hat{y}\right)

    • 還可以調(diào)整學(xué)習(xí)率:

      \boldsymbol{w} \leftarrow \boldsymbol{w}+\alpha\left(\phi\left(\boldsymbol{x}^{(i)}, \boldsymbol{y}\right)-\phi\left(\boldsymbol{x}^{(i)}, \hat{\boldsymbol{y}}\right)\right)

  1. 與感知機算法比較

    • 結(jié)構(gòu)化感知機修改了特征向量态贤。
    • 結(jié)構(gòu)化感知機的參數(shù)更新賞罰分明。
  1. 結(jié)構(gòu)化感知機與序列標(biāo)注

    上面已經(jīng)講了結(jié)構(gòu)化感知機的模型公式醋火,看如何運用到序列標(biāo)注上悠汽,我們知道序列標(biāo)注最大的結(jié)構(gòu)特點就是標(biāo)簽相互之間的依賴性,這種依賴性利用初始狀態(tài)概率想倆狗和狀態(tài)轉(zhuǎn)移概率矩陣體系那芥驳,那么對于結(jié)構(gòu)化感知機柿冲,就可以使用轉(zhuǎn)移特征來表示:
    \phi_{k}\left(y_{t-1}, y_{t}\right)=\left\{\begin{array}{ll} {1,} & {y_{t-1}=s_{i}, \mathrm{H} y_{t}=s_{j}} \\ {0,} & {其他 } \end{array} \quad i=0, \cdots, N ; j=1, \cdots, N\right.
    其中,Yt 為序列第 t 個標(biāo)簽兆旬,Si 為標(biāo)注集第 i 種標(biāo)簽假抄,N 為標(biāo)注集大小。

    狀態(tài)特征如下丽猬,類似于隱馬爾可夫模型的發(fā)射概率矩陣宿饱,狀態(tài)特征只與當(dāng)前的狀態(tài)有關(guān),與之前的狀態(tài)無關(guān):
    \phi_{i}\left(x_{i}, y_{i}\right)=\left\{\begin{array}{l} {1} \\ {0} \end{array}\right.
    于是脚祟,結(jié)構(gòu)化感知機的特征函數(shù)就是轉(zhuǎn)移特征和狀態(tài)特征的合集:
    \phi=\left[\phi_{k} ; \phi_{l}\right] \quad k=1, \cdots, N^{2}+N ; l=N^{2}+N+1, \cdots
    基于以上公式谬以,我們統(tǒng)一用打分函數(shù)來表示:
    \operatorname{score}(\boldsymbol{x}, \boldsymbol{y})=\sum_{t=1}^{T} \boldsymbol{w} \cdot \phi\left(y_{t-1}, y_{t}, \boldsymbol{x}_{t}\right)
    有了打分公式,就可以利用維特比算法求解得分最高的序列由桌。

5.7 基于結(jié)構(gòu)化感知機的中文分詞

代碼詳見(注釋寫得很清楚): perceptron_cws.py

https://github.com/NLP-LOVE/Introduction-NLP/tree/master/code/ch05/perceptron_cws.py

運行以上代碼結(jié)果如下:

P:96.68 R:96.51 F1:96.59 OOV-R:71.54 IV-R:97.18
[王思斌, 为黎,, 男, 邮丰,, 1949年10月, 生, 。]
[山東, 桓臺縣, 起鳳鎮(zhèn), 穆寨村, 婦女, 穆玲英]
[現(xiàn), 為, 中國藝術(shù)研究院中國文化研究所, 研究員, 铭乾。]
[我們, 的, 父母, 重, 男, 輕, 女]
[北京輸氣管道, 工程]

準(zhǔn)確性與性能的比較

算法 P R F1 R(oov) R(IV)
最長匹配 89.41 94.64 91.95 2.58 97.14
二元語法 92.38 96.70 94.49 2.58 99.26
一階HHM 78.49 80.38 79.42 41.11 81.44
二階HHM 78.34 80.01 79.16 42.06 81.04
平均感知機 96.69 96.45 96.57 70.34 97.16
結(jié)構(gòu)化感知機 96.67 96.64 96.65 70.52 97.35

對比各項指標(biāo)剪廉,我們終于將 OOV 提高到了 70% 以上,并且綜合 F1 也提高了 96.7%炕檩,感知機是截止到這章最好用的算法斗蒋,完全達(dá)到了實用水平,在實際項目中笛质,無非還需要掛載一些領(lǐng)域詞庫泉沾。

5.8 GitHub

HanLP何晗--《自然語言處理入門》筆記:

https://github.com/NLP-LOVE/Introduction-NLP

項目持續(xù)更新中......

目錄


章節(jié)
第 1 章:新手上路
第 2 章:詞典分詞
第 3 章:二元語法與中文分詞
第 4 章:隱馬爾可夫模型與序列標(biāo)注
第 5 章:感知機分類與序列標(biāo)注
第 6 章:條件隨機場與序列標(biāo)注
第 7 章:詞性標(biāo)注
第 8 章:命名實體識別
第 9 章:信息抽取
第 10 章:文本聚類
第 11 章:文本分類
第 12 章:依存句法分析
第 13 章:深度學(xué)習(xí)與自然語言處理
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市经瓷,隨后出現(xiàn)的幾起案子爆哑,更是在濱河造成了極大的恐慌洞难,老刑警劉巖舆吮,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異队贱,居然都是意外死亡色冀,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門柱嫌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來锋恬,“玉大人,你說我怎么就攤上這事编丘∮胙В” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵嘉抓,是天一觀的道長索守。 經(jīng)常有香客問我,道長抑片,這世上最難降的妖魔是什么卵佛? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮敞斋,結(jié)果婚禮上截汪,老公的妹妹穿的比我還像新娘。我一直安慰自己植捎,他們只是感情好衙解,可當(dāng)我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著焰枢,像睡著了一般丢郊。 火紅的嫁衣襯著肌膚如雪盔沫。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天枫匾,我揣著相機與錄音架诞,去河邊找鬼。 笑死干茉,一個胖子當(dāng)著我的面吹牛谴忧,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播角虫,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼沾谓,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了戳鹅?” 一聲冷哼從身側(cè)響起均驶,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎枫虏,沒想到半個月后妇穴,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡隶债,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年腾它,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片死讹。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡瞒滴,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赞警,到底是詐尸還是另有隱情妓忍,我是刑警寧澤,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布愧旦,位于F島的核電站世剖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏忘瓦。R本人自食惡果不足惜搁廓,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望耕皮。 院中可真熱鬧境蜕,春花似錦、人聲如沸凌停。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽罚拟。三九已至台诗,卻和暖如春完箩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背拉队。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工弊知, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人粱快。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓秩彤,卻偏偏與公主長得像,于是被迫代替她去往敵國和親事哭。 傳聞我的和親對象是個殘疾皇子漫雷,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容