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}
li−1,li−2,...,li−k,之后观察的数据的标签
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(l∣X)=j−1∑mi−1∑nλjfj(X,li−k,...li+k)(1)
其中对于单个
f
i
(
x
)
f_i(x)
fi(x),它的输出为实数。可以用下面的图表示。同时用一个简单的列子来理解这函数集合,为了简化,我们需要
l
i
−
1
,
l
i
l_{i-1}, l_i
li−1,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}
li−1。
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(l∣s)=j−1∑mi−1∑nλjfj(s,i,li−k,...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(l∣s)=∑l′exp[score(l′∣s)]exp[score(l∣s)]=∑l′exp[∑j=1m∑i−1nλjfj(s,i,li′,li−1′)]exp[∑j−1m∑i−1nλjfj(s,i,li,li−1)](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,li−1)=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,li−1)=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
li−1=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,li−1)=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(Y∣X)的最大值。训练时候利用训练数据库,通过极大似然估计得到条件概率模型,然后使用该模型预测。属于把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,如果有错误,希望大家指正。