CRF条件随机场模型笔记

同上一篇《以序列标注为例学习隐马尔可夫模型HMM》一样,仍旧以序列标注问题为例。

序列标注问题是给定一个序列 X X X,求一个函数 f f f,使得 X X X通过 f f f映射得到想要的序列 Y Y Y,即:
f : X → Y f:X \rightarrow Y f:XY
在这里插入图片描述

1.CRF基本假设

与HMM模型认为P(x,y)是转移概率和发射概率的乘积不同,CRF认为:
P ( x , y ) ∝ e x p ( ω ϕ ( x , y ) ) P(x,y) \varpropto exp(\omega \phi(x,y)) P(x,y)exp(ωϕ(x,y))
其中 ω \omega ω 代表一个权重, ϕ ( x , y ) \phi(x,y) ϕ(x,y)是关于x,y序列的特征向量。由于 e x p ( ω ϕ ( x , y ) ) exp(\omega \phi(x,y)) exp(ωϕ(x,y))可以大于1,因此不能假设它等于这个概率,而是正比于概率。

因此:
P ( y ∣ x ) = P ( x , y ) P ( x ) = P ( x , y ) ∑ y ′ P ( x , y ) = e x p ( ω ϕ ( x , y ) ) / R ∑ y ′ e x p ( ω ϕ ( x , y ′ ) ) / R = e x p ( ω ϕ ( x , y ) ) ∑ y ′ e x p ( ω ϕ ( x , y ′ ) ) P(y|x) = \frac{P(x,y)}{P(x)} = \frac{P(x,y)}{\sum_{y^{'}} P(x,y)} = \frac{exp(\omega\phi(x,y))/R}{\sum_{y^{'}}exp(\omega\phi(x,y^{'}))/R} = \frac{exp(\omega\phi(x,y))}{\sum_{y^{'}}exp(\omega\phi(x,y^{'}))} P(yx)=P(x)P(x,y)=yP(x,y)P(x,y)=yexp(ωϕ(x,y))/Rexp(ωϕ(x,y))/R=yexp(ωϕ(x,y))exp(ωϕ(x,y))

2.HMM和CRF本质相同

HMM和CRF模型的其实是同一个东西,可以认为CRF是HMM模型的另一种表示和训练方法,只是两者略有不同。

在HMM中
P ( x , y ) = P ( y 1 ∣ s t a r t ) ∏ l = 1 L − 1 P ( y l + 1 ) P ( y L ∣ e n d ) ∏ l = 1 L P ( x L ∣ y L ) P(x,y) = P(y_1|start)\prod_{l=1}^{L-1}P(y_{l+1})P(y_L|end)\prod_{l=1}^LP(x_L|y_L) P(x,y)=P(y1start)l=1L1P(yl+1)P(yLend)l=1LP(xLyL)
对等式两边取log对数:
l o g P ( x , y ) = l o g P ( y 1 ∣ s t a r t ) + ∑ l = 1 L − 1 l o g P ( y l + 1 ) + l o g P ( y L ∣ e n d ) + ∑ l = 1 L l o g P ( x L ∣ y L ) logP(x,y) = logP(y_1|start)+\sum_{l=1}^{L-1}logP(y_{l+1})+logP(y_L|end)+\sum_{l=1}^LlogP(x_L|y_L) logP(x,y)=logP(y1start)+l=1L1logP(yl+1)+logP(yLend)+l=1LlogP(xLyL)

∑ l = 1 L l o g P ( x L ∣ y L ) \sum_{l=1}^LlogP(x_L|y_L) l=1LlogP(xLyL)为例:
∑ l = 1 L l o g P ( x L ∣ y L ) = ∑ s , t l o g P ( t ∣ s ) × N s , t ( x , y ) \sum_{l=1}^LlogP(x_L|y_L) = \sum_{s,t}logP(t|s)\times N_{s,t}(x,y) l=1LlogP(xLyL)=s,tlogP(ts)×Ns,t(x,y)
即序列中标签序列元素 y L y_L yL对应单词序列元素 x L x_L xL的概率累加等于单词t被标记为标签s的概率乘以序列中单词t被标记为标签s的次数。

下例演示了该公式的一个实例:
在这里插入图片描述
l o g P ( x , y ) logP(x,y) logP(x,y)中其他公式同理可得:
在这里插入图片描述
因此 l o g P ( x , y ) logP(x,y) logP(x,y)可以写成:
在这里插入图片描述
其中紫色部分及代表1中的权重 ω \omega ω,红色部分代表1中关于x,y的特征向量 ϕ ( x , y ) \phi(x,y) ϕ(x,y)

3. CRF的训练

给定数据集 { ( x 1 , y ˇ 1 ) , ( x 2 , y ˇ 2 ) , . . . , ( x n , y ˇ n ) } \{(x^1,\check{y}^1),(x^2,\check{y}^2),...,(x^n,\check{y}^n)\} {(x1,yˇ1),(x2,yˇ2),...,(xn,yˇn)},要训练 ω ∗ \omega^* ω,使得 ω ∗ = a r g m a x ω O ( ω ) \omega^* = argmax_\omega O(\omega) ω=argmaxωO(ω)
O ( ω ) = ∑ n = 1 N l o g P ( y ˇ n ∣ x n ) O(\omega) = \sum_{n=1}^N logP(\check{y}^n|x^n) O(ω)=n=1NlogP(yˇnxn)

有1中: P ( y ∣ x ) = e x p ( ω ϕ ( x , y ) ) ∑ y ′ e x p ( ω ϕ ( x , y ′ ) ) P(y|x) =\frac{exp(\omega\phi(x,y))}{\sum_{y^{'}}exp(\omega\phi(x,y^{'}))} P(yx)=yexp(ωϕ(x,y))exp(ωϕ(x,y))

l o g P ( y ˇ n ∣ x n ) = l o g P ( x n , y ˇ n ) − l o g ∑ y ′ P ( x n , y ′ ) logP(\check{y}^n|x^n) = logP(x^n,\check{y}^n)-log\sum_{y^{'}}P(x^n,y^{'}) logP(yˇnxn)=logP(xn,yˇn)logyP(xn,y)
也就是最大化我们序列中看到的标记,最小化那些不仅在正确序列中能看到,在其他可能的错误序列中也经常出现的标记。

计算梯度:
在这里插入图片描述

在这里插入图片描述
由于是最大化目标函数,因此是梯度上升而非梯度下降:
w s , t = w s , t + η ∂ O ( ω ) ∂ ω s , t w_{s,t} = w_{s,t} + \eta \frac{\partial O(\omega)}{\partial\omega_{s,t}} ws,t=ws,t+ηωs,tO(ω)

训练得到 ω \omega ω
y = a r g m a x y ∈ Y P ( y ∣ x ) = a r g m a x y ∈ Y P ( x , y ) = a r g m a x y ∈ Y ω ϕ ( x , y ) y = argmax_{y\in Y}P(y|x) = argmax_{y\in Y}P(x,y) = argmax_{y\in Y}\omega \phi(x,y) y=argmaxyYP(yx)=argmaxyYP(x,y)=argmaxyYωϕ(x,y)

可以使用维特比算法得到最优序列。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值