【专栏】数学之美番外篇:平凡而又神奇的贝叶斯方法(12)
怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题。以语音识别为例,当我们观测到语音信号o1,o2,o3时,我们要根据这组信号推测出发送的句子s1,s2,s3。
隐马可夫模型(HMM)
吴军在数学之美系列里面介绍的隐马可夫模型(HMM)就是一个简单的层级贝叶斯模型:
那么怎么根据接收到的信息来推测说话者想表达的意思呢?我们可以利用叫做“隐含马尔可夫模型”(Hidden Markov Model)来解决这些问题。以语音识别为例,当我们观测到语音信号o1,o2,o3时,我们要根据这组信号推测出发送的句子s1,s2,s3。显然,我们应该在所有可能的句子中找最有可能性的一个。用数学语言来描述,就是在已知o1,o2,o3,…的情况下,求使得条件概率P(s1,s2,s3,…|o1,o2,o3….)达到最大值的那个句子 s1,s2,s3,…
吴军的文章中这里省掉没说的是,s1, s2, s3, ..这个句子的生成概率同时又取决于一组参数,这组参数决定了s1, s2, s3, ..这个马可夫链的先验生成概率。如果我们将这组参数记为λ,我们实际上要求的是:P(S|O, λ)(其中O表示o1,o2,o3,..,S表示s1,s2,s3,..)
当然,上面的概率不容易直接求出,于是我们可以间接地计算它。利用贝叶斯公式并且省掉一个常数项,可以把上述公式等价变换成
P(o1,o2,o3,…|s1,s2,s3….) * P(s1,s2,s3,…)
其中
P(o1,o2,o3,…|s1,s2,s3….)表示某句话s1,s2,s3…被读成o1,o2,o3,…的可能性,而P(s1,s2,s3,…)表示字串s1,s2,s3,…本身能够成为一个合乎情理的句子的可能性,所以这个公式的意义是用发送信号为s1,s2,s3…这个数列的可能性乘以s1,s2,s3..本身可以一个句子的可能性,得出概率。
这里,s1,s2,s3…本身可以一个句子的可能性其实就取决于参数λ,也就是语言模型。所以简而言之就是发出的语音信号取决于背后实际想发出的句子,而背后实际想发出的句子本身的独立先验概率又取决于语言模型。
贝叶斯网络
吴军已经对贝叶斯网络作了科普,请直接跳转到这里。更详细的理论参考所有机器学习的书上都有。
参考资料
一堆机器学习,一堆概率统计,一堆Google,和一堆Wikipedia条目,一堆paper。
部分书籍参考《机器学习与人工智能资源导引》。
(待续;此文的修订版已收录《暗时间》一书,由电子工业出版社2011年8月出版。作者于2009年7月获得南京大学计算机系硕士学位,现在微软亚洲研究院创新工程中心从事软件研发工程师工作。)
网络编辑:谢小跳