保留初心,砥砺前行
这是令人兴奋的一个章节。
因为科研中总是充满了马尔科夫。
隐含马尔科夫模型也是机器学习的主要工具之一。
引用这句话的目的也是为了证明这一章节的重要性。
引例:
在通信模型中,信息源发出信号s1,s2,s3,...,接收器收到o1,02,03,...。解码操作就是通过收到的o1,02,03,...还原回s1,s2,s3,...。
如何根据o1,02,03,...得到s1,s2,s3,...,可以把这项工作理解成由o1,02,03,...,最有可能产生哪一种s1,s2,s3,...。解释成概率论的语言就是在o1,02,03,...已知的情况下,求P(s1,s2,s3,...|o1,02,03,...)达到最大时的那一串s1,s2,s3,...。也就是如下公式:
![](http://www.forkosh.com/mathtex.cgi? S_{1},S_{2},S_{3},S_{4},\ldots =ArgMaxP\left( S_{1},S_{2},S_{3},\ldots |O_{1},O_{2},O_{3},\ldots \right))
利用贝叶斯公式,可以把上式等价变成
![](http://www.forkosh.com/mathtex.cgi? \dfrac {P\left(O_{1},O_{2},O_{3} ,O_{4} ,\ldots |S_{1},S_{2},S_{3},\ldots \right)\cdot P\left( S_{1},S_{2},S_{3}\right)} {P\left( O_{1},O_{2},O_{3}\right)})
其中,分子的左边的P代表在信息s1,s2,s3,...经过传输后变成o1,02,03,...的可能性;右边的P代表是一个正常信号的概率;分母代表接发送端产生信息o1,02,03,...的可能性。
o1,02,03,...一旦产生,就不会再发生变化,因此P(o1,02,03,...)可以看作一个常数,上面公式就可以等价成
![](http://www.forkosh.com/mathtex.cgi?{P\left(O_{1},O_{2},O_{3} ,\ldots |S_{1},S_{2},S_{3},\ldots \right)\cdot P\left( S_{1},S_{2},S_{3}\right)} )
这个公式可以用隐含马尔科夫模型来估计。
隐含马尔科夫模型
马尔科夫假设在随机过程中每个状态st的概率分布,只与它的前一个状态st-1有关,即![](http://www.forkosh.com/mathtex.cgi?{P\left(S_{t} |S_{1},S_{2},S_{3},S_{4}, \ldots ,S_{t-1}\right)={P\left(S_{t} |S_{t-1}\right) )
符合这个假设的随机过程成为马尔科夫过程,也称为马尔科夫链。
这一段是重点内容:
可以把这个马尔科夫链想象成一台机器,它随机的选择一个状态作为初始状态开始运行,并且按照马尔科夫链的规则持续选择后续状态。这样在运行了一段时间T后,就会产生一个状态序列:s1,s2,s3,... ,sT。根据这个序列,很容易得到某个状态si出现的次数#(si),也很容易得到si转换到sj的次数#(si,sj)。从而得到si转移到sj的概率:#(si,sj) / #(si)。
隐含马尔科夫模型是上述马尔科夫链的一个扩展。
隐含马尔科夫模型中任意时刻t的状态st是不可见的。因此上述的根据观察序列得到概率的方式都不再working。幸好隐含马尔科夫模型在每个t都会输出一个符号ot,这个ot与st相关并且只与st相关,这个被称为独立输出假设。
上图中下边一层的4个状态s不可见,这些s是典型的马尔科夫链,而它们输出的符号o是可见的。
根据上述的独立输出假设,我们可以得到如下公式:
![](http://www.forkosh.com/mathtex.cgi?{P\left(O_{1},O_{2},O_{3} ,\ldots |S_{1},S_{2},S_{3},\ldots \right)=\prod {t}P\left( o{t}|s_{t}\right)} )
根据上述的马尔科夫假设,我们可以得到如下公式:
![](http://www.forkosh.com/mathtex.cgi?{P\left( S_{1},S_{2},S_{3},\ldots\right)=\prod {t}P\left( s{t}|s_{t-1}\right)} )
使用以上两个公式与之前的通信问题中的最终推导式
![](http://www.forkosh.com/mathtex.cgi?{P\left(O_{1},O_{2},O_{3} ,\ldots |S_{1},S_{2},S_{3},\ldots \right)\cdot P\left( S_{1},S_{2},S_{3}\right)} )
相比较,可以容易地看出这些公式在形态上相似。把独立输出和马尔科夫假设的两个公式相乘,可以正好得到之前在通信问题中我们所要求的内容。因此通信的解码问题完全可以使用隐含马尔科夫模型来解决。
就像前文所说的那样,我们要找到的是那个公式的所有参数情况下,概率最大的那一组s1,s2,s3,...。至于如何找到最大的概率进而找到这组状态串,可以利用维特比算法,在后边的章节会介绍。