1. 介绍
首先我们考虑一个典型的概率系统:
这样一个系统,我们希望预测的状态并不是观察到的,也就是其底层系统是隐藏的。
对于实际问题,比如一个简单的例子,来解决以下问题:
通过海藻预测天气状态,湿透的海藻对应下雨,干燥对应晴天。
- 给出一个星期的海藻状态序列,预测之后的天气
- 给定一个目前海藻状态序列,预测目前是冬天还是夏天
2. Generating Patterns - 生成模式
2.1 非确定性模式(Non-deterministic patterns)
为了对应现实,我们把天气设为,雨天,阴天和晴天。对于上述问题,一种做法是假设模型的当前状态仅仅依赖于前面的几个状态,这被称为马尔科夫假设。但这与实际差别比较大。
一个马尔科夫过程是状态间的转移仅依赖于前n个状态的过程。这个过程被称之为n阶马尔科夫模型,其中n是影响下一个状态选择的(前)n个状态。最简单的马尔科夫过程是一阶模型,它的状态选择仅与前一个状态有关。这里要注意它与确定性系统并不相同,因为下一个状态的选择由相应的概率决定,并不是确定性的。
现在我们定义一个一阶马尔科夫过程如下:
状态:三个状态——晴天,多云,雨天。
pi向量:定义系统初始化时每一个状态的概率。
状态转移矩阵:给定前一天天气情况下的当前天气概率。
3. Hidden Patterns - 隐藏模式
我们观察到的状态序列与隐藏过程有一定的概率关系。我们使用隐马尔科夫模型对这样的过程建模,这个模型包含了一个底层隐藏的随时间改变的马尔科夫过程,以及一个与隐藏状态某种程度相关的可观察到的状态集合。具体就是:
- 隐藏状态:一个系统的(真实)状态,可以由一个马尔科夫过程进行描述(例如,天气)。
- 观察状态:在这个过程中‘可视’的状态(例如,海藻的湿度)。
- pi向量:包含了(隐)模型在时间t=1时一个特殊的隐藏状态的概率(初始概率)。
- 状态转移矩阵:包含了一个隐藏状态到另一个隐藏状态的概率
- 混淆矩阵:包含了给定隐马尔科夫模型的某一个特殊的隐藏状态,观察到的某个观察状态的概率。
因此一个隐马尔科夫模型是在一个标准的马尔科夫过程中引入一组观察状态,以及其与隐藏状态间的一些概率关系。
4. HMM 定义
一个隐马尔科夫模型是一个三元组(pi, A, B)。
在状态转移矩阵及混淆矩阵中的每一个概率都是时间无关的——也就是说,当系统演化时这些矩阵并不随时间改变。
5. 应用
- 给定HMM求一个观察序列的概率(评估);
- 搜索最有可能生成一个观察序列的隐藏状态序列(解码);
- 第三个问题是给定观察序列生成一个HMM(学习)。
5.1 评估
考虑这样的问题,我们有一些描述不同系统的隐马尔科夫模型(也就是一些( pi,A,B)三元组的集合)及一个观察序列。我们想知道哪一个HMM最有可能产生了这个给定的观察序列。我们使用前向算法(forward algorithm)来计算给定隐马尔科夫模型(HMM)后的一个观察序列的概率,并因此选择最合适的隐马尔科夫模型(HMM)。
5.2 解码
给定观察序列搜索最可能的隐藏状态序列。
另一个相关问题,也是最感兴趣的一个,就是搜索生成输出序列的隐藏状态序列。在许多情况下我们对于模型中的隐藏状态更感兴趣,因为它们代表了一些更有价值的东西,而这些东西通常不能直接观察到。
考虑海藻和天气这个例子,我们只能知道海藻的状态,但是我们更想知道天气的情况,天气状态在这里就是隐藏状态。我们使用Viterbi 算法(Viterbi algorithm)确定(搜索)已知观察序列及HMM下最可能的隐藏状态序列。
5.3 学习
根据观察序列生成隐马尔科夫模型。
第三个问题,也是与HMM相关的问题中最难的,根据一个观察序列(来自于已知的集合),以及与其有关的一个隐藏状态集,估计一个最合适的隐马尔科夫模型(HMM),也就是确定对已知序列描述的最合适的(pi,A,B)三元组。
当矩阵A和B不能够直接被(估计)测量时,前向-后向算法(forward-backward algorithm)被用来进行学习(参数估计),这也是实际应用中常见的情况。
6. 总结
三个问题算法实现有待学习。
参考
[1] HMM学习最佳范例一:介绍 http://www.52nlp.cn/hmm-learn-best-practices-one-introduction
[2] Wikipedia 隐马尔可夫模型:https://zh.wikipedia.org/wiki/%E9%9A%90%E9%A9%AC%E5%B0%94%E5%8F%AF%E5%A4%AB%E6%A8%A1%E5%9E%8B
[3] HMM在自然语言处理中的应用一:词性标注:http://www.52nlp.cn/hmm-application-in-natural-language-processing-one-part-of-speech-tagging-1
[4] HMM学习最佳范例五:前向算法:http://www.52nlp.cn/hmm-learn-best-practices-five-forward-algorithm-1
[5] HMM学习最佳范例六:维特比算法:http://www.52nlp.cn/hmm-learn-best-practices-six-viterbi-algorithm-1
[6] HMM学习最佳范例七:前向-后向算法:http://www.52nlp.cn/hmm-learn-best-practices-seven-forward-backward-algorithm-1
因为我们是朋友,所以你可以使用我的文字,但请注明出处:http://alwa.info