本博客中使用到的完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
CRF系列文章:
条件随机场(CRF)原理小结(1)
条件随机场(CRF)原理小结(2)
BiLSTM-CRF实现中文命名实体识别(NER)
给定CRF: P ( Y ∣ X ) P(Y|X) P(Y∣X)以及输入系列 x x x 和输出序列 y y y,计算条件概率:
P ( Y i = y i ∣ x ) P(Y_i=y_i|x) P(Yi=yi∣x), P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) P(Y_{i-1}=y_{i-1},Y_i=y_i|x) P(Yi−1=yi−1,Yi=yi∣x)以及相应的数学期望问题。
(1)定义前向向量 α i ( y i ∣ x ) \alpha_i(y_i|x) αi(yi∣x)表示在位置 i i i 的标记是 y i y_i yi 并且从 1 → i 1\rightarrow i 1→i的前部分标记序列的 非规范化概率
,那么有如下递推:
α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) [ M i ( y i − 1 , y i ∣ x ) ] , i = 1 , 2 , . . . , n + 1 \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 αiT(yi∣x)=αi−1T(yi−1∣x)[Mi(yi−1,yi∣x)],i=1,2,...,n+1
其中 i = 0 i=0 i=0 时有: α 0 ( y 0 ∣ x ) = { 1 , y 0 = s t a r t 0 , o h t e r s \alpha_0(y_0|x)=\begin{cases}1,&y_0=start\\0,&ohters\end{cases} α0(y0∣x)={ 1,0,y0=startohters
还可表示为:
α i T ( x ) = α i − 1 T ( x ) M i ( x ) \alpha_i^T(x)=\alpha_{i-1}^T(x) M_i(x) αiT(x)=αi−1T(x)Mi(x)
由于 y i y_i yi的可能取值有 m m m种,所以 α i ( x ) \alpha_i(x) αi(x)是个 m m m 维的列向量
:
α i ( x ) = [ α i ( y i = 1 ∣ x ) α i ( y i = 2 ∣ x ) . . . α i ( y = m ∣ x ) ] \alpha_i(x)=\begin{bmatrix}\begin{aligned}&\alpha_i(y_i=1|x)\\&\alpha_i(y_i=2|x)\\&\qquad...\\&\alpha_i(y=m|x)\end{aligned}\end{bmatrix} αi(x)=⎣⎢⎢⎢⎢⎡αi(yi=1∣x)αi(yi=2∣x)...αi(y=m∣x)⎦⎥⎥⎥⎥⎤
【注意】:这里要特别强调一下前面几个式子的维度,以帮助大家去理解这几个式子,否则会和我一开始一样,没理解透彻,会影响后面概率计算的公式的理解。
在递推式: α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) [ M i ( y i − 1 , y i ∣ x ) ] \alpha_i^{T}(y_i|x)=\alpha_{i-1}^{T}(y_{i-1}|x)[M_i(y_{i-1},y_i|x)] αiT(yi∣x)=αi−1T(yi−1∣x)[Mi(yi−1,yi∣x)]中,此时位置 i i i 是标记 y i y_i yi,则可将 y i y_i yi看作是确定的,但注意 y i − 1 y_{i-1} yi−1到底是哪个状态我们是不知道的,所以这里要对所有 y i − 1 y_{i-1} yi−1的情况考虑进来,类似于HMM中求前向递推式一样,所以这里 α i − 1 T ( y i − 1 ∣ x ) \alpha_{i-1}^{T}(y_{i-1}|x) αi−1T(yi−1∣x)维度是1xm,而矩阵 [ M i ( y i − 1 , y i ∣ x ) ] [M_i(y_{i-1},y_i|x)] [Mi(yi−1,yi∣x)]的维度是mx1,所里这里的 α i T ( y i ∣ x ) \alpha_i^{T}(y_i|x) αiT(yi∣x)是个标量(内积的结果),注意不要被这里的转置符迷惑了。
在递推式 α i T ( x ) = α i − 1 T ( x ) M i ( x ) \alpha_i^T(x)=\alpha_{i-1}^T(x) M_i(x) αiT(x)=αi−1T(x)Mi(x)中,其实就是前面那种 y i y_i yi确定的情况的推广,即此时考虑 y i y_i yi的各种状态,所以此时 α i − 1 T ( x ) \alpha_{i-1}^T(x) αi−1T(x) 的维度是1xm,矩阵 M i ( x ) M_i(x) Mi(x)的维度是mxm,而 α i T ( x ) \alpha_i^T(x) αiT(x)的维度是1xm。
(2)同样,定义后向向量 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yi∣x)表示在位置 i i i 的标记是 y i y_i yi 并且从 i + 1 → n i+1\rightarrow n i+1→n的后部分标记序列的 非规范化概率
,那么有如下递推:
β i ( y i ∣ x ) = [ M i + 1 ( y i , y i + 1 ∣ x ) ] β i + 1 ( y i + 1 ∣ x ) , i = 0 , 1 , . . . , n \beta_i(y_i|x)=[M_{i+1}(y_{i},y_{i+1}|x)]\beta_{i+1}(y_{i+1}|x),\;i=0,1,...,n βi(yi∣x)=[Mi+1(yi,yi+1∣x)]βi+1(yi+1∣x),i=0,1,...,n
其中 i = n + 1 i=n+1 i=n+1 时有: β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 = s t o p 0 , o h t e r s \beta_{n+1}(y_{n+1}|x)=\begin{cases}1,&y_{n+1}=stop\\0,&ohters\end{cases} βn+1(yn+1∣x)={ 1,0,yn+1=stopohters
还可表示为:
β i ( x ) = M i + 1 ( x ) β i + 1 ( x ) \beta_i(x)= M_{i+1}(x)\beta_{i+1}(x) βi(x)=Mi+1(x)βi+1(x)
由于 y i y_i yi的可能取值有 m m m种,所以 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yi∣x)也是个 m m m 维的列向量
:
β i ( x ) = [ β i ( y i = 1 ∣ x ) β i ( y i = 2 ∣ x ) . . . β i ( y = m ∣ x ) ] \beta_i(x)=\begin{bmatrix}\begin{aligned}&\beta_i(y_i=1|x)\\&\beta_i(y_i=2|x)\\&\qquad...\\&\beta_i(y=m|x)\end{aligned}\end{bmatrix} βi(x)=⎣⎢⎢⎢⎢⎡βi(yi=1∣x)βi(yi=2∣x)...βi(y=m∣x)⎦⎥⎥⎥⎥⎤
同样在这里继续说明一下维度问题,以帮助进一步理解和消化:
在递推式: β i ( y i ∣ x ) = [ M i + 1 ( y i , y i + 1 ∣ x ) ] β i + 1 ( y i + 1 ∣ x ) \beta_i(y_i|x)=[M_{i+1}(y_{i},y_{i+1}|x)]\beta_{i+1}(y_{i+1}|x) βi(yi∣x)=[Mi+1(yi,yi+1∣x)]βi+1(yi+1∣x)中,此时位置 i i i 是标记 y i y_i yi,则可将 y i y_i yi看作是确定的,但注意 y i + 1 y_{i+1} yi+1到底是哪个状态我们是不知道的,所以这里要对所有 y i + 1 y_{i+1} yi+1的情况考虑进来,类似于HMM中求后向递推式一样,所以这里矩阵 [ M i + 1 ( y i , y i + 1 ∣ x ) ] [M_{i+1}(y_{i},y_{i+1}|x)] [Mi+1(yi,yi+1∣x)]的维度是1xm,而 β i + 1 ( y i + 1 ∣ x ) \beta_{i+1}(y_{i+1}|x) βi+1(yi+1∣x)维度是mx1,所里这里的 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yi∣x)是个标量(内积的结果),注意不要被这里的转置符迷惑了。
在递推式 β i ( x ) = M i + 1 ( x ) β i + 1 ( x ) \beta_i(x)= M_{i+1}(x)\beta_{i+1}(x) βi(x)=Mi+1(x)βi+1(x)中,其实就是前面那种 y i y_i yi确定的情况的推广,即此时考虑 y i y_i yi的各种状态,所以此时矩阵 M i + 1 ( x ) M_{i+1}(x) Mi+1(x)的维度是mxm, β i + 1 ( x ) \beta_{i+1}(x) βi+1(x)的维度是mx1,而 β i ( x ) \beta_i(x) βi(x)的维度是mx1。
P ( Y i = y i ∣ x ) = α i T ( y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P(Y_i=y_i|x) = \frac{\alpha_i^T(y_i|x)\beta_i(y_i|x)}{Z(x)} P(Yi=yi∣x)=Z(x)αiT(yi∣x)βi(yi∣x)
继续强调维度问题:因为 y i y_i yi可看作是确定的,所以 α i T ( y i ∣ x ) \alpha_i^T(y_i|x) αiT(yi∣x)和 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yi∣x)都是标量哦~ Z ( x ) Z(x) Z(x)自然是序列的各种排列组合的所有情况的非规范化概率之和,在此式子中起到规范化因子的作用。
P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) 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)} P(Yi−1=yi−1,Yi=yi∣x)=Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)
继续强调维度问题:因为 y i y_i yi和 y i − 1 y_{i-1} yi−1都可看作是确定的,所以 α i − 1 T ( y i − 1 ∣ x ) \alpha_{i-1}^T(y_{i-1}|x) αi−1T(yi−1∣x)和 β i ( y i ∣ x ) \beta_i(y_i|x) βi(yi∣x)都是标量, M i ( y i − 1 , y i ∣ x ) M_i(y_{i-1},y_i|x) Mi(yi−1,yi∣x)是矩阵元素,自然肯定是标量~
其中, Z ( x ) Z(x) Z(x)还可表示为:
Z ( x ) = α n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( y ∣ x ) Z(x)=\alpha_n^T(x)\cdot \mathbf{1} = \mathbf{1}^T \cdot \beta_1(y|x) Z(x)=αnT(x)⋅1=1T⋅β1(y∣x)
继续不厌其烦的强调维度: α n T ( x ) \alpha_n^T(x) αnT(x)的维度是1xm, β 1 ( y ∣ x ) \beta_1(y|x) β1(y∣x)的维度是mx1,而 1 \mathbf{1} 1 是维度为mx1的列向量~
特征函数
f k f_k fk关于条件分布
P ( Y ∣ X ) P(Y|X) P(Y∣X)的数学期望
是:
E P ( Y ∣ X ) [ f k ] = ∑ y P ( y ∣ x ) f k ( y , x ) = ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) = ∑ i = 1 n + 1 ∑ y i − 1 , y i P ( y i − 1 , y i ∣ x ) f k ( y i − 1 , y i , x , i ) = ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ⋅ 1 k = 1 , 2 , . . . , K \begin{aligned}E_{P(Y|X)}[f_k]&=\sum\limits_y P(y|x) f_k(y,x)\\&=\sum\limits_y P(y|x) \sum\limits_{i=1}^{n+1} f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} P(y_{i-1},y_i|x) \,f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{i=1}^{n+1} \sum\limits_{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)}\\&=\sum\limits_{i=1}^{n+1} \sum\limits_{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)}{\alpha_n^T(x)\cdot \mathbf{1} }\\&\quad k=1,2,...,K\end{aligned} EP(Y∣X)[fk]=y∑P(y∣x)fk(y,x)=y∑P(y∣x)i=1∑n+1fk(yi−1,yi,x,i)=i=1∑n+1yi−1,yi∑P(yi−1,yi∣x)fk(yi−1,yi,x,i)=i=1∑n+1yi−1,yi∑fk(yi−1,yi,x,i)Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)=i=1∑n+1yi−1,yi∑fk(yi−1,yi,x,i)αnT(x)⋅1αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)k=1,2,...,K
假设经验分布
为 P ~ ( X ) \tilde{P}(X) P~(X),因为在CRF数据模型中 x x x为已知,所以 P ( X ) = P ~ ( X ) P(X)=\tilde{P}(X) P(X)=P~(X),则有:联合概率分布 P ( X , Y ) = P ( Y ∣ X ) P ~ ( X ) P(X,Y)=P(Y|X)\tilde{P}(X) P(X,Y)=P(Y∣X)P~(X),所以特征函数
f k f_k fk关于联合分布
P ( X , Y ) P(X,Y) P(X,Y)的数学期望
是:
E P ( X , Y ) [ f k ] = ∑ x , y P ( x , y ) f k ( y , x ) = ∑ x P ~ ( x ) ∑ y P ( y ∣ x ) ∑ i = 1 n + 1 f k ( y i − 1 , y i , x , i ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 , y i P ( y i − 1 , y i ∣ x ) f k ( y i − 1 , y i , x , i ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) = ∑ x P ~ ( x ) ∑ i = 1 n + 1 ∑ y i − 1 , y i f k ( y i − 1 , y i , x , i ) α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) α n T ( x ) ⋅ 1 = ∑ x P ~ ( x ) E P ( Y ∣ X ) [ f k ] k = 1 , 2 , . . . , K \begin{aligned}E_{P(X,Y)}[f_k]&=\sum\limits_{x,y} P(x,y) f_k(y,x)\\&=\sum\limits_{x} \tilde{P}(x) \sum\limits_{y} P(y|x) \sum\limits_{i=1}^{n+1} f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{x} \tilde{P}(x) \sum\limits_{i=1}^{n+1} \sum\limits_{y_{i-1},y_i} P(y_{i-1},y_i|x) \,f_k(y_{i-1},y_i,x,i)\\&=\sum\limits_{x} \tilde{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{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)}\\&=\sum\limits_{x} \tilde{P}(x)\sum\limits_{i=1}^{n+1} \sum\limits_{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)}{\alpha_n^T(x)\cdot \mathbf{1}}\\&=\sum\limits_{x} \tilde{P}(x)\,E_{P(Y|X)}[f_k]\\&\quad k=1,2,...,K\end{aligned} EP(X,Y)[fk]=x,y∑P(x,y)fk(y,x)=x∑P~(x)y∑P(y∣x)i=1∑n+1fk(yi−1,yi,x,i)=x∑P~(x)i=1∑n+1yi−1,yi∑P(yi−1,yi∣x)fk(yi−1,yi,x,i)=x∑P~(x)i=1∑n+1yi−1,yi∑fk(yi−1,yi,x,i)Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)=x∑P~(x)i=1∑n+1yi−1,yi∑fk(yi−1,yi,x,i)αnT(x)⋅1αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)=x∑P~(x)EP(Y∣X)[fk]k=1,2,...,K
CRF实际上是定义在时序数据上的对数线性模型
,其学习方法有极大似然估计
(Maximum Likelihood Estimation,MLE)和正则化的极大似然估计
。优化算法有改进的迭代尺度法IIS
、梯度下降法
以及拟牛顿法
。
给定训练集,可以确定联合分布的经验分布
P ~ ( X , Y ) \tilde{P}(X,Y) P~(X,Y)和边缘分布的经验分布
P ~ ( X ) \tilde{P}(X) P~(X),可通过极大化训练数据的对数似然函数
来求解模型参数。训练数据的对数似然函数为:
L ( w ) = L P ~ ( P w ) = ∏ x , y P w ( x , y ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) \begin{aligned}L(w)&=L_{\tilde{P}}(P_w)=\prod\limits_{x,y} P_w(x,y)^{\tilde{P}(x,y)}\\&=\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x)\end{aligned} L(w)=LP~(Pw)=x,y∏Pw(x,y)P~(x,y)=x,y∑P~(x,y)logPw(y∣x)
在最大熵模型
的参数学习中,我们也使用了改进的迭代尺度法(Improved Iterative Scaling,IIS)
,IIS的基本想法是:假设模型当前的参数向量是 w = ( w 1 , w 2 , . . . , w n ) T w=(w_1,w_2,...,w_n)^T w=(w1,w2,...,wn)T,则希望找到一个新的参数向量 w + δ = ( w 1 + δ 1 , w 2 + δ 2 , . . . , w n + δ n ) T w+\delta=(w_1+\delta_1,w_2+\delta_2,...,w_n+\delta_n)^T w+δ=(w1+δ1,w2+δ2,...,wn+δn)T,使得模型的对数似然数值增大。如果能有这样的一种参数向量更新方法: w → w + δ w\rightarrow w+\delta w→w+δ,那么重复使用此方法更新参数向量,则对数似然值就会越来越大,直至找到最大值。
解决方法就是找到对数似然函数的一个下届函数
B ( δ ∣ w ) B(\delta|w) B(δ∣w),即有:
L ( w + δ ) − L ( w ) ⩾ B ( δ ∣ w ) L(w+\delta)-L(w)\geqslant B(\delta|w) L(w+δ)−L(w)⩾B(δ∣w)
通过对 B ( δ ∣ w ) B(\delta|w) B(δ∣w)的极大化来得到对应的 δ \delta δ的值(使得偏导 ∂ B ( δ ∣ w ) ∂ δ = 0 \frac{\partial B(\delta|w)}{\partial \delta}=0 ∂δ∂B(δ∣w)=0求得 δ \delta δ的表达式,然后可使用牛顿迭代法求得 δ ∗ \delta^* δ∗),此时的 δ \delta δ使得下届提高,那么对数似然函数也会提高,那么就可以使用: w → w + δ w\rightarrow w+\delta w→w+δ 来更新参数向量,进而来迭代求解得到 使得对数似然函数达到最大值的 w ∗ w^* w∗,以及最优模型 P w ∗ ( y ∣ x ) P_w^*(y|x) Pw∗(y∣x)。
我们的目标是极大化条件分布 P w ( y ∣ x ) P_w(y|x) Pw(y∣x)的对数似然函数:
L ( w ) = ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) L(w)=\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x) L(w)=x,y∑P~(x,y)logPw(y∣x)
将其转化为常见的极小化问题: f ( w ) = − L ( w ) = − ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) f(w)=-L(w)=-\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x) f(w)=−L(w)=−x,y∑P~(x,y)logPw(y∣x),则可以使用梯度下降法
。而由3.2节内容知:
P w ( y ∣ x ) = 1 Z w ( x ) exp ∑ k = 1 K w k f k ( y , x ) P_w(y|x)=\frac{1}{Z_w(x)}\exp \sum\limits_{k=1}^K w_kf_k(y,x) Pw(y∣x)=Zw(x)1expk=1∑Kwkfk(y,x)
Z w ( x ) = ∑ y exp ∑ k = 1 K w k f k ( y , x ) Z_w(x)=\sum\limits_{y}\exp \sum\limits_{k=1}^K w_kf_k(y,x) Zw(x)=y∑expk=1∑Kwkfk(y,x)
所以:
f ( w ) = − ∑ x , y P ~ ( x , y ) l o g P w ( y ∣ x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) + ∑ x , y P ~ ( x , y ) l o g Z w ( x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) + ∑ x P ~ ( x ) ∑ y P w ( y ∣ x ) l o g Z w ( x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) + ∑ x P ~ ( x ) l o g Z w ( x ) = − ∑ x , y P ~ ( x , y ) ∑ k = 1 K w k f k ( y , x ) + ∑ x P ~ ( x ) l o g ∑ y exp ∑ k = 1 K w k f k ( y , x ) \begin{aligned}f(w)&=-\sum\limits_{x,y}\tilde{P}(x,y)logP_w(y|x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x,y}\tilde{P}(x,y)logZ_w(x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x}\tilde{P}(x)\sum\limits_{y}{P_w}(y|x)logZ_w(x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x}\tilde{P}(x)logZ_w(x)\\&=-\sum\limits_{x,y}\tilde{P}(x,y)\sum\limits_{k=1}^K w_kf_k(y,x)+\sum\limits_{x}\tilde{P}(x)log\sum\limits_{y}\exp \sum\limits_{k=1}^K w_kf_k(y,x)\end{aligned} f(w)=−x,y∑P~(x,y)logPw(y∣x)=−x,y∑P~(x,y)k=1∑Kwkfk(y,x)+x,y∑P~(x,y)logZw(x)=−x,y∑P~(x,y)k=1∑Kwkfk(y,x)+x∑P~(x)y∑Pw(y∣x)logZw(x)=−x,y∑P~(x,y)k=1∑Kwkfk(y,x)+x∑P~(x)logZw(x)=−x,y∑P~(x,y)k=1∑Kwkfk(y,x)+x∑P~(x)logy∑expk=1∑Kwkfk(y,x)
对参数向量 w w w的第k个分量 w k w_k wk求偏导可以得到:
∂ f ( w ) ∂ w k = − ∑ x , y P ~ ( x , y ) f k ( y , x ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) f k ( y , x ) \begin{aligned}\frac{\partial f(w)}{\partial w_k}&=-\sum\limits_{x,y}\tilde{P}(x,y) f_k(y,x)+\sum\limits_{x,y}\tilde{P}(x)P_w(y|x)f_k(y,x)\end{aligned} ∂wk∂f(w)=−x,y∑P~(x,y)fk(y,x)+x,y∑P~(x)Pw(y∣x)fk(y,x)
有了 w w w的导数表达式,就可以用梯度下降法
来迭代求解最优的 w ∗ w^* w∗了。
【注意】在迭代过程中,每次更新 w w w后,需要同步更新 P w ∗ ( x , y ) P_w^*(x,y) Pw∗(x,y),以用于下一次迭代的梯度计算。
进一步看一下 ∂ f ( w ) ∂ w k \frac{\partial f(w)}{\partial w_k} ∂wk∂f(w)的结果还有特别的发现哦~:
∂ f ( w ) ∂ w k = − ∑ x , y P ~ ( x , y ) f k ( y , x ) + ∑ x , y P ~ ( x ) P w ( y ∣ x ) f k ( y , x ) = − E P ~ ( x , y ) [ f k ( y , x ) ] + E P ( x , y ) f k ( y , x ) \begin{aligned}\frac{\partial f(w)}{\partial w_k}&=-\sum\limits_{x,y}\tilde{P}(x,y) f_k(y,x)+\sum\limits_{x,y}\tilde{P}(x)P_w(y|x)f_k(y,x)\\&=-E_{\tilde{P}(x,y) }[f_k(y,x)]+E_{P(x,y)}f_k(y,x)\end{aligned} ∂wk∂f(w)=−x,y∑P~(x,y)fk(y,x)+x,y∑P~(x)Pw(y∣x)fk(y,x)=−EP~(x,y)[fk(y,x)]+EP(x,y)fk(y,x)
当令上式等于0求解参数 w k w_k wk时,等于0时上式也表明了 “特征函数
f ( x , y ) f(x,y) f(x,y)关于经验分布
P ~ ( X , Y ) \tilde{P}(X,Y) P~(X,Y)的期望值
E P ~ ( f ) E_{\tilde{P}}(f) EP~(f),等于特征函数
f ( x , y ) f(x,y) f(x,y)关于模型
P ( Y ∣ X ) P(Y|X) P(Y∣X)与经验分布
P ~ ( X ) \tilde{P}(X) P~(X)的期望值
E P ( f ) E_P(f) EP(f)”
,而这正是 最大熵原理
!
CRF的预测问题是给定CRF P ( Y ∣ X ) P(Y|X) P(Y∣X)和输入序列 x x x(观测序列),求条件概率最大的输出序列 y ∗ y^* y∗(标记序列),即对观测序列进行标注
。
即
y ∗ = arg max y P w ( y ∣ x ) y^*=\arg \max\limits_y P_w(y|x) y∗=argymaxPw(y∣x)
由3.2节可知
P w ( y ∣ x ) = exp ( w ⋅ F ( y , x ) ) Z w ( x ) P_w(y|x)=\frac{\exp(w\cdot F(y,x))}{Z_w(x)} Pw(y∣x)=Zw(x)exp(w⋅F(y,x))
所以:
y ∗ = arg max y P w ( y ∣ x ) = arg max y exp ( w ⋅ F ( y , x ) ) Z w ( x ) = arg max y exp ( w ⋅ F ( y , x ) ) = arg max y ( w ⋅ F ( y , x ) ) = arg max y ∑ i = 1 n ( w ⋅ F i ( y i − 1 , y i , x ) ) \begin{aligned}y^*&=\arg \max\limits_y P_w(y|x)\\&=\arg \max\limits_y \frac{\exp(w\cdot F(y,x))}{Z_w(x)}\\&=\arg \max\limits_y {\exp(w\cdot F(y,x))}\\&=\arg \max\limits_y {(w\cdot F(y,x))}\\&=\arg \max\limits_y {\sum\limits_{i=1}^n (w\cdot F_i(y_{i-1},y_i,x))}\end{aligned} y∗=argymaxPw(y∣x)=argymaxZw(x)exp(w⋅F(y,x))=argymaxexp(w⋅F(y,x))=argymax(w⋅F(y,x))=argymaxi=1∑n(w⋅Fi(yi−1,yi,x))
其中 F i ( y i − 1 , y i , x ) = ( f 1 ( y i − 1 , y i , x , i ) , f 2 ( y i − 1 , y i , x , i ) , . . . , f K ( y i − 1 , y i , x , i ) ) T F_i(y_{i-1},y_i,x)=(f_1(y_{i-1},y_i,x,i),\;f_2(y_{i-1},y_i,x,i),...,f_K(y_{i-1},y_i,x,i))^T Fi(yi−1,yi,x)=(f1(yi−1,yi,x,i),f2(yi−1,yi,x,i),...,fK(yi−1,yi,x,i))T是局部特征向量
。计算过程中,也仅需计算非规划范概率
,如此计算效率也得到了提高。
假设到位置 i i i的最大非规范概率为 δ i ( l ) \delta_{i}(l) δi(l), l l l表示位置 i i i 的标记,可取m种不同的值,即 l = 1 , 2 , . . . , m l=1,2,...,m l=1,2,...,m,则有递推式:
δ i ( l ) = max 1 ⩽ j ⩽ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m \delta_i(l)=\max\limits_{1\leqslant j\leqslant m}\{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)\},\;l=1,2,...,m δi(l)=1⩽j⩽mmax{ δi−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,...,m
设最大非规范概率为 δ i ( l ) \delta_{i}(l) δi(l)对应的位置 i i i的前一个标记为 ψ i ( j ) \psi_i(j) ψi(j),则有:
ψ i ( l ) = arg max 1 ⩽ j ⩽ m { δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x ) } , l = 1 , 2 , . . . , m \psi_i(l)=\arg \max\limits_{1\leqslant j\leqslant m}\{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)\},\;l=1,2,...,m ψi(l)=arg1⩽j⩽mmax{ δi−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,...,m
则到达序列终点即 i = n i=n i=n时,这时就可得到非规范化概率的最大值:
max y ( w ⋅ F ( y , x ) ) = max 1 ⩽ j ⩽ m { δ n ( j ) \max\limits_y {(w\cdot F(y,x))} = \max\limits_{1\leqslant j\leqslant m}\{\delta_{n}(j) ymax(w⋅F(y,x))=1⩽j⩽mmax{ δn(j)
非规范化概率取得最大值所经过的序列组成最优路径,最优路径的终点即为:
y n ∗ = arg max 1 ⩽ j ⩽ m { δ n ( j ) y^*_n=\arg \max\limits_{1\leqslant j\leqslant m}\{\delta_{n}(j) yn∗=arg1⩽j⩽mmax{ δn(j)
由终点往回开始back tracking,即可得到当前节点的前一节点:
y i ∗ = ψ i + 1 ( y i + 1 ∗ ) , 1 = n − 1 , n − 2 , . . . , 1 y^*_i=\psi_{i+1}(y_{i+1}^*),\;1=n-1,n-2,...,1 yi∗=ψi+1(yi+1∗),1=n−1,n−2,...,1
如此便可求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) y^*=(y_1^*,y_2^*,...,y_n^*) y∗=(y1∗,y2∗,...,yn∗)。
优点:
条件随机场模型既具有判别式模型的优点,又具有生成式模型考虑到上下文标记间的转移概率,以序列化形式进行全局参数优化和解码的特点,解决了其他判别式模型(如最大熵马尔科夫模型)难以避免的标记偏见问题。
缺点:
模型训练时收敛速度比较慢。
应用:
词性标注、分词、命名实体识别等。
完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~
最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~
[1] 统计学习方法(第2版) 李航