文章目录
- 1. 概率无向图模型
- 1.1 模型定义
- 1.2 概率无向图模型的因子分解
- 2. 条件随机场的定义与形成
- 2.1 条件随机场的定义
- 2.2 条件随机场的参数化形式
- 例题
- 2.3 条件随机场的简化形式
- 2.4 条件随机场的矩阵形式
- 例题
- 3. 条件随机场的概率计算问题
- 3.1 前向-后向算法
- 3.2 概率计算
- 3.3 期望值的计算
- 4. 条件随机场的学习算法
- 5. 条件随机场的预测算法
- 例题
- 例题python代码
1. 概率无向图模型
概率无向图模型(probabilistic undirected graphical model),又称为马尔可夫随机场(Markov random field),是一个可以由无向图表示的联合概率分布。
1.1 模型定义
图Graph包含顶点node、边edge,无向图指的是边没有方向的图。
概率图模型指的是,图中的边表示随机变量之间的概率依赖关系。
无向图表示的随机变量之间存在 成对马尔科夫性、局部马尔科夫性、全局马尔科夫性 。
- 成对马尔可夫性
任意不相连的两个结点 u,vu,vu,v 分别对应随机变量 Yu,YvY_u,Y_vYu,Yv 。其他所有结点为 OOO, 对应随机变量组为 YOY_OYO。
成对马尔可夫性指:P(Yu,Yv∣YO)=P(Yu∣YO)P(Yv∣YO)\color{red}P(Y_u,Y_v|Y_O) = P(Y_u|Y_O)P(Y_v|Y_O)P(Yu,Yv∣YO)=P(Yu∣YO)P(Yv∣YO) - 局部马尔可夫性
设 vvv 是无向图中任意一个结点,WWW 是与 vvv 有连接的所有结点,OOO 是 vvv 和 WWW 以外的其他所有结点。
局部马尔可夫性指:P(Yv,YO∣YW)=P(Yv∣YW)P(YO∣YW)\color{red}P(Y_v,Y_O|Y_W) = P(Y_v|Y_W)P(Y_O|Y_W)P(Yv,YO∣YW)=P(Yv∣YW)P(YO∣YW)
在 P(YO∣YW)>0P(Y_O|Y_W) > 0P(YO∣YW)>0 时,上式等价于 P(Yv∣YW)=P(Yv∣YW,YO)\color{red}P(Y_v|Y_W) = P(Y_v|Y_W,Y_O)P(Yv∣YW)=P(Yv∣YW,YO)
- 全局马尔可夫性
设结点集合 A,BA,BA,B 是图中被结点集合 CCC 分开的任意结点集合
全局马尔可夫性指:P(YA,YB∣YC)=P(YA∣YC)P(YB∣YC)\color{red}P(Y_A,Y_B|Y_C) = P(Y_A|Y_C)P(Y_B|Y_C)P(YA,YB∣YC)=P(YA∣YC)P(YB∣YC)
上述成对的、局部的、全局的马尔可夫性定义是等价的
1.2 概率无向图模型的因子分解
团与最大团 的定义:
任何两个结点均有连接的结点子集称为团,若 CCC 是无向图的一个团,且不能再加进任何一个结点使其成为一个更大的团,则称 CCC 为最大团(maximal clique)
例如,上图中2个结点组成的团有5个 {Y1,Y2},{Y2,Y3},{Y3,Y4},{Y4,Y2},{Y1,Y3}\{Y_1,Y_2\}, \{Y_2,Y_3\}, \{Y_3,Y_4\}, \{Y_4,Y_2\}, \{Y_1,Y_3\}{Y1,Y2},{Y2,Y3},{Y3,Y4},{Y4,Y2},{Y1,Y3},有2个最大团 {Y1,Y2,Y3},{Y2,Y3,Y4}\{Y_1,Y_2,Y_3\}, \{Y_2,Y_3,Y_4\}{Y1,Y2,Y3},{Y2,Y3,Y4}。
而 {Y1,Y2,Y3,Y4}\{Y_1,Y_2,Y_3,Y_4\}{Y1,Y2,Y3,Y4} 不是一个团,因为 Y1Y_1Y1 和 Y4Y_4Y4 没有边连接。
将概率无向图模型的联合概率分布表示为其 最大团 上的随机变量的函数的乘积形式的操作,称为 概率无向图模型的因子分解(factorization) 。
给定概率无向图模型,CCC 是图 GGG 上的最大团,YCY_CYC 表示 CCC 对应的随机变量。那么,概率无向图模型的联合概率分布 P(Y)P(Y)P(Y) 可写作所有最大团 CCC 上的函数 Ψ(YC)\Psi(Y_C)Ψ(YC) 的乘积形式:
P(Y)=1Z∏CΨC(YC),其中Z=∑Y∏CΨC(YC)是规范化因子\color{red}P(Y) = \frac{1}{Z} \prod\limits_C \Psi_C(Y_C),\quad 其中Z=\sum\limits_Y \prod\limits_C \Psi_C(Y_C)是规范化因子 P(Y)=Z1C∏ΨC(YC),其中Z=Y∑C∏ΨC(YC)是规范化因子
函数 ΨC(YC)\Psi_C(Y_C)ΨC(YC) 称为势函数(potential function),通常定义为指数函数 ΨC(YC)=exp{−E(YC)}\Psi_C(Y_C) = \exp \{-E(Y_C)\}ΨC(YC)=exp{−E(YC)}
2. 条件随机场的定义与形成
2.1 条件随机场的定义
条件随机场:
设 XXX 与 YYY 是随机变量,P(Y∣X)P(Y|X)P(Y∣X) 是在给定 XXX 的条件下 YYY 的条件概率分布。若随机变量 YYY 构成一个无向图的马尔科夫随机场,即:
P(Yv∣X,Yω,ω≠v)=P(Yv∣X,Yω,ω∼v)\color{red}P(Y_v|X,Y_\omega, \omega \neq v) = P(Y_v|X,Y_\omega,\omega \sim v) P(Yv∣X,Yω,ω=v)=P(Yv∣X,Yω,ω∼v)
左边表示,条件里是多个 YωY_\omegaYω, 且 ω≠v\omega \neq vω=v;右边是多个 YωY_\omegaYω, 且 ω\omegaω 都与 vvv 相连。则称条件概率分布 P(Y∣X)P(Y|X)P(Y∣X) 为条件随机场。
线性链条件随机场:
P(Yi∣X,Y1,...,Yi−1,Yi+1,...,Yn)=P(Yi∣X,Yi−1,Yi+1)i=1,2,...,n(在i=1,n时只考虑单边)\color{red}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=1,n时只考虑单边) P(Yi∣X,Y1,...,Yi−1,Yi+1,...,Yn)=P(Yi∣X,Yi−1,Yi+1)i=1,2,...,n(在i=1,n时只考虑单边)
则称条件概率分布 P(Y∣X)P(Y|X)P(Y∣X) 为线性链条件随机场。在标注问题中,XXX 表示输入观测序列,YYY 表示对应的输出标记序列或状态序列。
2.2 条件随机场的参数化形式
根据上面,可以给出线性链条件随机场 P(Y∣X)P(Y|X)P(Y∣X) 的因子分解式,各因子是定义在相邻两个结点(最大团)上的势函数。在随机变量 XXX 取值为 xxx 的条件下,随机变量 YYY 取值为 yyy 的条件概率具有如下形式:
P(y∣x)=1Z(x)exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))其中,Z(x)=∑yexp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))\begin{aligned} \color{red}P(y|x) &\color{red}= \frac{1}{Z(x)} \exp \Bigg( \sum\limits_{i,k} \lambda_k t_k (y_{i-1},y_i,x,i) + \sum\limits_{i,l} \mu_ls_l(y_i,x,i)\Bigg)\\ 其中,Z(x) &= \sum\limits_y \exp \Bigg( \sum\limits_{i,k} \lambda_k t_k (y_{i-1},y_i,x,i) + \sum\limits_{i,l} \mu_ls_l(y_i,x,i)\Bigg) \end{aligned} P(y∣x)其中,Z(x)=Z(x)1exp(i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i))=y∑exp(i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i))
式中,tk,slt_k,s_ltk,sl 是特征函数,λk,μl\lambda_k,\mu_lλk,μl 是对应权值。Z(x)Z(x)Z(x) 是规范化因子。
- tk\color{red} t_ktk 是边上的特征函数,称为转移特征,依赖于当前和前一个位置
- sl\color{red} s_lsl 是结点特征函数,称为状态特征,依赖于当前位置
- tk,sl\color{red} t_k, s_ltk,sl 都依赖于位置,是局部特征函数。函数取值 1 或者 0
- 条件随机场完全由 tk,slt_k,s_ltk,sl 特征函数,λk,μl\lambda_k,\mu_lλk,μl 对应权值 确定
- 线性链条件随机场是对数线性模型(log linear model)
例题
设有一标注问题:输入观测序列 X=(X1,X2,X3)X=(X_1,X_2,X_3)X=(X1,X2,X3),输出标记序列 Y=(Y1,Y2,Y3)Y=(Y_1,Y_2,Y_3)Y=(Y1,Y2,Y3),Y1,Y2,Y3Y_1,Y_2,Y_3Y1,Y2,Y3 取值于 Y={1,2}\mathcal{Y} = \{1,2\}Y={1,2}.
假设特征 tk,slt_k,s_ltk,sl 和对应权值 λk,μl\lambda_k,\mu_lλk,μl 如下:
t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1,特征函数取值为1(其余条件取0)t2=t2(y1=1,y2=1,x,2),λ2=0.6t3=t3(y2=2,y3=1,x,3),λ3=1t4=t4(y1=2,y2=1,x,2),λ4=1t5=t5(y2=2,y3=2,x,3),λ5=0.2s1=s1(y1=1,x,1),μ1=1s2=s2(yi=2,x,i),i=1,2μ2=0.5s3=s3(yi=1,x,i),i=2,3μ3=0.8s4=s4(y3=2,x,3),μ4=0.5\begin{aligned} t_1&=t_1(y_{i-1}=1,y_i=2,x,i), i=2,3 , \lambda_1=1, 特征函数取值为1 (其余条件取0)\\ t_2 &= t_2(y_1=1,y_2=1,x,2), \quad\quad \lambda_2=0.6\\ t_3 &= t_3(y_2=2,y_3=1,x,3) ,\quad\quad \lambda_3=1\\ t_4 &= t_4(y_1=2,y_2=1,x,2) ,\quad\quad \lambda_4=1\\ t_5 &= t_5(y_2=2,y_3=2,x,3) ,\quad\quad \lambda_5=0.2\\ s_1 &= s_1(y_1=1,x,1), \quad\quad\quad\quad\quad \mu_1=1\\ s_2 &= s_2(y_i=2,x,i), i=1,2 \quad\quad \mu_2=0.5\\ s_3 &= s_3(y_i=1,x,i), i=2,3 \quad\quad \mu_3=0.8\\ s_4 &= s_4(y_3=2,x,3), \quad\quad\quad\quad\quad \mu_4=0.5 \end{aligned} t1t2t3t4t5s1s2s3s4=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1,特征函数取值为1(其余条件取0)=t2(y1=1,y2=1,x,2),λ2=0.6=t3(y2=2,y3=1,x,3),λ3=1=t4(y1=2,y2=1,x,2),λ4=1=t5(y2=2,y3=2,x,3),λ5=0.2=s1(y1=1,x,1),μ1=1=s2(yi=2,x,i),i=1,2μ2=0.5=s3(yi=1,x,i),i=2,3μ3=0.8=s4(y3=2,x,3),μ4=0.5
对给定的观测序列 xxx,求标记序列为 y=(y1,y2,y3)=(1,2,2)y=(y_1,y_2,y_3) = (1,2,2)y=(y1,y2,y3)=(1,2,2) 的非规范化条件概率(未除以规范化因子的条件概率)。
解:
由线性链条件随机场模型有:
P(y∣x)∝exp(∑i,kλktk(yi−1,yi,x,i)+∑i,lμlsl(yi,x,i))=exp[∑k=15λk∑i=23tk(yi−1,yi,x,i)+∑k=14μk∑i=13sk(yi,x,i)]=exp(1+0.2+1+0.5+0.5)=exp(3.2)\begin{aligned} P(y|x) &\propto \exp \Bigg( \sum\limits_{i,k} \lambda_k t_k (y_{i-1},y_i,x,i) + \sum\limits_{i,l} \mu_ls_l(y_i,x,i)\Bigg)\\ &= \exp \Bigg[\sum\limits_{k=1}^5 \lambda_k \sum\limits_{i=2}^3t_k (y_{i-1},y_i,x,i) + \sum\limits_{k=1}^4 \mu_k \sum\limits_{i=1}^3 s_k(y_i,x,i) \Bigg]\\ &= \exp (1+0.2+1+0.5+0.5) = \exp (3.2) \end{aligned} P(y∣x)∝exp(i,k∑λktk(yi−1,yi,x,i)+i,l∑μlsl(yi,x,i))=exp[k=1∑5λki=2∑3tk(yi−1,yi,x,i)+k=1∑4μki=1∑3sk(yi,x,i)]=exp(1+0.2+1+0.5+0.5)=exp(3.2)
2.3 条件随机场的简化形式
- 统一 K1K_1K1 个转移特征和 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(y_{i-1},y_i,x,i)=\left\{ \begin{aligned} t_k(y_{i-1},y_i,x,i), \quad\quad\quad\quad k=1,2,...,K_1 \\ s_l(y_i,x,i), \quad k=K_1+l; l=1,2,...,K_2 \end{aligned} \right. 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,...,K2
-
对转移和状态特征在各个位置 iii 求和,记作:
fk(y,x)=∑i=1nfk(yi−1,yi,x,i),k=1,2,...,Kf_k(y,x) = \sum\limits_{i=1}^n f_k(y_{i-1},y_i,x,i),k=1,2,...,K fk(y,x)=i=1∑nfk(yi−1,yi,x,i),k=1,2,...,K -
用 ωk\omega_kωk 表示特征 fk(y,x)f_k(y,x)fk(y,x) 的权值,即
ωk={λk,k=1,2,...,K1μl,k=K1+l;l=1,2,...,K2\omega_k=\left\{ \begin{aligned} \lambda_k, \quad\quad\quad\quad\quad\quad k=1,2,...,K_1 \\ \mu_l, \quad k=K_1+l; l=1,2,...,K_2 \end{aligned} \right. ωk={λk,k=1,2,...,K1μl,k=K1+l;l=1,2,...,K2 -
条件随机场可表示为
P(y∣x)=1Z(x)exp∑k=1Kωkfk(y,x)Z(x)=∑yexp∑k=1Kωkfk(y,x)P(y|x) = \frac{1}{Z(x)} \exp \sum\limits_{k=1}^K \omega_kf_k(y,x)\\ Z(x) = \sum\limits_y \exp \sum\limits_{k=1}^K \omega_kf_k(y,x)P(y∣x)=Z(x)1expk=1∑Kωkfk(y,x)Z(x)=y∑expk=1∑Kωkfk(y,x) -
用 ω\omegaω 表示权值向量,ω=(ω1,ω2,...,ωK)T\omega = (\omega_1,\omega_2,...,\omega_K)^Tω=(ω1,ω2,...,ωK)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) = (f_1(y,x),f_2(y,x),...,f_K(y,x))^TF(y,x)=(f1(y,x),f2(y,x),...,fK(y,x))T
-
条件随机场写成向量内积形式:
Pω(y∣x)=exp(ω⋅F(y,x))Zω(x),其中Zω(x)=∑yexp(ω⋅F(y,x))\color{red}P_\omega(y|x) = \frac{\exp (\omega \cdot F(y,x))}{Z_\omega(x)}, 其中Z_\omega(x)= \sum\limits_y\exp (\omega \cdot F(y,x))Pω(y∣x)=Zω(x)exp(ω⋅F(y,x)),其中Zω(x)=y∑exp(ω⋅F(y,x))
2.4 条件随机场的矩阵形式
-
在标记序列的两端添加首尾状态标记 y0=start、yn+1=stopy_0=start 、y_{n+1}=stopy0=start、yn+1=stop
-
引进 Mi(yi−1,yi∣x)=exp∑k=1Kwkfk(yi−1,yi,x,i),i=1,2,...,n+1M_i(y_{i−1},y_i|x) = \exp\sum \limits_{k=1}^K w_k f_k(y_{i−1},y_i,x,i),i=1,2,...,n+1Mi(yi−1,yi∣x)=expk=1∑Kwkfk(yi−1,yi,x,i),i=1,2,...,n+1,对比2.2节的表达式,可见该式少了对位置 iii 求和
-
对每个位置创建一个 m∗mm*mm∗m 的方阵(m为状态的个数,行为 i−1i-1i−1 位置的状态,列为 iii 位置的状态,值为 Mi(yi−1,yi∣x)M_i(y_{i−1},y_i|x)Mi(yi−1,yi∣x), 用矩阵 Mi(x)=[Mi(yi−1,yi∣x)]M_i(x) = [M_i(y_{i−1},y_i|x)]Mi(x)=[Mi(yi−1,yi∣x)] 来表示所有的情况)
-
又因为 ∏i[exp(∑k=1Kwkfk(yi−1,yi,x,i))]=exp(∑k=1Kwk∑ifk(yi−1,yi,x,i))\prod\limits_i \Bigg[ \exp \Bigg(\sum\limits_{k=1}^K w_k f_k(y_{i−1},y_i,x,i) \Bigg)\Bigg] = \exp \Bigg(\sum\limits_{k=1}^K w_k\sum\limits_i f_k(y_{i−1},y_i,x,i) \Bigg)i∏[exp(k=1∑Kwkfk(yi−1,yi,x,i))]=exp(k=1∑Kwki∑fk(yi−1,yi,x,i))
-
于是条件概率 Pω(y∣x)=1Zω(x)∏i=1n+1Mi(yi−1,yi∣x)\color{red}P_\omega(y|x) = \frac{1}{Z_\omega(x)} \prod\limits_{i=1}^{n+1} M_i(y_{i-1},y_i|x)Pω(y∣x)=Zω(x)1i=1∏n+1Mi(yi−1,yi∣x)
Zω(x)Z_\omega(x)Zω(x) 是规范化因子,是 n+1n+1n+1 个矩阵乘积的 (start,stop)(start,stop)(start,stop) 位置的元素,是路径 start,y1,y2,...,yn,stopstart,y_1,y_2,...,y_n,stopstart,y1,y2,...,yn,stop 所有可能的状态组合的非规范化概率之和。
Zω(x)=[M1(x)M2(x)⋅⋅⋅Mn+1(x)]start,stop\color{red} Z_\omega(x) = [M_1(x)M_2(x)\cdot\cdot\cdot M_{n+1}(x)]_{start,stop}Zω(x)=[M1(x)M2(x)⋅⋅⋅Mn+1(x)]start,stop
例题
假设有如下线性链条件随机场,观测序列 xxx , 状态序列 y,i=1,2,3,n=3y, \quad i=1,2,3,\quad n=3y,i=1,2,3,n=3, 标记 yi∈{1,2}y_i \in \{1,2\}yi∈{1,2}, 假设 y0=start=1,y4=stop=1y_0 = start = 1, y_4 = stop = 1y0=start=1,y4=stop=1,各个位置的随机矩阵 M1(x),M2(x),M3(x),M4(x)M_1(x),M_2(x),M_3(x),M_4(x)M1(x),M2(x),M3(x),M4(x) 是
求状态序列 yyy 以 startstartstart 为起点,stopstopstop 为终点所有路径的非规范化概率及规范化因子。
解:
所有可能的路径有 8 条:
各路径的非规范化概率是:
a01b11c11,a01b11c12,a01b12c21,a01b12c22a02b21c11,a02b21c12,a02b22c21,a02b22c22a_{01}b_{11}c_{11},\quad a_{01}b_{11}c_{12},\quad a_{01}b_{12}c_{21},\quad a_{01}b_{12}c_{22}\\ a_{02}b_{21}c_{11},\quad a_{02}b_{21}c_{12},\quad a_{02}b_{22}c_{21},\quad a_{02}b_{22}c_{22}a01b11c11,a01b11c12,a01b12c21,a01b12c22a02b21c11,a02b21c12,a02b22c21,a02b22c22
规范化因子 Zω(x)=[M1(x)M2(x)M3(x)M4(x)]1,1a01b11c11+a01b11c12+a01b12c21+a01b12c22+a02b21c11+a02b21c12+a02b22c21+a02b22c22Z_\omega(x) = [M_1(x)M_2(x) M_3(x)M_{4}(x)]_{1,1}\\ a_{01}b_{11}c_{11}+ a_{01}b_{11}c_{12}+ a_{01}b_{12}c_{21}+a_{01}b_{12}c_{22}+\\ a_{02}b_{21}c_{11}+ a_{02}b_{21}c_{12}+ a_{02}b_{22}c_{21}+a_{02}b_{22}c_{22}Zω(x)=[M1(x)M2(x)M3(x)M4(x)]1,1a01b11c11+a01b11c12+a01b12c21+a01b12c22+a02b21c11+a02b21c12+a02b22c21+a02b22c22
矩阵其他3个位置为 0 。可见规范化因子恰好等于所有路径的非规范化概率之和。
3. 条件随机场的概率计算问题
- 给定条件随机场 P(Y∣X)P(Y|X)P(Y∣X) ,输入序列 xxx,输出序列 yyy
- 计算条件概率 P(Yi=yi∣x),P(Yi−1=yi−1,Yi=yi∣x)P(Y_i = y_i|x),\quad P(Y_{i-1} = y_{i-1},Y_i = y_i|x)P(Yi=yi∣x),P(Yi−1=yi−1,Yi=yi∣x) 以及相应数学期望
类似HMM,引进前向-后向向量进行计算。
3.1 前向-后向算法
对每个位置 i=0,1,...,n+1i = 0,1,...,n+1i=0,1,...,n+1,定义前向向量 αi(x)\alpha_i(x)αi(x):
α0(y∣x)={1,y=start0,否则\alpha_0(y|x)=\left\{ \begin{aligned} 1, \quad y=start\\ 0, \quad\quad\quad 否则 \end{aligned} \right. α0(y∣x)={1,y=start0,否则
递归公式:
αiT(yi∣x)=αi−1T(yi−1∣x)[Mi(yi−1,yi∣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)],\quad i=1,2,...,n+1αiT(yi∣x)=αi−1T(yi−1∣x)[Mi(yi−1,yi∣x)],i=1,2,...,n+1
又可以表示为:αiT(x)=αi−1T(x)Mi(x)\color{red}\alpha_i^T(x) = \alpha_{i-1}^T(x)M_i(x)αiT(x)=αi−1T(x)Mi(x)
αi(yi∣x)\alpha_i(y_i|x)αi(yi∣x) 表示在位置 iii 的标记是 yiy_iyi 并且从 1 到 iii 的前部分标记序列的非规范化概率,yiy_iyi 可取的值有 mmm 个,所以 αi(x)\alpha_i(x)αi(x) 是 mmm 维列向量,TTT 表示转置。
同样,对每个位置 i=0,1,...,n+1i = 0,1,...,n+1i=0,1,...,n+1,定义后向向量 βi(x)\beta_i(x)βi(x):
βn+1(yn+1∣x)={1,yn+1=stop0,否则\beta_{n+1}(y_{n+1}|x)=\left\{ \begin{aligned} 1, \quad y_{n+1}=stop\\ 0, \quad\quad\quad\quad 否则 \end{aligned} \right. βn+1(yn+1∣x)={1,yn+1=stop0,否则
βi(yi∣x)=[Mi+1(yi,yi+1∣x)]βi+1(yi+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(x)=Mi+1(x)βi+1(x)\color{red} \beta_i(x) = M_{i+1}(x) \beta_{i+1}(x)βi(x)=Mi+1(x)βi+1(x)
βi(yi∣x)\beta_i(y_i|x)βi(yi∣x) 表示在位置 iii 的标记是 yiy_iyi 并且从 i+1i+1i+1 到 nnn 的后部分标记序列的非规范化概率。
3.2 概率计算
根据前后向向量的定义,可知:
P(Yi=yi∣x)=αiT(yi∣x)βi(yi∣x)Z(x)P(Yi−1=yi−1,Yi=yi∣x)=αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)Z(x)其中,Z(x)=αnT(x)1=1β1(x),1是元素均为1的m维列向量。P(Y_i = y_i|x) = \frac{\alpha_i^T(y_i|x) \beta_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)}\\ 其中,Z(x) = \alpha_n^T(x)\mathbf{1} = \mathbf{1}\beta_1(x),\mathbf{1}是元素均为1的m维列向量。 P(Yi=yi∣x)=Z(x)αiT(yi∣x)βi(yi∣x)P(Yi−1=yi−1,Yi=yi∣x)=Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)其中,Z(x)=αnT(x)1=1β1(x),1是元素均为1的m维列向量。
3.3 期望值的计算
-
特征函数 fkf_kfk 关于条件分布 P(Y∣X)P(Y|X)P(Y∣X) 的数学期望
EP(Y∣X)[fk]=∑yP(y∣x)fk(y,x)=∑yP(y∣x)∑i=1n+1fk(yi−1,yi,x,i)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)P(Yi−1=yi−1,Yi=yi∣x)=∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)Z(x)\begin{aligned} E_{P(Y|X)}[f_k] &= \sum_{y}P(y|x)f_k(y,x)\\ &= \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)P(Y_{i-1}=y_{i-1},Y_i=y_i|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{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−1yi∑fk(yi−1,yi,x,i)P(Yi−1=yi−1,Yi=yi∣x)=i=1∑n+1yi−1yi∑fk(yi−1,yi,x,i)Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)其中,k=1,2,...,Kk=1,2,...,Kk=1,2,...,K,Z(x)=αnT(x)1Z(x) = \alpha_n^T(x) \mathbf{1}Z(x)=αnT(x)1 -
假设边缘分布 P(X)P(X)P(X) 的经验分布为 P~(X)\tilde P(X)P~(X) ,特征函数 fkf_kfk 关于联合分布 P(X,Y)P(X,Y)P(X,Y) 的数学期望:
EP(X,Y)[fk]=∑x,yP(x,y)fk(y,x)=∑xP~(x)∑yP(y∣x)∑i=1n+1fk(yi−1,yi,x,i)=∑xP~(x)∑i=1n+1∑yi−1yifk(yi−1,yi,x,i)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)Z(x)\begin{aligned} E_{P(X,Y)}[f_k] &= \sum_{x,y}P(x,y)f_k(y,x)\\ &= \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{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−1yi∑fk(yi−1,yi,x,i)Z(x)αi−1T(yi−1∣x)Mi(yi−1,yi∣x)βi(yi∣x)其中,k=1,2,...,Kk=1,2,...,Kk=1,2,...,K,Z(x)=αnT(x)1Z(x) = \alpha_n^T(x) \mathbf{1}Z(x)=αnT(x)1
通过一次前向扫描计算 αi,Z(x)\alpha_i,\quad Z(x)αi,Z(x) ,一次后向扫描计算 βi\beta_iβi ,可以计算所有的概率、特征的期望
4. 条件随机场的学习算法
学习方法包括极大似然估计和正则化的极大似然估计。
具体的优化实现算法有改进的迭代尺度法IIS、梯度下降法、拟牛顿法。
看不懂(跳过)
5. 条件随机场的预测算法
给定条件随机场 P(Y∣X)P(Y|X)P(Y∣X) 和观测序列 xxx ,求条件概率最大的状态序列 y∗y^*y∗ 。与 HMM 类似,使用维特比算法。
由式 Pω(y∣x)=exp(ω⋅F(y,x))Zω(x)P_\omega(y|x) = \frac{\exp (\omega \cdot F(y,x))}{Z_\omega(x)}Pω(y∣x)=Zω(x)exp(ω⋅F(y,x)) 可得:
y∗=arg maxyPω(y∣x)=arg maxyexp(ω⋅F(y,x))Zω(x)=arg maxyexp(ω⋅F(y,x))=arg maxy(ω⋅F(y,x))\begin{aligned} y^* &= \argmax_y P_\omega(y|x)\\ &= \argmax_y \frac{\exp (\omega \cdot F(y,x))}{Z_\omega(x)}\\ &= \argmax_y \exp(\omega \cdot F(y,x))\\ &= \argmax_y (\omega \cdot F(y,x)) \end{aligned} y∗=yargmaxPω(y∣x)=yargmaxZω(x)exp(ω⋅F(y,x))=yargmaxexp(ω⋅F(y,x))=yargmax(ω⋅F(y,x))
- 预测问题变成求非规范化概率最大的最优路径问题:maxy(ω⋅F(y,x))\color{red}\max\limits_y (\omega \cdot F(y,x))ymax(ω⋅F(y,x))
其中:
ω=(ω1,ω2,...,ωK)TF(y,x)=(f1(y,x),f2(y,x),...,fK(y,x))Tfk(y,x)=∑i=1nfk(yi−1,yi,x,i),k=1,2,...,K\begin{aligned} \omega &= (\omega_1,\omega_2,...,\omega_K)^T\\ F(y,x) &= (f_1(y,x),f_2(y,x),...,f_K(y,x))^T\\ f_k(y,x) &= \sum\limits_{i=1}^nf_k(y_{i-1},y_i,x,i),\quad k=1,2,...,K \end{aligned} ωF(y,x)fk(y,x)=(ω1,ω2,...,ωK)T=(f1(y,x),f2(y,x),...,fK(y,x))T=i=1∑nfk(yi−1,yi,x,i),k=1,2,...,K
最优路径问题:maxy(ω⋅F(y,x))=maxy∑i=1nω⋅Fi(yi−1,yi,x)\color{red}\max\limits_y (\omega \cdot F(y,x)) = \max\limits_y \sum\limits_{i=1}^n\omega \cdot F_i(y_{i-1},y_i,x)ymax(ω⋅F(y,x))=ymaxi=1∑nω⋅Fi(yi−1,yi,x)
其中,Fi(yi−1,yi,x)=(f1(yi−1,yi,x,i),f2(yi−1,yi,x,i),...,fK(yi−1,yi,x,i))TF_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))^TFi(yi−1,yi,x)=(f1(yi−1,yi,x,i),f2(yi−1,yi,x,i),...,fK(yi−1,yi,x,i))T 是局部特征向量
维特比算法:
-
先求出位置 1 的各个状态 j=1,2,...,mj=1,2,...,mj=1,2,...,m 的非规范化概率:
δi(j)=ω⋅F1(y0=start,y1=j,x),j=1,2,...,m\delta_i(j) = \omega \cdot F_1(y_0 = start, y_1=j,x), \quad j=1,2,...,mδi(j)=ω⋅F1(y0=start,y1=j,x),j=1,2,...,m -
求出到位置 i=2,3,...,ni=2,3,...,ni=2,3,...,n 的各个状态 l=1,2,...,ml=1,2,...,ml=1,2,...,m 的非规范化概率的最大值,同时记录最大路径
δi(l)=max1≤j≤m{δi−1(j)+ω⋅Fi(yi−1=j,yi=l,x)},l=1,2,...,m\delta_i(l) = \max\limits_{1 \leq j \leq m} \{ \delta_{i-1}(j) + \omega \cdot F_i(y_{i-1}=j, y_i=l,x) \}, \quad l=1,2,...,mδi(l)=1≤j≤mmax{δi−1(j)+ω⋅Fi(yi−1=j,yi=l,x)},l=1,2,...,m
Ψi(l)=arg max1≤j≤m{δi−1(j)+ω⋅Fi(yi−1=j,yi=l,x)},l=1,2,...,m\Psi_i(l) = \argmax\limits_{1 \leq j \leq m} \{ \delta_{i-1}(j) + \omega \cdot F_i(y_{i-1}=j, y_i=l,x) \}, \quad l=1,2,...,mΨi(l)=1≤j≤margmax{δi−1(j)+ω⋅Fi(yi−1=j,yi=l,x)},l=1,2,...,m -
到 i=ni=ni=n 时终止,求得非规范化概率最大值 maxy(ω⋅F(y,x))=max1≤j≤mδn(j)\max\limits_y (\omega \cdot F(y,x)) = \max\limits_{1 \leq j \leq m} \delta_n(j)ymax(ω⋅F(y,x))=1≤j≤mmaxδn(j),最优路径终点 yn∗=arg max1≤j≤mδn(j)y_n^* = \argmax\limits_{1 \leq j \leq m} \delta_n(j)yn∗=1≤j≤margmaxδn(j)
-
由最优路径终点返回,yi∗=Ψi+1(yi+1∗),i=n−1,n−2,...,1y_i^* = \Psi_{i+1}(y_{i+1}^*), \quad i = n-1,n-2,...,1yi∗=Ψi+1(yi+1∗),i=n−1,n−2,...,1
-
求得最优路径 y∗=(y1∗,y2∗,...,yn∗)Ty^* = (y_1^*,y_2^*,...,y_n^*)^Ty∗=(y1∗,y2∗,...,yn∗)T
例题
设有一标注问题:输入观测序列 X=(X1,X2,X3)X=(X_1,X_2,X_3)X=(X1,X2,X3),输出标记序列 Y=(Y1,Y2,Y3)Y=(Y_1,Y_2,Y_3)Y=(Y1,Y2,Y3),Y1,Y2,Y3Y_1,Y_2,Y_3Y1,Y2,Y3 取值于 Y={1,2}\mathcal{Y} = \{1,2\}Y={1,2}.
假设特征 tk,slt_k,s_ltk,sl 和对应权值 λk,μl\lambda_k,\mu_lλk,μl 如下:
t1=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1,特征函数取值为1(其余条件取0)t2=t2(y1=1,y2=1,x,2),λ2=0.6t3=t3(y2=2,y3=1,x,3),λ3=1t4=t4(y1=2,y2=1,x,2),λ4=1t5=t5(y2=2,y3=2,x,3),λ5=0.2s1=s1(y1=1,x,1),μ1=1s2=s2(yi=2,x,i),i=1,2μ2=0.5s3=s3(yi=1,x,i),i=2,3μ3=0.8s4=s4(y3=2,x,3),μ4=0.5\begin{aligned} t_1&=t_1(y_{i-1}=1,y_i=2,x,i), i=2,3 , \lambda_1=1, 特征函数取值为1 (其余条件取0)\\ t_2 &= t_2(y_1=1,y_2=1,x,2), \quad\quad \lambda_2=0.6\\ t_3 &= t_3(y_2=2,y_3=1,x,3) ,\quad\quad \lambda_3=1\\ t_4 &= t_4(y_1=2,y_2=1,x,2) ,\quad\quad \lambda_4=1\\ t_5 &= t_5(y_2=2,y_3=2,x,3) ,\quad\quad \lambda_5=0.2\\ s_1 &= s_1(y_1=1,x,1), \quad\quad\quad\quad\quad \mu_1=1\\ s_2 &= s_2(y_i=2,x,i), i=1,2 \quad\quad \mu_2=0.5\\ s_3 &= s_3(y_i=1,x,i), i=2,3 \quad\quad \mu_3=0.8\\ s_4 &= s_4(y_3=2,x,3), \quad\quad\quad\quad\quad \mu_4=0.5 \end{aligned} t1t2t3t4t5s1s2s3s4=t1(yi−1=1,yi=2,x,i),i=2,3,λ1=1,特征函数取值为1(其余条件取0)=t2(y1=1,y2=1,x,2),λ2=0.6=t3(y2=2,y3=1,x,3),λ3=1=t4(y1=2,y2=1,x,2),λ4=1=t5(y2=2,y3=2,x,3),λ5=0.2=s1(y1=1,x,1),μ1=1=s2(yi=2,x,i),i=1,2μ2=0.5=s3(yi=1,x,i),i=2,3μ3=0.8=s4(y3=2,x,3),μ4=0.5
求给定的观测序列 xxx 对应的最优标记序列 y∗=(y1∗,y2∗,y3∗)y^* = (y_1^*,y_2^*,y_3^*)y∗=(y1∗,y2∗,y3∗)。
解:
-
初始化
δ1(j)=ω⋅F1(y0=start,y1=j,x),j=1,2i=1,δ1(1)=μ1s1=1,δ1(2)=μ2s2=0.5\delta_1(j) = \omega \cdot F_1(y_0 = start, y_1 = j, x), \quad j=1,2 \quad \quad \quad \quad \quad \quad \quad \quad \\ i=1, \quad \delta_1(1) = \mu_1s_1=1,\quad \delta_1(2) = \mu_2s_2 = 0.5 \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad \quad δ1(j)=ω⋅F1(y0=start,y1=j,x),j=1,2i=1,δ1(1)=μ1s1=1,δ1(2)=μ2s2=0.5 -
递推
i=2δ2(l)=maxj{δ1(j)+ω⋅F2(j,l,x)}δ2(1)=max{1+λ2t2+μ3s3,0.5+λ4t4+μ3s3}=max{2.4,2.3}=2.4Ψ2(1)=1δ2(2)=max{1+λ1t1+μ2s2,0.5+μ2s2}=max{2.5,1}=2.5Ψ2(2)=1i=3δ3(l)=maxj{δ2(j)+ω⋅F3(j,l,x)}δ3(1)=max{2.4+μ3s3,2.5+λ3t3+μ3s3}=max{3.2,4.3}=4.3Ψ3(1)=2δ3(2)=max{2.4+λ1t1+μ4s4,2.5+λ5t5+μ4s4}=max{3.9,3.2}=3.9Ψ3(2)=1\begin{aligned} i=2\quad \delta_2(l) &=\max\limits_j \{\delta_1(j) + \omega \cdot F_2(j,l,x)\}\\ \delta_2(1) &= \max\{1+\lambda_2t_2 + \mu_3s_3,\quad 0.5+\lambda_4t_4 + \mu_3s_3\} = \max\{2.4,2.3\} = 2.4\\ &\quad\Psi_2(1) = 1\\ \delta_2(2) &= \max\{1+\lambda_1t_1 + \mu_2s_2,\quad 0.5+ \mu_2s_2\} = \max\{2.5,1\} = 2.5\\ &\quad\Psi_2(2) = 1\\ i=3 \quad \delta_3(l) &=\max\limits_j \{\delta_2(j) + \omega \cdot F_3(j,l,x)\}\\ \delta_3(1) &= \max\{2.4+ \mu_3s_3,\quad 2.5+\lambda_3t_3 + \mu_3s_3\} = \max\{3.2,4.3\} = 4.3\\ &\quad\Psi_3(1) = 2\\ \delta_3(2) &= \max\{2.4+\lambda_1t_1 + \mu_4s_4,\quad 2.5+\lambda_5t_5 + \mu_4s_4\} = \max\{3.9,3.2\} = 3.9\\ &\quad\Psi_3(2) = 1\\ \end{aligned} i=2δ2(l)δ2(1)δ2(2)i=3δ3(l)δ3(1)δ3(2)=jmax{δ1(j)+ω⋅F2(j,l,x)}=max{1+λ2t2+μ3s3,0.5+λ4t4+μ3s3}=max{2.4,2.3}=2.4Ψ2(1)=1=max{1+λ1t1+μ2s2,0.5+μ2s2}=max{2.5,1}=2.5Ψ2(2)=1=jmax{δ2(j)+ω⋅F3(j,l,x)}=max{2.4+μ3s3,2.5+λ3t3+μ3s3}=max{3.2,4.3}=4.3Ψ3(1)=2=max{2.4+λ1t1+μ4s4,2.5+λ5t5+μ4s4}=max{3.9,3.2}=3.9Ψ3(2)=1 -
终止
maxy(ω⋅F(y,x))=maxδ3(l)=δ3(1)=4.3y3∗=arg maxlδ3(l)=1\max\limits_y(\omega \cdot F(y,x)) = \max \delta_3(l) = \delta_3(1) = 4.3\\ y_3^* = \argmax\limits_l \delta_3(l) = 1ymax(ω⋅F(y,x))=maxδ3(l)=δ3(1)=4.3y3∗=largmaxδ3(l)=1 -
返回
y2∗=Ψ3(y3∗)=Ψ3(1)=2y1∗=Ψ2(y2∗)=Ψ2(2)=1y_2^* = \Psi_3(y_3^*) = \Psi_3(1) = 2\\ y_1^* = \Psi_2(y_2^*) = \Psi_2(2) = 1 y2∗=Ψ3(y3∗)=Ψ3(1)=2y1∗=Ψ2(y2∗)=Ψ2(2)=1
所以最优状态序列为 y∗=(y1∗,y2∗,y3∗)=(1,2,1)y^* = (y_1^*,y_2^*,y_3^*)=(1,2,1)y∗=(y1∗,y2∗,y3∗)=(1,2,1)
例题python代码
# -*- coding:utf-8 -*-
# Python 3.7
# @Time: 2020/2/6 20:42
# @Author: Michael Ming
# @Website: https://michael.blog.csdn.net/
# @File: ConditionalRandomField_viterbi.py
import numpy as npdef viterbi(s, t):time = len(s)y_state = [0, 1] # 表示状态 1,2m = len(y_state) # 状态数量y_star = np.zeros((time), dtype=np.int32) # 最优路径delta = np.zeros((time, m)) # 最大概率矩阵(可以DP状态压缩)psi = np.zeros((time, m), dtype=np.int32) # 记录最优路径# 初始化deltadelta[0][0] = s[0][0]delta[0][1] = s[0][1]# 递推for i in range(1, time):for j in range(m):temp = [delta[i - 1][k] + s[i][j] + t[i][k][j] for k in range(m)]# i表示时间,从k状态转移到j状态psi[i][j] = np.argmax(temp) # 返回最大值的下标delta[i][j] = temp[psi[i][j]] # 最大的概率填入# 终止y_star[time - 1] = np.argmax(delta[time - 1])# 返回for i in range(time - 2, -1, -1):y_star[i] = psi[i + 1][y_star[i + 1]]return y_star, delta, psidef crf_viterbi():# 状态特征s = np.array([[1, 0.5],[0.8, 0.5],[0.8, 0.5]])# 转移特征t = np.array([[[0, 0],[0, 0]], # 辅助,使得后面序号方便[[0.6, 1],[1, 0]],[[0, 1],[1, 0.2]]])y_star, delta, psi = viterbi(s, t)print("最优路径:", y_star + 1) # +1表示所有的都+1,序号从1开始print("概率矩阵:\n", delta)psi[1:] += 1 # 序号从1开始,第0行没用print("Psi路径:\n", psi)if __name__ == '__main__':crf_viterbi()
运行结果,与上面一致。
最优路径: [1. 2. 1.]
概率矩阵:[[1. 0.5][2.4 2.5][4.3 3.9]]
Psi路径:[[0 0][1 1][2 1]]Process finished with exit code 0