zoukankan      html  css  js  c++  java
  • 条件随机场入门(三) 条件随机场的概率计算问题

    条件随机场的概率计算问题是给定条件随机场 P(Y|X) ,输入序列 x 和输出序列 y ,计算条件概率  $P(Y_{i-1} = y_{i-1}Y_i = y_i|x)$ ,$P(Y_i = y_i|x)$  以及相应的数学期望的问题。为了方便起见,像 HMM 那样,引进前向-后向向量,递归地计算以上概率及期望值。这样的算法称为前向-后向算法。

    前向-后向算法

    对每个指标 $i = 0,1,…,n+1$ ,定义前向向量 $a_i(x)$ ,对于起始状态 $i=0$:

    [a_0(y|x) = left { egin{aligned}
    &1, y = start \
    &0, else
    end{aligned} ight.]

    对于之后的状态 $i = 1,2,…,n+1$ ,递推公式为:

    [a_i^T(y_i|x) = a^T_{i-1}(y_{i-1}|x)M_i(y_{i-1},y_i|x)]

    这里 $M_i(y_{i-1},y_i|x)$ 对应的是转移矩阵中的一列,转为向量形式可表示为

    [a^T_i(x) = a^T_{i-1}(x)M_i(x)]

    $a_i(y_i|x)$ 表示在位置 i 的标记是 $y_i$ 并且到位置 i 的前部分标记序列的非规范化概率,$y_i$ 可取的值有 m 个,所以 $a_i(x)$ 是 m 维列向量。

    同样,对每个指标 $i = 0,1,…,n+1$ ,定义后向向量 $eta_i(x)$:

    [eta_{n+1}(y_{n+1}|x) = left { egin{aligned}
    &1, y_{n+1} = stop \
    &0, else
    end{aligned} ight.]

    往前递推:

    [eta_i(y_i|x) = M_i(y_i,y_{i+1}|x)eta_{i+1}(y_{i+1}|x)]

    又可以表示为:

    [eta_i(x) = M_{i+1}(x) eta_{i+1}(x)]

    $eta_i(y_i|x)$ 表示在位置 i 的标记为 $y_i$,并且从 i+1 到 n 的后部分标记序列的非规范化概率。

    由前向-后向向量定义不难得到:

    [Z(x) = a_n^T(x) cdot mathbf{1} = mathbf{1}^T cdot eta_1(x)]

    这里,$mathbf{1}$  是元素均为 1 的 m 维列向量。

    概率计算

    按照前向-后向向量的定义,很容易计算标记序列在位置 i 是标记 $y_i$ 的条件概率和在位置 i-1 与 i 是标记 $y_{i-1}$ 和 $y_i$ 的条件概率:

    egin{aligned}
    P(Y_i= y_i|x) &= frac{a_i^T(y_i|x) eta_i(y_i|x)}{Z(x)} \
    P(Y_{i-1} = y_{i-1} ,Y_i= y_i|x) &=frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x)eta_i(y_i|x)}{Z(x)}
    end{aligned}

    其中 $Z(x) = a_n^T(x) cdot mathbf{1} $

    期望值的计算

    利用前向-后向向量,可以计算特征函数关于联合分布 P(X,Y) 和条件分布 P(Y|X) 的数学期望。

    特征函数 $ left { f_k ight }_{k=1}^K$ 关于条件分布 P(Y|X) 的数学期望是

    egin{aligned}
    E_{p(Y|X)}[f_k] &= sum_yP(y|x)f_k(y,x) \
    &=sum_{i=1}^{n+1}sum_{y_{i-1} y_i}f_k(y_{i-1},y_i,x,i) frac{a_{i-1}^TM_i(y_{i-1},y_i|x)eta_i(y_i|x)}{Z(x)}
    end{aligned}

    其中 $Z(x) = a_n^T(x) cdot mathbf{1} $

    假设经验分布为 $widetilde{P}(X)$ ,特征函数  $ left { f_k ight }_{k=1}^K$  关于联合分布 P(Y|X) 的数学期望是:

    egin{aligned}
    E_{P(X,Y)}[f_k] &= sum_{x,y}P(x,y)sum_{i=1}^{n+1}f_k(y_{i-1}.y_i,x,i) \
    &= sum_xwidetilde{P}(x) sum_yP(y|x)sum_{i=1}^{n+1}f_k(y_{i-1,}y_ix,i) \
    &= sum_xwidetilde{P}(x) sum_{i=1}^{n+1} sum_{y_{i-1} y_i}f_k(y_{i-1,}y_ix,i)frac{a_{i-1}^T(y_{i-1}|x)M_i(y_{i-1},y_i|x) eta_i(y_i|x)}{Z(x)}
    end{aligned}

    其中,$Z(x) = a_n^T(x) cdot mathbf{1} $

    这个式子是特征函数数学期望的一般计算公式。对于转移特征 $t_k(y_{i-1},y_i,x,i) ,k=1,2,…,K$ ,可以将式中的 $f_k$ 换成 $t_k$ ;对于状态特征,可以将式中的 $f_k$ 换成 $s_l$ , 表示为 $s_l(y_i,x,i),k = K_1+1;l=1,2,…,K_2$ 。

    有了这些式子,对于给定的观测序列 x 与标记序列 y ,可以通过一次前向扫描计算 $a_i$ 及 $Z(x)$ ,通过一次后向扫描计算 $eta_i$,从而计算所有的概率和特征的期望。

  • 相关阅读:
    CentOS(九)--与Linux文件和目录管理相关的一些重要命令①
    CentOS(八)--crontab命令的使用方法
    CentOS(七)--Linux文件类型及目录配置
    CentOS(六)--Linux系统的网络环境配置
    ActionBar实现顶部返回键,顶部按钮
    安卓---高德地图API应用
    安卓---achartengine图表----简单调用----使用view显示在自己的布局文件中----actionBar的简单设置
    安卓访问webAPI,并取回数据
    webAPI---发布(IIS)--发布遇到问题(500.19,500.21,404.8,404.3)
    安卓----短信验证(借用第三方平台)
  • 原文地址:https://www.cnblogs.com/ooon/p/5823445.html
Copyright © 2011-2022 走看看