转自:http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/main.html
Introduction
经常,我们希望找出在一段时间里经常出现的一些模式,例如一个人经常使用的命令,句子里的词组序列,语音中的语音序列。
本系列文章包含三部分:
1.介绍概率模式系统;
2.预测的系统与观察的系统不同;
3.考察能够通过建模的系统解决的问题,例如天气预测。
http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/gen_patterns/s1_pg1.html
Generating Patterns
模式分为确定性模式 Deterministic Patters 和非确定性模式 Non-Deterministic。
确定性模式,下一个状态之和之前的1个状态相关,例如红绿灯,状态变迁永远是:
red-green-amber
对于non-Deterministic patters,例如天气变化,有四种天气:cloudy, sunny, rainy,依靠历史天气并不能准确预测天气,所以是non-determinstic。
为了简化问题,做出 Markov Assumption: 当前的状态,只依赖于过去的一些状态。这样就可以通过过去几天的天气来预测未来的天气。
markov process: 系统的状态变迁,只取决于过去n个状态;这样的模型成为 order n model。最简单的 markov process 是 first order process,这和 deterministic model 是不一样的,这里的状态变迁是概率的 probablistic,而不是确定的。
对一个有 M 个状态的 first order process,有M2 个跳转。每个跳转 transition 有一个 state transition probablity 状态变迁概率。这些概率构成了 state transition matrix,概率是不随着时间改变的,这是一个重要假设。
对于天气的例子,matrix可能是这样的:
为了初始化这样的系统,需要定义天气是什么,假定初始状态是
就是说在第一天 (time = 0),天气是晴天。
现在定义了一个 first order markov prcocess,包含三个要素:
1.状态:三个状态,sunny, cloudy,rainy
2.π向量 π vector: 定义了初始状态下的各个状态的概率;
3.状态跳转矩阵 state transition matrix
http://www.comp.leeds.ac.uk/roger/HiddenMarkovModels/html_dev/hidden_patterns/s1_pg1.html
Patterns generated by a hidden process
1. Limitations of a markov process
markov process 可能没有足够的 power 来达到预测效果,这时候有人发现 seaweed 海藻的状态与天气是有关系的,这时候我们有两组状态:可观察的状态(海藻的状态),隐藏的状态(天气的状态)。我们希望开发一个算法预测天气,利用海藻的状态和 markov assumption。
· 在这种情况下,可观察的状态序列 和 hidden process 是概率相关的。我们采用 hidden markov model 来建模这种过程,hidden markov process 随时间改变状态,可观察的状态和hidden states 是相关的。
2.Hidden Markov Model
下图是一个hidden 和observable 状态,这里的假定:
1.true wheather是first order markov process;
2.true wheather是连在一起的。
在每一个weather的状态下,seaweed 都有四个状态,表示每种状态下 seaweed 的状态概率的矩阵称为 conusion matrix。给定每个 hidden state,observable states 的概率。
每行的概率和是1
Definition of a hidden Markov model
a hidden markov model HMM 是一个三元组: (π,A,B)
在A和B中的概率,都是与时间无关的,这是HMM最不切实际的假设。
Uses associated with HMMs
3类问题可以解决:
1. 给定HMM,计算一个观察的序列出现的概率;
2.找出最有可能出现的 观察序列 (observed sequence) 的隐式状态序列 (sequence of hidden states)
3.给定观察序列,生成HMM
1.Evaluation
给定一组 HMMs,以及一个观测序列。我们可能想找出哪个 HMM 最有可能产生这个观测序列,例如在天气的例子中,在不同的季节下,天气的行为会不同,我们可能希望通过观测序列来推断天气。
使用 forward algorithm 计算每个 HMM 下,观测序列的概率,选择概率最大的 HMM。
这类问题在 语音识别 (speech recognition) 问题中出现,大量的 HMM 会应用,每个HMM 代表一个单词。一个观测序列是由一个单词表示,该单词可以通过识别最可能的 HMM 来确定。
2.Decoding
在其他的应用里,我们可能对 给定观测序列, 最可能的 隐式状态序列 (sequence of hidden states)感兴趣。在前边的例子中,一个 blind hermit 只能感受海藻的状态,可是想知道天气的状态,也就是 hidden states.
给定观测序列以及HMM,我们使用 Viterbi Algorithm 来找到最优可能的 sequence of hidden states
Viterbi Algorithm一个广泛的应用是 NLP(Natural Language Processing),对单词进行语义标记 (verb, adj, noun,etc)。一个局句子里的单词代表了观测序列,语义分类代表了 hidden states。通过找出 概率最大的 hidden states,可以为一个单词找出最可能的语义 syntactic class。进而可以做很多其他的工作,例如识别语义。
3.Learning
最难的问题是 给定一个观测序列以及对应的 hidden states 序列,找出一个合适的 HMM,也就是 (π,A,B)。
forward-backward algorithm 用在 A 和B都不知道的情况下。