条件随机场
马尔可夫过程
定义
假设一个随机过程中,tnt_ntn 时刻的状态xnx_nxn的条件发布,只与其前一状态xn−1x_{n-1}xn−1 相关,即:
P(xn∣x1,x2,...,xn−1)=P(xn∣xn−1) P(x_n|x_1,x_2,...,x_{n-1}) = P(x_n|x_{n-1}) P(xn∣x1,x2,...,xn−1)=P(xn∣xn−1)
则将其称为 马尔可夫过程。
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-wTcnB5QJ-1588083401296)(img/马尔可夫过程.png)]](/https://i-blog.csdnimg.cn/blog_migrate/13cb2056c69057dd5946308d19050801.png)
隐马尔科夫算法
定义
隐马尔科夫算法是对含有未知参数(隐状态)的马尔可夫链进行建模的生成模型,如下图所示:
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lBfYoqPm-1588083445495)(img/隐马尔科夫算法.png)]](/https://i-blog.csdnimg.cn/blog_migrate/22a60dad5330774e06aebfbfe761bab0.png)
在隐马尔科夫模型中,包含隐状态 和 观察状态,隐状态 xix_ixi 对于观察者而言是不可见的,而观察状态 yiy_iyi 对于观察者而言是可见的。隐状态间存在转移概率,隐状态 xix_ixi到对应的观察状态 yiy_iyi 间存在输出概率。
假设
- 假设隐状态xix_ixi 的状态满足马尔可夫过程,i时刻的状态xix_ixi 的条件分布,仅与其前一个状态xi−1x_{i-1}xi−1相关,即:
P(xi∣x1,x2,...,xi−1)=P(xi∣xi−1) P(x_i|x_1,x_2,...,x_{i-1}) = P(x_i|x_{i-1}) P(xi∣x1,x2,...,xi−1)=P(xi∣xi−1)
- 假设观测序列中各个状态仅取决于它所对应的隐状态,即:
P(yi∣x1,x2,...,xi−1,y1,y2,...,yi−1,yi+1,...)=P(yi∣xi) P(y_i|x_1,x_2,...,x_{i-1},y_1,y_2,...,y_{i-1},y_{i+1},...) = P(y_i|x_{i}) P(yi∣x1,x2,...,xi−1,y1,y2,...,yi−1,yi+1,...)=P(yi∣xi)
存在问题
在序列标注问题中,隐状态(标注)不仅和单个观测状态相关,还和观察序列的长度、上下文等信息相关。例如词性标注问题中,一个词被标注为动词还是名词,不仅与它本身以及它前一个词的标注有关,还依赖于上下文中的其他词。
条件随机场 (以线性链条件随机场为例)
定义
给定 X=(x1,x2,...,xn)X=(x_1,x_2,...,x_n)X=(x1,x2,...,xn) ,Y=(y1,y2,...,yn)Y=(y_1,y_2,...,y_n)Y=(y1,y2,...,yn) 均为线性链表示的随机变量序列,若在给随机变量序列 X 的条件下,随机变量序列 Y 的条件概率分布 P(Y∣X)P(Y|X)P(Y∣X) 构成条件随机场,即满足马尔可夫性:
P(yi∣x1,x2,...,xi−1,y1,y2,...,yi−1,yi+1)=P(yi∣x,yi−1,yi+1) P(y_i|x_1,x_2,...,x_{i-1},y_1,y_2,...,y_{i-1},y_{i+1}) = P(y_i|x,y_{i-1},y_{i+1}) P(yi∣x1,x2,...,xi−1,y1,y2,...,yi−1,yi+1)=P(yi∣x,yi−1,yi+1)
则称为 P(Y∣X)P(Y|X)P(Y∣X) 为线性链条件随机场。
通过去除了隐马尔科夫算法中的观测状态相互独立假设,使算法在计算当前隐状态xix_ixi时,会考虑整个观测序列,从而获得更高的表达能力,并进行全局归一化解决标注偏置问题。

参数化形式
p(y∣x)=1Z(x)∏i=1nexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i)) p\left(y | x\right)=\frac{1}{Z\left(x\right)} \prod_{i=1}^{n} \exp \left(\sum_{i, k} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right) p(y∣x)=Z(x)1i=1∏nexp⎝⎛i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i)⎠⎞
其中:
Z(x)Z(x)Z(x) 为归一化因子,是在全局范围进行归一化,枚举了整个隐状态序列x1…nx_{1…n}x1…n的全部可能,从而解决了局部归一化带来的标注偏置问题。
Z(x)=∑yexp(∑i,kλxtk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i)) Z(x)=\sum_{y} \exp \left(\sum_{i, k} \lambda_{x} t_{k}\left(y_{i-1}, y_{i}, x, i\right)+\sum_{i, l} \mu_{l} s_{l}\left(y_{i}, x, i\right)\right) Z(x)=y∑exp⎝⎛i,k∑λxtk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i)⎠⎞
tkt_ktk 为定义在边上的特征函数,转移特征,依赖于前一个和当前位置
s1s_1s1 为定义在节点上的特征函数,状态特征,依赖于当前位置。
简化形式
因为条件随机场中同一特征在各个位置都有定义,所以可以对同一个特征在各个位置求和,将局部特征函数转化为一个全局特征函数,这样就可以将条件随机场写成权值向量和特征向量的内积形式,即条件随机场的简化形式。
step 1
将转移特征和状态特征及其权值用统一的符号表示,设有k1个转移特征,k2k_2k2个状态特征,K=k1+k2K=k_1+k_2K=k1+k2,记
fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i),k=1,2,⋯ ,K1sl(yi,x,i),k=K1+l;l=1,2,⋯ ,K2f_{k}\left(y_{i-1}, y_{i}, x, i\right)=\left\{\begin{array}{lc} t_{k}\left(y_{i-1}, y_{i}, x, i\right), & k=1,2, \cdots, K_{1} \\ s_{l}\left(y_{i}, x, i\right), & k=K_{1}+l ; l=1,2, \cdots, K_{2} \end{array}\right.fk(yi−1,yi,x,i)={tk(yi−1,yi,x,i),sl(yi,x,i),k=1,2,⋯,K1k=K1+l;l=1,2,⋯,K2
step 2
对转移与状态特征在各个位置i求和,记作
fk(y,x)=∑i=1nfk(yi−1,yi,x,i),k=1,2,⋯ ,Kf_{k}(y, x)=\sum_{i=1}^{n} f_{k}\left(y_{i-1}, y_{i}, x, i\right), \quad k=1,2, \cdots, Kfk(y,x)=i=1∑nfk(yi−1,yi,x,i),k=1,2,⋯,K
step 3
将 λx\lambda_{x}λx 和 μl\mu_{l}μl 用统一的权重表示,记作
wk={λk,k=1,2,⋯ ,K1μl,k=K1+l;l=1,2,⋯ ,K2w_{k}=\left\{\begin{array}{ll} \lambda_{k}, & k=1,2, \cdots, K_{1} \\ \mu_{l}, & k=K_{1}+l ; l=1,2, \cdots, K_{2} \end{array}\right.wk={λk,μl,k=1,2,⋯,K1k=K1+l;l=1,2,⋯,K2
step 4
转化后的条件随机场可表示为:
P(y∣x)=1Z(x)exp∑k=1Kwkfk(y,x)Z(x)=∑yexp∑k=1Kwkfk(y,x)\begin{aligned} P(y | x) &=\frac{1}{Z(x)} \exp \sum_{k=1}^{K} w_{k} f_{k}(y, x) \\ Z(x) &=\sum_{y} \exp \sum_{k=1}^{K} w_{k} f_{k}(y, x) \end{aligned}P(y∣x)Z(x)=Z(x)1expk=1∑Kwkfk(y,x)=y∑expk=1∑Kwkfk(y,x)
step 5
若 www 表示权重向量:
w=(w1,w2,...,wK)T w = (w_1,w_2,...,w_K)^T w=(w1,w2,...,wK)T
以 F(y,x)F(y,x)F(y,x) 表示特征向量,即
F(y,x)=(f1(y,x),f2(y,x),⋯ ,fK(y,x))TF(y, x)=\left(f_{1}(y, x), f_{2}(y, x), \cdots, f_{K}(y, x)\right)^{\mathrm{T}}F(y,x)=(f1(y,x),f2(y,x),⋯,fK(y,x))T
则,条件随机场写成内积形式为:
Pw(y∣x)=exp(w⋅F(y,x))Zw(x)Zw(x)=∑yexp(w⋅F(y,x))\begin{array}{c} P_{w}(y | x)=\frac{\exp (w \cdot F(y, x))}{Z_{w}(x)} \\ Z_{w}(x)=\sum_{y} \exp (w \cdot F(y, x)) \end{array}Pw(y∣x)=Zw(x)exp(w⋅F(y,x))Zw(x)=∑yexp(w⋅F(y,x))
学习问题
这里主要介绍一下 BFGS 算法的思路。
输入:特征函数 f1,f2,...,fnf_1,f_2,...,f_nf1,f2,...,fn:经验分布 P~(X,Y)\widetilde{P}(X,Y)P(X,Y);
输出:最优参数值 w^\widehat{w}w,最优模型Pw^(y∣x)P_{\widehat{w}}(y|x)Pw(y∣x)。
- 选定初始点 w^{(0)}, 取 B0B_0B0 为正定对称矩阵,k = 0;
- 计算 gk=g(w(k))g_k = g(w^(k))gk=g(w(k)),若 gk=0g_k = 0gk=0 ,则停止计算,否则转 (3) ;
- 利用 Bkpk=−gkB_k p_k = -g_kBkpk=−gk 计算 pkp_kpk;
- 一维搜索:求 λk\lambda_kλk使得
f(w(k)+λkpk)=minλ>0f(w(k)+λpk)f\left(w^{(k)}+\lambda_{k} p_{k}\right)=\min _{\lambda>0} f\left(w^{(k)}+\lambda p_{k}\right)f(w(k)+λkpk)=λ>0minf(w(k)+λpk)
-
设 w(k+1)=w(k)+λk∗pkw^{(k+1)} = w^{(k)} + \lambda_k * p_kw(k+1)=w(k)+λk∗pk
-
计算 gk+1g_{k+1}gk+1 = g(w^{(k+1)}),
若 gk=0g_k = 0gk=0, 则停止计算;否则,利用下面公式计算 Bk+1B_{k+1}Bk+1:
Bk+1=Bk+ykykTykTδk−BkδkδkTBkδkTBkδkyk=gk+1−gk,δk=w(k+1)−w(k)\begin{aligned}
&B_{k+1}=B_{k}+\frac{y_{k} y_{k}^{\mathrm{T}}}{y_{k}^{\mathrm{T}} \delta_{k}}-\frac{B_{k} \delta_{k} \delta_{k}^{\mathrm{T}} B_{k}}{\delta_{k}^{\mathrm{T}} B_{k} \delta_{k}}\\
&y_{k}=g_{k+1}-g_{k}, \quad \delta_{k}=w^{(k+1)}-w^{(k)}
\end{aligned}Bk+1=Bk+ykTδkykykT−δkTBkδkBkδkδkTBkyk=gk+1−gk,δk=w(k+1)−w(k)
7. 令 k=k+1k=k+1k=k+1,转步骤(3);
预测问题
对于预测问题,常用的方法是维特比算法,其思路如下:
输入:模型特征向量 F(y,x)F(y,x)F(y,x) 和权重向量 www,输入序列(观测序列) x=x1,x2,...,xnx={x_1,x_2,...,x_n}x=x1,x2,...,xn;
输出:条件概率最大的输出序列(标记序列)y∗=(y1∗,y2∗,...,yn∗)y^{*}= (y_1^*,y_2^*,...,y_n^*)y∗=(y1∗,y2∗,...,yn∗),也就是最优路径;
- 初始化
δ1(j)=w⋅F1(y0=start,y1=j,x),j=1,2,⋯ ,m\delta_{1}(j)=w \cdot F_{1}\left(y_{0}=\operatorname{start}, y_{1}=j, x\right), \quad j=1,2, \cdots, mδ1(j)=w⋅F1(y0=start,y1=j,x),j=1,2,⋯,m
Ψi(l)=argmax1⩽j⩽m{δt−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,⋯ ,m\Psi_{i}(l)=\arg \max _{1 \leqslant j \leqslant m}\left\{\delta_{t-1}(j)+w \cdot F_{i}\left(y_{i-1}=j, y_{i}=l, x\right)\right\}, \quad l=1,2, \cdots, mΨi(l)=arg1⩽j⩽mmax{δt−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,⋯,m
- 递推,对i=2,3,...,ni=2,3,...,ni=2,3,...,n
δi(l)=max1∈j⩽m{δt−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,⋯ ,m\delta_{i}(l)=\max _{1 \in j \leqslant m}\left\{\delta_{t-1}(j)+w \cdot F_{i}\left(y_{i-1}=j, y_{i}=l, x\right)\right\}, \quad l=1,2, \cdots, mδi(l)=1∈j⩽mmax{δt−1(j)+w⋅Fi(yi−1=j,yi=l,x)},l=1,2,⋯,m
- 终止
maxy(w⋅F(y,x))=max1≤j⩽mδn(j)yn∗=argmax1⩽j⩽mδn(j)\begin{array}{c} \max _{y}(w \cdot F(y, x))=\max _{1 \leq j \leqslant m} \delta_{n}(j) \\ y_{n}^{*}=\arg \max _{1 \leqslant j \leqslant m} \delta_{n}(j) \end{array}maxy(w⋅F(y,x))=max1≤j⩽mδn(j)yn∗=argmax1⩽j⩽mδn(j)
- 返回路径
yi∗=Ψi+1(yi+1∗),i=n−1,n−2,⋯ ,1y_{i}^{*}=\Psi_{i+1}\left(y_{i+1}^{*}\right), \quad i=n-1, n-2, \cdots, 1yi∗=Ψi+1(yi+1∗),i=n−1,n−2,⋯,1
求得最优路径 y∗=(y1∗,y2∗,...,yn∗)y^{*}= (y_1^*,y_2^*,...,y_n^*)y∗=(y1∗,y2∗,...,yn∗)
例子说明
利用维特比算法计算给定输入序列xxx 对应的最优输出序列y∗y^*y∗:
max∑i=13w⋅Fi(yi−1,yi,x)\max \sum_{i=1}^{3} w \cdot F_{i}\left(y_{i-1}, y_{i}, x\right)maxi=1∑3w⋅Fi(yi−1,yi,x)
- 初始化
δ1(j)=w⋅F1(y0=start,y1=j,x),j=1,2i=1,δ1(1)=1,δ1(2)=0.5\begin{array}{l} \delta_{1}(j)=w \cdot F_{1}\left(y_{0}=\operatorname{start}, y_{1}=j, x\right), \quad j=1,2 \\ i=1, \quad \delta_{1}(1)=1, \quad \delta_{1}(2)=0.5 \end{array}δ1(j)=w⋅F1(y0=start,y1=j,x),j=1,2i=1,δ1(1)=1,δ1(2)=0.5
- 递推,对i=2,3,...,ni=2,3,...,ni=2,3,...,n
i=2δ2(l)=max{δ1(j)+w⋅F2(j,l,x)}δ2(1)=max{1+λ2t2,0.5+λ4t4}=1.6,Ψ2(1)=1δ2(2)=max{1+λ1t1+μ2s2,0.5+μ2s2}=2.5,Ψ3(2)=1i=32δ3(l)=maxj{δ2(j)+w⋅F3(j,l,x)}δ3(1)=max{1.6+μ5s5,2.5+λt3+μ3s3}=4.3,Ψ3(1)=2δ3(2)=max{1.6+λt1+μ4s4,2.5+λ5t5+μ4s4}=3.2,Ψ3(2)=1\begin{array}{c} i=2 \quad \delta_{2}(l)=\max \left\{\delta_{1}(j)+w \cdot F_{2}(j, l, x)\right\} \\ \delta_{2}(1)=\max \left\{1+\lambda_{2} t_{2}, 0.5+\lambda_{4} t_{4}\right\}=1.6, \quad \Psi_{2}(1)=1 \\ \delta_{2}(2)=\max \left\{1+\lambda_{1} t_{1}+\mu_{2} s_{2}, 0.5+\mu_{2} s_{2}\right\}=2.5, \quad \Psi_{3}(2)=1 \\ i=3^{2} \delta_{3}(l)=\max _{j}\left\{\delta_{2}(j)+w \cdot F_{3}(j, l, x)\right\} \\ \delta_{3}(1)=\max \left\{1.6+\mu_{5} s_{5}, 2.5+\lambda t_{3}+\mu_{3} s_{3}\right\}=4.3, \quad \Psi_{3}(1)=2 \\ \delta_{3}(2)=\max \left\{1.6+\lambda t_{1}+\mu_{4} s_{4}, 2.5+\lambda_{5} t_{5}+\mu_{4} s_{4}\right\}=3.2, \quad \Psi_{3}(2)=1 \end{array}i=2δ2(l)=max{δ1(j)+w⋅F2(j,l,x)}δ2(1)=max{1+λ2t2,0.5+λ4t4}=1.6,Ψ2(1)=1δ2(2)=max{1+λ1t1+μ2s2,0.5+μ2s2}=2.5,Ψ3(2)=1i=32δ3(l)=maxj{δ2(j)+w⋅F3(j,l,x)}δ3(1)=max{1.6+μ5s5,2.5+λt3+μ3s3}=4.3,Ψ3(1)=2δ3(2)=max{1.6+λt1+μ4s4,2.5+λ5t5+μ4s4}=3.2,Ψ3(2)=1
- 终止
maxy(w⋅F(y,x))=maxδ3(l)=δ3(1)=4.3y3∗=argmax1δ3(l)=1\begin{array}{c}
\max _{y}(w \cdot F(y, x))=\max \delta_{3}(l)=\delta_{3}(1)=4.3 \\
y_{3}^{*}=\arg \max _{1} \delta_{3}(l)=1
\end{array}maxy(w⋅F(y,x))=maxδ3(l)=δ3(1)=4.3y3∗=argmax1δ3(l)=1
4. 返回路径
y2∗=Ψ3(y3∗)=Ψ3(1)=2y1∗=Ψ2(y2∗)=Ψ2(2)=1\begin{array}{l} y_{2}^{*}=\Psi_{3}\left(y_{3}^{*}\right)=\Psi_{3}(1)=2 \\ y_{1}^{*}=\Psi_{2}\left(y_{2}^{*}\right)=\Psi_{2}(2)=1 \end{array}y2∗=Ψ3(y3∗)=Ψ3(1)=2y1∗=Ψ2(y2∗)=Ψ2(2)=1
求得最优路径 y∗=(y1∗,y2∗,...,yn∗)=(1,2,1)y^{*}= (y_1^*,y_2^*,...,y_n^*) = (1,2,1)y∗=(y1∗,y2∗,...,yn∗)=(1,2,1)
本文深入探讨了条件随机场(CRF)在序列标注任务中的应用,对比了其与隐马尔科夫模型(HMM)的区别,详细介绍了CRF的定义、参数化形式、学习与预测算法。并通过实例说明了维特比算法如何找到最优输出序列。

188

被折叠的 条评论
为什么被折叠?



