MRF/CRF以及各自的应用

MRF和CRF的原理参考:马尔科夫随机场

#######################################参考内容开始

 

1.马尔科夫随机场

1.1无向图

假设有一组随机变量Y={Y1,Y2,...,Yn}Y={Y1,Y2,...,Yn}, 具有联合概率分布P(Y)P(Y)。此联合概率分布可以由一个无向图G=(V,E)G=(V,E)来表示。 其中VV 和 EE 分别是图GG 的节点和边。某个节点vi∈Vvi∈V 代表一个随机变量YiYi,而某一条边e∈Ee∈E 代表连接着的两个随机变量之间的关系。

1.2 无向图的随机变量之间的马尔科夫性

《统计学习方法》中介绍了三种马尔科夫性,分别是成对马尔科夫性,局部马尔科夫性和全局马尔科夫性,这三个概念差不多,这里只介绍成对马尔科夫性。 
假设有两个不连接的节点uu和vv,其分别对应随机变量YuYu和YvYv,剩余的节点记为OO,对应随机变量为YOYO。如果uu和vv满足成对马尔科夫性,即 

P(Yu,Yv|YO)=P(Yu|YO)P(Yv|YO)P(Yu,Yv|YO)=P(Yu|YO)P(Yv|YO)


即在给定YOYO的情况下,YuYuYvYv是独立的。 
上述式子中,由于P(Yu,Yv|YO)=P(Yu|YO)P(Yv|Yu,YO)P(Yu,Yv|YO)=P(Yu|YO)P(Yv|Yu,YO),所以也等价于: 

 

P(Yv|Yu,YO)=P(Yv|YO)P(Yv|Yu,YO)=P(Yv|YO)


说明在已知YOYO的情况下,知道或不知道YuYuYvYv的条件概率没有影响。

 

1.3 马尔科夫随机场

若随机变量YY的联合概率分布P(Y)P(Y)代表的无向图G=(V,E)G=(V,E)的每个节点均满足马尔科夫性,则GG是一个马尔科夫随机场。 
个人理解:在马尔科夫随机场中,随机变量YY可以看做既是输入,又是输出。

2. 条件随机场

在明白了马尔科夫随机场的定义后,再理解条件随机场会比较简单。 
在条件随机场中,有两种随机变量,分别是输入XX和输出YY,条件随机场关心条件概率P(Y|X)P(Y|X)。若在给定输入XX的情况下,随机变量YY构成的无向图G=(V,E)G=(V,E)是一个马尔科夫随机场,即: 

P(Yv|X,Yu,YO)=P(Yv|X,YO)P(Yv|X,Yu,YO)=P(Yv|X,YO)

 

3. 马尔科夫随机场与条件随机场的比较

MRF关注联合概率分布,CRF关注条件概率分布。所以MRF属于生成模型,而CRF属于判别模型。因此个人认为它们之间的差别主要是生成模型与判别模型的差别。生成模型本身比判别模型描述能力强,因为联合概率分布可以推导出条件概率分布:P(Y|X)=P(X,Y)P(X)P(Y|X)=P(X,Y)P(X);而判别模型收敛比较快。Quora上有一个关于这两个模型差别的问题,请移步 Quora(l懒得看英文的话可以看看我接下来的译文)

####################################参考内容结束

Quora上关于MRF和CRF的区别与应用场景的讨论:

来自Yisong Yue的回答:

当X是个多维的输入(比如特征),而Y是个多维的输出(比如结构化的标签),举一个典型的例子,我们拥有特征x,并想要预测P(Y|X=x)的分布,或者可能的寻求最佳标签( the best possible label argmax_y) P(Y=y|X=x)

 

CRF本质上是逻辑回归的结构化扩展,并对条件概率P(Y|X)进行建模。它不模仿任何东西。

 

MRF同时模拟了Y和X的联合概率。换句话说,它是P(Y,X)你可以用各种技巧来计算给定输入X的P(Y|X= X)。
CRFs的优点是它们更直接地建模标准预测问题P(Y|X= X)。因此,它们往往更准确。但是它们不能(不作进一步的修改)用于除标准预测问题之外的其他任何东西。
MRFs的优点是它们是完全生成的,并且可以建模任意的预测问题。例如,假设您在输入x中丢失了一些值,那么MRF可以忽略丢失的值,因为它为全概率分布建模。另一个例子,假设你有y,想要预测X,那么MRF也可以预测P(X| y =y),但是CRF不能。

 

对我来说,CRFs通常比MRFs更有用,因为我通常对标准的预测问题P(Y|X= X)感兴趣。

来自Brendan O'Connor的回答:

不同的人使用不同的术语。以下这些帮助我,至少,明白:
一个CRF *是*一个MRF,其中的因素潜力是由某些条件下的数据定义的。
MRF只是随机变量的概率分布。没有输入或输出。有时当人们说MRF时,他们谈论的是一个单一的网络。有时,它们意味着在输入和输出上的联合分布。我不认为这个术语是完全一致的(至少在机器学习的上下文中)。
CRF总是包含输入和输出。通常,CRF用于结构化预测,在那里您可以对许多(输入、输出)对进行训练。给定输入,CRF的参数定义了可能输出的概率分布。所以在数据中,每一对都有自己的小MRF;MRF的共同点是共享参数权重。
CRF的另一个名称可能是“逻辑回归的一般化,有结构的输出,如链、树或网格。”
这就是为什么它时常被写成这样的原因,MRF只是p(y),而CRF是p(y | x)。就我个人而言,我认为这并不是完全准确的说CRF条件输入(它不是一个真正的随机变量,它更像是,数据定义了潜力因素…),但这符号可以有助于在发生了什么。当然,CRF并没有定义输入的概率分布。

####################################Quora回答完

回到我想要去了解MRF/CRF的初衷,当初是学习图像分割,在学习FCN和U-net的过程中都有看到关于CRF可以在图像分割的初步分割结果的基础上,对其进行精细分割,达到更好的效果,看一张来自论文《Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials》的对比图:

很明显在有CRF和无CRF的情况下,图像分割的结果相差甚大!这就促使我很希望去了解CRF,并应用与自己的项目实践中!想必肯定会有奇效!

但是其实,CRF是怎么用的呢?

CRF分割图像的原理参考:CRF图像分割简介

#####################################参考内容开始

 

这里主要是讲Conditional Random Fields(CRF)用于pixel-wise的图像标记(其实就是图像分割)。CRF经常用于 pixel-wise的label 预测。当把像素的label作为形成马尔科夫场随机变量且能够获得全局观测时,CRF便可以对这些label进行建模。这种全局观测通常就是输入图像。

令随机变量XiXi是像素ii的标签。 

Xi∈L={l1,l2,...,lL}Xi∈L={l1,l2,...,lL}


令变量X是由X1,X2,...,XNX1,X2,...,XN组成的随机向量,NN就是图像的像素个数。 
假设图 G=(V,E)G=(V,E),其中V={X1,X2,...,XN}V={X1,X2,...,XN},全局观测为II 。使用Gibbs分布,(I,X)(I,X)可以被模型为CRF,

P(X=x|I)=1Z(I)exp(−E(x|I))P(X=x|I)=1Z(I)exp(−E(x|I))

.

 

在全连接的CRF模型中,标签 xx 的能量可以表示为: 

E(x)=∑iφ(xi)+∑i<jφp(xi,xj)E(x)=∑iφ(xi)+∑i<jφp(xi,xj)


其中 φu(xi)φu(xi)是一元能量项,代表着将像素 ii分成label xixi 的能量。 φp(xi,xj)φp(xi,xj)是对像素点 iijj同时分割成xixixjxj的能量。 

最小化上面的能量就可以找到最有可能的分割。

#####################################参考内容结束

但是在图像分割的程序流程里面,CRF是怎么运行的,我想把它看作一个黑盒子,那个输入就是初步分割的分割图,输出就是精细分割的最终结果图,输入是否需要与网络模型的最后一层对接?输出是否需要跟真实标签作对比,并调整CRF内部参数?像调整神经网络的权重一样?

暂时没有找到CRF用python实现的代码和项目,先写到这,改天再更新~~

欢迎关注“pyhon修炼之道”,我们将持续更新新鲜python文章~

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值