机器学习:HMM隐马尔可夫模型用于中文分词

1. 定义

隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔可夫过程。它的状态不能直接观察到,但能通过观测向量序列观察到,每个观测向量都是通过某些概率密度分布表现为各种状态,每一个观测向量是由一个具有相应概率密度分布的状态序列产生。所以,隐马尔可夫模型是一个双重随机过程----具有一定状态数的隐马尔可夫链和显示随机函数集。

两个基本假设:齐次马尔可夫性假设(当前隐状态只依赖前一状态)、观测独立性假设(观测只依赖当前状态)。

2.三个基本问题:

(1) 概率计算问题

已知:模型λ=(A,B,π)、观测序列O。求:O观测序列出现概率P(O|λ)。

求解方法:直接计算法;前向算法(类似动态规划或剪枝);后向算法。

主要应用:

(2) 学习问题

已知:观测序列O。 求:模型λ=(A,B,π)的参数,使得观测序列概率P(O|λ)最大。

方法:监督学习法(训练数据包括观测序列和对应状态序列);非监督学习方法(训练数据只包括观测序列)——EM算法(对数似然函数取期望的Q函数、极大化)

(3) 预测问题

已知:模型λ=(A,B,π)、观测序列O。求:最有可能出现的状态序列 I。

求解方法:近似算法;维特比算法(动态规划递推地计算每一步的最优路径,即概率最大的一条)。

主要应用:中文分词。

3. 隐马尔可夫模型用于中文分词(从零开始训练)

(1) 参数解释

假设隐马尔可夫模型是一个五元组<S, O, A, B, π>,已知S、O,根据观测集求模型参数A,B,π,进而对句子进行分词得到分词的最优路径I=(i1,i2,...,iT)。

具体到分词,分别解释每个变量的含义:隐马尔可夫模型及其在分词中的简单应用

假如训练语料有两句话:

我 爱 你 程序员。

他们 两个 人 是 半斤八两。

a.       O是观察序列,本例中,就是:“我、爱、你、程、序、员、他、们、两、个、人、是、半、斤、八、两”这N=16个字

注意区分观测序列观测集合

观测序列是给定的句子。

观测集合是所有汉字的集合——汉字的总数已经超过了8万,而常用的只有3500字。

b.       S状态集合,由四种状态构成:词头标记为F(如“程”),词中标记为M(如“序”)、词尾标记为E(如“员”)、单字成词标记为 W(如“爱”、“你”)

c.       A即由一个状态转移到另一个状态的概率集合,本例共有8种状态

 i.        W->W,如a(我是W->W)=1“我”后面一定是单字成词

 ii.       W->F,此例中a(我是W->F)=0,因此“我”后面一定不是词头,而a(你是W->F)=1

 iii.      F->M

 iv.      F->E

 i.        M->E

 ii.       M->M

 iii.      E->F

 iv.      E->W

d.      B由各状态的概率分布构成,如b(我是W)=1(“我”一定单字成词)。

e.      π由初始状态的概率构成,此例中为π(我)=1/2(以“我”开头的概率为1/2),π(他)=1/2(以“他”开头的概率为1/2)。也就是说中文分词中,初始状态是由标记为F、W的字出现概率组成。

(2) 学习模型

主要任务:学习状态转移矩阵A,观测概率分布B,初始参数π

监督学习方法

如果训练数据集已经给出句子(观测序列)及标记分词(路径序列):

初始参数π:π = π(i) = P(i_1=q_i), i=1,2,..,N,是时刻t=1时刻,某个观测值(汉字)处于q_i状态的概率。这里q_i = F, M, E, W,i=1,2,3,4.

统计每个句子开头第一个字出现频率,除以句子总数,即可得到这个初始是状态 F 或 W 的概率,是其他状态的概率为0。

学习状态转移矩阵A:设它的子元素为a(i->j), 则 a(i->j) = (状态q_i变到状态q_j的次数) / (状态q_i变化的总次数)。这里只考虑状态变化,不考虑观测值变化。

观测概率分布B:设它的子元素为b_j(k), 则 b_j(k) = (状态为j,观测为k的次数) / (所有观测值为所有状态的总次数)。

总而言之:监督学习方法主要是通过统计频数除以总数,得到的概率,构成模型参数。

非监督学习方法

由于监督学习方法给出人工标注训练数据代价往往很高,因此,采用非监督学习的EM(期望最大化)算法来实现。

算法关键:

Q函数:参数为模型参数的当前估计值+下一步估计值。等号右边为(当前估计值条件下的O和I的联合概率)*log(新参数条件下的O和I的联合概率)、并在所有观测集基础上求和。具体推导是初始状态*观测概率*状态转移概率的迭代过程。

极大化:拉格朗日乘子法写出拉格朗日函数,包含了初始概率和为1的条件。对 π(i) 求偏导令结果为0可得 π(i) 

同理,由于对某一状态而言,有转移状态和为1的约束条件,因此可得另一拉格朗日函数,求出aij。

同理求出aij

编辑公式不方便,具体参考《统计学习方法》第181页。

(3) 用模型得到分词路径

用维特比算法:动态规划算法求最优路径,其实就是从t=1开始,递归地计算在时刻t,状态为i的各条部分路径的最大概率,直至t=T。

 

于是得到最终分词。

 

发布了392 篇原创文章 · 获赞 487 · 访问量 239万+
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览