维特比(viterbi)算法与中文词性标注(一)
隐马尔可夫模型(Hidden Markov Model,HMM)
马尔科夫假设
随机过程中各个状态的概率分布,只与它的前一个状态有关,即
对于一些实际情况中的概率关系(比如天气预报)显然是不够合理的,但至少给出了一个相对准确的近似解
符合马尔科夫假设的随机过程称为马尔科夫过程,或马尔科夫链
上图中圆圈表示状态,圆圈间的箭头表示状态的转化,箭头的权值代表由状态向状态转移的概率,此处均取自同一个状态集合,之间互相转化。
隐马尔科夫链
在马尔科夫链的基础上引入隐马尔科夫链,任一时刻t的状态是不可见的。观察者没法通过观察到状态序列来进行推测。但是隐含马尔可夫模型在每个时刻t会输出一个符号,而且和仅和相关。
其中代表由转化为的概率,代表在状态时,输出的概率
隐马尔科夫链的五元组
HMM模型的五元组
状态值集合
观察值集合
初始状态序列,此处初始化概率是指
转移概率序列,此处转移概率是指由状态向转移的概率
发射概率序列,此处转移概率是指由状态输出转移的概率
为方便对HMM五元组的理解,举个例子:
医生通过病人对自身身体感受的描述(正常,头晕,冷)来判断病人的病情(健康,低烧,高烧)
其中隐含的病情状态值集合为{健康,低烧,高烧}
可观察的身体感受观察值集合为{正常,头晕,冷}
医生根据以往病例,预判病人的病情,即初始状态序列
健康 | 低烧 | 高烧 |
---|---|---|
0.7 | 0.2 | 0.1 |
医生根据以往病例,得出的病人在两天之间病情转换概率,即转移概率序列
前\后 | 健康 | 低烧 | 高烧 |
---|---|---|---|
健康 | 0.8 | 0.15 | 0.05 |
低烧 | 0.4 | 0.3 | 0.3 |
高烧 | 0.2 | 0.5 | 0.3 |
根据以往病例,医生得出的病人在相应病情下的身体感受概率,即发射概率序列
病情\感受 | 正常 | 头晕 | 冷 |
---|---|---|---|
健康 | 0.8 | 0.1 | 0.1 |
低烧 | 0.2 | 0.4 | 0.4 |
高烧 | 0.1 | 0.3 | 0.6 |
隐马尔科夫链的三个假设
- 有限历史性假设:状态的概率分布只与其前一个状态有关
- 齐次性假设:状态与具体时间无关
- 输出独立性假设:输出仅与当前状态有关
隐马尔科夫链的三类问题
- 评估问题:给定模型,求某个输出序列的概率
- 在病人近几日的病情已知,所有概率序列均已知的情况下,计算病人最后一日身体感受的概率
- Forward-Backward算法
- 解码问题:给定模型和某个特定的输出序列,找到最可能产生这个输出的状态序列
- 已知所有概率序列,和近几日病人身体感受,得出近几日病人的病情
- Viterbi算法
- 学习问题:给定足够量的观测数据,估计隐含马尔可夫模型的参数
- 通过大量病例推算模型参数
- 无监督训练算法(鲍姆-韦尔奇算法)
维特比(viterbi)算法与中文词性标注(二)—— 维特比算法
维特比(viterbi)算法与中文词性标注(三)——词性标注实现
参考文献
[1]一文搞懂HMM(隐马尔可夫模型)