HMM中的问题
在之前的HMM中,使用了两个假设:
- 第一个假设:观测独立性假设。观测变量 x t x_{t} xt的取值只与对应的隐变量 y t y_{t} yt相关,而与其他的观测变量,隐变量均无关;
- 第二个假设:齐次马尔科夫假设。隐变量 y t y_{t} yt的取值只与前一时刻的 y t − 1 y_{t-1} yt−1相关,而与其他的观测变量,隐变量均无关。
这两个假设在很大程度上帮助了模型的化简,但对于某些情况,两个假设使得模型不符合任务场景。
比如词性标注,假设观测序列 X X X代表一句话,而其中任意一个 x t x_{t} xt代表的是句子中的一个词,与之对应的 y t y_{t} yt则是这个词的词性,例如:动词,名词,介词,代词;我们所关注的就是条件概率 p ( Y ∣ X ) p(Y|X) p(Y∣X),我们给定一个观测序列(句子),目标是找到一个标注序列 Y Y Y,使得条件概率 p ( Y ∣ X ) p(Y|X) p(Y∣X)的取值最大。
我们想想,在词性标注的背景下,观测独立性假设是不合常理的,应该是由观测变量 x t x_{t} xt来决定隐变量 y t y_{t} yt的取值,而非观测独立性所描述的由隐变量到观测变量。另外,对于齐次马尔科夫假设,词性 y t y_{t} yt应当与 x t x_{t} xt和 y t − 1 , y t + 1 y_{t-1},y_{t+1} yt−1,yt+1均有关系,因此,HMM的两个假设在词性标注问题上不太合适。
线性链条件随机场
为了实现上述目标,需要打破两个前提假设,因此涉及到无向图模型:条件随机场CRF(conditional random field);Random 指的是随机变量 X X X和 Y Y Y,Conditional 指的是条件概率;CRF是一个判别式模型,通常,判别式模型 discriminative model 计算条件概率,而生成式模型 generative model 计算联合概率分布。
CRF也能被看作是一种seq2seq模型,例如,在词性标注任务中,输入序列为一串单词,输出序列就是相应的词性。CRF需要在所有可能的词性序列集合中找到最合适的词性序列。
本篇仅介绍简单的模型:线性链条件随机场。其概率图如下:
从图中可以看出,所有的有向边变成了无向边。
在序列标注问题中,我们一般会认为整个观测序列都会对某一个标注隐变量或多或少产生影响,因此线性链条件随机场也会有如下概率图:
线性链条件随机场的概率与特征函数
无向图中的概率,我们通过最大团和势函数来定义;
最大团:在概率图中任意两个节点都满足无向边相连的最大节点集合构成一个最大团(最大完全子图),例如下图:
在这个图中,有三个最大团:
- X c 1 X_{c1} Xc1:节点1,节点2,节点3构成最大团;
- X c 2 X_{c2} Xc2:节点2,节点3,节点4构成最大团;
- X c 3 X_{c3} Xc3:节点3,节点5构成最大团;
在上面的线性链条件随机场的概率图中, y t − 1 , y t , X 1 : T y_{t-1},y_{t},X_{1:T} yt−1,yt,X1:T构成一个最大团, t t t从1到 T − 1 T-1 T−1,一共有 T − 1 T-1 T−1个最大团。
线性链条件随机场中的条件概率
p
(
Y
∣
X
)
p(Y|X)
p(Y∣X)就依照最大团来定义:
p
(
Y
∣
X
)
=
1
Z
∏
i
=
1
T
−
1
ϕ
i
(
x
c
i
)
p(Y|X)=\frac{1}{Z}\prod_{i=1}^{T-1}\phi_{i}(x_{c_{i}})
p(Y∣X)=Z1i=1∏T−1ϕi(xci)
其中,
Z
Z
Z为常数,用于归一化条件概率;
另外, c i c_{i} ci表示第 i i i个最大团, x c i x_{c_{i}} xci表示第 i i i个最大团中对应的所有节点, ϕ i \phi_{i} ϕi表示第 i i i个最大团的势函数;
对于势函数,一般记作:
ϕ
i
(
x
c
i
)
=
e
x
p
[
F
i
(
x
c
i
)
]
\phi_{i}(x_{c_{i}})=exp[F_{i}(x_{c_{i}})]
ϕi(xci)=exp[Fi(xci)],于是有:
p
(
Y
∣
X
)
=
1
Z
∏
i
=
1
T
−
1
ϕ
i
(
x
c
i
)
=
1
Z
∏
i
=
1
T
−
1
e
x
p
[
F
i
(
x
c
i
)
]
=
1
Z
e
x
p
∑
i
=
1
T
−
1
F
i
(
x
c
i
)
p(Y|X)=\frac{1}{Z}\prod_{i=1}^{T-1}\phi_{i}(x_{c_{i}})=\frac{1}{Z}\prod_{i=1}^{T-1}exp[F_{i}(x_{c_{i}})]=\frac{1}{Z}exp\sum_{i=1}^{T-1}F_{i}(x_{c_{i}})
p(Y∣X)=Z1i=1∏T−1ϕi(xci)=Z1i=1∏T−1exp[Fi(xci)]=Z1expi=1∑T−1Fi(xci)
=
1
Z
e
x
p
∑
t
=
1
T
−
1
F
t
(
y
t
−
1
,
y
t
,
X
1
:
T
)
=\frac{1}{Z}exp\sum_{t=1}^{T-1}F_{t}(y_{t-1},y_{t},X_{1:T})
=Z1expt=1∑T−1Ft(yt−1,yt,X1:T)
在线性链条件随机场中,我们不必对每一个最大团都定义不同的势函数
F
t
F_{t}
Ft,因此我们定义一个统一的形式,在
t
t
t时刻:
F
(
y
t
−
1
,
y
t
,
X
1
:
T
)
=
Δ
y
t
−
1
,
X
1
:
T
+
Δ
y
t
,
X
1
:
T
+
Δ
y
t
−
1
,
y
t
,
X
1
:
T
F(y_{t-1},y_{t},X_{1:T})=\Delta y_{t-1},X_{1:T}+\Delta y_{t},X_{1:T}+\Delta y_{t-1},y_{t},X_{1:T}
F(yt−1,yt,X1:T)=Δyt−1,X1:T+Δyt,X1:T+Δyt−1,yt,X1:T
其中,
Δ
y
t
−
1
,
X
1
:
T
\Delta y_{t-1},X_{1:T}
Δyt−1,X1:T的形式在
F
(
y
t
−
2
,
y
t
−
1
,
X
1
:
T
)
F(y_{t-2},y_{t-1},X_{1:T})
F(yt−2,yt−1,X1:T)中同样会出现,因此合并一下,只考虑两项有:
F
(
y
t
−
1
,
y
t
,
X
1
:
T
)
=
Δ
y
t
,
X
1
:
T
+
Δ
y
t
−
1
,
y
t
,
X
1
:
T
F(y_{t-1},y_{t},X_{1:T})=\Delta y_{t},X_{1:T}+\Delta y_{t-1},y_{t},X_{1:T}
F(yt−1,yt,X1:T)=Δyt,X1:T+Δyt−1,yt,X1:T
其中,
Δ
y
t
−
1
,
y
t
,
X
1
:
T
\Delta y_{t-1},y_{t},X_{1:T}
Δyt−1,yt,X1:T是转移函数,可以进一步展开为:
Δ
y
t
−
1
,
y
t
,
X
1
:
T
=
∑
k
=
1
K
λ
k
f
k
(
y
t
−
1
,
y
t
,
X
1
:
T
)
\Delta y_{t-1},y_{t},X_{1:T}=\sum_{k=1}^{K}\lambda_{k}f_{k}(y_{t-1},y_{t},X_{1:T})
Δyt−1,yt,X1:T=k=1∑Kλkfk(yt−1,yt,X1:T)
这里的每一个
f
k
(
y
t
−
1
,
y
t
,
X
1
:
T
)
f_{k}(y_{t-1},y_{t},X_{1:T})
fk(yt−1,yt,X1:T)都是一个我们事先定义好的特征函数,特征函数的形态和取值都是我们事先规定好的,我们一共定义
K
K
K个特征函数,而每个特征函数前面的系数
λ
k
\lambda_{k}
λk是未知的。
这些特征函数构成一个特征集合,例如: f m ( y t − 1 = 名 词 , y t = 动 词 , X 1 : T ) = 1 f_{m}(y_{t-1}=名词,y_{t}=动词,X_{1:T})=1 fm(yt−1=名词,yt=动词,X1:T)=1 f n ( y t − 1 = 名 词 , y t = 动 词 , X 1 : T ) = 0 f_{n}(y_{t-1}=名词,y_{t}=动词,X_{1:T})=0 fn(yt−1=名词,yt=动词,X1:T)=0等等,一共 K K K个;
同理,
Δ
y
t
,
X
1
:
T
\Delta y_{t},X_{1:T}
Δyt,X1:T是状态函数,可以展开为:
Δ
y
t
,
X
1
:
T
=
∑
l
=
1
L
η
l
g
l
(
y
t
,
X
1
:
T
)
\Delta y_{t},X_{1:T}=\sum_{l=1}^{L}\eta_{l}g_{l}(y_{t},X_{1:T})
Δyt,X1:T=l=1∑Lηlgl(yt,X1:T)
同样的,
g
l
g_{l}
gl也是一组特征函数,共
L
L
L个,其具体形态和取值类似转移特征值函数,是规定好的,系数
η
l
\eta_{l}
ηl是未知的;
因此标注问题下的线性链条件随机场的条件概率为:
p
(
Y
∣
X
)
=
1
Z
e
x
p
∑
t
=
1
T
[
∑
k
=
1
K
λ
k
f
k
(
y
t
−
1
,
y
t
,
X
1
:
T
)
+
∑
l
=
1
L
η
l
g
l
(
y
t
,
X
1
:
T
)
]
p(Y|X)=\frac{1}{Z}exp\sum_{t=1}^{T}[\sum_{k=1}^{K}\lambda_{k}f_{k}(y_{t-1},y_{t},X_{1:T})+\sum_{l=1}^{L}\eta_{l}g_{l}(y_{t},X_{1:T})]
p(Y∣X)=Z1expt=1∑T[k=1∑Kλkfk(yt−1,yt,X1:T)+l=1∑Lηlgl(yt,X1:T)]
基于这个架构,条件随机场一般有两大任务:
- 学习:即参数估计,对应到标注问题为,我们给定已经标注好的样本集 X X X和对应的标注 Y Y Y,学习参数 λ k , η l \lambda_{k},\eta_{l} λk,ηl,参数学习可使用梯度下降法更新;
- 推断:在参数学习的基础上,找到给定 X X X的条件下,使得 p ( Y ∣ X ) p(Y|X) p(Y∣X)取得最大值的标注序列 Y Y Y。
CRF相比HMM,CRF支持更灵活的特征函数定义,理论上,我们可以通过自定义特征函数关联 y t y_{t} yt到 y t + 1 , y t − 1 y_{t+1},y_{t-1} yt+1,yt−1,从而打破HMM的齐次马尔科夫约束(线性链CRF的定义还是只与序列的前一个元素相关);
语义分割后处理-全连接CRF
对于计算机视觉的语义分割任务,全连接条件随机场已经成为一种常用的后处理方式,给定具有
n
n
n个像素的输入图像
I
I
I,要求像素分为
k
k
k类,可建立随机变量
X
=
(
X
1
,
X
2
,
.
.
.
,
X
n
)
X=(X_{1},X_{2},...,X_{n})
X=(X1,X2,...,Xn),每个像素标签
X
i
∈
{
1
,
2
,
.
.
.
,
k
}
X_{i}\in\left\{1,2,...,k\right\}
Xi∈{1,2,...,k},目标是:
X
=
a
r
g
m
a
x
X
p
(
X
∣
I
)
=
a
r
g
m
a
x
X
1
Z
e
x
p
(
−
E
(
X
∣
I
)
)
X=argmax_{X}p(X|I)=argmax_{X}\frac{1}{Z}exp(-E(X|I))
X=argmaxXp(X∣I)=argmaxXZ1exp(−E(X∣I))
p
(
X
∣
I
)
p(X|I)
p(X∣I)即全连接CRF模型,
X
X
X的初始解即为DCNN输出的语义分割结果,能量函数
E
E
E为:
E
(
X
∣
I
)
=
∑
i
−
l
o
g
[
p
(
X
i
)
]
+
∑
i
,
j
θ
i
j
(
X
i
,
X
j
)
E(X|I)=\sum_{i}-log[p(X_{i})]+\sum_{i,j}\theta_{ij}(X_{i},X_{j})
E(X∣I)=i∑−log[p(Xi)]+i,j∑θij(Xi,Xj)
第一项为一元势函数,即当前
X
X
X的分类概率取负对数,第二项为二元势函数:
θ
i
j
(
X
i
,
X
j
)
=
μ
(
X
i
,
X
j
)
[
w
1
e
x
p
(
−
∣
∣
p
i
−
p
j
∣
∣
2
2
σ
α
2
−
∣
∣
I
i
−
I
j
∣
∣
2
2
σ
β
2
)
+
w
2
e
x
p
(
−
∣
∣
p
i
−
p
j
∣
∣
2
2
σ
γ
2
)
]
\theta_{ij}(X_{i},X_{j})=\mu(X_{i},X_{j})[w_{1}exp(-\frac{||p_{i}-p_{j}||^{2}}{2\sigma_{\alpha}^{2}}-\frac{||I_{i}-I_{j}||^{2}}{2\sigma_{\beta}^{2}})+w_{2}exp(-\frac{||p_{i}-p_{j}||^{2}}{2\sigma_{\gamma}^{2}})]
θij(Xi,Xj)=μ(Xi,Xj)[w1exp(−2σα2∣∣pi−pj∣∣2−2σβ2∣∣Ii−Ij∣∣2)+w2exp(−2σγ2∣∣pi−pj∣∣2)]
其中,当
X
i
≠
X
j
X_{i}\neq X_{j}
Xi=Xj时,
μ
(
X
i
,
X
j
)
=
1
\mu(X_{i},X_{j})=1
μ(Xi,Xj)=1,其余情况为
0
0
0,意味着只有具有不同标签的像素才会受到惩罚。像素
i
i
i会与其他任意像素
j
j
j都进行计算,如果把像素视为节点,则可以表达为一个全连接的概率图模型,故被称为全连接CRF。
第一个高斯核考虑了像素的位置信息 p p p和RGB颜色信息 I I I,第二个高斯核仅考虑位置信息 p p p;第一个核强制具有相似颜色和位置的像素具有相似的标签,而第二个核仅考虑空间邻近性;注意 ( w 1 , w 2 , σ α , σ β , σ γ ) (w_{1},w_{2},\sigma_{\alpha},\sigma_{\beta},\sigma_{\gamma}) (w1,w2,σα,σβ,σγ)是可学习的参数;需要在端到端的训练过程中确定。
关于为什么一元势函数可以用神经网络输出拟合,而二元势函数要在原图上直接利用"人工设计"的特征来描述?
- 是因为CNN本身感受野有限,网络输出feature的某一pixel位置只和其领域一定范围内的像素有关,无法建模全局关系,但描述该位置的语义信息是足够的;而用"人工设计"的特征来描述二元势函数则是根据颜色先验和平滑先验实现的,神经网络难以对这两个先验表示进行建模,而我们却可以很方便的通过图像本身运算得到量化性描述。
在已学习的全连接CRF基础上,我们将其用于推理(修正DCNN的语义分割结果),输入原始图像作为
I
I
I,输入DCNN的分割结果(像素分类结果和对应的分类概率,分类概率用于输入一元势函数)作为
X
X
X的初始解,代入式子:
X
=
a
r
g
m
a
x
X
p
(
X
∣
I
)
=
a
r
g
m
a
x
X
1
Z
e
x
p
(
−
E
(
X
∣
I
)
)
X=argmax_{X}p(X|I)=argmax_{X}\frac{1}{Z}exp(-E(X|I))
X=argmaxXp(X∣I)=argmaxXZ1exp(−E(X∣I))
不断对随机变量
X
X
X进行迭代,从而得到具有边缘细节信息的后处理结果。
补充内容-CRF在视觉任务上的发展历史:对于遥感图像的深度学习语义分割,像素级分类直接分割的效果通常在细节上不是很好,效果不好的原因基本上来自于下采样和网络深度过深导致的细节信息损失,输出层难以利用这样的残缺信息拟合高精度分割任务;
为了解决这一问题,人们开始使用全连接条件随机场进行后处理,由于标准的Fully CRFs是对所有像素建模,导致后处理速度过慢,于是有人提出基于patch做Fully CRF后处理,因此在概率图中,依赖关系只和patch内的像素有关。
在论文"Efficient Inference in Fully Connected CRFs with Gaussian Edge Potentials"中,研究人员提出了Mean Field Approximation来近似原来的全连接条件随机场,同时提出Efficient算法将整个更新过程变为线性时间,提高了后处理速度。
随着语义分割模型的发展,使用条件随机场进行后处理已经不再受到人们青睐。这主要还是由于条件随机场训练和推断速度太过缓慢以及其参数学习的难度所致。
为了克服这两个问题,论文"Convolutional CRFs for Semantic Segmentation"提出将条件独立的假设添加到全连接条件随机场的框架中。这使得我们可以在 GPU 上高效地使用卷积操作重新进行推断。这样做可以将条件随机场的推断和训练加速超过100倍。卷积条件随机场的所有参数都可以使用反向传播轻松进行优化。从而把将条件随机场(CRF)的结构化建模能力与卷积神经网络的特征提取能力结合起来。