前置条件:
概率无向图模型(马尔可夫性、hammersley-clifford原理)----统计学习方法 11.1
假设有事件X1 X2 X3,你想计算出 p(X1) p(X2) p(X3) p(X1|X2X3) p(X2|X1X3) p(X3|X1X2) ...
你并不知道,X1 X2 ... Xn之间的关系,你希望能有一个神奇的模型,只需要比较少的参数,就能计算所有关于X1 X2 ... Xn之间能定义出来的概率。hammersley-clifford原理就是为解决这一问题。
CRF:
线性链条件随机场的参数化形式:
$$p\left ( y|x \right )=\frac{1}{Z(x)}exp(\sum_{i,k}\lambda_{k}t_{k}(y_{i-1},y_{i},x,i)+\sum_{i,l}\mu_{l}s_{l}(y_i,x,i))$$
$$Z(x)=\sum_{y}exp(\sum_{x,y}\lambda _kt_k(y_{i-1},y_i,x,i)+\sum_{i,l}\mu_ls_l(y_i,x,i))$$
\(t_k\)和\(s_l\)是取值为0,1的特征函数,\(\lambda_k\)和\(\mu_l\)是对应的权值
线性条件随机场的简化形式:
$$f_k(y_{i-1},y_i,x,i)=\begin{cases}
t_k(y_{i-1},y_i,x,i), & \text{ if } k=1,2,...,K_1 \\
s_l(y_i,x,i), & \text{ if } k=K_1+l;l=1,2,...,K2
\end{cases}$$
这里\(K=K_1+K_2\)为特征函数的总个数。特征求和可记作:
$$f_k(y,x)=\sum_{i=1}^{n}f_k(y_{i-1},y_i,x,i), k=1,2,...,K$$
\(w_k\)表示特征\(f_k(y,x)\)的权值,即:
$$w_k=\begin{cases}
\lambda_k, & \text{ if } k=1,2,...,K_1\\
\mu_l, & \text{ if } k= K_1+l;l=1,2,...,K_2
\end{cases}$$
因此可以简化表达为:
$$P(y|x)=\frac{1}{Z(x)}exp\sum_{k=1}^{K}w_kf_k(y,x)$$
$$Z(x)=\sum_{y}exp\sum_{k=1}^{K}w_kf_k(y,x)$$
改进的迭代尺度算法:
有了以上公式,使用改进的迭代尺度算法进行学习是CRF的一种比较常见的方法。
构造对数似然函数:\(L(w)=L_\tilde{P}(P_w)=log\prod_{x,y}P_w(y|x)^{\tilde{P}(x,y)}=\sum_{(x,y)}\tilde{P}(x,y)logP_w(y|x)\)
\(=\sum_{x,y}[\tilde{P}(x,y)\sum_{k=1}^{K}w_kf_k(y,x)-\tilde{P}(x,y)logZ_w(x)]\)
\(\tilde{P}(X,Y)\)为经验概率分布(即针对输入X和输出Y的键值对进行概率统计)
优化使用改进的迭代尺度法,具体参见另外一篇博客。