第三步就是依照已有的条件概率代入进行计算了。
构造贝叶斯网络是一项复杂的任务,涉及表示、推断和学习三个方面内容。
首先是表示,贝叶斯网络的表示代价很高,即便在上例中随机变量仅有两种取值的简单情况下,一个联合概率分布也需要提供2^n
种不同取值下的概率。
然后是推断,由于贝叶斯网络是变量及其关系的完整模型,因此可以回答关于变量的询问,比如,当观察到某些变量(证据变量)时,推断另一些变量子集的变化。常用的精确推理方法包括变量消除法和团树法。
最后是学习,贝叶斯网络的学习有两种,一种是参数学习,另一种是结构学习。参数学习的目的是确定变量之间相互关联的量化关系,即依存强度估计。结构学习是寻找变量之间的图关系。
贝叶斯网络是一种不定性因果关联模型,能够在已知有限的、不完整、不确定信息的条件下进行学习和推理,因此广泛应用于故障诊断和维修决策等领域。在自然语言处理中也被应用于汉语自动分词和词义消歧等任务。
其实贝叶斯网络与我们在《浅谈深度学习基础》中讲过的人工神经网络非常相似。他们的共同点如下:
- 它们都是有向图,每一个节点只取决于前一级节点,而与更前面的节点无关,也就是说遵从马尔可夫假设。贝叶斯网络其实就是马尔可夫链的拓展。
- 它们的训练方式相似。
- 对于很多模式分类问题,这两种方法在效果上相似,也就是说很多用人工神经网络解决的问题,也能用贝叶斯网络解决,反之亦然,但是效率可能不同。如果将它们都看做是统计模型,那么这两种模型的准确性也是类似的。
- 它们的训练计算量都特别大。
它们也有很多不同之处:
- 人工神经网络在结构上是完全标准化的,而贝叶斯网络更灵活。
- 在人工神经网络中,虽然神经元的激活函数可以为非线性函数,但是各个输入变量只能先进行线性组合,最后对前面组合出来的结果进行非线性变换,因此用计算机实现起来比较容易。而贝叶斯网络,变量可以组合成任意的函数,毫无限制,在获得灵活性的同时,也增加了复杂性。
- 贝叶斯网络更容易考虑上下文的相关性,因此可以解码一个输入的序列,比如将一段语音识别成文字,或者将一个英语句子翻译成中文,而普通的人工神经网络的输出相对孤立,它可以识别一个个字,但是很难处理一个序列(RNN就是为了解决这个问题而设计的)。
马尔可夫模型
前面的贝叶斯网络用于在已知某随机变量值的前提下推断其它随机变量的可能取值,而马尔可夫模型描述的是一个状态转化的随机过程。
如果一个系统有N个有限状态,那么随着时间的推移,该系统将从某一状态转移到另一个状态。对该系统的描述,通常需要给出当前时刻的状态和其前面所有状态的关系,如果在特定条件下,系统在时间t的状态j
只与其在时间t-1的状态i
相关,则该系统构成一个离散的一阶马尔可夫链。
进一步,如果只考虑独立于时间t的随机过程,那我们就能得到两个状态之间的转移概率aij
,该随机过程为马尔可夫模型,aij
需要大于0,而且从i
出发到达所有可能的j
的概率和应该为1。
例如,一段文字中名词、动词、形容词三类词性出现的情况可由三个状态的马尔可夫模型描述:s1
:名词、s2
:动词、s3
:形容词。假定状态之间的转移矩阵如下:
那么根据这一模型M,一个以名词开头的句子O的词性序列为名词、动词、形容词、名词的概率为:
马尔可夫模型又可视为随机的有限状态自动机:
如上例,一个马尔可夫链的状态序列的概率可以通过计算形成该状态序列的所有状态之间转移弧上的概率乘积而得出。
前面也讲过,n元文法模型就是n-1阶马尔可夫模型。