前言
深度学习中,许多的实现并不单单是神经网络的搭建和训练,也包括使用一系列传统的方法与之结合的方式去增强深度学习的实现效果,在语义分割(semantic segmentation)和风格迁移(style transfer)中都有使用过MRF-Markov Random Field(马尔科夫随机场)这个概念,并且达到了不错的效果。
马尔科夫网络这个传统方法的概率模型思想值得我们去借鉴,本文主要对马尔科夫随机场进行讲解,并且对使用MRF这个方法的深度学习项目进行分析和描述。
概念铺垫
首先我们简单说一下后面介绍需要的一些基础知识,这些知识其实都是我们大学课程中学习过的课程。在《概率论》、《算法导论》以及《统计学方法》中都有详细介绍。这里只是进行简单的介绍,虽然是基础,但是对马尔科夫随机场的理解还是很有帮助的。
条件概率和贝叶斯定理
条件概率,我们使用这个概念的时候往往是用来解决逆问题,也就是已知结果反推原因的一个过程。而经典的贝叶斯定理公式:
我们常常利用这个公式去推导我们无法直接观测的问题,首先明白一个概念:上面的式子中,是结果,
是原因。而上面这个式子我们要做的任务就是:
- 已知
和
(
可以通过
计算得到)
- 要求
我们一般称P(原因)
为先验概率,P(原因|结果)
称为后验概率,相应的为先验分布和后验分布。
随机游走
随机游走是一个典型的随机过程,就和我们丢骰子走步数一样。但这里我们简单分为两种可能,假设我们抛掷一个硬币,正面我们就向上走一步,反面我们就向下走一步。
这个过程很简单,也就是向下走和向上走的概率都是50%,也就是我们设:
![X_0 = 0, X_t = X_{t-1} + Z_t](https://i-blog.csdnimg.cn/blog_migrate/89c1284d1ff46ea44319afcb37f0d5b4.png)
那么下图就是一些具体的观测值。
随机游走很两个特点我们要注意:
- 每次行动时,下一步的动作和前几步动作没有关系,和前几步的动作都没关系,也就是说我们无法通过当前的状态去推断未来的状态
- 因为每一步和周围周围的行动都没有关系,所以我们可以知道,无论上方的图折线如何变化,其发生的概率都是一样的(反射原理)。
假如我们在在的时候将折线进行翻转,这种情况的概率和之前是一样的。
无向图与有向图模型
图模型我们一般是用于表示随机变量之间的相互作用,我们把随机变量带到图中,图中每一个点是我们实际图中的像素点,每个像素点通过“边”来连接。
概率无向图模型(probabilistic undirected graphical model)又称为马尔科夫随机场(Markov Random Field),或者马尔科夫网络。而有向图模型通常被称为信念网络(belief network)或者贝叶斯网络(Bayesian network)。对于这个我们要稍加区分。
有向图每个边都是有方向的,箭头所指的方向表示了这个随机变量的概率分布点,比如一个节点a到节点b的一个箭头,这个箭头就表明了节点b的概率由a所决定。我们举个简单的例子(例子来源于深度学习圣经P342使用图描述模型结构):
假设一个接力赛,Alice的完成时间为,Bob的完成时间为
,而Carol的完成时间为
。和之前说的一样,
取决于
,而
取决于
,而
间接依赖于
。
也就是说Carol的完成时间和Bob有关系和Alice也有关系,是单方向依赖的.
本文我们要说的是马尔科夫随机场,马尔科夫随机场是无向图模型,也就是两个点之前并没有明确的前后以及方向关系,虽然两个点之前存在相互作用,但是这个作用仅仅在附近的点与点之间,与更远处的点或者最前面的点并没有关系。
用公式表示一下:
下面我们来正式介绍一下:
马尔科夫随机场
马尔科夫随机场之前简单进行了提及,我们知道其特点是两点之间的因果关系没有明确的方向,我们再来举个例子来说明一下(例子来源于A friendly introduction to Bayes Theorem and Hidden Markov Models):
这个例子是很经典的天气心情假设,假设下图中右面的人是Bob,他在天气比较晴朗的时候有极大的可能是高兴的,而在下雨的时候有一定可能是郁闷的。而现在我们要做的就是根据Bob的心情情况来猜测当前的天气信息。
这个就是典型的已知结果(Bob的心情)去推导原因(天气情况)。
当然我们需要一些其他的概率信息(也就是上面贝叶斯定理中我们要做的任务中需要的信息P(原因)和P(结果|原因)),我们通过统计一段时间的天气以及Bob的心情变化得出了我们需要的概率信息。
也就是15天中10天是晴天(某一天是晴天的概率是),5天是阴天(某一天是阴天的概率是
)。而且昨天是晴天今天是晴天的概率是0.8,昨天是阴天今天晴天的概率是0.2;昨天是阴天今天是阴天的概率是0.6,昨天是阴天今天是晴天的概率是0.4。
另外还有Bob在这些天的心情情况,可以分别总结出,晴天阴天Bob的心情概率。
好了,我们所需要的概率都计算完毕,那么我们需要的就是搭建一个HMM(Hidden Mardov Model)因马尔科夫模型。
要说到HMM首先要说马尔科夫链。
马尔科夫链
马尔科夫链即上图中晴天(B)和阴天(A)的转换公式:
我们以上面的例子为例,A和B两种状态(B代表晴天A代表阴天),有四种可能的转移概率(transition probabilities),分别是 A->A、A->B、B->B、B->A。可以看到下图右面的概率分布(也就是晴天到晴天的概率为0.8,其他概率与上面的晴天阴天概率相同),另外右边概率转移矩阵的每一行概率加起来都为1。
通过这个天气的马尔科夫链,我们就可以得到接下来的天气情况(S代表Sunny晴天,R代表rainy雨天):
当然上面表示仅仅是简单的马尔科夫链,如果是复杂的马尔科夫链:
显然,右边是这个马尔科夫链的概率转移矩阵,每一行的概率值加起来为1。
上面动图来源于参考中的:Markov Chains。
HHM隐马尔可夫模型
说完马尔科夫链我们来说明下HMM隐马尔科夫模型。
我们再来看一下之前的图:
我们知道,上面的晴天和阴天的转换公式为我们之前说到的马尔科夫链,但是在我们之前说明的问题中,我们要通过观察Bob的心情来推测今天的天气。也就是说,上面的天气变化(晴天变为阴天)是随机变化,Bob的心情(由天气导致的心情变化)也是随机变化,整个的过程就是所谓的双重随机过程。
上面的过程有两个特点:
- 输出(Bob的心情)依然只和当前的状态(今天的天气)有关
- 想要计算观察的序列(知道Bob连续好多天的心情,推算出最可能的连续几天的天气情况),只需要依照最大似然概率计算即可
下面的即观察值(Bob的天气),而
为中间的状态(天