CRF条件随机场模型笔记

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

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

1.CRF基本假设

与HMM模型认为P(x,y)是转移概率和发射概率的乘积不同,CRF认为:
P(x,y)∝exp(ωϕ(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序列的特征向量。由于exp(ωϕ(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)=exp(ωϕ(x,y))/R∑y′exp(ωϕ(x,y′))/R=exp(ωϕ(x,y))∑y′exp(ωϕ(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(y1∣start)∏l=1L−1P(yl+1)P(yL∣end)∏l=1LP(xL∣yL)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对数:
logP(x,y)=logP(y1∣start)+∑l=1L−1logP(yl+1)+logP(yL∣end)+∑l=1LlogP(xL∣yL)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=1LlogP(xL∣yL)\sum_{l=1}^LlogP(x_L|y_L)l=1LlogP(xLyL)为例:
∑l=1LlogP(xL∣yL)=∑s,tlogP(t∣s)×Ns,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)
即序列中标签序列元素yLy_LyL对应单词序列元素xLx_LxL的概率累加等于单词t被标记为标签s的概率乘以序列中单词t被标记为标签s的次数。

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

3. CRF的训练

给定数据集{(x1,yˇ1),(x2,yˇ2),...,(xn,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^*ω,使得ω∗=argmaxωO(ω)\omega^* = argmax_\omega O(\omega)ω=argmaxωO(ω)
O(ω)=∑n=1NlogP(yˇn∣xn)O(\omega) = \sum_{n=1}^N logP(\check{y}^n|x^n)O(ω)=n=1NlogP(yˇnxn)

有1中:P(y∣x)=exp(ωϕ(x,y))∑y′exp(ωϕ(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))

logP(yˇn∣xn)=logP(xn,yˇn)−log∑y′P(xn,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)
也就是最大化我们序列中看到的标记,最小化那些不仅在正确序列中能看到,在其他可能的错误序列中也经常出现的标记。

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

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

训练得到ω\omegaω
y=argmaxy∈YP(y∣x)=argmaxy∈YP(x,y)=argmaxy∈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)

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值