先来写写什么是贝叶斯网络(信念网络)和马尔科夫网络,这点至关重要
贝叶斯网络和马尔科夫网络
贝叶斯网络
对于有向图模型,这么求联合概率:
举个例子,对于下面的这个有向图的随机变量(注意,这个图我画的还是比较广义的):
应该这样表示他们的联合概率:
马尔科夫网络
说白就是无向图
如果一个graph太大,可以用因子分解将 写为若干个联合概率的乘积。咋分解呢,将一个图分为若干个“小团”,注意每个团必须是“最大团”(就是里面任何两个点两两连通,就是最大连通子图),则有:
至于这个公式为什么是这个形式有一个Hammersly-Clifford law,李航老师书上有详细的证明。所以这个公式说明了两点:
- 无向图可以写成最大图势函数的乘积
- 势函数一般可以是指数的形式,后面CRF定义势函数就更有技巧了
HMM
HMM是有向图模型,是生成模型;HMM有两个假设:一阶马尔科夫假设(t时刻隐状态只依赖于t-1时刻隐状态)和观测独立性假设(t时刻观测只依赖于t时刻的隐状态);但对于序列标注问题不仅和单个词相关,而且和观察序列的长度,单词的上下文,等等相关。
HMM模型
λ
\lambda
λ=(状态转移概率矩阵A,观测状态转移概率矩阵B,初始状态矩阵
π
\pi
π),同时假设观测数据O,状态序列数据为I,隐马尔科夫模型事实上是一个含有隐变量的概率模型
P
(
O
∣
λ
)
=
∑
I
P
(
O
∣
I
,
λ
)
P
(
I
∣
λ
)
\\P(O|\lambda)=\sum_{I}P(O|I,\lambda)P(I|\lambda)
P(O∣λ)=I∑P(O∣I,λ)P(I∣λ)
以下是和这个模型相关的一些算法,其实这些算法都是广义的,在HMM、MEMM和CRF中都可以使用:
- 算概率的问题(编码算法): 给定模型 λ \lambda λ,如何估算 P ( O ∣ λ ) P(O|\lambda) P(O∣λ)。这里会用前向-后向算法,李航老师书上有详细的推导,说白了就是累加算递推
- 学习算法:给定一个输出字符的序列 O,如何调整模型的参数使得产生这一序列的概率最大?这里学习算法用EM算法(HMM的EM算法叫Baum-Welch算法)
- 求最大序列(编码算法):定一个输出字符的序列 O和模型
λ
\lambda
λ,如何求可能性最大的序列,这里用维特比Viterbi算法,实际上也是动态规划求状态t到状态t+1的概率。维特比算法其实可以用以下公式来表达,其中
z
j
(
t
)
z_j^{(t)}
zj(t)表示第t层第j个节点,
z
i
(
t
+
1
)
z_i^{(t+1)}
zi(t+1)表示第t+1层第i个节点,然后动态规划转移就可以,其中函数
f
j
i
f_{ji}
fji在不同模型中的表达式不一样,在HMM参考李航老师的书,在MEMM和CRF中有不同的表达形式
z i ( t + 1 ) = max j ∈ l a y e r t f j i ( z j ( t ) ) z_i^{(t+1)}=\max_{j\in layer_t}f_{ji}(z_j^{(t)}) zi(t+1)=j∈layertmaxfji(zj(t))
MEMM
MEMM(最大熵马尔科夫模型)是有向图模型,是判别模型;MEMM打破了HMM的观测独立性假设,MEMM考虑到相邻状态之间依赖关系,且考虑整个观察序列,因此MEMM的表达能力更强;但MEMM会带来标注偏置问题:由于局部归一化问题,MEMM倾向于选择拥有更少转移的状态。这就是标记偏置问题。最大熵马尔科夫模型建模如下
P
(
x
1...
n
∣
y
1...
n
)
=
∏
i
=
1
n
P
(
x
i
∣
x
i
−
1
,
y
1...
n
)
P(x_{1...n}|y_{1...n})=\prod_{i=1}^{n}P(x_i|x_{i-1},y_{1...n})
P(x1...n∣y1...n)=i=1∏nP(xi∣xi−1,y1...n)
其中
P
(
x
i
∣
x
i
−
1
,
y
1...
n
)
P(x_i|x_{i-1},y_{1...n})
P(xi∣xi−1,y1...n)会在局部进行线性叠加,即
P
(
x
i
∣
x
i
−
1
,
y
1...
n
)
=
e
x
p
(
F
(
x
i
−
1
,
x
i
,
y
1...
n
)
)
∑
x
i
e
x
p
(
F
(
x
i
−
1
,
x
i
,
y
1...
n
)
)
P(x_i|x_{i-1},y_{1...n})=\frac{exp(F(x_{i-1},x_i,y_{1...n}))}{\sum_{x_i}{exp(F(x_{i-1},x_i,y_{1...n}))}}
P(xi∣xi−1,y1...n)=∑xiexp(F(xi−1,xi,y1...n))exp(F(xi−1,xi,y1...n))
其中 F ( x i − 1 , x i , y 1... n ) F(x_{i-1},x_i,y_{1...n}) F(xi−1,xi,y1...n)是这些特征的线性相加
接下来回答一下为啥
P
(
x
i
∣
x
i
−
1
,
y
1...
n
)
P(x_i|x_{i-1},y_{1...n})
P(xi∣xi−1,y1...n)长成这样,因为最大熵模型就是定义在条件熵基础上的,利用拉格朗日乘数法可以写成指数的形式,可以参考https://blog.csdn.net/taoqick/article/details/102672110, 详细推导参考李航老师的书,最终最大熵模型就是指数形式:
P
w
(
y
∣
x
)
=
1
Z
w
(
x
)
e
x
p
[
∑
i
w
i
f
i
(
x
,
y
)
]
P_w(y|x)=\frac{1}{Z_w(x)}exp[{\sum_iw_if_i(x_,y)}]
Pw(y∣x)=Zw(x)1exp[i∑wifi(x,y)]
其中,
Z
w
(
x
)
Z_w(x)
Zw(x)叫做归一化因子,x是输入,y是输出,w是权重向量,
f
i
(
x
,
y
)
f_i(x,y)
fi(x,y)是任意实特征函数,所以
Z
w
(
x
)
Z_w(x)
Zw(x)的表达式是
Z
w
(
x
)
=
∑
y
e
x
p
[
∑
i
w
i
f
i
(
x
,
y
)
]
Z_w(x)=\sum_yexp[\sum_iw_if_i(x,y)]
Zw(x)=y∑exp[i∑wifi(x,y)]
CRF(Conditional Random Field)
CRF模型解决了标注偏置问题,去除了HMM中两个不合理的假设,当然,模型相应得也变复杂了。
P
(
x
1...
n
∣
y
1...
n
)
=
∏
i
=
1
n
P
(
x
i
,
x
i
−
1
,
y
1...
n
)
Z
(
y
1...
n
)
P(x_{1...n}|y_{1...n})=\frac{\prod_{i=1}^{n}P(x_i,x_{i-1},y_{1...n})}{Z(y_{1...n})}
P(x1...n∣y1...n)=Z(y1...n)∏i=1nP(xi,xi−1,y1...n),其中归一化因子
Z
(
y
1...
n
)
Z(y_{1...n})
Z(y1...n)会在全局范围内进行归一化,从而解决了局部归一化带来的标注偏置问题。
再来解释一下条件随机场
P
(
x
1...
n
∣
y
1...
n
)
P(x_{1...n}|y_{1...n})
P(x1...n∣y1...n)为啥长这个样子,这就涉及到刚开始的Hammersly-Clifford law,每次把
x
i
x_i
xi和
x
i
+
1
x_{i+1}
xi+1以及
y
1..
n
y_{1..n}
y1..n看成一个最大团,则在随机变量Y的取值为y的条件下,随机变量X取值为x的条件概率具有如下形式,分子的x’表示要枚举序列状态x’的全部情况
P
(
x
∣
y
)
=
S
c
o
r
e
(
x
,
y
)
∑
x
′
S
c
o
r
e
(
x
′
,
y
)
P(x|y)=\frac{Score(x,y)}{\sum_{x'}Score(x',y)}
P(x∣y)=∑x′Score(x′,y)Score(x,y)
写得更细致一点就是:
P
(
x
∣
y
)
=
1
Z
(
y
)
e
x
p
[
∑
i
,
k
λ
k
t
k
(
x
i
−
1
,
x
i
,
y
,
i
)
+
∑
i
,
l
μ
l
s
l
(
x
i
,
y
,
i
)
]
P(x|y)=\frac{1}{Z(y)}exp[\sum_{i,k}\lambda_kt_k(x_{i-1},x_i,y,i)+\sum_{i,l}\mu_ls_l(x_i,y,i)]
P(x∣y)=Z(y)1exp[i,k∑λktk(xi−1,xi,y,i)+i,l∑μlsl(xi,y,i)]
其中规范化因子Z(y)是
Z
(
y
)
=
∑
x
e
x
p
[
∑
i
,
k
λ
k
t
k
(
x
i
−
1
,
x
i
,
y
,
i
)
+
∑
i
,
l
μ
l
s
l
(
x
i
,
y
,
i
)
]
Z(y)=\sum_xexp[\sum_{i,k}\lambda_kt_k(x_{i-1},x_i,y,i)+\sum_{i,l}\mu_ls_l(x_i,y,i)]
Z(y)=x∑exp[i,k∑λktk(xi−1,xi,y,i)+i,l∑μlsl(xi,y,i)]
其中
t
k
t_k
tk是转移特征,
s
l
s_l
sl是状态特征,而Z(y)是全局化的归一因子,这和博客https://blog.csdn.net/taoqick/article/details/102855935 里的目标函数完全一致。所以LSTM+CRF里无非是把转移概率用LSTM给替换掉,其他是CRF的壳。。。
因此,MEMM和CRF的区别主要是两点:
- MEMM是有向图,CRF是无向图
- 在公式表达式,都是指数形式,但是在分母归一化的时候,MEMM是局部归一化,CRF是全局归一化,CRF解决了MEMM标记偏置的问题。
HMM、MEMM和CRF的优缺点比较:
a)与HMM比较。CRF没有HMM那样严格的独立性假设条件,因而可以容纳任意的上下文信息。特征设计灵活(与ME一样)
b)与MEMM比较。由于CRF计算全局最优输出节点的条件概率,它还克服了最大熵马尔可夫模型标记偏置(Label-bias)的缺点。
c)与ME比较。CRF是在给定需要标记的观察序列的条件下,计算整个标记序列的联合概率分布,而不是在给定当前状态条件下,定义下一个状态的状态分布.
更多细节参考数学之美有一章关于条件随机场的应用,李航老师的书