学习问题:
1. 什么是马尔科夫过程
2. 什么是隐马尔科夫模型
3. 原理是什么
什么是马尔科夫过程
马尔科夫过程是一系列的事件链,已知目前的状态下“现在”,未来的情况不依赖与过去发生的事件。这种事件链,就是一个马尔科夫过程。
就比如一笔投资,一旦投入未来的投资收益只与现在的投资状态,和未来的收益可能性有关,而与过去的投资收益没有关系,所以投资也是一个马尔科夫过程。
什么是隐马尔科夫模型
隐马尔科夫模型就是在显性的马尔科夫链之外,还有一个隐性的马尔科夫链。隐性的马尔科夫链会对显性的马尔科夫链有所影响。
打个比方,有三个不同的骰子,一个为6面骰子,分别为123456,一个是四面骰子,分别为1234,还有一个是8面的骰子,分别为12345678。依次的选取骰子,的出一个上面的数字,可能是16584234,那么这一串数字,就是显性的马尔科夫链,而使用的骰子顺序可能为D4、D6、D8、D8、D4、D6、D8,那么这个选取骰子的顺序就是隐马尔科夫链。
其中掷骰子显示出的数字序列16584234 为可见状态链,而选取骰子的顺序D4、D6、D8、D8、D4、D6、D8,为隐含状态链。在每一次选取骰子的时候都会有一个选择概率,那么这个选取每个骰子的概率就是转换概率, 这里如果我们假设每次选骰子都是随机,也就是每一个骰子被选中的概率都是1/3,那么每个骰子的转换概率就是三分之一。而可见状态连之间是不存在转换概率的,但是每个隐含状态到可见状态之间,有一个输出概率。在这个例子中,如果已经选取了一个骰子,那么这个骰子摇出数字的概率就是输出概率。比如第一个骰子我们选取了D4,那么第一个数字1的输出概率九尾1/4。
如果在知道了骰子数量,骰子的种类,每一次选择骰子的概率,和每一个骰子摇出每一个数字的概率,既知道了转换概率,输出概率,这个模型是十分容易做出来的。而如果有一部分的信息缺失了,那么通过已知的信息去得出隐含的信息就成为了一个很重要的问题了。下面说一下隐马尔科夫模型的重要的三个问题。
隐马尔科夫模型的三种问题
- 评估问题:给定了观测的序列和模型的参数,来计算这个模型得到这个观测序列的概率。
用我们的筛子问题来解释就是, 如果我已知了摇出来的一串数字,骰子的种类和骰子的数量,既知道了观测序列,转换概率和输出概率,我们来计算我们的这一组骰子能够投出这一串数字的概率是多少。
那这个问题有什么用呢?这个问题可以用来测试两个模型的优劣。因为在实际情况下,我们知道的骰子情况(骰子的数量,骰子种类,既转换概率和输出概率)可能是不对的,或者骰子被别人换过了。如果我们的模型对于各种观测序列的概率值都很低,那么说明我们的模型可能是错误的(我们对于骰子个数和种类的认知是错误的)。 解码问题:给定观测的序列和模型的参数,怎么得到最优的隐含状态序列呢?
用我们骰子的例子来说,就是如果我们知道了一串摇出的数字,骰子的种类和骰子的数量(观测值和模型参数),我们如何确定这组骰子是怎么选取的呢?
这个问题的实际应用就是中文分词问题,可以把分词的方法看做隐含状态链,而已知的句子看做是观测的值。通过建立隐马尔科夫模型,来确定最可能的中文分词结果。学习问题:摸的参数都是未知的,如果调整这些参数以使观测序列的概率尽可能的大?
还是我们的骰子的例子,现在我们不知道骰子的数量了,也不知道骰子的种类,但是知道骰子摇出来的一组数。那我们决定怎么设定骰子的数量和种类可以让摇出来这一组数的概率最大。
这个问题其实就是在一般情况下我们如何建立HMM模型和确定模型参数个的过程。
劣势
因为隐马尔科夫模型的前提假设是“未来”状态仅仅与“现在”的状态相关,与之前的状态都是无关的,所以HMM模型作为分词模型的时候是无法考虑到词语上下文的关系的。无法考虑到词语的语境,这就使得分词无法根据语境进行调整。也是因为无法选择上下文的特征,从而限制了对于分词模型的,特征选择。