机器学习之概率图模型


参考资料:

  1. 《机器学习》——周志华
  2. 《统计学习方法》——李航
  3. https://blog.csdn.net/continueoo/article/details/77893587
  4. https://blog.csdn.net/continueoo/article/details/77893587

0. 背景介绍

判别式模型,对条件分布进行建模;生成式模型,对联合分布进行建模。概率图模型是一类利用图来表达变量间相关关系的概率模型,既包含判别式模型,也包含生成式模型。

1. 隐马尔科夫模型(Hidden Markov Model, HMM)

1.1. HMM的数学定义

HMM是关于时序的概率模型,描述由一个隐藏的马尔科夫链随机生成不可观测的状态随机序列,再由各个状态生成一个可观测的随机序列的过程。

它是一种生成式模型,因为它需要先生成状态变量,然后在状态的条件下生成观测变量,根据条件概率的公式,等价于生成状态变量和观测变量的联合概率。所以是生成式模型。

HMM模型常用于序列标注问题建模,假设时间长度为n,
对于 i = 1 , 2 , ⋯   , n i=1,2,\cdots,n i=1,2,,n时刻,HMM中的变量可以分为两组,用 X = { x 1 , x 2 , ⋯   , x n } , x i ∈ O = { o 1 , o 2 , ⋯   , o M } X=\{x_1,x_2,\cdots,x_n\},x_i\in O=\{o_1,o_2,\cdots,o_M\} X={x1,x2,,xn},xiO={o1,o2,,oM}表示观测变量序列(每个观测变量有 M M M个可能的取值); Y = { y 1 , y 2 , ⋯   , y n } , y i ∈ S = { s 1 , s 2 , ⋯   , s N } Y=\{y_1,y_2,\cdots,y_n\},y_i\in S=\{s_1,s_2,\cdots,s_N\} Y={y1,y2,,yn},yiS={s1,s2,,sN}(每个状态变量有 N N N个可能的取值)表示状态变量序列,也叫隐变量。
并且有如下假设:在任一时刻,观测变量的取值仅仅依赖于该时刻的状态变量,即 x t x_t xt仅由 y t y_t yt决定;
P ( x t ∣ y T , x T , y T − 1 , x T − 1 , ⋯   , y 1 , x 1 ) = P ( x t ∣ y t ) ) (1-1) P(x_t|y_T,x_T,y_{T-1},x_{T-1},\cdots,y_1,x_1)=P(x_t|y_t))\\ \tag{1-1} P(xtyT,xT,yT1,xT1,,y1,x1)=P(xtyt))(1-1)
同时, y t y_t yt仅依赖于 y t − 1 y_{t-1} yt1,即状态变量序列是一个马尔科夫链。由此可以得到所有变量的联合概率分布为(注意根据假设,条件概率的条件省去了无关变量):
P ( x 1 , y 1 , ⋯   , x n , y n ) = P ( y 1 ) P ( x 1 ∣ y 1 ) ∏ i = 2 n P ( y i ∣ y i − 1 ) P ( x i ∣ y i ) (1-2) P(x_1,y_1,\cdots,x_n,y_n)=P(y_1)P(x_1|y_1)\prod_{i=2}^{n}P(y_i|y_{i-1})P(x_i|y_i)\\ \tag{1-2} P(x1,y1,,xn,yn)=P(y1)P(x1y1)i=2nP(yiyi1)P(xiyi)(1-2)
除了前面提到的状态空间 Y Y Y和观测空间 X X X,要想确定一个HMM模型还需要如下三组参数:

  • 状态转移概率矩阵(隐藏状态到隐藏状态之间的概率转换): A = [ a i j ] N × N A=[a_{ij}]_{N\times N} A=[aij]N×N,其中 a i j = P ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N a_{ij}=P(y_{t+1}=s_j|y_t=s_i),1\leq i,j\leq N aij=P(yt+1=sjyt=si),1i,jN.为了便于后文公式推导中的符号说明,我们引入 a s i s j = P ( y t + 1 = s j ∣ y t = s i ) , 1 ≤ i , j ≤ N a_{s_is_j}=P(y_{t+1}=s_j|y_t=s_i),1\leq i,j\leq N asisj=P(yt+1=sjyt=si),1i,jN。有时候也用省略的写法 a i j a_{ij} aij
  • 观测概率矩阵(也叫发射概率,隐藏状态到观测状态之间的概率转换): B = [ b i j ] N × M B=[b_{ij}]_{N\times M} B=[bij]N×M,其中 b i j b_{ij} bij表示 P ( x t = o j ∣ y t = s i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M P(x_t=o_j|y_t=s_i),1\leq i\leq N,1\leq j\leq M P(xt=ojyt=si),1iN,1jM.为了便于后文公式推导中的符号说明,我们引入 b s i o j b_{s_io_j} bsioj表示 P ( x t = o j ∣ y t = s i ) , 1 ≤ i ≤ N , 1 ≤ j ≤ M P(x_t=o_j|y_t=s_i),1\leq i\leq N,1\leq j\leq M P(xt=ojyt=si),1iN,1jM。有时候也用省略的写法 b i j b_{ij} bij
  • 初始状态概率向量: π = ( π 1 , π 2 , ⋯   , π N ) \pi=(\pi_1,\pi_2,\cdots,\pi_N) π=(π1,π2,,πN),其中 π i = P ( y 1 = s i ) \pi_i=P(y_1=s_i) πi=P(y1=si)

记一个HMM为 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π],则可按照如下过程产生观测序列:

  1. 设置t=1,根据初始状态概率 π \pi π选择初始状态 y 1 y_1 y1(比如根据概率最大的原则选取);
  2. 根据状态 y t y_t yt和输出观测概率矩阵 B B B确定观测变量 x t x_t xt
  3. 根据状态 y t y_t yt和状态转移矩阵 A A A确定 y t + 1 y_{t+1} yt+1
  4. t < n t< n t<n,设置 t = t + 1 t=t+1 t=t+1,并跳转到2;否则停止。

1.2. HMM的实际应用问题描述

在实际应用中,我们常常关注HMM的下面三个问题:

  1. 观测序列概率计算问题:给定模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]和观测序列 X = { x 1 , x 2 , ⋯   , x n } X=\{x_1,x_2,\cdots,x_n\} X={x1,x2,,xn},如何有效计算出观测序列出现的概率 P ( X ∣ λ ) P(X|\lambda) P(Xλ)。换言之,如何评估模型与观测序列之间的匹配程度(因为计算出观测序列的时候,可能会有多个选择要选择最匹配的那个结构)。例如,根据时间序列的历史值预测未来值(已知n时刻及之前的x,对n+1时刻可能的x都拿来计算观测序列的概率,挑使得观测序列概率最大的状态作为n+1时刻的x);这个过程称为前向算法
  2. 状态序列预测问题算法:给定模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]和观测序列 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 i ∈ { s 1 , s 2 , ⋯   , s N } Y=\{y_1,y_2,\cdots,y_n\},y_i\in\{s_1,s_2,\cdots,s_N\} Y={y1,y2,,yn},yi{s1,s2,,sN}。换言之,如何根据观测序列推断出隐藏状态。例如,在语音识别ASR中,如何根据语音信号(观测值)确定文字序列(隐藏状态);主流的算法是维特比算法
  3. 参数学习问题:给定观测序列 X = { x 1 , x 2 , ⋯   , x n } X=\{x_1,x_2,\cdots,x_n\} X={x1,x2,,xn},如何调整模型参数 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]使得该序列出现的概率 P ( X ∣ λ ) P(X|\lambda) P(Xλ)最大。换言之,如何训练模型使其能最好滴描述观测数据。例如,根据梯度下降的方式在序列样本上学习得到最优的模型参数;EM算法 前后向算法

1.2.1. 观测序列概率计算问题

给定模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]和观测序列 X = { x 1 , x 2 , ⋯   , x n } X=\{x_1,x_2,\cdots,x_n\} X={x1,x2,,xn},如何有效计算出观测序列出现的概率 P ( X ∣ λ ) P(X|\lambda) P(Xλ)

1.2.1.1. 直接暴力计算法

此方法是最简单粗暴的算法,但是复杂度过高,实际中一般不采用。其他算法一般都是在此算法上优化得到的,因此有必要了解一下直接计算法的原理。
直接计算法的思路是,通过列举所有可能的长度为T的状态序列 Y = { y 1 , y 2 , ⋯   , y T } Y=\{y_1,y_2,\cdots,y_T\} Y={y1,y2,,yT},求各个状态序列Y与观测序列 X = { x 1 , x 2 , ⋯   , x T } X=\{x_1,x_2,\cdots,x_T\} X={x1,x2,,xT}的联合概率 P ( X , Y ∣ λ ) P(X,Y|\lambda) P(X,Yλ),然后利用全概率对所有可能的状态序列求和得到 P ( X ∣ λ ) P(X|\lambda) P(Xλ)
对于某个具体的状态序列 Y = { y 1 , y 2 , ⋯   , y T } Y=\{y_1,y_2,\cdots,y_T\} Y={y1,y2,,yT},其概率为:
P ( Y ∣ λ ) = π y 1 a y 1 y 2 a y 2 y 3 ⋯ a y T − 1 y T (1-3) P(Y|\lambda)=\pi_{y_1}a_{y_1y_2}a_{y_2y_3}\cdots a_{y_{T-1}y_T}\tag{1-3} P(Yλ)=πy1ay1y2ay2y3ayT1yT(1-3)
给定上述状态序列,观测序列 X = { x 1 , x 2 , ⋯   , x T } X=\{x_1,x_2,\cdots,x_T\} X={x1,x2,,xT}的概率为:
P ( X ∣ Y , λ ) = b y 1 , x 1 b y 2 , x 2 ⋯ b y T x T (1-4) P(X|Y,\lambda)=b_{y_1,x_1}b_{y_2,x_2}\cdots b_{y_Tx_T}\tag{1-4} P(XY,λ)=by1,x1by2,x2byTxT(1-4)
则状态序列和观测序列的联合概率可以表示为:
P ( X , Y ∣ λ ) = P ( X ∣ Y , λ ) P ( Y ∣ λ ) = π y 1 b y 1 x 1 a y 1 y 2 b y 2 x 2 a y 2 y 3 ⋯ b y T − 1 x T − 1 a y T − 1 y T b y T x T (1-5) \begin{aligned} P(X,Y|\lambda)&=P(X|Y,\lambda)P(Y|\lambda)\\ &=\pi_{y_1}b_{y_1x_1}a_{y_1y_2}b_{y_2x_2}a_{y_2y_3}\cdots b_{y_{T-1}x_{T-1}}a_{y_{T-1}y_T}b_{y_Tx_T}\tag{1-5} \end{aligned} P(X,Yλ)=P(XY,λ)P(Yλ)=πy1by1x1ay1y2by2x2ay2y3byT1xT1ayT1yTbyTxT(1-5)
则观测序列的概率可以有全概率公式求得:
P ( X ∣ λ ) = ∑ Y P ( X ∣ Y , λ ) P ( Y ∣ λ ) = ∑ y 1 ∈ S , y 2 ∈ S , ⋯   , y T ∈ S π y 1 b y 1 x 1 a y 1 y 2 b y 2 x 2 a y 2 y 3 ⋯ b y T − 1 x T − 1 a y T − 1 y T b y T x T (1-6) \begin{aligned} P(X|\lambda)&=\sum_YP(X|Y,\lambda)P(Y|\lambda)\\ &=\sum_{y_1\in S,y_2\in S,\cdots,y_T\in S}\pi_{y_1}b_{y_1x_1}a_{y_1y_2}b_{y_2x_2}a_{y_2y_3}\cdots b_{y_{T-1}x_{T-1}}a_{y_{T-1}y_T}b_{y_Tx_T}\tag{1-6} \end{aligned} P(Xλ)=YP(XY,λ)P(Yλ)=y1S,y2S,,yTSπy1by1x1ay1y2by2x2ay2y3byT1xT1ayT1yTbyTxT(1-6)
上式的计算复杂度高达 O ( T N T ) O(TN^T) O(TNT)

1.2.1.2. 基于动态规划的前向算法

直接计算法复杂度过高的原因在于存在大量冗余计算。例如,当t时刻之前的状态序列固定时,穷举t时刻之后的状态序列的各种取值情况时,都会重复计算t时刻之前的各种取值情况。因此可以采用动态规划的思想,求得计算过程中的递推式,减少重复计算。
定义到t时刻时,观测序列 { x 1 , x 2 , ⋯   , x t } \{x_1,x_2,\cdots,x_t\} {x1,x2,,xt}且状态为 s i s_i si的概率为前向概率,记作:
α t ( s i ) = P ( x 1 , x 2 , ⋯   , x t , y t = s i ∣ λ ) (1-7) \alpha_t(s_i)=P(x_1,x_2,\cdots,x_t,y_t=s_i|\lambda)\tag{1-7} αt(si)=P(x1,x2,,xt,yt=siλ)(1-7)
进行如下递推计算过程:
初值t=1:
α 1 ( s i ) = π s i b s i x i , i = 1 , 2 , ⋯   , N (1-8) \alpha_1(s_i)=\pi_{s_i}b_{s_ix_i},i=1,2,\cdots,N\tag{1-8} α1(si)=πsibsixi,i=1,2,,N(1-8)
对于 t = 1 , 2 , ⋯   , T − 1 t=1,2,\cdots,T-1 t=1,2,,T1:
α t + 1 ( s i ) = [ ∑ j = 1 N α t ( s j ) a s j s i ] b s i x t + 1 , i = 1 , 2 , ⋯   , N (1-9) \alpha_{t+1}(s_i)=\left[\sum_{j=1}^N\alpha_t(s_j)a_{s_js_i}\right]b_{s_ix_{t+1}},i=1,2,\cdots,N\tag{1-9} αt+1(si)=[j=1Nαt(sj)asjsi]bsixt+1,i=1,2,,N(1-9)
终止值:
P ( O ∣ λ ) = ∑ i = 1 N α T ( s i ) (1-10) P(O|\lambda)=\sum_{i=1}^N\alpha_T(s_i)\tag{1-10} P(Oλ)=i=1NαT(si)(1-10)

1.2.1.3. 《统计学习方法》例10.2python代码

项目地址:https://github.com/lankuohsing/machine-learning-in-python/tree/main/Probabilistic-Graphical-Model

# 状态 1 2 3之间的转移概率矩阵
A = [[0.5,0.2,0.3],
     [0.3,0.5,0.2],
     [0.2,0.3,0.5]]
# 初始状态概率
pi = [0.2,0.4,0.4]
# 每个袋子里,红白求的概率
# red white
B = [[0.5,0.5],
     [0.4,0.6],
     [0.7,0.3]]

# In[]
#前向算法
def hmm_forward(A,B,pi,O):
    T = len(O)# 观测序列长度
    N = len(A[0])# 状态个数
    #step1 初始化
    alpha = [[0]*T for _ in range(N)]# 每行代表不同的状态,每列代表不同的观测时刻
    for i in range(N):
        alpha[i][0] = pi[i]*B[i][O[0]]

    #step2 计算alpha(t)
    for t in range(1,T):
        for i in range(N):
            temp = 0
            for j in range(N):
                temp += alpha[j][t-1]*A[j][i]
            alpha[i][t] = temp*B[i][O[t]]

    #step3
    proba = 0
    for i in range(N):
        proba += alpha[i][-1]
    return proba,alpha

A = [[0.5,0.2,0.3],
     [0.3,0.5,0.2],
     [0.2,0.3,0.5]]
B = [[0.5,0.5],
     [0.4,0.6],
     [0.7,0.3]]
pi = [0.2,0.4,0.4]
O = [0,1,0]
proba,alpha=hmm_forward(A,B,pi,O)  #结果为 0.130218
print(proba)

1.2.2. 状态序列预测问题算法

给定模型 λ = [ A , B , π ] \lambda=[A,B,\pi] λ=[A,B,π]和观测序列 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 i ∈ { s 1 , s 2 , ⋯   , s N } Y=\{y_1,y_2,\cdots,y_n\},y_i\in\{s_1,s_2,\cdots,s_N\} Y={y1,y2,,yn},yi{s1,s2,,sN}

1.2.2.1. 直接暴力计算法

穷举所有的状态序列的可能情况,分别计算它们的概率并求最大。此方法时间复杂度过高,基本没有实用价值

1.2.2.2. Viterbi算法

(注:下文的起点,都是默认指0时刻从起点出发的意思)
该算法是基于动态规划的最短路径算法,在其他最短路径问题中也具有广泛应用。它的思想是:记末尾时刻为 T T T,如果最优路径在时刻t通过结点 i t ∗ i_t^* it,那么这条路径从结点 i t ∗ i_t^* it到终点 i T ∗ i_T^* iT的部分路径,对于从 i t ∗ i_t^* it i T ∗ i_T^* iT的所有子路径来说必须是最优的,同理,这条路径中从起点到结点 i t ∗ i_t^* it的部分路径也是从起点到结点 i t ∗ i_t^* it的所有子路径中最优的。根据这一原理,我们只需从时刻 t = 1 t=1 t=1开始,递推地计算从起点到在时刻t状态为i的结点的各条子路径中的最优路径,并记录下每个结点的上一时刻的最优结点,当计算到终点时就完成了整个最优路径的计算。

定义从起点到时刻t状态为i的所有子路径 ( i 1 , i 2 , ⋯   , i t ) (i_1,i_2,\cdots,i_t) (i1,i2,,it)中概率最大值为:
δ t ( i ) = max ⁡ i 1 , i 2 , ⋯   , i t − 1 P ( i t = i , i t − 1 , ⋯   , i 1 , x t , ⋯   , x 1 ∣ λ ) , i = 1 , 2 , ⋯   , N (1-11) \delta_t(i)=\mathop {\max }\limits_{i_1,i_2,\cdots,i_{t-1}}P(i_t=i,i_{t-1},\cdots,i_1,x_t,\cdots,x_1|\lambda),i=1,2,\cdots,N\tag{1-11} δt(i)=i1,i2,,it1maxP(it=i,it1,,i1,xt,,x1λ),i=1,2,,N(1-11)
那么可以得到 δ t + 1 ( i ) \delta_{t+1}(i) δt+1(i)的递推式:
δ t + 1 ( i ) = max ⁡ i 1 , i 2 , ⋯   , i t P ( i t = i , i t , ⋯   , i 1 , x t + 1 , ⋯   , x 1 ∣ λ ) = max ⁡ 1 ≤ j ≤ M [ δ t ( j ) a j i ] b i x t + 1 , i = 1 , 2 , ⋯   , N ; t = 1 , 2 , ⋯   , T − 1 (1-12) \begin{aligned} \delta_{t+1}(i)&=\mathop {\max }\limits_{i_1,i_2,\cdots,i_{t}}P(i_t=i,i_{t},\cdots,i_1,x_{t+1},\cdots,x_1|\lambda)\\ &=\mathop {\max }\limits_{1\leq j\leq M}[\delta_t(j)a_{ji}]b_{ix_{t+1}},i=1,2,\cdots,N;t=1,2,\cdots,T-1\\ \tag{1-12} \end{aligned} δt+1(i)=i1,i2,,itmaxP(it=i,it,,i1,xt+1,,x1λ)=1jMmax[δt(j)aji]bixt+1,i=1,2,,N;t=1,2,,T1(1-12)
定义从起点到在时刻t状态为i的结点所有单个路径 { ( i 1 , i 2 , ⋯   , i t − 1 , t ) } \{(i_1,i_2,\cdots,i_{t-1},t)\} {(i1,i2,,it1,t)}中概率最大的路径的第 t − 1 t-1 t1时刻的结点为:
ψ t ( i ) = a r g max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] (1-13) \psi_t(i)=arg \mathop{\max }\limits_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}]\tag{1-13} ψt(i)=arg1jNmax[δt1(j)aji](1-13)

那么viterbi算法的流程就呼之欲出了:
(1) 赋予初值:
δ 1 ( i ) = π i b i x 1 , i = 1 , 2 , ⋯   , N ψ i ( i ) = 0 , i = 1 , 2 , ⋯   , N (1-14) \begin{aligned} \delta_1(i)&=\pi_ib_{ix_1},i=1,2,\cdots,N\\ \psi_i(i)&=0,i=1,2,\cdots,N\\ \tag{1-14} \end{aligned} δ1(i)ψi(i)=πibix1,i=1,2,,N=0,i=1,2,,N(1-14)
(2) 递推式, t = 2 , 3 , ⋯   , T t=2,3,\cdots,T t=2,3,,T
δ t ( i ) = max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] b i x t + 1 , i = 1 , 2 , ⋯   , N ψ t ( i ) = a r g max ⁡ 1 ≤ j ≤ N [ δ t − 1 ( j ) a j i ] , i = 1 , 2 , ⋯   , N (1-15) \begin{aligned} \delta_t(i)&=\mathop {\max }\limits_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}]b_{ix_{t+1}},i=1,2,\cdots,N\\ \psi_t(i)&=arg \mathop{\max }\limits_{1\leq j\leq N}[\delta_{t-1}(j)a_{ji}],i=1,2,\cdots,N\\ \tag{1-15} \end{aligned} δt(i)ψt(i)=1jNmax[δt1(j)aji]bixt+1,i=1,2,,N=arg1jNmax[δt1(j)aji],i=1,2,,N(1-15)
(3) 终止,计算完整的最优路径和概率:
P ∗ = max ⁡ 1 ≤ i ≤ N δ T ( i ) i T ∗ = a r g max ⁡ 1 ≤ j ≤ N [ δ t ( i ) ] i t ∗ = ψ t + 1 ( i t + 1 ∗ ) , t = T − 1 , T − 2 , ⋯   , 1 (1-16) \begin{aligned} P^*&=\mathop {\max }\limits_{1\leq i\leq N}\delta_T(i)\\ i_T^*&=arg \mathop{\max }\limits_{1\leq j\leq N}[\delta_{t}(i)]\\ i_t^*&=\psi_{t+1}(i_{t+1}^*),t=T-1,T-2,\cdots,1\\ \tag{1-16} \end{aligned} PiTit=1iNmaxδT(i)=arg1jNmax[δt(i)]=ψt+1(it+1),t=T1,T2,,1(1-16)

1.3. HMM实际例子

在这里插入图片描述
在这里插入图片描述

1.4. 马尔科夫随机场(Markov Random Field, MRF)

MRF是典型的马尔科夫网,是一种著名的无向图模型,图中每个结点表示一个或一组变量,结点之间的边表示两个变量之间的依赖关系。定义势函数(亦称“因子”)为变量子集上的非负实函数,主要用于定义概率分布函数。
对于结点的一个子集,若其中任意两点结点之间都有边连接,则称该节点子集为一个“团”。若在一个团中加入任何一个节点都不再形成团,则称该团为“极大团”。对于n各变量 X = { x 1 , x 2 , ⋯   , x n } X=\{x_1,x_2,\cdots,x_n\} X={x1,x2,,xn},记其所有团构成的集合为 C C C,与团 Q ∈ C Q\in C QC对应的变量集合记为 X Q X_Q XQ,则联合概率 P ( X ) P(X) P(X)定义为
P ( X ) = 1 Z ∏ Q ∈ C ψ ( X Q ) (1-2) P(X)=\frac{1}{Z}\prod_{Q\in C}\psi(X_Q)\tag{1-2} P(X)=Z1QCψ(XQ)(1-2)
其中 ψ ( X Q ) \psi(X_Q) ψ(XQ)为与团 Q Q Q对应的是函数, Z = ∑ X ∏ Q ∈ C ψ ( X Q ) Z=\sum_X\prod_{Q\in C}\psi(X_Q) Z=XQCψ(XQ) 为规范化因子,用以确保上式的值域为0~1.
为了减少需要计算的团的数目,有如下推论:若 Q Q Q不是极大团,则它必被一个极大团 Q ∗ Q^* Q,于是 P ( X ) P(X) P(X)可以基于极大团来定义。假设所有极大团构成的集合为 C ∗ C^* C,则有
P ( X ) = 1 Z ∗ ∏ Q ∈ C ∗ ψ ( X Q ) (1-3) P(X)=\frac{1}{Z^*}\prod_{Q\in C^*}\psi(X_Q)\tag{1-3} P(X)=Z1QCψ(XQ)(1-3)
假设结点集合A中的结点到结点集B中的点都必须经过结点集C中的结点,则称结点集A和B被结点集C分离,C称为“分离集”。对于马尔科夫随机场,有“全局马尔科夫性”:给定两个变量子集的分离集,则这两个变量子集条件独立,也即有
P ( x A , x B ∣ x C ) = P ( x A ∣ x C ) P ( x B ∣ x C ) (1-4) P(x_A,x_B|x_C)=P(x_A|x_C)P(x_B|x_C)\tag{1-4} P(xA,xBxC)=P(xAxC)P(xBxC)(1-4)
具体证明见《机器学习》(周志华)324.
由全局马尔科夫性可以得到两个推论:

  1. 局部马尔科夫性:给定某变量的邻接变量,则该变量条件独立与其他变量
  2. 成对马尔科夫性:给定所有其他变量,两个非邻接变量条件独立。

2. 条件随机场(Conditional Random Field, CRF)

2.1. CRF的数学定义

X = { x 1 , x 2 , ⋯   , x n } , x i ∈ { o 1 , o 2 , ⋯   , o M } X=\{x_1,x_2,\cdots,x_n\},x_i\in \{o_1,o_2,\cdots,o_M\} X={x1,x2,,xn},xi{o1,o2,,oM}为观测序列, Y = { y 1 , y 2 , ⋯   , y n } , y i ∈ { s 1 , s 2 , ⋯   , s N } Y=\{y_1,y_2,\cdots,y_n\},y_i\in\{s_1,s_2,\cdots,s_N\} Y={y1,y2,,yn},yi{s1,s2,,sN}为状态序列(标记或者叫标签),CRF的目的是构建条件概率模型 P ( Y ∣ X ) P(Y|X) P(YX)。注意, Y Y Y的各分量之间可以是相关的,例如nlp的词性标注任务中,观测数据为句子的单词序列,标记数据为相应的词性序列。
G = ⟨ V , E ⟩ G=\langle V,E\rangle G=V,E表示结点与标记变量 Y Y Y中元素一一对应的无向图, y v y_v yv表示与结点 v v v对应的标记变量, n ( v ) n(v) n(v)表示结点 v v v的邻接节点,若图 G G G中每个变量 y v y_v yv都满足马尔科夫性,即
P ( y v ∣ X , Y V \ { v } ) = P ( y v ∣ X , Y n ( v ) ) (2-1) P\left(y_v|X,Y_{V\backslash\{v\}}\right)=P(y_v|X,Y_n(v))\tag{2-1} P(yvX,YV\{v})=P(yvX,Yn(v))(2-1)
( Y , X ) (Y,X) (Y,X)构成一个条件随机场。

以链式条件随机场为例,CRF的条件概率被定义为
P ( Y ∣ X ) = 1 Z e x p ( ∑ j ∑ i = 1 n − 1 λ j t j ( y i + 1 , y i , X , i ) + ∑ k ∑ i = 1 n μ k s k ( y i , X , i ) ) (2-2) P(Y|X)=\frac{1}{Z}exp\left(\sum_j\sum_{i=1}^{n-1}\lambda_j t_j(y_{i+1},y_i,X,i)+\sum_k\sum_{i=1}^{n}\mu_k s_k(y_i,X,i)\right)\tag{2-2} P(YX)=Z1exp(ji=1n1λjtj(yi+1,yi,X,i)+ki=1nμksk(yi,X,i))(2-2)
其中 t j ( y i + 1 , y i , X , i ) t_j(y_{i+1},y_i,X,i) tj(yi+1,yi,X,i)是定义在观测序列的两个相邻标记位置上的转移特征函数,用于刻画向量标记变量之间的相关关系以及观测序列对它们的影响; s k ( y i , X , i ) s_k(y_i,X,i) sk(yi,X,i)是定义在观测序列的标记位置 i i i上的状态特征函数,用于刻画观测序列对标记变量的影响; λ j \lambda_j λj μ k \mu_k μk为参数, Z Z Z为规范化因子。

2.2. 特征函数的例子

以词性标注为例,
t j ( y i + 1 , y i , X , i ) = 1 , i f   y i + 1 = [ P ] , y i = [ V ]   a n d   x i = " k n o c k " ; 0   o t h e r w i s e t_j(y_{i+1},y_i,X,i)=1,if\ y_{i+1}=[P],y_i=[V]\ and\ x_i="knock";0\ otherwise tj(yi+1,yi,X,i)=1,if yi+1=[P],yi=[V] and xi="knock";0 otherwise

s k ( y i , X , i ) = 1 , i f   y i = [ V ]   a n d   x i = " k n o c k " ; 0   o t h e r w i s e s_k(y_i,X,i)=1,if\ y_i=[V]\ and\ x_i="knock";0\ otherwise sk(yi,X,i)=1,if yi=[V] and xi="knock";0 otherwise

Statistical learning refers to a set of tools for modeling and understanding complex datasets. It is a recently developed area in statistics and blends with parallel developments in computer science and, in particular, machine learning. The field encompasses many methods such as the lasso and sparse regression, classification and regression trees, and boosting and support vector machines. With the explosion of “Big Data” problems, statistical learning has be- come a very hot field in many scientific areas as well as marketing, finance, and other business disciplines. People with statistical learning skills are in high demand. One of the first books in this area—The Elements of Statistical Learning (ESL) (Hastie, Tibshirani, and Friedman)—was published in 2001, with a second edition in 2009. ESL has become a popular text not only in statis- tics but also in related fields. One of the reasons for ESL’s popularity is its relatively accessible style. But ESL is intended for individuals with ad- vanced training in the mathematical sciences. An Introduction to Statistical Learning (ISL) arose from the perceived need for a broader and less tech- nical treatment of these topics. In this new book, we cover many of the same topics as ESL, but we concentrate more on the applications of the methods and less on the mathematical details. We have created labs illus- trating how to implement each of the statistical learning methods using the popular statistical software package R . These labs provide the reader with valuable hands-on experience.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值