返回介绍

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

发布于 2025-02-25 23:04:59 字数 4828 浏览 0 评论 0 收藏 0

前面我们简单介绍了 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 那一项。所以计算是无向图模型的难题,后面我们也会深入计算这个问题,试图解决难以计算这个问题。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文