【算法研究】-04-条件随机场

文章目录


理论部分

  • 相关概念
    • 马尔可夫过程
      定义:假设一个随机过程中, t n t_n tn 时刻的状态 x n x_n xn的条件发布,只与其前一状态 x n − 1 x_{n-1} xn1 相关,即:
      在这里插入图片描述
      则将其称为 马尔可夫过程。
      在这里插入图片描述

    • 隐马尔科夫算法
      定义:隐马尔科夫算法是对含有未知参数(隐状态)的马尔可夫链进行建模的生成模型,如下图所示:
      在这里插入图片描述
      在隐马尔科夫模型中,包含隐状态 和 观察状态,隐状态 x i x_i xi 对于观察者而言是不可见的,而观察状态 y i y_i yi 对于观察者而言是可见的。隐状态间存在转移概率,隐状态 x i x_i xi到对应的观察状态 y i y_i yi 间存在输出概率。

      1. 假设隐状态 x i x_i xi 的状态满足马尔可夫过程,i时刻的状态 x i x_i xi 的条件分布,仅与其前一个状态 x i − 1 x_{i-1} xi1相关,即:
        P ( x i ∣ x 1 , x 2 , . . . , x i − 1 ) = P ( x i ∣ x i − 1 ) P(x_i|x_1,x_2,...,x_{i-1}) = P(x_i|x_{i-1}) P(xix1,x2,...,xi1)=P(xixi1)
      2. 假设观测序列中各个状态仅取决于它所对应的隐状态,即:
        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(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(yix1,x2,...,xi1,y1,y2,...,yi1,yi+1,...)=P(yixi)
  • 条件随机场
    定义:给定 X = ( x 1 , x 2 , . . . , x n ) X=(x_1,x_2,...,x_n) X=(x1,x2,...,xn) Y = ( y 1 , y 2 , . . . , y n ) Y=(y_1,y_2,...,y_n) Y=(y1,y2,...,yn) 均为线性链表示的随机变量序列,若在给随机变量序列 X 的条件下,随机变量序列 Y 的条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 构成条件随机场,即满足马尔可夫性:

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(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(yix1,x2,...,xi1,y1,y2,...,yi1,yi+1)=P(yix,yi1,yi+1)

则称为 P(Y|X) 为线性链条件随机场。

  • 转移特征和状态特征
    通过去除了隐马尔科夫算法中的观测状态相互独立假设,使算法在计算当前隐状态 x i x_i xi时,会考虑整个观测序列,从而获得更高的表达能力,并进行全局归一化解决标注偏置问题。
    在这里插入图片描述

参数化形式
p ( y ∣ x ) = 1 Z ( x ) ∏ i = 1 n exp ⁡ ( ∑ i , k λ k t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , 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(yx)=Z(x)1i=1nexpi,kλktk(yi1,yi,x,i)+i,lμlsl(yi,x,i)
其中:

  • Z ( x ) Z(x) Z(x) 为归一化因子,是在全局范围进行归一化,枚举了整个隐状态序列 x 1 … n x_{1…n} x1n的全部可能,从而解决了局部归一化带来的标注偏置问题。
    Z ( x ) = ∑ y exp ⁡ ( ∑ i , k λ x t k ( y i − 1 , y i , x , i ) + ∑ i , l μ l s l ( y i , 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)=yexpi,kλxtk(yi1,yi,x,i)+i,lμlsl(yi,x,i)

    • t k t_k tk 为定义在边上的特征函数,转移特征,依赖于前一个和当前位置

    • s 1 s_1 s1 为定义在节点上的特征函数,状态特征,依赖于当前位置。

    • 矩阵形式

  • 条件随机场三问题

    • 计算问题:已知模型的所有参数,计算观测序列 Y Y Y 出现的概率,常用方法:前向和后向算法;
    1. 前向计算
      对观测序列 x x x 的每个位置 i = 1 , 2 , . . . , n + 1 i=1,2,...,n+1 i=1,2,...,n+1 ,定义一个 m m m 阶矩阵( m m m 为标记 Y i Y_i Yi取值的个数)。
      M i ( x ) = [ M i ( y i − 1 , y i ∣ x ) ] M_{i}(x)=\left[M_{i}\left(y_{i-1}, y_{i} | x\right)\right] Mi(x)=[Mi(yi1,yix)]
      M i ( y i − 1 , y i ∣ x ) = exp ⁡ ( W i ( y i − 1 , y i ∣ x ) ) M_{i}\left(y_{i-1}, y_{i} | x\right)=\exp \left(W_{i}\left(y_{i-1}, y_{i} | x\right)\right) Mi(yi1,yix)=exp(Wi(yi1,yix))
      W i ( y i − 1 , y i ∣ x ) = ∑ i = 1 K w k f k ( y i − 1 , y i , x , i ) W_{i}\left(y_{i-1}, y_{i} | x\right)=\sum_{i=1}^{K} w_{k} f_{k}\left(y_{i-1}, y_{i}, x, i\right) Wi(yi1,yix)=i=1Kwkfk(yi1,yi,x,i)

      对每个指标 i = 0 , 1 , . . . , n + 1 i=0,1,...,n+1 i=0,1,...,n+1,定义前向向量 α i ( x ) \alpha_{i}(x) αi(x),则递推公式:
      α i T ( y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) , i = 1 , 2 , ⋯   , n + 1 \alpha_{i}^{\mathrm{T}}\left(y_{i} | x\right)=\alpha_{i-1}^{\mathrm{T}}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right), \quad i=1,2, \cdots, n+1 αiT(yix)=αi1T(yi1x)Mi(yi1,yix),i=1,2,,n+1
      其中,
      α 0 ( y ∣ x ) = { 1 , y =  start  0 ,  否则  \alpha_{0}(y | x)=\left\{\begin{array}{ll}1, & y=\text { start } \\ 0, & \text { 否则 }\end{array}\right. α0(yx)={1,0,y= start  否则 

    2. 后向计算
      对每个指标 i = 0 , 1 , . . . , n + 1 i=0,1,...,n+1 i=0,1,...,n+1,定义前向向量 β i ( x ) \beta_{i}(x) βi(x),则递推公式:
      β n + 1 ( y n + 1 ∣ x ) = { 1 , y n + 1 =  stop  0 ,  否则  \beta_{n+1}\left(y_{n+1} | x\right)=\left\{\begin{array}{ll}1, & y_{n+1}=\text { stop } \\ 0, & \text { 否则 }\end{array}\right. βn+1(yn+1x)={1,0,yn+1= stop  否则 
      β i ( y i ∣ x ) = M i ( y i , y i + 1 ∣ x ) β i − 1 ( y i + 1 ∣ x ) \beta_{i}\left(y_{i} | x\right)=M_{i}\left(y_{i}, y_{i+1} | x\right) \beta_{i-1}\left(y_{i+1} | x\right) βi(yix)=Mi(yi,yi+1x)βi1(yi+1x)

    3. ???
      Z ( x ) = α n T ( x ) ⋅ 1 = 1 T ⋅ β 1 ( x ) Z(x)=\alpha_{n}^{\mathrm{T}}(x) \cdot \mathbf{1}=\mathbf{1}^{\mathrm{T}} \cdot \beta_{1}(x) Z(x)=αnT(x)1=1Tβ1(x)

    4. 概率计算
      所以,标注序列在位置 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\left(Y_{i}=y_{i} | x\right)=\frac{\alpha_{i}^{\mathrm{T}}\left(y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} P(Yi=yix)=Z(x)αiT(yix)βi(yix)
      P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P\left(Y_{i-1}=y_{i-1}, Y_{i}=y_{i} | x\right)=\frac{\alpha_{i-1}^{T}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} P(Yi1=yi1,Yi=yix)=Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix) P ( Y i − 1 = y i − 1 , Y i = y i ∣ x ) = α i − 1 T ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) P\left(Y_{i-1}=y_{i-1}, Y_{i}=y_{i} | x\right)=\frac{\alpha_{i-1}^{T}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} P(Yi1=yi1,Yi=yix)=Z(x)αi1T(yi1x)Mi(yi1,yix)βi(yix)
      其中,
      Z ( x ) = α n T ( x ) ⋅ 1 Z(x)=\alpha_{n}^{\mathrm{T}}(x) \cdot \mathbf{1} Z(x)=αnT(x)1

    5. 期望概率计算
      通过利用前向-后向向量,计算特征函数关于联合概率分布 P ( X , Y ) P(X,Y) P(X,Y) 和 条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 的数学期望,即特征函数 f k f_k fk 关于条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX) 的数学期望:
      E P ( Y ∣ X ) [ f k ] = ∑ y P ( y ∣ x ) f k ( y , x ) = ∑ i = 1 n + 1 ∑ y = 1 , y 1 f k ( y i − 1 , y i , x , i ) α i − 1 ⊤ ( y i − 1 ∣ x ) M i ( y i − 1 , y i ∣ x ) β i ( y i ∣ x ) Z ( x ) k = 1 , 2 , ⋯   , K \begin{aligned} E_{P(Y | X)}\left[f_{k}\right] &=\sum_{y} P(y | x) f_{k}(y, x) \\ &=\sum_{i=1}^{n+1} \sum_{y=1, y_{1}} f_{k}\left(y_{i-1}, y_{i}, x, i\right) \frac{\alpha_{i-1}^{\top}\left(y_{i-1} | x\right) M_{i}\left(y_{i-1}, y_{i} | x\right) \beta_{i}\left(y_{i} | x\right)}{Z(x)} \\ k &=1,2, \cdots, K \end{aligned} EP(YX)[fk]k=yP(yx)fk(y,x)=i=1n+1y=1,y1fk(yi1,yi,x,i)Z(x)αi1(yi1x)Mi(yi1,yix)βi(yix)=1,2,,K

扁平
Z ( x ) = α n T ( x ) ⋅ 1 Z(x)=\alpha_{n}^{\mathrm{T}}(x) \cdot \mathbf{1} Z(x)=αnT(x)1
其中,

  • 学习问题:已知观测序列 Y Y Y,求解使得该观测序列概率最大的模型参数,包括隐状态序列、隐状态间的转移概率分布和从隐状态到观测状态的概率分布,常用方法:Baum-Wehch 算法;

  • 预测问题:一直模型所有参数和观测序列 Y Y Y ,计算最可能的隐状态序列 X X X,常用算法:维特比算法。
    维特比算法:
    输入:模型特征向量 F ( y , x ) F(y,x) F(y,x) 和权重向量 w w w,输入序列(观测序列) x = x 1 , x 2 , . . . , x n x={x_1,x_2,...,x_n} x=x1,x2,...,xn
    输出:条件概率最大的输出序列(标记序列) y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) y^{*}= (y_1^*,y_2^*,...,y_n^*) y=(y1,y2,...,yn),也就是最优路径;

    1. 初始化
      δ 1 ( j ) = w ⋅ F 1 ( y 0 = start ⁡ , y 1 = 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)=wF1(y0=start,y1=j,x),j=1,2,,m
    2. 递推,对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 \delta_{i}(l)=\max _{1 \leqslant j \leqslant m}\left\{\delta_{i-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)=max1jm{δi1(j)+wFi(yi1=j,yi=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 \Psi_{i}(l)=\arg \max _{1 \leq j \leqslant m}\left\{\delta_{i-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)=argmax1jm{δi1(j)+wFi(yi1=j,yi=l,x)},l=1,2,,m
    3. 终止
      max ⁡ y ( w ⋅ F ( y , x ) ) = max ⁡ 1 ≤ j ≤ m δ n ( j ) \max _{y}(w \cdot F(y, x))=\max _{1 \leq j \leq m} \delta_{n}(j) maxy(wF(y,x))=max1jmδn(j)
      y n ∗ = arg ⁡ max ⁡ 1 ≤ j ⩽ m δ n ( j ) y_{n}^{*}=\arg \max _{1 \leq j \leqslant m} \delta_{n}(j) yn=argmax1jmδn(j)
    4. 返回路径
      y i ∗ = Ψ i + 1 ( y i + 1 ∗ ) , i = n − 1 , n − 2 , ⋯   , 1 y_{i}^{*}=\Psi_{i+1}\left(y_{i+1}^{*}\right), \quad i=n-1, n-2, \cdots, 1 yi=Ψi+1(yi+1),i=n1,n2,,1

练习部分

  • 利用高维特比算法计算给定输入序列 x {x} x对应的最优输出序列 y ∗ y^{*} y
    max ⁡ ∑ i = 1 3 w ⋅ F i ( y i − 1 , y i , x ) \max \sum_{i=1}^{3} w \cdot F_{i}\left(y_{i-1}, y_{i}, x\right) maxi=13wFi(yi1,yi,x)
    维特比:
    高维特比:
  1. 初始化
    δ 1 ( j ) = w ⋅ F 1 ( y 0 = start , y 1 = j , x ) , j = 1 , 2 \delta_{1}(j)=w \cdot F_{1}\left(y_{0}=\text {start}, y_{1}=j, x\right), \quad j=1,2 δ1(j)=wF1(y0=start,y1=j,x),j=1,2
    i = 1 , δ 1 ( 1 ) = 1 , δ ( 2 ) = 0.5 i=1, \quad \delta_{1}(1)=1, \quad \delta(2)=0.5 i=1,δ1(1)=1,δ(2)=0.5
  2. 递推,对i=2,3,…n
    i = 2 i=2 i=2
    δ 2 ( l ) = max ⁡ f { δ 1 ( j ) + w ⋅ F 2 ( j , l , x ) } \delta_{2}(l)=\max _{f}\left\{\delta_{1}(j)+w \cdot F_{2}(j, l, x)\right\} δ2(l)=maxf{δ1(j)+wF2(j,l,x)}
    δ 2 ( 1 ) = max ⁡ { 1 + λ 2 t 2 , 0.5 + λ 4 t 4 } = 1.6 , Ψ 2 ( 1 ) = 1 \delta_{2}(1)=\max \left\{1+\lambda_{2} t_{2}, 0.5+\lambda_{4} t_{4}\right\}=1.6, \quad \Psi_{2}(1)=1 δ2(1)=max{1+λ2t2,0.5+λ4t4}=1.6,Ψ2(1)=1
    δ 2 ( 2 ) = max ⁡ { 1 + λ t 1 + μ 2 s 2 , 0.5 + μ 2 s 2 } = 2.5 , Ψ 2 ( 2 ) = 1 \delta_{2}(2)=\max \left\{1+\lambda t_{1}+\mu_{2} s_{2}, 0.5+\mu_{2} s_{2}\right\}=2.5, \quad \Psi_{2}(2)=1 δ2(2)=max{1+λt1+μ2s2,0.5+μ2s2}=2.5,Ψ2(2)=1
    i = 3 i=3 i=3
    δ 3 ( l ) = max ⁡ j { δ 2 ( j ) + w ⋅ F 3 ( j , l , x ) } \delta_{3}(l)=\max _{j}\left\{\delta_{2}(j)+w \cdot F_{3}(j, l, x)\right\} δ3(l)=maxj{δ2(j)+wF3(j,l,x)}
    δ 3 ( 1 ) = max ⁡ { 1.6 + μ 5 s 5 , 2.5 + λ 3 t 3 + μ 3 s 3 } = 4.3 , Ψ 3 ( 1 ) = 2 \delta_{3}(1)=\max \left\{1.6+\mu_{5} s_{5}, 2.5+\lambda_{3} t_{3}+\mu_{3} s_{3}\right\}=4.3, \quad \Psi_{3}(1)=2 δ3(1)=max{1.6+μ5s5,2.5+λ3t3+μ3s3}=4.3,Ψ3(1)=2
    δ 3 ( 2 ) = max ⁡ { 1.6 + λ 1 t 1 + μ 4 s 4 , 2.5 + λ 5 t 5 + μ 4 s 4 } = 3.2 , Ψ 3 ( 2 ) = 1 \delta_{3}(2)=\max \left\{1.6+\lambda_{1} t_{1}+\mu_{4} s_{4}, 2.5+\lambda_{5} t_{5}+\mu_{4} s_{4}\right\}=3.2, \quad \Psi_{3}(2)=1 δ3(2)=max{1.6+λ1t1+μ4s4,2.5+λ5t5+μ4s4}=3.2,Ψ3(2)=1
  3. 终止
    max ⁡ y ( w ⋅ F ( y , x ) ) = max ⁡ δ 3 ( l ) = δ 3 ( 1 ) = 4.3 \max _{y}(w \cdot F(y, x))=\max \delta_{3}(l)=\delta_{3}(1)=4.3 maxy(wF(y,x))=maxδ3(l)=δ3(1)=4.3
    y 3 ∗ = arg ⁡ max ⁡ l δ 3 ( l ) = 1 y_{3}^{*}=\arg \max _{l} \delta_{3}(l)=1 y3=argmaxlδ3(l)=1
  4. 返回路径
    y 2 ∗ = Ψ 3 ( y 3 ∗ ) = Ψ 3 ( 1 ) = 2 y_{2}^{*}=\Psi_{3}\left(y_{3}^{*}\right)=\Psi_{3}(1)=2 y2=Ψ3(y3)=Ψ3(1)=2
    y 1 ∗ = Ψ 2 ( y 2 ∗ ) = Ψ 2 ( 2 ) = 1 y_{1}^{*}=\Psi_{2}\left(y_{2}^{*}\right)=\Psi_{2}(2)=1 y1=Ψ2(y2)=Ψ2(2)=1
    求得最优路径 y ∗ = ( y 1 ∗ , y 2 ∗ , . . . , y n ∗ ) = ( 1 , 2 , 1 ) y^{*}= (y_1^*,y_2^*,...,y_n^*) = (1,2,1) y=(y1,y2,...,yn)=(1,2,1)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本方法。编译原理不仅是计算机科学理论的重要组成部分,也是实现高效、可靠的计算机程序设计的关键。本文将对编译原理的基本概念、发展历程、主要内容和实际应用进行详细介绍编译原理是计算机专业的一门核心课程,旨在介绍编译程序构造的一般原理和基本

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值