FCN(2) - CRF 通俗非严谨的入门
前面我们简单介绍了 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 的表示形式如下所示:
这也就是利用无向图模型表示联合概率的方式。
Log-Linear Model
上面的 Gibbs Distribution 实际上已经可以用了,但是它并不是十分好用。为什么呢?因为每一个 Factor 实际上还是需要采用 Tabular 的形式进行表达,这对我们建模还是个不小的负担。所以我们需要将这个形式进行一定的转换。
我们重新定义 Factor:
我们把称作 Factor function,把
称作 Energy Function。在物理学中,能量越大的物质存在的概率越小,这样也可以解释这个崭新登场的函数。
为什么要定义这个函数呢?我们知道 Factor function 中的每一项都需要是非负的,这个限制也会对我们的建模造成困扰,因此利用指数,我们的 Energy Function 拜托了非负数的限制,现在变得可正可负。
另外一个十分重要的特性,是我们把原来的乘法关系变成了加法关系。我们现在有
变成加法关系对我们建模求解来说都是一个令人兴奋的事情,因为加法的关系更利于求导化简。当然,模型形式到了这一步还不够,我们还要做进一步的化简,那就是引入 Feature 这个概念。
我们知道 Factor 的一般形式是 Tabular 的形式,但是很多时候我们的 Tabular 实际上是比较稀疏的。虽然参与一个 Factor 的随机变量很多,但是真正有意义的关系其实没几个。所以我们希望放弃 Tabular 的形式,转而使用 Feature 的形式进行表示,说白了就是尽可能地合并相同结果的表示条件。这样的话 Factor 的表示就会简洁很多。
于是我们就完成线性模型的构建。
CRF
CRF 的全称是 Conditional Random Field。它的形式如下所示:
可以看出,条件随机场在建模的时候同样需要计算联合概率,只不过这一次参与计算的有两部分随机变量 - X 和 Y。一般来说,我们把 X 称作观察变量,也就是已知的变量;Y 称作目标变量或者隐含变量,是我们想知道的变量。
比方说图像分割的问题,X 就是图像的像素,Y 就是每个像素所归属的类别。当然对于二维的图像问题还是有点复杂,那么我们用一个简单的一维问题做了例子:比方说自然语言处理中的词性标注问题,那么它的建模形式如下所示:
总结
如果你在读这篇文章之前并不了解 CRF,那么我相信这篇文章并不能让你对 CRF 有很深的印象,但是多多少少会有点了解。总体来说,采用无向图模型建模的 CRF 具有很强的灵活性和适应性,但是计算起来却不那么容易。所有的 inference 必须从求解联合概率入手,而且还要计算 normalization 那一项。所以计算是无向图模型的难题,后面我们也会深入计算这个问题,试图解决难以计算这个问题。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论