量化百科

FCN(2)——CRF通俗非严谨的入门

由ypyu创建,最终由ypyu 被浏览 6 用户

前面我们简单介绍了FCN——这个将High-Level任务转到Low-Level任务的模型。这里的High和Low并不是我们通常意义中的High和Low,两种任务并没有高低之分,但是两种任务实际上需要的技术还是有所不同的。CNN模型从High-Level任务起家,直接将它们放到Low-Level的任务中还是有些“水土不服”,于是乎,大神们想出了用概率图模型来补充这些细粒度的任务。

由于在这个专栏中我们还没有介绍概率图模型的基本内容,这一篇我们简单介绍下概率图模型和CRF的基本概念,为后面的内容做铺垫。

无向图模型

想了解无向图模型,先要了解无向图的特点。无向图和有向图有什么区别呢?不用说,就是方向嘛。那么有方向会有什么好处呢?当然就是整个概率图中概率或者信念(belief)的流动性。在有向图模型中,每一个小部分可以看作是一个CPD,也就是Conditional Probablistic Distribution。这样的局部条件概率是很有用的,但是对于无向图来说,没有了方向也就丧失了这样的优势。

没有方向的无向图也就没法拥有CPD了,但是无向图模型还是有自己的办法。无向图模型一个个小部分被称作Factor,像CPD一样,Factor也可以表示成tabular的形式。也就是对于几个随机变量,我们随机变量的某个赋值会对应一个实数。但是factor有一个特点,那就是一个factor内容没有和为1的约束。

没有和为1的约束?Are you kidding?当然不是kidding。如果我们想求解概率还是有方法的,那就是把所有的Factor像有向图模型的贝叶斯网络那样都乘起来,再做一个归一化。我们就得到了总体的联合概率。得到了联合概率,就不用担心得到那些marginal probabilities和conditional probabilities了。这样无向图模型和有向图模型又走到同一起跑线。

那么问题又来了?为什么无向图模型不像有向图模型学习,也用CPD表示一个个的子部分,而要使用一个新东西呢?实际上有向图模型并不能够表示所有的真实场景,有向图模型通常需要一个有顺序的推断过程,其中的一些依赖关系和独立关系是有限制的,而无向图模型就没那么多限制了。所以说无向图模型可以对更多的问题进行建模。但是放弃了方向,也就意味着放弃了条件依赖和一些条件独立的特性,于是我们只能用Factor的形式进行表示。

当然Factor也有自己的好处,因为没有和为1的限制,所以整体上它的数值要求不是那么严格。但是它也有自己的坏处,那就是我们从Factor的Tabular形式中想读出一些有价值的信息是比较困难的。这个困难有两个方面:

首先,因为不具有和为1的限制,所以我们想计算联合概率就比较抽象。这个大家去看几个真实的Factor就能明白了。再看看贝叶斯网络的CPD,你就会感慨还是CPD写的清楚啊。

其次,Factor的Tabular中记述的一些关系和全局状态下的一些关系有时是相反的。我们具体看某个Factor时,会觉得这些随机变量更有可能产生某几个数值,但是如果我们站在全局观察,把联合概率计算出来再去计算marginal probability,就会发生局部的关系可能是错误的。而CPD在这方面具有优势,局部的概率放在全局还是合理的。

说实话前面的知识量还是有点大,但是上面的就是无向图模型的基础,总结起来就是这些。

Gibbs Distribution

Gibbs Distribution就是利用Factor表示的无向图模型的概率分布,Gibbs Distribution的表示形式如下所示:

$P(X_1,X_2,...X_n)=\frac{1}{Z(X)}\tilde{P}(X_1,X_2,...X_n)$

$\tilde{P}(X_1,X_2,...X_n)=\prod_{i=k}^m\phi_i(X)$

$Z(X)=\sum \prod \phi_i(X)$

这也就是利用无向图模型表示联合概率的方式。

Log-Linear Model

上面的Gibbs Distribution实际上已经可以用了,但是它并不是十分好用。为什么呢?因为每一个Factor实际上还是需要采用Tabular的形式进行表达,这对我们建模还是个不小的负担。所以我们需要将这个形式进行一定的转换。

我们重新定义Factor:

$\phi(X)=exp(-\xi(X))$

$\xi(X)=-log(\phi(X))$

我们把

$\phi(X)$

称作Factor function,把

$\xi(X$

称作Energy Function。在物理学中,能量越大的物质存在的概率越小,这样也可以解释这个崭新登场的函数。

为什么要定义这个函数呢?我们知道Factor function中的每一项都需要是非负的,这个限制也会对我们的建模造成困扰,因此利用指数,我们的Energy Function拜托了非负数的限制,现在变得可正可负。

另外一个十分重要的特性,是我们把原来的乘法关系变成了加法关系。我们现在有

$\tilde{P(X_1,X_2,...X_n)}=exp(\sum_{i=k}^m\xi_i(X))$

变成加法关系对我们建模求解来说都是一个令人兴奋的事情,因为加法的关系更利于求导化简。当然,模型形式到了这一步还不够,我们还要做进一步的化简,那就是引入Feature这个概念。

我们知道Factor的一般形式是Tabular的形式,但是很多时候我们的Tabular实际上是比较稀疏的。虽然参与一个Factor的随机变量很多,但是真正有意义的关系其实没几个。所以我们希望放弃Tabular的形式,转而使用Feature的形式进行表示,说白了就是尽可能地合并相同结果的表示条件。这样的话Factor的表示就会简洁很多。

于是我们就完成线性模型的构建。

CRF

CRF的全称是Conditional Random Field。它的形式如下所示:

$P(Y|X)=\frac{1}{Z(X)}\tilde{P}(Y,X)$

$\tilde{P}(Y,X)=exp(\sum_i w_i * f_i(Y,X))$

$Z(X)=\sum_Y exp(\sum_i w_i * f_i(Y,X))$

可以看出,条件随机场在建模的时候同样需要计算联合概率,只不过这一次参与计算的有两部分随机变量——X和Y。一般来说,我们把X称作观察变量,也就是已知的变量;Y称作目标变量或者隐含变量,是我们想知道的变量。

比方说图像分割的问题,X就是图像的像素,Y就是每个像素所归属的类别。当然对于二维的图像问题还是有点复杂,那么我们用一个简单的一维问题做了例子:比方说自然语言处理中的词性标注问题,那么它的建模形式如下所示:

$\tilde{P}(Y,X)=exp(\sum_i f_1(X_i,Y_i) + f_2(Y_i,Y_{i+1}))$

总结

如果你在读这篇文章之前并不了解CRF,那么我相信这篇文章并不能让你对CRF有很深的印象,但是多多少少会有点了解。总体来说,采用无向图模型建模的CRF具有很强的灵活性和适应性,但是计算起来却不那么容易。所有的inference必须从求解联合概率入手,而且还要计算normalization那一项。所以计算是无向图模型的难题,后面我们也会深入计算这个问题,试图解决难以计算这个问题。

\

标签

风险评估