统计学习方法 条件随机场

news2024/12/27 12:49:05

文章目录

  • 统计学习方法 条件随机场
    • 随机场
    • 马尔可夫随机场
      • 定义
      • 因子分解
    • 条件随机场
      • 定义
      • 参数化形式
      • 简化形式
      • 矩阵形式
    • 概率预测问题
      • 前向-后向算法
      • 概率的计算
      • 期望值的计算
    • 学习问题
      • 改进的迭代尺度法
      • 拟牛顿法
    • 解码问题

统计学习方法 条件随机场

学习李航的《统计学习方法》时,关于条件随机场的笔记。

条件随机场(conditional random filed, CRF)也是一个条件概率分布模型,即给定一组输入随机变量条件下另一组输出随机变量的条件概率分布,其特点是假设输出随机变量构成马尔可夫随机场。

这里仅仅讨论 CRF 在标注问题上的应用,因此主要讲述线性链条件随机场。此时模型形式为对数线性模型,其学习方法通常是极大似然估计或正则化的极大似然估计。

随机场

随机场:随机场是由若干个位置组成的整体,当给每一个位置中按照某种联合分布 P ( Y ) P(Y) P(Y) 随机赋予一个值之后,其全体就叫做随机场。例如,我们有一个十个词形成的句子需要做词性标注,这十个词每个词的词性可以在我们已知的词性集合(名词,动词等)中去选择,当我们为每个词选择完词性后,这就形成了一个随机场)。

马尔可夫随机场

马尔可夫随机场,也称概率无向图模型,是以无向图的形式表示联合概率分布。

马尔科夫随机场是随机场的特例,它假设随机场中某一个位置的赋值仅仅与和它相邻的位置的赋值有关,与其不相邻的位置的赋值无关。例如,我们假设所有词的词性只和它相邻的词的词性有关时,这个随机场就特化成一个马尔科夫随机场。

定义

概率无向图模型:设有联合概率分布 P ( Y ) P(Y) P(Y) Y ∈ Y Y\in\mathcal{Y} YY 是一组随机变量),由无向图 G = ( V , E ) G=(V,E) G=(V,E) 表示。在图 G G G 中,节点表示随机变量,边表示随机变量之间的依赖关系。如果联合概率分布 P ( Y ) P(Y) P(Y) 满足成对、局部或全局马尔可夫性,则称此联合概率分布 P ( Y ) P(Y) P(Y) 为概率无向图模型(或马尔可夫随机场)。

成对马尔可夫性:设 u u u v v v 是无向图 G G G 中任意两个没有边连接的节点,其分别对应随机变量 Y u Y_u Yu Y v Y_v Yv ,其他所有节点为 O O O ,对应的随机变量组为 Y O Y_O YO 。成对马尔可夫性是指给定 Y O Y_O YO 的条件下 Y u Y_u Yu Y v Y_v Yv 是条件独立的,即:
P ( Y u , Y v ∣ Y O ) = P ( Y u ∣ Y O ) P ( Y v ∣ Y O ) P(Y_u,Y_v|Y_O)=P(Y_u|Y_O)P(Y_v|Y_O) P(Yu,YvYO)=P(YuYO)P(YvYO)
局部马尔可夫性:设节点 v ∈ V v\in V vV W W W 是与 v v v 有边连接的所有节点, O O O 是除 v v v W W W 外的所有节点。局部马尔可夫性是指在给定 Y W Y_W YW 的条件下 Y v Y_v Yv Y O Y_O YO 是独立的,即:
P ( Y v , Y O ∣ Y W ) = P ( Y v ∣ Y W ) P ( Y O ∣ Y W ) P(Y_v,Y_O|Y_W)=P(Y_v|Y_W)P(Y_O|Y_W) P(Yv,YOYW)=P(YvYW)P(YOYW)
P ( Y O ∣ Y W ) > 0 P(Y_O|Y_W)\gt 0 P(YOYW)>0 时,也可以表示为(这样比较像 Markov 性):
P ( Y v ∣ Y O , Y W ) = P ( Y v ∣ Y W ) P(Y_v|Y_O,Y_W)=P(Y_v|Y_W) P(YvYO,YW)=P(YvYW)
请添加图片描述

全局马尔可夫性:设节点集合 A A A B B B 时在无向图中被节点集合 C C C 分开的任意节点集合(即删去 C C C 后, A A A B B B 不连通) 。全局马尔可夫性是指给定 Y C Y_C YC 条件下 Y A Y_A YA Y B Y_B YB 是条件独立的,即:
P ( Y A , Y B ∣ Y C ) = P ( Y A ∣ Y C ) P ( Y B ∣ Y C ) P(Y_A,Y_B|Y_C)=P(Y_A|Y_C)P(Y_B|Y_C) P(YA,YBYC)=P(YAYC)P(YBYC)

请添加图片描述

上述成对、局部、全局的马尔可夫性的定义是等价的。

因子分解

最大团:若 C C C 是无向图 G G G 的一个团,并且不能再加入任何一个 G G G 的节点使其成为一个更大的团,则称此 C C C 为最大团。注意, G G G 中的最大团往往不止一个,并不是最大团中的最大团才叫做最大团。

因子分解:将概率无向图的联合概率分布 P ( Y ) P(Y) P(Y) 表示为其最大团上的随机变量的函数的乘积形式的操作,称为概率无向图模型的因子分解。由以下定理来保证:

Hammersley-Clifford 定理:概率无向图的联合概率分布 P ( Y ) P(Y) P(Y) 可以表示为如下形式:对于所有最大图 C C C Y C Y_C YC 为某一最大图对应的随机变量序列,则:
P ( Y ) = 1 Z ∏ C Ψ C ( Y C ) P(Y)=\frac{1}{Z}\prod_{C}\Psi_C(Y_C) P(Y)=Z1CΨC(YC)
其中 Z Z Z 是规范化因子,为:
Z = ∑ Y ∏ C Ψ C ( Y C ) Z=\sum\limits_{Y}\prod_{C}\Psi_C(Y_C) Z=YCΨC(YC)
规范化因子保证 P ( Y ) P(Y) P(Y) 构成一个概率分布(对 Y Y Y 的和为 1)。函数 Ψ C ( Y C ) \Psi_C(Y_C) ΨC(YC) 称为势函数(potential function),要求势函数严格正,通常定义为指数函数:
Ψ C ( Y C ) = e − E [ Y C ] \Psi_C(Y_C)=\mathrm{e}^{-E[Y_C]} ΨC(YC)=eE[YC]

条件随机场

X X X Y Y Y 两种随机变量, X X X 一般是给定的,而 Y Y Y 则是在给定 X X X 的条件下的输出(在十个词的句子词性标注的例子中, X X X 是词, Y Y Y 是词性)。若 Y Y Y 形成马尔可夫随机场,则条件概率分布 P ( X ∣ Y ) P(X|Y) P(XY) 形成条件随机场。

这里主要介绍定义在线性链上的 CRF,可用于标注等问题。此时 Y Y Y 是输出变量,表示标记序列,也称为状态序列; X X X 是输入变量,表示要标注的观测序列。

  • 学习时,利用训练集,通过极大似然估计或正则化的极大似然估计得到条件概率模型 P ^ ( Y ∣ X ) \hat P(Y|X) P^(YX) ;
  • 预测时,对于给定的输入序列 x x x ,求出条件概率 P ^ ( y ∣ x ) \hat P(y|x) P^(yx) 最大的输出序列 y ^ \hat y y^

定义

条件随机场:设 X X X Y Y Y 是随机变量, P ( Y ∣ X ) P(Y|X) P(YX) 是在给定 X X X 的条件下 Y Y Y 的条件概率分布。若随机变量 Y Y Y 构成一个无向图 G = ( V , E ) G=(V,E) G=(V,E) 表示的马尔可夫随机场,即:
P ( Y v ∣ X , Y w , w ≠ v ) = P ( Y v ∣ X , Y w , w ∼ v ) P(Y_v|X,Y_w,w\not=v)=P(Y_v|X,Y_w,w\sim v) P(YvX,Yw,w=v)=P(YvX,Yw,wv)
对任意节点 v v v 成立,则条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 为条件随机场。其中 w ∼ v w\sim v wv 表示 G G G 中与节点 v v v 有边连接的节点。

本书考虑的无向图为线性链的情况,即:
G = ( V = {   1 , 2 , ⋯   , n   } ,    E = {   ( i , i + 1 ) ∣ i = 1 , 2 , ⋯   , n   } ) G=(V=\set{1,2,\cdots,n},\,\,E=\set{(i,i+1)|i=1,2,\cdots,n}) G=(V={1,2,,n},E={(i,i+1)i=1,2,,n})
请添加图片描述

一般假设 X X X Y Y Y 有相同的图结构, X = ( X 1 , X 2 , ⋯   , X n ) X=(X_1,X_2,\cdots,X_n) X=(X1,X2,,Xn) Y = ( Y 1 , Y 2 , ⋯   , Y n ) Y=(Y_1,Y_2,\cdots,Y_n) Y=(Y1,Y2,,Yn) ,此时最大团为相邻两个节点的集合:

请添加图片描述

线性链条件随机场:设 X = ( X 1 , X 2 , ⋯   , X n ) X=(X_1,X_2,\cdots,X_n) X=(X1,X2,,Xn) Y = ( Y 1 , Y 2 , ⋯   , Y n ) Y=(Y_1,Y_2,\cdots,Y_n) Y=(Y1,Y2,,Yn) 均为线性链表示的随机变量序列,若在给定随机变量序列 X X X 的条件下,随机变量序列 Y Y Y 的条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 构成条件随机场,即满足马尔可夫性:
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(Y_i|X,Y_1,\cdots,Y_{i-1},Y_{i+1},\cdots,Y_n)=P(Y_i|X,Y_{i-1},Y_{i+1}) \\ i=1,2,\cdots,n \quad (i=1\text{ 或 }n\text{时只考虑单边}) P(YiX,Y1,,Yi1,Yi+1,,Yn)=P(YiX,Yi1,Yi+1)i=1,2,,n(i=1  n时只考虑单边)
则称 P ( Y ∣ X ) P(Y|X) P(YX) 为线性条件随机场。在标注问题中, X X X 表述输入观测序列, Y Y Y 表示对应的输出标记序列或状态序列。

参数化形式

线性链条件随机场是对数线性模型。逻辑回归和最大熵模型也是对数线性模型,参考之前的笔记,可以理解下面的公式和特征函数:

线性链条件随机场的参数化形式 P ( Y ∣ X ) P(Y|X) P(YX) 具有以下形式:
P ( y ∣ x ) = 1 Z ( x ) exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) P(y|x)=\frac{1}{Z(x)}\exp \left( \sum\limits_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum\limits_{i,l}\mu_ls_l(y_i,x,i) \right) P(yx)=Z(x)1exp i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)
其中:
Z ( x ) = ∑ y exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , x , i ) ) Z(x)=\sum\limits_{y}\exp\left( \sum\limits_{i,k}\lambda_kt_k(y_{i-1},y_i,x,i)+\sum\limits_{i,l}\mu_ls_l(y_i,x,i) \right) Z(x)=yexp i,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)

  • t k t_k tk s l s_l sl 是特征函数, λ k \lambda_k λk μ l \mu_l μl 是对应的权值; t k t_k tk 是定义在边上的特征,称为转移特征 s l s_l sl 是定义在节点上的特征,称为状态特征
  • Z ( x ) Z(x) Z(x) 是规范化因子,求和是在所有可能的输出序列上进行的;
  • 特征函数参数中的 ’ i i i ’ 代表一个集合,即某个特征函数既可以描述某个位置的特征,也可以同时描述多个位置的特征;
  • CRF 的参数即权重 w w w ;学习时,给定训练集和特征函数,我们要学习出最佳的权重 w w w

:(从这个例子学习一下什么是特征)设有一个标注问题,输入观测序列为 X = ( X 1 , X 2 , X 3 ) X=(X_1,X_2,X_3) X=(X1,X2,X3) ,输出标记序列为 Y = ( Y 1 , Y 2 , Y 3 ) Y=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3) ,其中 Y i ∈ Y = {   1 , 2   } Y_i\in \mathcal{Y}=\set{1,2} YiY={1,2} 。假设特征有:
t 1 = t 1 ( y i − 1 = 1 , y i = 2 , x , i ) , i = 2 , 3 , λ 1 = 1 t_1=t_1(y_{i-1}=1,y_i=2,x,i),\quad i=2,3, \quad \lambda_1=1 t1=t1(yi1=1,yi=2,x,i),i=2,3,λ1=1
即:
t 1 ( y i − 1 , y i , x , i ) = { 1 , y i − 1 = 1 , y i = 2 , ∀ x , i = 2 , 3 0 , else t_1(y_{i-1},y_i,x,i)=\left\{ \begin{array}{ll} 1, & y_{i-1}=1,y_i=2,\forall x,i=2,3 \\ 0, & \text{else} \end{array} \right. t1(yi1,yi,x,i)={1,0,yi1=1,yi=2,x,i=2,3else
还有其他特征:
t 2 =   t 2 ( y 1 = 1 , y 2 = 1 , x , 2 ) λ 2 = 0.6 t 3 =   t 3 ( y 2 = 2 , y 3 = 1 , x , 3 ) λ 3 = 1 ⋯ s 1 =   s 1 ( y 1 = 1 , x , 1 ) μ 1 = 1 s 2 =   s 2 ( y i = 2 , x , i ) , i = 1 , 2 μ 2 = 0.5 ⋯ \begin{aligned} t_2=&\,t_2(y_1=1,y_2=1,x,2) & \lambda_2=0.6 \\ t_3=&\,t_3(y_2=2,y_3=1,x,3) & \lambda_3=1 \\ \cdots \\ s_1=&\,s_1(y_1=1,x,1) & \mu_1=1 \\ s_2=&\,s_2(y_i=2,x,i),i=1,2 & \mu_2=0.5 \\ \cdots \end{aligned} t2=t3=s1=s2=t2(y1=1,y2=1,x,2)t3(y2=2,y3=1,x,3)s1(y1=1,x,1)s2(yi=2,x,i),i=1,2λ2=0.6λ3=1μ1=1μ2=0.5

简化形式

我们简化特征函数,首先将转移特征和状态特征及其权值用统一的符号表示。设有 K 1 K_1 K1 个转移特征, K 2 K_2 K2 个状态特征, K = K 1 + K 2 K=K_1+K_2 K=K1+K2 ,记:
f k ( y i − 1 , y i , x , i ) = { t k ( y i − 1 , y i , x , i ) , k = 1 , 2 , ⋯   , K 1 s l ( y i , x , i ) , k = K 1 + l ;   l = 1 , 2 , ⋯   , K 2 f_k(y_{i-1},y_{i},x,i)=\left\{ \begin{array}{ll} t_k(y_{i-1},y_i,x,i), & k=1,2,\cdots,K_1 \\ s_l(y_i,x,i), & k=K_1+l; \,l=1,2,\cdots,K_2 \end{array} \right. fk(yi1,yi,x,i)={tk(yi1,yi,x,i),sl(yi,x,i),k=1,2,,K1k=K1+l;l=1,2,,K2
然后,对特征在各个位置 i i i 求和(将特征函数的计算有效地归纳到整个序列上,从而减少了计算的复杂度):
f k ( y , x ) = ∑ i = 1 n f k ( y i − 1 , y i , x , i ) , k = 1 , 2 , ⋯   , K f_k(y,x)=\sum\limits_{i=1}^{n}f_k(y_{i-1},y_i,x,i), \quad k=1,2,\cdots,K fk(y,x)=i=1nfk(yi1,yi,x,i),k=1,2,,K
w k w_k wk 表示特征 f k ( y , x ) f_k(y,x) fk(y,x) 的权值,即:
w k = { λ k , k = 1 , 2 , ⋯   , K 1 μ l , k = K 1 + l ;   l = 1 , 2 , ⋯   , K 2 w_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
于是,条件随机场可以表示为:
P ( y ∣ x ) =   1 Z ( x ) exp ⁡ ∑ k = 1 K w k f k ( y , x ) Z ( x ) =   ∑ y exp ⁡ ∑ k = 1 K w k f k ( y , x ) \begin{aligned} P(y|x)=&\, \frac{1}{Z(x)}\exp\sum\limits_{k=1}^{K}w_kf_k(y,x) \\ Z(x)=&\, \sum\limits_{y}\exp\sum\limits_{k=1}^{K}w_kf_k(y,x) \\ \end{aligned} P(yx)=Z(x)=Z(x)1expk=1Kwkfk(y,x)yexpk=1Kwkfk(y,x)
也可以写成向量内积的形式:
P w ( y ∣ x ) =   exp ⁡ ( w ⋅ F ( y , x ) ) Z w ( x ) Z ( x ) =   ∑ y exp ⁡ ( w ⋅ F ( y , x ) ) \begin{aligned} P_w(y|x)=&\, \frac{\exp{(w\cdot F(y,x))}}{Z_w(x)} \\ Z(x)=&\, \sum\limits_{y}\exp(w\cdot F(y,x)) \end{aligned} Pw(yx)=Z(x)=Zw(x)exp(wF(y,x))yexp(wF(y,x))
其中 w = ( w 1 , w 2 , ⋯   , w K ) T w=(w_1,w_2,\cdots,w_K)^\mathrm{T} w=(w1,w2,,wK)T F ( y , x ) = ( f 1 ( x , y ) , f 2 ( x , y ) , ⋯   , f K ( x , y ) ) T F(y,x)=(f_1(x,y),f_2(x,y),\cdots,f_K(x,y))^\mathrm{T} F(y,x)=(f1(x,y),f2(x,y),,fK(x,y))T

矩阵形式

对每个标记序列,引入额外的起点和终点状态标记 y 0 = start y_0=\text{start} y0=start y n + 1 = stop y_{n+1}=\text{stop} yn+1=stop ,有 start ,   stop ∈ Y \text{start},\,\text{stop}\in\mathcal{Y} start,stopY

对观测序列 x x x 的每一个位置 i = 1 , 2 , ⋯   , n + 1 i=1,2,\cdots,n+1 i=1,2,,n+1 ,定义一个 m m m 阶矩阵随机变量:
M i ( x ) = [ M i ( y i − 1 , y i ∣ x ) ] M_i(x)=[M_i(y_{i-1},y_i|x)] Mi(x)=[Mi(yi1,yix)]
矩阵随机变量的元素为:(即所有特征函数在该位置的权重之和的指数)
M i ( y i − 1 , y i ∣ x ) = exp ⁡ ( ∑ k = 1 K w k f k ( y i − 1 , y i , x , i ) ) M_i(y_{i-1},y_{i}|x)=\exp\left(\sum\limits_{k=1}^{K}w_kf_k(y_{i-1},y_i,x,i)\right) Mi(yi1,yix)=exp(k=1Kwkfk(yi1,yi,x,i))
这里并未规范化,但是也可以看作是转移概率。因此给定观测序列 x x x ,相应标记序列 y y y 的非规范化概率可以通过矩阵的乘积表示;则条件概率为规范化后的矩阵乘积:
P w ( y ∣ x ) = 1 Z w ( x ) ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) P_w(y|x)=\frac{1}{Z_w(x)}\prod_{i=1}^{n+1}M_{i}(y_{i-1},y_i|x) Pw(yx)=Zw(x)1i=1n+1Mi(yi1,yix)
其中, Z w ( x ) Z_w(x) Zw(x) 为规范化因子,是以 start 为起点 stop 为终点通过状态的所有路径 y 1 y 2 ⋯ y n y_1y_2\cdots y_n y1y2yn 的非规范化概率 ∏ i = 1 n + 1 M i ( y i − 1 , y i ∣ x ) \prod\limits_{i=1}^{n+1}M_{i}(y_{i-1},y_i|x) i=1n+1Mi(yi1,yix) 之和,即所有矩阵的乘积的第 start \text{start} start stop \text{stop} stop 列元素:
Z w ( x ) = [ M 1 ( x ) M 2 ( x ) ⋯ M n + 1 ( x ) ] start,stop Z_w(x)=[M_1(x)M_2(x)\cdots M_{n+1}(x)]_{\text{start,stop}} Zw(x)=[M1(x)M2(x)Mn+1(x)]start,stop

概率预测问题

CRF 的概率预测问题即给定 P ( Y ∣ X ) P(Y|X) P(YX) ,输入序列 x x x 和输出序列 y y y ,计算条件概率 P ( Y i = y i ∣ x ) P(Y_i=y_i|x) P(Yi=yix) 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(Yi1=yi1,Yi=yix) 以及特征函数的数学期望的问题。计算方法和 HMM 类似,也需要前向和后向变量,递归地求解以上问题。

概率预测问题使用矩阵形式的 CRF;

前向-后向算法

对每个下标 i = 0 , 1 , ⋯   , n + 1 i=0,1,\cdots,n+1 i=0,1,,n+1 ,定义前向向量 α i ( x ) \alpha_i(x) αi(x) ;每个 α i ( x ) \alpha_i(x) αi(x) 都是一个向量,其下标分别对应 Y Y Y 某个可能的取值; Y Y Y 的取值有 m m m 个,因此 α i ( x ) \alpha_i(x) αi(x) m m m 维列向量。其中:
α 0 ( y ∣ x ) = { 1 , y = start 0 , else \alpha_0(y|x)=\left\{ \begin{array}{ll} 1, & y=\text{start} \\ 0, & \text{else} \end{array} \right. α0(yx)={1,0,y=startelse
递推公式为:(因为定义 M M M 行下标为前一状态,列下标为下一状态,所以 α \alpha α 就变得麻烦,要取转置)
α i T ( x ) = α i − 1 T ( x ) M i ( x ) \alpha^{T}_i(x)=\alpha^{T}_{i-1}(x)M_i(x) αiT(x)=αi1T(x)Mi(x)
α i ( y i ∣ x ) \alpha_{i}(y_i|x) αi(yix) 表示到位置 i i i 的标记为 y i y_i yi 的非规范化概率。

同样地,定义后向向量 β i ( x ) \beta_i(x) βi(x)
β n + 1 ( y ∣ x ) = { 1 , y = stop 0 , else \beta_{n+1}(y|x)=\left\{ \begin{array}{ll} 1, & y=\text{stop} \\ 0, & \text{else} \end{array} \right. βn+1(yx)={1,0,y=stopelse
递推公式为:
β 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)
β i ( y i ∣ x ) \beta_{i}(y_i|x) βi(yix) 表示从后往前到位置 i i i 的标记为 y i y_i yi 的非规范化概率。

概率的计算

经过点的概率:在位置 i i i 为标记 y i y_i yi 的条件概率为:
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=yix)=Z(x)αiT(yix)βi(yix)
经过边的概率:在位置 i − 1 i-1 i1 和位置 i i i 是标记 y i − 1 y_{i-1} yi1 y i y_i yi 的概率为:
P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i = 1 T ( y i − 1 ∣ x ) M ( 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(y_{i-1},y_{i}|x)\beta_i(y_i|x)}{Z(x)} P(Yi1=yi1,Yi=yix)=Z(x)αi=1T(yi1x)M(yi1,yix)βi(yix)
其中规范因子可以用新的方法计算:
Z ( x ) = α n T ( x ) 1 = 1 β 1 ( x ) Z(x)=\alpha_n^T(x)\bold{1}=\bold{1}\beta_{1(x)} Z(x)=αnT(x)1=1β1(x)

期望值的计算

特征函数 f k f_k fk 关于条件分布 P ( Y ∣ X ) P(Y|X) P(YX) 的数学期望是(相当于给定 x x x 的期望):
$$
\begin{aligned}
E_{P(Y|X)}[f_k]
=&,\sum\limits_{y}P(y|x)f_k(y,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(y_{i-1},y_{i}|x)\beta_i(y_i|x)}{Z(x)} \
&, k=1,2,\cdots,K

\end{aligned}
KaTeX parse error: Can't use function '$' in math mode at position 10: 假设经验分布为 $̲\tilde P(X)$ ,特…
\begin{aligned}
E_{P(X,Y)}[f_k]
=&,\sum\limits_{x,y}P(x,y)\sum\limits_{i=1}^{n+1}f_k(y_{i-1},y_i,x,i) \
=&, \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}f_k(y_{i-1},y_i,x,i)\frac{\alpha_{i=1}{T}(y_{i-1}|x)M(y_{i-1},y_{i}|x)\beta_i(y_i|x)}{Z(x)} \
&, k=1,2,\cdots,K

\end{aligned}
$$
这两个期望是 ∈ [ 0 , 1 ] \in[0,1] [0,1] 的,因为如果该特征函数的 i i i 有多个取值,则需要对所有位置求平均。

特征函数的期望是用在 CRF 的学习问题中的,因为学习的目的是要让学习到的模型尽可能反映训练集的特征,二者对于特征函数的期望要尽可能相等。

学习问题

CRF 实际上是定义在时序数据上的对数线性模型,其学习问题主要是学习 P ( y ∣ x ) P(y|x) P(yx) ,学习方法常有极大似然估计和正则化的极大似然估计。具体的优化算法有 IIS、梯度下降法及拟牛顿法。

学习问题使用参数形式的 CRF(因为就是要学习参数)

改进的迭代尺度法

IIS 可以理解为,不断更新参数,从而使得学习到的模型尽可能反映数据集的特征,即二者特征的总数尽可能相等。

CRF 的 IIS 推导:已知训练集,则可知经验概率分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y) ; IIS 通过极大化训练数据的对数似然函数来求模型参数。训练数据的对数似然函数为(该似然函数的推导过程可以参考最大熵的笔记):
L ( w ) = L P ~ ( P w ) = log ⁡ ∏ x , y P w ( y ∣ x ) P ~ ( x , y ) = ∑ x , y P ~ ( x , y ) log ⁡ P w ( y ∣ x ) L(w)=L_{\tilde P}(P_w)=\log \prod_{x,y}P_w(y|x)^{\tilde P(x,y)}=\sum\limits_{x,y}\tilde P(x,y)\log P_w(y|x) L(w)=LP~(Pw)=logx,yPw(yx)P~(x,y)=x,yP~(x,y)logPw(yx)
带入 CRF 的参数形式可以得到:
$$
\begin{aligned}
L(w)
=&,\sum\limits_{x,y}\tilde P(x,y)\log P_w(y|x) \
=&,\sum\limits_{x,y} \left[ \tilde P(x,y)\sum\limits_{k=1}^{K}w_kf_k(y,x)

  • \tilde P(x,y)\log Z_w(x) \right] \
    =&, \frac{1}{N} \left( \sum\limits_{j=1}{N}\sum\limits_{k=1}{K}w_kf_k(y_j,x_j)-\sum\limits_{j=1}^{N}\log Z_w(x_j) \right)
    \end{aligned}
    $$

  • 第三个等号中,考虑以下经验概率分布的定义: P ~ ( x , y ) = v ( x , y ) N \tilde P(x,y)=\frac{v(x,y)}{N} P~(x,y)=Nv(x,y) ,即 ( x , y ) (x,y) (x,y) 出现的频数,所以我们直接将频数拆开;

训练集大小 N N N 与优化无关,因此直接将对数似然函数写作:
L ( w ) = ∑ j = 1 N ∑ k = 1 K w k f k ( y j , x j ) − ∑ j = 1 N log ⁡ Z w ( x j ) L(w)=\sum\limits_{j=1}^{N}\sum\limits_{k=1}^{K}w_kf_k(y_j,x_j)-\sum\limits_{j=1}^{N}\log Z_w(x_j) L(w)=j=1Nk=1Kwkfk(yj,xj)j=1NlogZw(xj)
IIS 通过迭代的方法不断优化对数似然函数该变量的下界,达到极大化对数似然函数的目的。假设模型的当前参数为 w = ( w 1 , w 2 . ⋯   , w K ) T w=(w_1,w_2.\cdots,w_K)^T w=(w1,w2.,wK)T ,增量为 δ = ( δ 1 , δ 2 , ⋯   , δ K ) T \delta=(\delta_1,\delta_2,\cdots,\delta_K)^T δ=(δ1,δ2,,δK)T ,更新参数向量为:
w + δ = ( w 1 + δ 1 , w 2 + δ 2 , ⋯   , w K + δ K ) w+\delta=(w_1+\delta_1,w_2+\delta_2,\cdots,w_K+\delta_K) w+δ=(w1+δ1,w2+δ2,,wK+δK)
IIS 依次求解两个方程得到 δ \delta δ (推导过程参考逻辑回归和最大熵的笔记);

转移特征 t k t_k tk 在经验概率下的期望为:
E P ~ [ t k ] =   ∑ x , y P ~ ( x , y ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) =   ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ k T ( x , y ) )   k = 1 , 2 , ⋯   , K 1 \begin{aligned} E_{\tilde P}[t_k] =&\, \sum\limits_{x,y}\tilde P(x,y)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i) \\ =&\, \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i) \exp(\delta_kT(x,y)) \\ &\, k=1,2,\cdots,K_1 \end{aligned} EP~[tk]==x,yP~(x,y)i=1n+1tk(yi1,yi,x,i)x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δkT(x,y))k=1,2,,K1
状态特征 s l s_l sl 在经验概率下的期望为:
E P ~ [ s l ] =   ∑ x , y P ~ ( x , y ) ∑ i = 1 n + 1 s l ( y i , x , i ) =   ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 s l ( y i , x , i ) exp ⁡ ( δ K 1 + l T ( x , y ) )   l = 1 , 2 , ⋯   , K 2 \begin{aligned} E_{\tilde P}[s_l] =&\, \sum\limits_{x,y}\tilde P(x,y)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i) \\ =&\, \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i) \exp(\delta_{K_1+l}T(x,y)) \\ &\, l=1,2,\cdots,K_2 \end{aligned} EP~[sl]==x,yP~(x,y)i=1n+1sl(yi,x,i)x,yP~(x)P(yx)i=1n+1sl(yi,x,i)exp(δK1+lT(x,y))l=1,2,,K2
这里, T ( x , y ) T(x,y) T(x,y) 是在数据 ( x , y ) (x,y) (x,y) 中出现所有特征的总和:
T ( x , y ) = ∑ k f k ( y , x ) = ∑ k = 1 K ∑ i = 1 n + 1 f k ( y i − 1 y i , x , i ) T(x,y)=\sum\limits_{k}f_k(y,x)=\sum\limits_{k=1}^{K}\sum\limits_{i=1}^{n+1}f_k(y_{i-1}y_i,x,i) T(x,y)=kfk(y,x)=k=1Ki=1n+1fk(yi1yi,x,i)
算法:条件随机场模型学习的改进的迭代尺度法

  • 输入:特征函数 t 1 ,   t 2 ,   ⋯   ,   t K 1 t_1,\,t_2,\,\cdots,\,t_{K_1} t1,t2,,tK1 s 1 ,   s 2 ,   ⋯   ,   s K 2 s_1,\,s_2,\,\cdots,\,s_{K_2} s1,s2,,sK2 ;训练集 T T T 和对应的经验分布 P ~ ( x , y ) \tilde P(x,y) P~(x,y)
  • 输出:参数估计 w ^ \hat w w^ ;模型 P w ^ P_{\hat w} Pw^
  1. 对所有 k ∈ {   1 , 2 , ⋯   , K   } k\in \set{1,2,\cdots,K} k{1,2,,K} ,取初值为 w k = 0 w_k=0 wk=0

  2. 求出 δ k \delta_k δk k = 1 , 2 , ⋯   , K k=1,2,\cdots,K k=1,2,,K

    1. 1 ≤ k ≤ K 1 1\leq k \leq K_1 1kK1 ,即对于转移特征的参数变化量, δ k \delta_k δk 为以下方程的解:

    ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ k T ( x , y ) ) = E P ~ [ t k ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp (\delta_kT(x,y))=E_{\tilde P}[t_k] x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δkT(x,y))=EP~[tk]

    1. k = K 1 + l ,   1 ≤ l ≤ K 2 k=K_1+l,\,1\leq l \leq K_2 k=K1+l,1lK2 ,即对于状态特征的参数变化量, δ K 1 + l \delta_{K_1+l} δK1+l 为以下方程的解:

    ∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 s l ( y i , x , i ) exp ⁡ ( δ K 1 + l T ( x , y ) ) = E P ~ [ s k ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i)\exp (\delta_{K_1+l}T(x,y))=E_{\tilde P}[s_k] x,yP~(x)P(yx)i=1n+1sl(yi,x,i)exp(δK1+lT(x,y))=EP~[sk]

  3. 更新 w k w_k wk 值: w k ← w k + δ k w_k \leftarrow w_k+\delta_k wkwk+δk

  4. 如果不是所有的 w k w_k wk 收敛,则重复算法;

算法 S:由于 T ( x , y ) T(x,y) T(x,y) 表示某个数据 ( x , y ) (x,y) (x,y) 中的特征总数,难以计算,我们可以定义一个松弛特征 S S S S S S 是一个足够大的常数,使得:
S ≥ max ⁡ x , y ∑ i = 1 n + 1 ∑ k = 1 K f k ( y i − 1 , y i , x , i ) S \geq \max_{x,y}\sum\limits_{i=1}^{n+1}\sum\limits_{k=1}^{K}f_k(y_{i-1},y_i,x,i) Sx,ymaxi=1n+1k=1Kfk(yi1,yi,x,i)
则每次更新参数时可以将 S S S 作为特征总数。

此时,对于转移特征 t k t_k tk δ k \delta_k δk 的更新方程为:
∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 t k ( y i − 1 , y i , x , i ) exp ⁡ ( δ k S ) = E P ~ [ t k ] ⇒ δ k = 1 S log ⁡ E P ~ [ t k ] E P [ t k ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}t_k(y_{i-1},y_i,x,i)\exp (\delta_kS)=E_{\tilde P}[t_k] \\ \Rightarrow \delta_k=\frac{1}{S}\log \frac{E_{\tilde P}[t_k]}{E_P[t_k]} x,yP~(x)P(yx)i=1n+1tk(yi1,yi,x,i)exp(δkS)=EP~[tk]δk=S1logEP[tk]EP~[tk]
对于状态特征 s l s_l sl δ k \delta_k δk 的更新方程为:
∑ x , y P ~ ( x ) P ( y ∣ x ) ∑ i = 1 n + 1 s l ( y i , x , i ) exp ⁡ ( δ k S ) = E P ~ [ s l ] ⇒ δ k = 1 S log ⁡ E P ~ [ s l ] E P [ s l ] \sum\limits_{x,y}\tilde P(x)P(y|x)\sum\limits_{i=1}^{n+1}s_l(y_i,x,i)\exp (\delta_kS)=E_{\tilde P}[s_l] \\ \Rightarrow \delta_k=\frac{1}{S}\log \frac{E_{\tilde P}[s_l]}{E_P[s_l]} x,yP~(x)P(yx)i=1n+1sl(yi,x,i)exp(δkS)=EP~[sl]δk=S1logEP[sl]EP~[sl]
其中 E P [ t k ] E_P[t_k] EP[tk] E P [ s l ] E_P[s_l] EP[sl] 的计算参考前面的概率计算问题。

算法 T :算法 S 中一次性选了一个很大的 S,会使得每次迭代时 δ \delta δ 都变大,算法收敛速度则会变慢。算法 T 则在 T ( x , y ) T(x,y) T(x,y) S S S 中折中选择了一个值:
T ( x ) = max ⁡ y T ( x , y ) T(x)=\max_{y}T(x,y) T(x)=ymaxT(x,y)
(后面什么 T ( x ) = t T(x)=t T(x)=t 的没看懂是什么意思,也不知道为什么说 T ( x ) T(x) T(x) 很容易计算)

拟牛顿法

CRF 的拟牛顿法推导:参考牛顿法和拟牛顿法的笔记。对于 CRF 的参数形式:(我们这里假设特征有 n n n 个,虽然前面都是假设特征有 K K K 个,但是牛顿法中 k k k 往往代表迭代的次数):
P ( y ∣ x ) =   exp ⁡ ∑ i = 1 n w i f i ( y , x ) ∑ y exp ⁡ ∑ i = 1 n w i f i ( y , x ) \begin{aligned} P(y|x)=&\, \frac{\exp\sum\limits_{i=1}^{n}w_if_i(y,x)} {\sum\limits_{y}\exp\sum\limits_{i=1}^{n}w_if_i(y,x)} \\ \end{aligned} P(yx)=yexpi=1nwifi(y,x)expi=1nwifi(y,x)
目标函数为对数似然函数,但牛顿法求的是极小值问题,因此取个负号。学习的优化目标函数是:
min ⁡ w ∈ R n f ( w ) =   − L ( w ) =   ∑ x P ~ ( x ) log ⁡ ∑ y exp ⁡ ( ∑ i = 1 n w i f i ( x , y ) ) − ∑ x , y P ~ ( x , y ) ∑ i = 1 n w i f i ( x , y ) \begin{aligned} \min\limits_{w\in\R^n} f(w)=&\,-L(w) \\ =&\,\sum\limits_{x}\tilde P(x)\log \sum\limits_{y}\exp \left( \sum\limits_{i=1}^{n}w_if_i(x,y)\right)-\sum\limits_{x,y}\tilde P(x,y)\sum\limits_{i=1}^{n}w_if_i(x,y) \end{aligned} wRnminf(w)==L(w)xP~(x)logyexp(i=1nwifi(x,y))x,yP~(x,y)i=1nwifi(x,y)
其梯度函数为:
g ( w i ) = ∑ x , y P ~ ( x ) P w ( y ∣ x ) f i ( x , y ) − E P ~ ( f i ) g(w_i)=\sum\limits_{x,y}\tilde P(x)P_w(y|x)f_i(x,y)-E_{\tilde P}(f_i) g(wi)=x,yP~(x)Pw(yx)fi(x,y)EP~(fi)
这个梯度其实就是模型的概率分布下和经验概率分布下第 i i i 个特征的期望之差;当梯度足够小时,我们就认为模型学习到了训练数据的特征。

算法:条件随机场模型学习的 BFGS 算法

  • 输入:特征函数 f 1 f_1 f1 f 2 f_2 f2 ⋯ \cdots f n f_n fn ,经验分布 P ~ ( X , Y ) \tilde P(X,Y) P~(X,Y) ,精度 ε \varepsilon ε
  • 输出:最优参数值 w ^ \hat w w^ ,最优模型 P w ^ ( Y ∣ X ) P_{\hat w}(Y|X) Pw^(YX)
  1. 选定初始点 w ( 0 ) w^{(0)} w(0) ,取 B 0 B_0 B0 为正定矩阵,置 k = 0 k=0 k=0
  2. 计算 g k = g ( w ( k ) ) g_k=g(w^{(k)}) gk=g(w(k)) ,若 ∥ g k ∥ < ε \|g_k\|\lt \varepsilon gk<ε ,则停止计算,返回参数值 w ^ = w ( k ) \hat w=w^{(k)} w^=w(k) 和最优模型 P w ^ ( Y ∣ X ) P_{\hat w}(Y|X) Pw^(YX)
  3. B k p k = − g k B_kp_k=-g_k Bkpk=gk 求得 p k p_k pk
  4. 一维搜索:求 λ k \lambda_k λk 使得:

f ( w ( k ) + λ k p k ) = min ⁡ λ ≥ 0 f ( w ( k ) + λ p k ) f(w^{(k)}+\lambda_kp_k)=\min\limits_{\lambda \geq 0} f(w^{(k)}+\lambda p_k) f(w(k)+λkpk)=λ0minf(w(k)+λpk)

  1. 更新 w ( k + 1 ) = w ( k ) + λ k p k w^{(k+1)}=w^{(k)}+\lambda_kp_k w(k+1)=w(k)+λkpk ;更新 B k + 1 B_{k+1} Bk+1

B k + 1 = B k + y k y k T y k T δ k − B k δ k δ k T B k δ k T B k δ k B_{k+1}=B_k+\frac{y_ky_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} Bk+1=Bk+ykTδkykykTδkTBkδkBkδkδkTBk

  1. k = k + 1 k=k+1 k=k+1 ,跳转至 2;

解码问题

解码问题也叫预测问题,是给定条件随机场 P ( Y ∣ X ) P(Y|X) P(YX) 和输入序列 (观测序列) x x x,求条件概率最大的输出序列(标记序列) y ∗ y^\ast y ,即对序列进行标注。CRF 的解码问题也是使用维特比算法,可以参考HMM 的笔记。

CRF 的 Viterbi 算法推导:有:
y ∗ =   arg ⁡ max ⁡ y P w ( y ∣ x ) =   arg ⁡ max ⁡ y exp ⁡ ( w ⋅ F ( y , x ) ) Z w ( x ) =   arg ⁡ max ⁡ y w ⋅ F ( y , x ) \begin{aligned} y^\ast =&\, \arg\max_yP_w(y|x) \\ =&\, \arg\max_y \frac{\exp(w\cdot F(y,x))}{Z_w(x)} \\ =&\, \arg\max_yw\cdot F(y,x) \end{aligned} y===argymaxPw(yx)argymaxZw(x)exp(wF(y,x))argymaxwF(y,x)
因此 CRF 的的解码问题变为求非规范化概率最大的最优路径问题。此时只需要计算非规范化概率,而不必计算概率,可以大大提高效率。

首先求出下标 1 1 1 的各个标记 j = 1 , 2 , ⋯   , m j=1,2,\cdots,m j=1,2,,m 的非规范化概率:
δ 1 ( j ) = w ⋅ F 1 ( y 0 = start ,   y 1 = j , x ) , j = 1 , 2 , ⋯   , m \delta_1(j)=w \cdot F_1(y_0=\text{start},\,y_1=j,x),\quad j=1,2,\cdots,m δ1(j)=wF1(y0=start,y1=j,x),j=1,2,,m
递推得到各个位置 i = 2 , 3 , ⋯ n i=2,3,\cdots n i=2,3,n 的各个标记 l = 1 , 2 , ⋯   , m l=1,2,\cdots,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 Ψ 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 \delta_i(l)=\max\limits_{1\leq j\leq m} \set{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)},\quad l=1,2,\cdots,m \\ \Psi_i(l)=\arg\max\limits_{1\leq j\leq m} \set{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)},\quad l=1,2,\cdots,m δi(l)=1jmmax{δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,,mΨi(l)=arg1jmmax{δi1(j)+wFi(yi1=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_y (w\cdot F(y,x))=\max\limits_{1\leq j\leq m}\delta_n(j) ymax(wF(y,x))=1jmmaxδn(j)
以及最优路径的终点:
y n ∗ = arg ⁡ max ⁡ 1 ≤ j ≤ m δ n ( j ) y^\ast_n=\arg\max_{1\leq j\leq m}\delta_n(j) yn=arg1jmmaxδn(j)
并回溯得到最优路径:
y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , ⋯   , 1 y^\ast_i=\Psi_{i+1}(y^\ast_{i+1}),\quad i=n-1,n-2,\cdots,1 yi=Ψi+1(yi+1),i=n1,n2,,1
求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , ⋯   , y n ∗ ) T y^\ast=(y^\ast_1,y^\ast_2,\cdots,y_n^\ast)^\mathrm{T} y=(y1,y2,,yn)T

算法:条件随机场预测的维特比算法

  • 输入:模型特征向量 F ( y , x ) F(y,x) F(y,x) 和权值向量 w w w ,观测序列 x = ( x 1 , x 2 , ⋯   , x n ) x=(x_1,x_2,\cdots,x_n) x=(x1,x2,,xn)
  • 输出: y ∗ = ( y 1 ∗ , y 2 ∗ , ⋯   , y n ∗ ) T y^\ast=(y^\ast_1,y^\ast_2,\cdots,y_n^\ast)^\mathrm{T} y=(y1,y2,,yn)T
  1. 初始化:

δ 1 ( j ) = w ⋅ F 1 ( y 0 = start ,   y 1 = j , x ) , j = 1 , 2 , ⋯   , m \delta_1(j)=w \cdot F_1(y_0=\text{start},\,y_1=j,x),\quad j=1,2,\cdots,m δ1(j)=wF1(y0=start,y1=j,x),j=1,2,,m

  1. 递推:对 i = 2 , 3 , ⋯   , n i=2,3,\cdots,n i=2,3,,n

δ i ( l ) = max ⁡ 1 ≤ j ≤ m {   δ i − 1 ( j ) + w ⋅ F i ( y i − 1 = j , y i = l , x )   } , l = 1 , 2 , ⋯   , m Ψ 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 \delta_i(l)=\max\limits_{1\leq j\leq m} \set{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)},\quad l=1,2,\cdots,m \\ \Psi_i(l)=\arg\max\limits_{1\leq j\leq m} \set{\delta_{i-1}(j)+w\cdot F_i(y_{i-1}=j,y_i=l,x)},\quad l=1,2,\cdots,m δi(l)=1jmmax{δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,,mΨi(l)=arg1jmmax{δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,,m

  1. 终止:

max ⁡ y ( w ⋅ F ( y , x ) ) = max ⁡ 1 ≤ j ≤ m δ n ( j ) y n ∗ = arg ⁡ max ⁡ 1 ≤ j ≤ m δ n ( j ) \max_y (w\cdot F(y,x))=\max\limits_{1\leq j\leq m}\delta_n(j) \\ y^\ast_n=\arg\max_{1\leq j\leq m}\delta_n(j) ymax(wF(y,x))=1jmmaxδn(j)yn=arg1jmmaxδn(j)

  1. 返回路径:

y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , ⋯   , 1 y^\ast_i=\Psi_{i+1}(y^\ast_{i+1}),\quad i=n-1,n-2,\cdots,1 yi=Ψi+1(yi+1),i=n1,n2,,1

求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , ⋯   , y n ∗ ) T y^\ast=(y^\ast_1,y^\ast_2,\cdots,y_n^\ast)^\mathrm{T} y=(y1,y2,,yn)T

:设有一个标注问题,输入观测序列为 X = ( X 1 , X 2 , X 3 ) X=(X_1,X_2,X_3) X=(X1,X2,X3) ,输出标记序列为 Y = ( Y 1 , Y 2 , Y 3 ) Y=(Y_1,Y_2,Y_3) Y=(Y1,Y2,Y3) ,其中 Y i ∈ Y = {   1 , 2   } Y_i\in \mathcal{Y}=\set{1,2} YiY={1,2} 。假设特征有:
t 1 =   t 1 ( y i − 1 = 1 , y i = 2 , x , i ) , i = 2 , 3 λ 1 = 1 t 2 =   t 2 ( y 1 = 1 , y 2 = 1 , x , 2 ) λ 2 = 0.6 t 3 =   t 3 ( y 2 = 2 , y 3 = 1 , x , 3 ) λ 3 = 1 t 4 =   t 4 ( y 1 = 2 , y 2 = 1 , x , 2 ) λ 4 = 1 t 5 =   t 5 ( y 2 = 2 , y 3 = 2 , x , 3 ) λ 3 = 0.2 s 1 =   s 1 ( y 1 = 1 , x , 1 ) μ 1 = 1 s 2 =   s 2 ( y i = 2 , x , i ) , i = 1 , 2 μ 2 = 0.5 s 3 =   s 3 ( y i = 1 , x , i ) , i = 2 , 3 μ 3 = 0.8 s 4 =   s 4 ( y 3 = 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 \\ t_2=&\,t_2(y_1=1,y_2=1,x,2) & \lambda_2=0.6 \\ t_3=&\,t_3(y_2=2,y_3=1,x,3) & \lambda_3=1 \\ t_4=&\,t_4(y_1=2,y_2=1,x,2) & \lambda_4=1 \\ t_5=&\,t_5(y_2=2,y_3=2,x,3) & \lambda_3=0.2 \\ s_1=&\,s_1(y_1=1,x,1) & \mu_1=1 \\ s_2=&\,s_2(y_i=2,x,i),i=1,2 & \mu_2=0.5 \\ s_3=&\,s_3(y_i=1,x,i),i=2,3 & \mu_3=0.8 \\ s_4=&\,s_4(y_3=2,x,3) & \mu_4=0.5 \\ \end{aligned} t1=t2=t3=t4=t5=s1=s2=s3=s4=t1(yi1=1,yi=2,x,i),i=2,3t2(y1=1,y2=1,x,2)t3(y2=2,y3=1,x,3)t4(y1=2,y2=1,x,2)t5(y2=2,y3=2,x,3)s1(y1=1,x,1)s2(yi=2,x,i),i=1,2s3(yi=1,x,i),i=2,3s4(y3=2,x,3)λ1=1λ2=0.6λ3=1λ4=1λ3=0.2μ1=1μ2=0.5μ3=0.8μ4=0.5
这里给出的特征对 x x x 都没什么要求,因此不论观测序列是什么,它们都对应同一个最大概率的标记序列 y ∗ = ( y 1 ∗ , y 2 ∗ , y 3 ∗ ) y^\ast=(y_1^\ast,y_2^\ast,y_3^\ast) y=(y1,y2,y3)
Y δ 1 , Ψ 1 δ 2 , Ψ 2 δ 3 , Ψ 3 1 1 , / 2.4 , 1 4.3 , 2 2 0.5 , / 2.5 , 1 3.9 , 1 \begin{array}{c|cccc} \hline Y & \delta_1,\Psi_1 & \delta_2,\Psi_2 & \delta_3,\Psi_3 \\ \hline 1 & 1,/ & 2.4,1 & 4.3,2 \\ 2 & 0.5,/ & 2.5,1 & 3.9,1 \\ \hline \end{array} Y12δ1,Ψ11,/0.5,/δ2,Ψ22.4,12.5,1δ3,Ψ34.3,23.9,1
因此最优标记序列为 y ∗ = ( 1 , 2 , 1 ) y^\ast=(1,2,1) y=(1,2,1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1174114.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

4 函数的升级-下

重载&#xff08;overload&#xff09; 同一个标识符在不同的上下文有不同的意义 如汉语中“洗”和不同的字搭配后&#xff0c;有不同的含义&#xff0c;play 和不同的单词搭配后有不同的含义。 函数重载&#xff1a;用同一个函数名定义不同的函数&#xff0c;通过不同的参数搭…

SpringBoot整合RabbitMQ学习笔记

SpringBoot整合RabbitMQ学习笔记 以下三种类型的消息&#xff0c;生产者和消费者需各自启动一个服务&#xff0c;模拟生产者服务发送消息&#xff0c;消费者服务监听消息&#xff0c;分布式开发。 一 Fanout类型信息 . RabbitMQ创建交换机和队列 在RabbitMQ控制台&#xff0c;新…

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格

飞书开发学习笔记(三)-利用python开发调试云文档和电子表格 一.建立Python飞书开发环境 首先还是进入开放平台下的API调试台 飞书开放平台&#xff1a;https://open.feishu.cn/app?langzh-CN 以获取"我的空间"下的文件清单为例&#xff0c;通过获取飞书API调试台提…

展开一个结构加法等式

4a6 4a8 - - - - - 1 - 1 - - - 1 - 1 - - 1 - - 1 - - 1 - - 1 - - - - 在5-1的方向上具体展开4a64a8 25 19 19 19 19 19 19 19 25 19 19 19 19 19 19 19 1 10 10 10 10 10 10 10 1 10 10 10 10 10 10 10 …

矩阵等价和向量组等价的一些问题

什么是向量组&#xff1f;答&#xff1a;向量组是由若干同维数的列向量&#xff08;或同维数的行向量&#xff09;组成的集合。什么是向量组等价&#xff1f;答&#xff1a;两个向量组&#xff0c;各自拼成矩阵A和B&#xff0c;向量组等价就是三秩相等&#xff0c;即r&#xff…

如何发布自己的golang库

如何发布自己的golang库 1、在 github/gitee 上创建一个 public 仓库&#xff0c;仓库名与 go 库名一致&#xff0c;然后将该仓库 clone 到本地。 本文这里使用 gitee。 $ git clone https://gitee.com/zsx242030/goutil.git2、进入项目文件夹&#xff0c;进行初始化。 $ go…

【unity实战】实现类似英雄联盟的buff系统

文章目录 先来看看最终效果前言开始BUFF系统加几个BUFF测试1. 逐层消失&#xff0c;升级不重置剩余时间的BUFF2. 一次性全部消失&#xff0c;升级重置剩余时间的BUFF3. 永久BUFF&#xff0c;类似被动BUFF4. 负面BUFF&#xff0c;根据当前BUFF等级计算每秒收到伤害值&#xff0c…

Docker Stack部署应用详解+Tomcat项目部署详细实战

Docker Stack 部署应用 概述 单机模式下&#xff0c;可以使用 Docker Compose 来编排多个服务。Docker Swarm 只能实现对单个服务的简单部署。而Docker Stack 只需对已有的 docker-compose.yml 配置文件稍加改造就可以完成 Docker 集群环境下的多服务编排。 stack是一组共享…

Pyhotn: Mac安装selenium没有chromedriver-114以上及chromedriver无法挪到/usr/bin目录下的问题

1.0 安装selenium 终端输入&#xff1a; pip install selenium 查看版本&#xff1a; pip show selenium2.0 安装chromedriver 查看chrome版本 网上大多数是&#xff0c;基本到114就停了。 https://registry.npmmirror.com/binary.html?pathchromedriver/ 各种搜索&#…

Blender基础操作:面操作细分、整体切分、挤出、内插、尖分、融并、切割、面的法向、填充等

目录 1. 面操作&#xff1a;进入‘面选择’模式&#xff0c;选择一个面 2. 面的挤出 3. 内插面 4. 尖分面 5. 面的切割 6. 面的法向normal 7. 填充面 8. X-Ray透视 1. 面操作&#xff1a; 进入“面选择”模式&#xff0c;选择一个面 4种操作手段&#xff1a; 菜单 工…

四、数据库系统

数据库系统&#xff08;Database System&#xff09;&#xff0c;是由数据库及其管理软件组成的系统。数据库系统是为适应数据处理的需要而发展起来的一种较为理想的数据处理系统&#xff0c;也是一个为实际可运行的存储、维护和应用系统提供数据的软件系统&#xff0c;是存储介…

Redis01-缓存击穿、穿透和雪崩

目录 开场白-追命3连 使用场景 01缓存穿透场景与方案 02布隆过滤器 03缓存击穿场景与方案 04缓存雪崩场景与方案 开场白-追命3连 看你项目中有说用到Redis&#xff0c;都是哪些场景使用了Redis呢&#xff1f; 如果发生了缓存穿透、击穿、雪崩如何应对呢&#xff1f;缓存…

研读论文之Image Quality-aware Diagnosis via Meta-knowledge Co-embedding

研读论文之 Image Quality-aware Diagnosis via Meta-knowledge Co-embedding 前言一、简介二、主要内容2.1. 图像退化2.2. 图像质量感知诊断(IQAD)2.3. 元知识协同嵌入网络(MKCNet) 三、实现过程3.1. IQAD问题3.2. 元知识协同嵌入网络 (MKCNet)3.2.1功能3.2.2优化策略3.2.3 Ta…

轻信息服务展示预约小程序的内容是什么

预约几乎是适应所有经营商家的&#xff0c;可以提升客户服务/产品获取度、锁客及便捷性需求&#xff0c;同时也利于提升商家整体经营效率&#xff0c;无论获客还是留存线索都有很高帮助。 尤其对线下服务实体店来说&#xff0c;需要预约形式将客户引流到店&#xff0c;传统商家…

考研数学(数二)核心要点(极限)

前言 okey&#xff0c;今天难得有时间那就稍微整理一下数学部分的内容。注意&#xff0c;本文仅适用于考研冲刺阶段&#xff0c;对知识点进行复习使用。前提是你已经知道了相关知识点&#xff0c;我这里只是把我认为比较重要的&#xff0c;我自己总结的内容给出来&#xff0c;…

基于机器学习的学生成绩预测

学生成绩预测是一个基于回归问题的流行数据科学案例研究。对于数据科学初学者来说&#xff0c;这是一个很好的回归问题&#xff0c;因为它很容易解决和理解。本文中&#xff0c;将带你通过使用Python的机器学习来完成学生成绩预测的任务。 学生成绩预测&#xff08;案例研究&a…

本地idea远程调试服务器程序

本文主要介绍idea本地调试远程服务器程序的方式。相信很多同行跟我一样&#xff0c;在最初接触公司项目的时候&#xff0c;遇到测试提出的缺陷&#xff0c;往往会在本地进行调试、替换jar包远程调试等方式&#xff0c;本地调试往往会导致数据和环境不一致的问题使得问题无法复现…

机器学习领域经典书籍推荐

机器学习领域经典书籍 1. 数据挖掘概念与技术2. 机器学习3. 统计学习方法4. 深度学习5. 动手学深度学习&#xff08;PyTorch版&#xff09; 1. 数据挖掘概念与技术 原名: Data Mining&#xff1a;Concepts and Techniques&#xff0c;Third Edition 作者: &#xff08;美&#…

Solidity入门第一步之数据类型

各种类型介绍 数值类型(Value Type)&#xff1a;包括布尔型(bool)&#xff0c;整数型(int、uint、uint256)等等&#xff0c;这类变量赋值时候直接传递数值。引用类型(Reference Type)&#xff1a;包括数组和结构体&#xff0c;这类变量占空间大&#xff0c;赋值时候直接传递地…

Leetcode—707.设计链表【中等】

2023每日刷题&#xff08;十七&#xff09; Leetcode—707.设计链表 设计单链表实现代码 typedef struct Node {int val;struct Node* next; } MyLinkedList;MyLinkedList* myLinkedListCreate() {MyLinkedList* mList (MyLinkedList *)malloc(sizeof(MyLinkedList));mList-…