机器学习 - 隐马尔可夫模型

1 隐马尔可夫模型 - 定义

  • 隐马尔可夫模型(hidden markov model, HMM)是可用于标注问题 [自动分词、词性标注、命名实体识别等] 的统计学习模型,描述由隐藏的马尔可夫链随机生成观测序列的过程,属于生成模型
  • 隐马尔可夫模型定义如下:隐马尔可夫模型是一种有向概率图模型。描述由一个隐藏的马尔科夫链生成不可观测的状态随机序列(状态序列,state sequence),再由各个状态序列生成一个观测从而产生观测随机序列(观测序列,observation sequence)的过程。

2 隐马尔可夫模型 - 用于中文分词

2.1 中文分词例子

  • 输入:我想去乌鲁木齐
  • 输出:我/S 想/S 去/S 乌/B 鲁/M 木/M 齐/E

注意: B表示一个词的开始;M表示一个词的中间;E表示一个词的结尾;S表示单独成词;

2.2 中文分词 - 问题建模

  • x 表示输入的将要分词的句子(观测序列);
  • y 表示输出的句子分词结果(状态序列);
  • 中文分词问题就是:给定 x 的情况下,找到一个 y 使得条件概率 p(y|x) 最大化;

隐马尔可夫模型,使用贝叶斯公式将条件概率 p(y|x) 的求解问题,转换成对联合概率p(x,y)的求解:
\begin{align} \hat{y} &= \mathop{\arg\max}_{y} p(y|x) \\ &= \mathop{\arg\max}_{y} \frac{p(x,y)}{ p(x)} \\ &= \mathop{\arg\max}_{y} p(x,y) \end{align}
注意:x 是给定的,因此对于任意的 y 而言 p(x) 都是一样的;

2.3 隐马尔可夫模型三要素

  • 观测序列(待分词的句子):x_1, x_2, ..., x_L
  • 状态序列(分词结果):y_1, y_2, ..., y_L
  • 观测空间 \mathcal{X},表示所有可能的观测集合;即中文中所有可能的词,大小为 M
  • 状态空间 \mathcal{ Y},表示所有可能的状态集合;即分词标签 B, M, E, S,大小为 N
  • 初始概率分布 \pi \in \mathbb{R}^{ 1 \times N }p(y_1 | start)
  • 发射概率分布 B \in \mathbb{R}^{ N \times M }p(x_l | y_l)
  • 转移概率分布 A \in \mathbb{ R}^{ (N+1) \times (N+1) }p(y_{l+1} | y_l);包含一个结束符end
  • 隐马尔可夫模型: \lambda = (A, B, \pi)
隐马尔可夫模型.png

3 隐马尔可夫模型 - 两个基本假设

  1. 齐次马尔科夫假设: 即假设隐藏的马尔可夫链在任意时刻 t 的状态只依赖于其前一时刻的状态,与其他时刻的状态及观测无关;
    p(y_t|y_{t-1}, x_{t-1}, ..., y_1, x_1) = p(y_t|y_{t-1})
  2. 观测独立性假设: 即假设任意时刻的观测只依赖于该时刻的马尔可夫链的状态,与其他观测及状态无关;
    p(x_t|y_T, x_T, y_{T-1}, x_{T-1}, ..., y_1, x_1) = p(x_t|y_t)

4 隐马尔可夫模型 - 3个基本问题

  1. 概率计算问题: 给定模型 \lambda = (A, B, \pi) 和观测序列 x_1, x_2, ..., x_L ,计算在模型 \lambda 下观测序列 x出现的概率 p(x | \lambda)
  2. 学习问题: 已知观测序列 x_1, x_2, ..., x_L,估计模型 \lambda = (A, B, \pi) 参数,使得在该模型下序列概率 p(x | \lambda) 最大;
  3. 预测问题: 也称为解码问题。已知模型 \lambda = (A, B, \pi) 和观测序列 x_1, x_2, ..., x_L,求对给定观测序列条件概率 p(y | x) 最大的状态序列 y_1, y_2, ..., y_L。即给定观测序列,求最有可能对应的状态序列;

4.1 概率计算问题

  • 可使用前向(forward)、后向(backward)算法计算 p(x | \lambda);为后续学习问题做铺垫;

4.2 学习问题

  • 隐马尔可夫模型的学习,根据训练数据是包括 观测序列 和对应的 状态序列 还是只有观测序列,可以分别由 监督学习无监督学习 实现;

4.2.1 监督学习方法

  • 使用极大似然估计法来估计隐马尔可夫模型的参数。
  1. 转移概率 p(y_{l+1} | y_l) 的估计:
    p(y_{l+1} | y_l) = \frac{Count(y_l, y_{l+1}) }{ Count(y_l) }
  2. 发射概率 p(x_l | y_l) 的估计:
    p(x_l | y_l) = \frac{ Count(x_l, y_l) }{ Count(y_l) }
  3. 初始概率 p(y_1 | start) 的估计:Count(start),训练语料总数;
    p(y_1 | start) = \frac{ Count(start, y_1) }{ Count(start) }

4.2.2 无监督方法 [Baum-Welch 算法]

  • 由于监督学习需要使用标注的训练数据,而人工标注训练数据往往代价很高,有时就会利用无监督学习方法;
  • 隐马尔可夫模型实际上是一个含有隐变量的概率模型:p(x|\lambda) = \sum_y {logp(x|y, \lambda) p(y|\lambda)} 它的参数学习可以由 EM算法 实现。

4.3 预测问题

  • HMM模型问题定义如下,找出\hat{y}使得联合概率p(x,y)最大化; 最直观的思路是穷举所有可能的y,但是时间复杂度为O(N^L);一般使用viterbi算法求解,其时间复杂度为O(L \times N^2)
    \begin{align} \hat{y} &= \mathop{\arg\max}_{y} p(y|x) \\ &= \mathop{\arg\max}_{y} \frac{p(x,y)}{ p(x)} \\ &= \mathop{\arg\max}_{y} p(x,y) \end{align}
  • 隐马尔可夫的预测问题,一般使用维特比算法求解。维特比算法实际是动态规划(Dynamic Programming)解隐马尔可夫模型预测问题,即用动态规划求概率最大路径(最优路径)。这时一条路径对应着一个状态序列。
  • 维特比算法解HMM预测问题:

输入:模型 \lambda = (A, B, \pi)和观测 X=(x_1, x_2, ..., x_L)
输出:最优路径 Y^* = (y_1^*, y_2^*, ..., y_L^*)
(1)初始化
\begin{align} \delta_1(i) &= \pi_i b_i(x_1), \quad i=1,2,...,N \\ \Psi_1(i) &= 0, \quad i=1,2,...,N \end{align}
(2)开始递推,对l = 2,3,...,L注意:a_{ji}表示转移概率,b_i(x_l)表示发射概率;
\begin{align} \delta_l(i) &= \max_{1 \leq j \leq N} \left[ \delta_{l-1}(j) a_{ji} \right] b_i(x_l), \quad i=1,2,...,N \\ \Psi_l(i) &= \arg\max_{1 \leq j \leq N} \left[ \delta_{l-1}(j) a_{ji} \right], \quad i=1,2,...,N \end{align}
(3)终止
\begin{align} P^* &= \max_{1 \leq i \leq N} \delta_L(i) \\ y_L^* &= \arg\max_{1 \leq i \leq N}\delta_L(i) \end{align}
(4)最优路径回溯,对l = L-1, L-2,..., 1
y_l^* = \Psi_{l+1}(y_{l+1}^*)
求得最优路径:Y^* = (y_1^*, y_2^*, ..., y_L^*)

4.3.1 HMM预测过程例子

  • 隐马尔可夫模型的三个概率矩阵如下:


    HMM三个概率矩阵.png
  • Viterbi算法解码过程:维特比算法时间复杂度为:O(L \times N^2)
    维特比算法.png

5. HMM算法总结

  • HMM算法总结如下:
    (1)HMM对联合概率进行建模:F(x,y) = P(x,y) = p(y)p(x|y)
    (2)HMM inference目标为:\hat{y} = \mathop{\arg\max}_{y} p(x,y)
    (3)HMM参数估计p(y), p(x|y):可以采用简单的统计方法,或者采用无监督式的方式使用EM算法学习网络参数;
  • HMM的缺点:HMM算法并不一定能够保证p(x,\hat{y}) > p(x,y)
    HMM算法缺点.png

参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,826评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,968评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,234评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,562评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,611评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,482评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,271评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,166评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,608评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,814评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,926评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,644评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,249评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,866评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,991评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,063评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,871评论 2 354

推荐阅读更多精彩内容