机器学习:《统计学习方法》笔记(二)—— 条件随机场(CRF)

版权声明:转载请注明来处 https://blog.csdn.net/qq_24034545/article/details/84062109

参考:《统计学习方法》——李航;

摘要

介绍条件随机场的基本概念、概率计算、学习方法、预测方法等内容。

正文

1.基本概念

1.1 什么是条件随机场

条件随机场的定义为:X和Y都是随机变量,P\left(Y|X\right)是给定X条件下Y的条件概率分布。若Y可以构成一个由无向图G=\left(V,E\right)表示的马尔可夫随机场,即

P(Y\sub_{v}|X,Y\sub_{w},w\neq v)=P(Y\sub_{v}|X,Y\sub_{w},w=v)

对任意v成立,则P(Y|X)称为条件随机场。

其中w\neq v指在无向图中除v之外的所有点,w=v指与v相连的所有点。

1.2 什么是概率无向图模型

联合概率分布P\left(Y \right )由无向图G=\left(V,E\right)来表示,图中的结点表示随机变量,边表示依赖关系。如果P\left(Y \right )满足成对、局部、全局马尔可夫性,则该联合概率分布为无向图模型。

无向图中的最大团是指图的某个子集中任何两个结点均有边连接,并且这个子集不能再加任何一个结点使之成为更大的团。图中{Y_1,Y_2,Y_3 }是一个最大团,{Y_1,Y_2,Y_3,Y_4 }不是最大团。

无向图的特点在于可以被因子分解,即用最大团的随机变量的函数的乘积来表示概率无向图的联合概率分布。

P(Y)=\frac{1}{Z} \prod_{C} \psi_{C}\left(Y_C \right )

Z=\sum_{Y} \prod_{C}\psi_C(Y_C)

\psi_C(Y_C)=\exp\{-E(Y_C)\}

C是无向图中的最大团,Y_C是C的结点对应的随机变量,\psi_C(Y_C)是C上定义的严格正函数,乘积是在无向图所有的最大团上进行的。

1.3 什么是成对、局部、全局马尔可夫性

成对马尔可夫性:

uv是无向图中任意两个没有边连接的结点,两个结点分别对应随机变量Y_uY_v,其他结点为O,对应的随机变量组为Y_O。则成对马尔可夫性指,给定随机变量组Y_O的条件下,Y_uY_v是条件独立的。

P(Y_u,Y_v|Y_O)=P(Y_u|Y_O)P(Y_v|Y_O)

局部马尔可夫性:

v\in V是无向图中任意一结点,W是与v有边连接的所有结点,Ov,W之外的所有结点,各自表示的随机变量(组)为Y_v,Y_O,Y_W。则局部马尔可夫性指,给定随机变量组Y_W的条件下,Y_vY_O是独立的,即

P(Y_v,Y_O|Y_W)=P(Y_v|Y_W)P(Y_O|Y_W)

全局马尔可夫性:

结点集合A,B被无向图中点集C分隔开,其对应的随机变量组分别为Y_A,Y_B,Y_C,则全局马尔可夫性是指给定随机变量组Y_C条件下的随机变量组Y_AY_B是条件独立的,即

P(Y_A,Y_B|Y_C)=P(Y_A|Y_C)P(Y_B|Y_C)

1.4 线性条件随机场

X=(X_1,X_2,X_3,...,X_n)Y = (Y_1,Y_2,...,Y_n)是线性链表示的随机变量序列,在给定X的条件下,Y的条件概率分布P(Y|X)构成条件随机场,即满足马尔可夫性

P(Y_i|X,Y_1,...,Y_{i-1},Y_{i+1},...Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}) 

i=1,2,...,n(在i=1i=n时只考虑单边)

则称P(Y|X)为线性条件随机场。在标注问题中,X表示输入观测序列,Y表示对应的输出标记序列或状态序列。

1.4.1 条件随机场的参数化形式为

P(y|x)=\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_{i,k} \lambda_k t_k (y_{i-1},y_i,x,i)+ \sum_{i,l} \mu_l s_l(y_i,x,i))

式中t_k是定义在边上的特征函数,称为转移特征,依赖于当前和前一个位置,

s_k是定义在结点上的特征函数,称为状态特征,依赖于当前位置。

通常两个函数的取值为1或0;满足特征时取1,否则取0。

1.4.2 条件随机场的简化形式

f_k(y_{i-1},y_i,x,i)=\begin{cases}t_k(y_{i-1},y_i,x,i) & k=1,2,...K_1 \\ s_l(y_i,x,i) & x= K_1+l;l=1,2,...,K_2 \end{cases}

f_k(y,x)=\sum_{i=1}^{n}f_k(y_{i-1},y_i,x,i), k=1,2,...,K

w_k=\begin{cases}\lambda_k, & k=1,2,...,K_1 \\ \mu_k & 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)

1.4.3 条件随机场的矩阵形式

引入起点和终点状态标记y_0=starty_{n+1}=stop。对观测序列x的每一个位置i=1,2,...,{n+1},定义一个m阶矩阵(m表示标记y_i取值的个数)

M_i(x)=[M_i(y_{i-1},y_i|x)]

M_i(y_{i-1},y_i|x)=\exp(W_i(y_{i-1},y_i|x))

W_i(y_{i-1},y_i|x)=\sum_{i=1}^{n+1}w_k f_k(y_{i-1},y_i,x,i)

这样,给定观测序列x,标记序列y的非规范化概率可以通过n+1个矩阵的乘积\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x)表示,于是可得,

P_w(y|x)=\frac{1}{Z(x)}\prod_{i=1}^{n+1}M_i(y_{i-1},y_i|x)

Z_w(x)=(M_1(x)M_2(x)...M_{n+1}(x))_{start,stop}

这里,笔者对m阶矩阵的理解如下,

假设,状态序列y,观测序列x,i=1,2,3n=3,标记y_i\in {1,2}y_0=start=1y_4=stop=1,各个位置随机矩阵为

M_1(x)=\begin{bmatrix}a_{01} &a_{02} \\0 &0 \end{bmatrix}     M_2(x)=\begin{bmatrix} b_{11} &b_{12} \\b_{21} &b_{22} \end{bmatrix}    M_3(x)=\begin{bmatrix} c_{11} &c_{12} \\c_{21} & c_{22} \end{bmatrix}    M_4(x)=\begin{bmatrix}1 & 0 \\ 1 & 0 \end{bmatrix}

M_1(x)a_{01}表示在位置一时,从0到1的概率,从1到0的概率为0;

M_2(x)b_{11}表示在位置二时,从1到1的概率,b_{21}表示从2到1的概率;

M_4(x)中由于在最后stop=1,故从1到1概率为1,从2到1概率为1,从1到2概率为0,从2到2概率也为0 ;

注:是非规范化概率。

2.概率计算

2.1前向后向算法

对每个指标i=0,1,...,n+1,定义前向向量\alpha_i(x)

\alpha_0(y|x)=\begin{cases} 1,&y=start \\ 0, &y\neq start \end{cases}

\alpha_i^{T}(y_i|x)=\alpha_{i-1}^{T}(y_{i-1}|x)M_i(y_{i-1},y_i|x), i=1,2,...,n+1

\alpha_i^{T}(x)=\alpha_{i-1}^{T}(x)M_i(x)

\alpha_i(y_i|x)表示在位置i的标记是y_i并且到位置i的前部分标记序列的非规范化概率。

对每个指标i=0,1,...,n+1,定义后向向量\beta_i(x)

\beta_{n+1}(y_{n+1}|x)=\begin{cases} 1, &y_{n+1}=stop \\ 0, &y_{n+1}\neq stop \end{cases}

\beta_i(y_i|x)=M_i(y_i,y_{i+1}|x)\beta_{i+1}(y_{i+1}|x)

\beta_i(x)=M_{i+1}\beta_{i+1}(x)

\beta_i(y_i|x)表示在位置i的标记为y_i并且从位置i+1到n的后部分标记序列的非规范化概率。

由前向-后向向量定义可得

Z(x)=\alpha_n^T(x)\cdot 1=1^T\cdot \beta_1(x)

2.2概率计算

给定观测序列X,标记序列在i位置的标记是y_i的概率为

P(Y_i=y_i|x)=\frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)}

给定观测序列X,标记序列在i-1位置是y_{i-1},且在i位置的标记为y_i的概率为

P(Y_{i-1}=y_{i-1},Y_i=y_i|x)=\frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}

Z(x)=\alpha_n^T(x)\cdot 1

2.3期望值的计算

特征函数f_k关于条件分布P(Y|X)的数学期望是

\begin{align*}E_{P(Y|X)}\left[f_k \right ] &= \sum_{y} P(y|x) \sum_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i)\\ &= \sum_{i=1}^{n+1}\sum_{y_{i-1},y_i}f_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}^T(y_{i-1}|x)M_{i}(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \\ & k=1,2,...,K \end{align*}

假设经验分布为\tilde{P}(X),特征函数f_k关于联合分布P(Y,X)的数学期望是\begin{align*}E_{P(X,Y)}[f_k] &=\sum_{x,y}P(x,y)\sum_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i)\\ &=\sum_{x}\tilde{P}(x)\sum_{y}P(y|x)\sum_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i)\\ &=\sum_{x}\tilde{P}(x)\sum_{i=1}^{n+1}\sum_{y_{i+1},y_i}f_k(y_{i-1},y_i,x,i) \frac{\alpha_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)} \end{align*}

其中

Z(x)=\alpha_n^T(x)\cdot 1

3. 学习算法

3.1改进的迭代尺度法

条件随机场要学习的是特征函数f_k的权重w_k。给定训练数据集,可以得到经验分布\tilde{P}(X,Y)。通过极大化训练数据的对数似然函数来求解模型参数。

似然函数是

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)\log P_w(y|x)

\begin{align*} L(w)&=\sum_{x,y}\tilde{P}(x,y)\log P_x(y|x)\\ &=\sum_{x,y}\left[ \tilde{P}(x,y)\sum_{k=1}^{K}w_k f_k(y,x) - \tilde{P}(x,y)\log Z_w(x) \right ]\\ &=\sum_{j=1}^{N}\sum_{k=1}^{K}w_k f_k(y_j, x_j) - \sum_{j=1}^{N}\log Z_w(x_j) \end{align*}

改进的迭代尺度法通过迭代的方法不断优化对数似然函数改变量的下界,以达到极大化对数似然函数的目的。

算法输入:特征函数t_1,t_2,...,t_{k_1}s_1,s_2,...,s_{k_2};经验分布\tilde{P}(X,Y)

算法输出:参数估计值\hat{w};模型P_{\hat{w}}

(1)对所有的k,取初值为w_k=0

(2)当k=1,2,...,K_1时,令\delta_k是方程

\sum_{x,y}\tilde{P}(x)P(y|x)\sum_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp (\delta_k T(x,y))=E_{\tilde{P}}[t_k]

的解;

更新参数值w_k=w_k+\delta_k

k=K_1+l,l=1,2,...,K_2时,令\delta_k是方程

\sum_{x,y}\tilde{P}(x)P(y|x)\sum_{i=1}^{n+1}s_l(y_i,x,i)\exp (\delta_{K_1+l} T(x,y))=E_{\tilde{P}}[s_l]

的解;

更新参数值w_k=w_k+\delta_k

T(y,x)是在数据(x,y)中出现所有特征数的总和

T(x,y)=\sum_{k}f_k(y,x)=\sum_{k=1}^{K}\sum_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i)

(3)如果不是所有的w_k都收敛,则重复(2)。

由于T(y,x)是在数据(x,y)中出现所有特征数的总和,对不同的数据(x,y)取值可能不同。为处理这个问题,定义松弛特征

s(x,y)=S-\sum_{i=1}^{n+1}\sum_{k=1}^{K}f_k(y_{i-1},y_i,x,i)

S是一个常数,选择中够大的常数S舍不得训练数据集的所有 数据(x,y),s(x,y) \geq 0成立,这时特征总数可取S。

更新方程也需要改一下:

对于转移特征

\sum_{x,y}\tilde{P}(x)P(y|x)\sum_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp (\delta_k S)=E_{\tilde{P}}[t_k]

\delta_k=\frac{1}{S}\log \frac{E_{\tilde{P}}[t_k]}{E_P[t_k]}

E_p (t_k)=\sum_{x} \tilde{P}(x)\sum_{i=1}^{n+1}\sum_{y_{i-1},y_i}t_k(y_{i-1},y_i,x,i)\frac{\alpha_{i-1}^{T}(y_{i-1}|x)M_i(y_{i-1},y_i|x)\beta_i(y_i|x)}{Z(x)}

对于状态特征

\sum_{x,y}\tilde{P}(x)P(y|x)\sum_{i=1}^{n}s_l(y_i,x,i)\exp (\delta_k S)=E_{\tilde{P}}[s_l]

\delta_k=\frac{1}{S}\log \frac{E_{\tilde{P}}[s_l]}{E_P[s_l]}

E_p(s_l)=\sum_{x}\tilde{P}(x)\sum_{i=1}^{n}\sum_{y_i}s_l(y_i,x,i)\frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)}

上述方法称为算法S。常数S要取足够大,每步迭代的增量向量\delta_k会变大,算法收敛会变慢。

算法T试图解决这个问题,其对每个观测序列x计算其特征总数最大值T(x),即T(x)=\max_{y}T(x,y)

利用前向后向递推公式计算T(x)=t

\begin{align*} E_{\tilde{P}}[t_k]&=\sum_{x,y} \tilde{P}(x)P(y|x)\sum_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp (\delta_k T(x))\\ &=\sum_{x}\tilde{P}(x)\sum_{y}P(y|x)\sum_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp (\delta_k T(x))\\ &=\sum_{x}\tilde{P}(x)a_{k,t}\exp(\delta_k\cdot t)\\ &=\sum_{t=0}^{T_{max}}a_{k,t}\beta_k^t \end{align*}

a_{k,t}是特征t_k的期望值,\delta_k=\log\beta_k\beta_k是上式唯一实根,可用牛顿法求得,从而求得相关的\delta_k

\begin{align*} E_{\tilde{P}}[s_l] &=\sum_{x,y}\tilde{P}(x)P(y|x)\sum_{i=1}^{n}s_l(y_i,x,i)\exp(\delta_{K_1+l}T(x))\\ &=\sum_{x}\tilde{P}(x)\sum_{y}P(y|x)\sum_{i=1}^{n}s_l(y_i,x,i)\exp(\delta_{K_1+l}T(x))\\ &=\sum_{x}\tilde{P}(x)b_{l,t}\exp(\delta_{k} \cdot t)\\\ &=\sum_{t=0}^{T_{max}}b_{l,t}\gamma_l^t \end{align*}

b_{l,t}是特征s_l的期望值,\delta_l=\log \gamma_l\gamma_l是上式唯一实根,用牛顿法求得。

条件随机场的学习算法也可以用拟牛顿法,具体如何用,本文不再详述,以后接触到拟牛顿法时,再详细讲解。

4.预测算法

同HMM一样,CRF也可以用维特比算法来进行预测。

CRF的预测问题是给定模型P(y|x)和输入序列x,求条件概率最大的输出序列,即对观测序列进行标注。

\begin{align*} y^* &=\arg \max_{y}P_w(y|x)\\ &=\arg \max_y \frac{\exp (w \cdot F(x,y))}{Z_w(x)}\\ &=\arg \max_y \exp (w \cdot F(x,y))\\ &= \arg \max_y (w \cdot F(x,y)) \end{align*}

CRF的预测问题就是求非规范化概率最大的最优路径问题\max_y (w \cdot F(y,x))

w=(w_1,w_2,...,w_K)^T

F(y,x)=(f_1(y,x),f_2(y,x),...,f_K(y,x))^T

f_k(y,x)=\sum_{i=1}^{n}f_k(y_{i-1},y_i,x,i), i=1,2,...,K

可以写成

\max_y \sum_{i=1}^{n}w \cdot F_i(y_{i-1},y_i,x)

其中

F_i(y_{i-1},y_i,x)=(f_1(y_{i-1},y_i,x),f_2(y_{i-1},y_i,x),...,f_K(y_{i-1},y_i,x))^T

维特比方法过程如下

首先求出位置1的各个标记j=1,2,..,m的非规范化概率

\delta_1(j)=w \cdot F_1(y_0=start,y_1=j,x),j=1,2,...,m

再求出到位置i的各个标记j=1,2,..,m的非规范化概率的最大值,同时记录最大值的路径

\delta_i(l)=\max_{1\leq j \leq m} \left \{\delta_{i-1}(j)+w \cdot F_i(y_{i-1}=j,y_i=l,x) \right \},l=1,2,...,m

\psi_i(l)=\arg \max_{1\leq j \leq m} \left \{\delta_{i-1}(j)+w \cdot F_i(y_{i-1}=j,y_i=l,x) \right \},l=1,2,...,m

直到i=n时终止,这时求得非规范化概率的最大值及最优路径的终点y_n^*,再由此终点返回y_i^*=\psi_{i+1}(y_{i+1}^*)

至此可求得最优路径y^*=(y_1^*,y_2^*,...,y_n^*)

猜你喜欢

转载自blog.csdn.net/qq_24034545/article/details/84062109
今日推荐