从最简单的通信模型谈起
直接放出一个典型的通信模型,包含雅格布森提出的通信的六个要素:
【信息,上下文】—> 传送编码s1,s2,s3,s4…—>信道(传递信息的媒介)—>o1,o2,o3,o4…解码—>接受者得到的信息编码
举一个例子:比如手机发出的信号s1,s2,s3…,然后接收器(比如另一个手机)得到了一串信号o1,o2,o3,o4…还原成s1,s2,s3…
于是改变这个模型,变成人与计算机之间的通信。比如语音识别,发出信息的东西就变成了我们的声带,信息传递的介质就是空气,然后计算机就是接受方,根据接收到的声学信号来推测说话者的意思,这个就是计算机进行语音识别。
那么如何根据得到的o1,o2,o3,o4…来推测出发出者发出的s1,s2,s3…,怎么办呢?其实只需要从所有的源信息中找到最可能产生出观测信号的那一个信息,也就是概率最大的信息。
换成数学语言就是: 在已知o1,o2,o3…,的情况下,求条件概率P(\(s_1, s_2, s_3, …|o_1, o_2, o_3, …\))达到最大值的那一个信息串s1, s2, s3.., 也即是:
\(s_1, s_2, s_3… = Arg({all}_{s_1,s_2,s_3…})Max(P(s_1,s_2,s_3,…|o_1,o_2,o_3,…)) \)
右边那个式子的意思是: 获得最大值概率P的信息串s1,s2,s3…。为什么前面要加Arg呢,想一想反三角函数argsin,这里的arg意思也是一样,Argument,我们要求的并不是概率,而是当概率达到最大的时候,所产生的信息传s1,s2….
利用贝叶斯公式等价变换:
\( P(o_1,o_2,…|s_1,s_2,…) * \frac{P(s_1,s_2,s_3,…)}{P(o_1,o_2,o_3..)} \)
由于分子在每一项中概率相同,所以每次进行比较的时候都可以忽略不计,于是原式子比较的时候可以直接只计算分子的两项相乘。
即变化成: \(P(o_1,o_2,o_3,…|s_1,s_2,s_3…) * P(s_1,s_2,s_3,…)\)
隐含马尔可夫模型
先讲一讲历史
首先,不要看这个名字叫做隐含马尔可夫模型就把它当作是马尔可夫发明的,其实是美国数学家鲍姆发明的,所以,隐含马尔可夫模型的训练方法直接是用鲍姆的名字命名的。
马尔可夫链
19世纪,概率论发展从对静态随机变量研究发展到了对动态随机变量时间序列s1,s2,s3…,st,…, 即动态过程的研究。哲学意义上是人类认识的一个飞跃。但是动态过程却非常的复杂。
举个例子:
把\(s_1,s_2,s_3,…,s_t,…看成北京每天的最高气温,其中每个状态s_t都是随机的,然后任何一个s_t的取值可能和周围其他的状态有关,比如前两天很热,今天也很热的概率就会变大。\)
马尔可夫为了简化问题,提出了一个简单的二元模型,在上一节也说过,一个状态\(s_t\)的取值,只与状态\(s_{t-1}\)有关。在上面的例子中,就会变成,今天的最高温度,只和昨天的最高气温有关,和别的天天气都没有关系。可以看出,用这个方法只能求出近似解,而且对很多复杂相关的问题都极其不精确。
于是下面表示出一个离散的马尔可夫过程,也就是一个马尔可夫链:
图中的\( s_0, s_1, s_2, s_3 \)代表着四个状态,其中,这四个状态一直在互相转换,转换便是一条有向边,边的权值就代表着转换的概率。
比如s0, 可以转换到s0本身和s3,概率分别为0.7P1和0.3P1,以此类推。
每一个状态转移的时候,只与前面的一个有关。
比如从状态2到状态3,无论之前是如何到状态2的,状态2到状态3的概率0.3P2都是不变的,而且这个概率可以通过我们在上一节已经讨论过的方式解决掉,就是状态2->状态3的所有次数除以状态2单独出现的所有次数。
隐含马尔可夫模型
《数学之美》上讲的并没有那么通俗易懂,于是我在知乎上发现了另一篇讲解的通俗易懂的例子。
这里我也不搬运了,知乎的那个答案讲的很清楚,我还是继续搬运《数学之美》里讲到的内容。
对上面讲到的马尔可夫链进行扩展(所以马尔可夫链的概念一定要理解清楚,因为后面要理解的难度比这个是要大的)
先定义独立输出假设(字面意思就能看懂吧,每一个状态独立输出一个符号)
定义:在任何一个时刻t的状态\(s_t\)是不可见的,所以观察者设法通过观察一个状态序列\(s_0,s_1,…,s_t\)来推测转移概率等参数。但是,隐含马尔可夫模型在每个时刻t会输出一个符号\(o_t\),而且\(o_t\)当且仅当和\(s_t\)相关。
隐含马尔可夫模型的结构:一个马尔可夫链上,状态\(s_1,s_2,s_3..\)被隐含,这个马尔可夫链就被称为一个隐含马尔可夫模型。
上面的\(o_1\)到\(o_4\)就是你能看到的输出结构,而下面的状态都被隐含掉,看不见的。那么我们建立这个模型要做什么呢,下面我也只能引用《数学之美》的一句原话了。
我最早接触到隐含马尔可夫模型是20多年前的事。那时候“随机过程”(清华过去“臭名昭著”的一门课)里学到这个模型,但当时实在想不出来它有什么实际用途。几年后,我在清华随王作英教授学习、研究语音识别时,他给了我几十篇文献,给我印象最深的就是贾里尼克和李开复的文章,核心思想都是隐含马尔可夫模型。复杂的语音识别问题居然可以如此简单的表述,解决,令我由衷的感叹数学模型之妙。
这里可以再说一下,关于马尔可夫模型的一个简单易懂的例子,可以看上面知乎答案里面关于掷骰子的理解,关于它本身的概念,必须先仔细了解什么是马尔可夫链。
最后,下一节依然是隐含马尔可夫模型,也就是要讲一讲它究竟在通信和自然语言处理上有着怎样的作为,围绕着以下三个基本问题。
-
给定一个模型,如何计算某个特定的输出序列的概率
-
给定一个模型和某个特定输出序列,如何找到最可能产生这个输出的状态序列
-
给定足够量的观察数据,如何估计隐含马尔可夫模型的参数。