CRF 理解

markdown

Motivation

上篇论文中提到,Structured Attention Guided Convolutional Neural Fields for Monocular Depth Estimation 的网络中的有CRF model 将不同layer的feature map 融合在一起,其中为什么这样融合效果会好,现在不明白,首先要理解CRF model。下面介绍一下自己的理解。
自己举一个理子,理解CRF这个模型。比如bob旅游一个星期,对于这个星期拍了很多照片,需要对照片里面的类容贴上标签(吃饭,看电影,做饭,或者跳舞等等)。需要对这个问题进行建模。
首先:首先不考虑图片之间的关系,对单个的图片进行辨别贴标签,当看到图片中人张嘴,表示它可能吃饭或者唱歌。如果辨别的图片较黑,表示可能人在睡觉等等。 对这些照片通过时间的顺序排列成一个序列,对上述进行简单的贴上标签后,标签之间可能有关联,比如最近的前段时间图片标签是人在做饭,则人张开嘴的图片最有可能是吃饭而不是唱歌。这就是典型的CRF模型的建模,符合事物的逻辑建模。

CRF 理解

用数学形式表示。
In a CRF, 用每个特征函数(表示上面的Y之间的关系,Y和X之间的关系),用 f 1 ( x ) , . . . f n ( x ) {f_1(x),...f_n(x)} f1(x),...fn(x) 的函数集合表示。这个函数集合的输入和输出如下:
1)观察的数据集合 X ( x 1 , x 2 , . . . , x n ) X(x_1,x_2,...,x_n) X(x1,x2,...,xn)。用单词的集合 x x x表示。
2)观察的数据的贴向数据的状态 l i l_i li
3)之前观察的数据的状态 l i − 1 , l i − 2 , . . . , l i − k l_{i-1},l_{i-2},...,l_{i-k} li1,li2,...,lik,之后观察的数据的标签 l i + 1 , . . . , l i + k l{i+1},...,l_{i+k} li+1,...,li+k
这个 f 1 ( x ) , . . . f n ( x ) {f_1(x),...f_n(x)} f1(x),...fn(x) 的函数集合表示的输出对一句话的标签(用数值表示)。
F ( l ∣ X ) = ∑ j − 1 m ∑ i − 1 n λ j f j ( X , l i − k , . . . l i + k ) (1) F(l|X)=\sum_{j-1}^m\sum_{i-1}^n\lambda_jf_j(X,l_{i-k},...l_{i+k}) \tag{1} F(lX)=j1mi1nλjfj(Xlik,...li+k)(1)
其中对于单个 f i ( x ) f_i(x) fi(x),它的输出为实数。可以用下面的图表示。同时用一个简单的列子来理解这函数集合,为了简化,我们需要 l i − 1 , l i l_{i-1}, l_i li1,li ,两个观察数据之间的关系,它的描述如下:
对于上述的列子理解,给一个句子贴上标签。比如一个句子的标签有ADJECTIVE, NOUN,PREPOSITION,VERB,ADVERB,ARTICLE。如果给一个句子的话,如: “Bob drank coffee at Starbucks”,对这个句子标签为"Bob(NOUN) drank(VERB) coffee(NOUN) at(PREPOSITION) Starbucks(NOUN)"。这些句子除了之间除了对一个单词进行判断,还要接受上下文判断,则就是之前的单词的标签进行影响,典型的CRF模型。
两个观察数据之间的关系,简化这个模型的图如下:
在这里插入图片描述
可以看到这个句子中的标签为 Y Y Y 集合还有句子单词 X X X
用句子表示:
1)句子 s s s
2)一个单词在句子中的位置 i i i
3)当前的单词的标签 l i l_i li
4)之前的单词的标签 l i − 1 l_{i-1} li1
s c o r e ( l ∣ s ) = ∑ j − 1 m ∑ i − 1 n λ j f j ( s , i , l i − k , . . . l i + k ) (2) score(l|s)=\sum_{j-1}^m\sum_{i-1}^n\lambda_jf_j(s,i,l_{i-k},...l_{i+k}) \tag{2} score(ls)=j1mi1nλjfj(s,i,lik,...li+k)(2)
对公式(2),把它score转为概率,需要归一化:
p ( l ∣ s ) = e x p [ s c o r e ( l ∣ s ) ] ∑ l ′ e x p [ s c o r e ( l ′ ∣ s ) ] = e x p [ ∑ j − 1 m ∑ i − 1 n λ j f j ( s , i , l i , l i − 1 ) ] ∑ l ′ e x p [ ∑ j = 1 m ∑ i − 1 n λ j f j ( s , i , l i ′ , l i − 1 ′ ) ] (3) p(l|s)=\frac{exp[score(l|s)]}{\sum l' exp[score(l'|s)]}=\frac{exp[\sum_{j-1}^m\sum_{i-1}^n \lambda_jf_j(s,i,l_i,l_{i-1}) ]}{\sum l' exp[\sum_{j=1}^m \sum_{i-1}^n \lambda_jf_j(s,i,l_i', l_{i-1}')]} \tag{3} p(ls)=lexp[score(ls)]exp[score(ls)]=lexp[j=1mi1nλjfj(s,i,li,li1)]exp[j1mi1nλjfj(s,i,li,li1)](3)

对于例子,我们需要理解每个feature function,它是01值我们可以看到如下:
f 1 ( s , i , l i , l i − 1 ) = 1 f_1(s,i,l_i,l_{i-1})=1 f1(s,i,li,li1)=1 表示当 l i = A D V E R B l_i=ADVERB li=ADVERB,和第i个单词结束为“-ly”(一般情况下,单词中有ly表示副词,学过英语语法就知道);反之这个副词为0。但是如果对于这个feature 函数 λ 1 \lambda_1 λ1 越是大且是正数,表明这个特征函数倾向于,当单词的结尾词"-ly"的时候,这个单词倾向于给与它ADVERB的标签。

i = 1 , l i = V E R B i=1, l_i=VERB i=1,li=VERB f 2 ( s , i , l i , l i − 1 ) = 1 f_2(s,i,l_i,l_{i-1})=1 f2(s,i,li,li1)=1 反之为0。表示结束为一个问句的标签时候(VERB表示动词)。如果对于这个feature 函数 λ 1 \lambda_1 λ1 越是大且是正数,表明这个特征函数倾向于,给疑问句子的第一个单词赋予动词。

如果当 l i − 1 = A D J E C T I V E , l i = V E R B l_{i-1}=ADJECTIVE, l_i=VERB li1=ADJECTIVE,li=VERB f 3 ( s , i , l i , l i − 1 ) = 1 f_3(s,i,l_i,l_{i-1})=1 f3(s,i,li,li1)=1 反之为0。它表示的意思是形容词后面一般是名词,这个就用到了单词之间的约束,同时如果对于这个feature 函数 λ 1 \lambda_1 λ1 越是大且是正数,表明这个特征函数倾向于,给这个单词中的形容词后面的单词赋予名词。。
同理其它也是这样设计的。
上述的例子可以看到CRF的设计,表示:系统中,各个事件除了自己的性质判断标签,同时各个事件的之间的标签也存在相互的影响。,这些都是用概率的形式表示有点像HMMS的模型,和MRF模型等等。但是CRF有更好的表达形式。对于HMMS的模型,稍微看了一下,发现是简单的CRF模型。

感想:
发现之前看过这些知识,但是忘记了,也没有在实际问题中遇到过,所以没有理解到本质,这次看到了这个模型在论文上的应用,得到它的强大。它能够很好的对同一个网络中不同的卷积层的feature map进行融合。因为在图像卷积中,可以看到我们都是提取高级语义的特征,但是之前的低级语义特征,具有影响到高级语义特征,它们可以相互影响。举个例子:如果高级语义特征表示这个是桌子,低级语义特征就会对这个特征提取会倾向于提取方正的边缘?如果多个低级语义提取都是方正的,那么它可能影响到高级语义特征,它是方正的物体。这些feature maps之间的影响程度是通过数据中学习得到的,服从于数据分布。

CRF和神经网络的区别?
通过学习可以看到神经网络是函数映射: f ( X ) = Y f(X)=Y f(X)=Y,学习 X X X,放入更高维度的空间,然后在更高维的数据表达,把数据变换到高维特征空间,寻找数据之间的函数关系,好处就在于能够找到比较好的特征来表达数据,使得函数能够学习出来,这个函数学习的过程就完成了模式匹配的任务,因为如果相似数据的特征相似,那么计算出来的结果就相似。
CRF model 不一样,它是数学表达为 P ( Y / X ) P(Y/X) P(Y/X), 在条件概率模型中P(Y/X)中,Y是输入变量,表示标记序列,X是输入变量,表示观测序列,计算 P ( Y ∣ X ) P(Y|X) P(YX)的最大值。训练时候利用训练数据库,通过极大似然估计得到条件概率模型,然后使用该模型预测。属于把X,Y之间联合起来计算它们同时发生的概率分布,计算输入和输出 X , Y X,Y X,Y的联合分布,同时数学表达中除了表达 X X X内部之间的关系,还有 Y Y Y内部之间的关系,这是神经网络做不到的。 比如我之前的例子,一句话之间的标签是不同的,但是在整个语法中,标签之间可以加上约束,可以通过这个crf找到标签之间的约束,而神经网络没有做到这点。

CRF这是Graphical Model 知识体系中的概念。这里面设计的内容众多,需要自己空闲时间去理解消化。暂且没有太多时间,同时篇幅有限,所以只能介绍一些基本概念和对于这个模型的理解,全面的了解需要了解它的由来以及从哪里发源,改进至今等等,可以参考链接如下:
http://www.cs.cmu.edu/~epxing/Class/10708-14/lecture.html
它是cmu的一个课程 ppt和视频都有,极力推荐给大家看,很全面,会系统的介绍这个model。因为我个人精力有限,也只是看了CRF这个pdf,如果有错误,希望大家指正。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值