Error message here!

Hide Error message here!

Error message here!

Hide Error message here!

Error message here!

Close

# 隐藏马尔科夫模型HMM

sdu20112013 2019-02-14 10:22:00 阅读数:259 评论数:0 点赞数:0 收藏数:0

### HMM

Consider two friends, Alice and Bob, who live far apart from each other and who talk together daily over the telephone about what they did that day. Bob is only interested in three activities: walking in the park, shopping, and cleaning his apartment. The choice of what to do is determined exclusively by the weather on a given day. Alice has no definite information about the weather, but she knows general trends. Based on what Bob tells her he did each day, Alice tries to guess what the weather must have been like.
Alice believes that the weather operates as a discrete Markov chain. There are two states, "Rainy" and "Sunny", but she cannot observe them directly, that is, they are hidden from her. On each day, there is a certain chance that Bob will perform one of the following activities, depending on the weather: "walk", "shop", or "clean". Since Bob tells Alice about his activities, those are the observations. The entire system is that of a hidden Markov model (HMM).

#### 隐藏马尔科夫

• 隐藏状态
• 观测状态
• pi向量 模型初始隐藏状态的概率
• 转移矩阵：状态转移的概率矩阵
• 混淆矩阵(有的翻译成发射概率矩阵)：隐藏状态与观察状态的对应概率矩阵

alice预测bob所在地区天气用HMM建模可以表达如下：

#隐藏状态
states = ('Rainy', 'Sunny')
#观测状态
observations = ('walk', 'shop', 'clean')
#初始pi向量
start_probability = {'Rainy': 0.6, 'Sunny': 0.4}
#状态转移矩阵
transition_probability = {
'Rainy' : {'Rainy': 0.7, 'Sunny': 0.3},
'Sunny' : {'Rainy': 0.4, 'Sunny': 0.6},
}
#混淆矩阵.比如如下数据代表阴天时,bob有0.1的概率逛公园,0.4的概率散步,0.5的概率做清洁.
emission_probability = {
'Rainy' : {'walk': 0.1, 'shop': 0.4, 'clean': 0.5},
'Sunny' : {'walk': 0.6, 'shop': 0.3, 'clean': 0.1},
}

### HMM解决的三个基本问题

• 给定HMM求一个观察序列的概率（评估） 使用前向算法解决
• 搜索最有可能生成一个观察序列的隐藏状态序列（解码）使用维特比算法解决
• 是给定观察序列生成一个HMM（学习）使用前向-后向算法解决

Alice和Bob通了三天电话后发现第一天Bob去散步了，第二天他去购物了，第三天他清理房间了。Alice现在有两个问题：

• 这个观察序列“散步、购物、清理”的总的概率是多少？(注：这个问题对应于HMM的基本问题之一：已知HMM模型λ及观察序列O，如何计算P(O|λ)？)
• 最能解释这个观察序列的状态序列（晴/雨）又是什么？（注：这个问题对应HMM基本问题之二：给定观察序列O=O1,O2,…OT以及模型λ,如何选择一个对应的状态序列S = q1,q2,…qT，使得S能够最为合理的解释观察序列O？）
• 至于HMM的基本问题之三：如何调整模型参数, 使得P(O|λ)最大？这个问题事实上就是给出很多个观察序列值，来训练以上几个参数的问题。

• 前向算法
• 维特比算法
• 前向-后向算法

• 词性标注
• 中文分词

### HMM与CRF关系

HMM中的"观测状态"即为我们看到的具体的词(i/love/you)

• p(li|li−1) 状态转移概率 (比如l2=动词,l1=名词,则代表名词后面接动词的概率);
• p(wi|li) 发射概率(也就是之前例子里说的混淆矩阵概率) (比如l2=动词 w2="love" 代表一个动词是单词"love"的概率)

• 对每一个状态转移概率,都可以创建一个特征函数f,给一个权重w
• 对每一个发射概率,也可以定一个特征函数g,给一个权重w
这样crf计算出来的p(l,s)和HMM计算出来的p(l,s)就等价了.
也就是说每一个HMM都可以用某一个CRF来表达

crf比HMM更强大

• crf可以定制更多的特征函数 比如对"is that ok?"做词性标注.用crf的话,我们可以定义一个特征函数：一个以?结尾的句子的第一个单词更可能是动词. 在HMM中我们没办法表达这个信息. 从而crf的标注的准确率可以更高.
• crf可以有更多样的权重. hmm里权重是可以任意的,正的,负的都可以.

https://www.cnblogs.com/sdu20112013/p/10373091.html

30万现金开奖等你来领