跳至主要內容

机械学习| HMM CRF 简笔

吴嘉文 Kevin大约 8 分钟知识笔记NLPMachine Learning

HMM/CRF 笔记 机器学习-白板推导系列(十四)-隐马尔可夫模型 HMMopen in new window机器学习-白板推导系列(十七)-条件随机场 CRFopen in new window

HMM

相关图片
相关图片

对于静态图,样本之间是独立同分布的:xiiidp(xθ)x_{i} \stackrel{i i d}{\sim} p(x \mid \theta)。 HMM 属于概率图中的动态模型,x 之间并不是独立的。

如对于一个 GMM 静态图 ,有 P(xz)N(μ,Σ)P(x|z) \sim N(\mu,\Sigma) 。若加上时间则生成序列(称为动态模型):

相关图片
相关图片

图例中,上方为 GMM 静态图,下方为动态图, 横向代表时间纵向代表混合 。图中阴影 XX 为观测变量, 观测变量 有对应的 隐状态 ,这些隐状态通称为 系统状态

动态度可继续划分,系统状态是离散的话,则模型为 HMM;若状态是连续的,线性的为 Kalman 滤波,非线性的为 Particle 滤波。

HMM 模型:

相关图片
相关图片

图中阴影变量为观测变量 oto_t,状态空间 V={v1,v2,,vM}V=\left\{v_{1}, v_{2}, \cdots, v_{M}\right\} 白圈为状态变量 iti_t,状态空间 Q={q1,q2,,qN}Q=\left\{q_{1}, q_{2}, \cdots, q_{N}\right\}

HMM 模型可表示为: λ=(π,A,B)\lambda = (\pi, A, B) 其中转移矩阵为 A=[aij],aij=P(it+1=qjit=qi)A=[a_{ij}],a_{ij}=P(i_{t+1}=q_j|i_t=q_i)

发射矩阵为 B=[bj(k)],bj(k)=p(ot=vkit=qj)B=\left[b_{j}(k)\right], \quad b_{j}(k)=p\left(o_{t}=v_{k} \mid i_{t}=q_{j}\right)

HMM 假设

齐次 Markov 假设 :当前状态 与前一状态有关

观测独立假设 :当前观测变量 与当前对应的状态变量有关。

HMM 的三个环节

Learning:如何学习模型的参数? Decoding:给定模型参数与观测序列,如何找到一个状态序列 II 使得 P(IO)P(I|O) 最大? Evaluation:给定模型所有参数,如何衡量观测序列的概率?

Evaluation

给定 λ\lambdaP(Oλ)=IP(I,Oλ)=IP(OI,λ)P(Iλ)P(O \mid \lambda)=\sum_{I} P(I, O \mid \lambda)=\sum_{I} P(O \mid I, \lambda) \cdot P(I \mid \lambda)

基于齐次 Markov 假设:

P(Iλ)=P(iTiT1,λ)P(iT1iT2,λ)P(i2i1,λ)P(i1,λ)P(Iλ)=π(ai1)t=2Tait1,it P(I \mid \lambda)=P\left(i_{T} \mid i_{T-1}, \lambda\right) \cdot P\left(i_{T-1} \mid i_{T-2}, \lambda\right) \cdots P\left(i_{2} \mid i_{1}, \lambda\right) \cdot P\left(i_{1}, \lambda\right)\\ P(I \mid \lambda)=\pi\left(a_{i_{1}}\right) \prod_{t=2}^{T} a_{i_{t-1}, i_{t}}

基于观察独立假设:

P(OI,λ)=P(oTiT,λ)P(oT1iT1,λ)P(o1i1,λ)P(OI,λ)=t=1Tbit(ot) P(O \mid I, \lambda)=P\left(o_{T} \mid i_{T}, \lambda\right) \cdot P\left(o_{T-1} \mid i_{T-1}, \lambda\right) \cdots P\left(o_{1} \mid i_{1}, \lambda\right)\\ P(O \mid I, \lambda)=\prod_{t=1}^{T} b_{i_{t}}\left(o_{t}\right)

暴力算法时间复杂度 O(NT)O(N^T)

前向算法O(TN2)O(TN^2)):

αt+1(j)=i=1Nbj(Ot+1)aijαt(i) \alpha_{t+1}(j)=\sum_{i=1}^{N} b_{j}\left(O_{t+1}\right) \cdot a_{i j} \cdot \alpha_{t}(i)

相关图片
相关图片

后向算法:

记:β1(i)=P(o2,,oTi1=qi,λ)\beta_{1}(i)=P\left(o_{2}, \cdots, o_{T} \mid i_{1}=q_{i}, \lambda\right)

那么:

P(Oλ)=i=1Nbi(o1)β1(i)πiβt(i)=j=1Nbj(ot+1)aijβt+1(j) P(O|\lambda)=\sum_{i=1}^{N} b_{i}\left(o_{1}\right) \cdot \beta_{1}(i) \cdot \pi_{i}\\ \beta_t(i)=\sum_{j=1}^{N} b_{j}\left(o_{t+1}\right) \cdot a_{i j} \cdot \beta_{t+1}(j)

Learning

问题描述:求解 λMLE=argmaxλP(Oλ)\lambda_{M L E}=\underset{\lambda}{\operatorname{argmax}} P(O \mid \lambda)

将 EM 算法应用与 HMM 后得出:

λ(t+1)=argaaxλIlogP(O,Iλ)P(IO,λ(t)) \lambda^{(t+1)}=\arg \operatorname{aax}_{\lambda} \sum_{I} \log P(O, I \mid \lambda) \cdot P\left(I \mid O, \lambda^{(t)}\right)

其中 P(IO,λ(t))=P(I,Oλ(t))P(Oλ(t))P\left(I \mid O, \lambda^{(t)}\right) = \frac{P\left(I, O \mid \lambda^{(t)}\right)}{P\left(O \mid \lambda^{(t)}\right)}λt\lambda^{t}OO 已知,因此:

λ(t+1)=argmaxλlogP(O,Iλ)P(O,Iλ(t)) \lambda^{(t+1)}=\operatorname{argmax} \sum_{\lambda} \log P(O, I \mid \lambda) \cdot P\left(O, I \mid \lambda^{(t)}\right)

在上一节已经求出:

P(Oλ)=IP(O,Iλ)=i1i2iT[π(ai1)t=2Tait1,itt=1Tbit(ot)] P(O \mid \lambda)=\sum_{I} P(O, I \mid \lambda)=\sum_{i_{1}} \sum_{i_{2}} \cdots \sum_{i_{T}}\left[\pi\left(a_{i_{1}}\right) \prod_{t=2}^{T} a_{i_{t-1}, i_{t}} \cdot \prod_{t=1}^{T} b_{i_{t}}\left(o_{t}\right)\right]

所以:

P(O,Iλ)=π(ai1)t=2Tait1,itt=1Tbit(ot) P(O, I \mid \lambda)=\pi\left(a_{i_{1}}\right) \prod_{t=2}^{T} a_{i_{t-1}, i_{t}} \cdot \prod_{t=1}^{T} b_{i_{t}}\left(o_{t}\right)

λlogP(O,Iλ)P(O,Iλ(t))=I[(logπi1+t=2Tlogait1,it+t=1Tlogbit(ot))P(O,Iλ(t))] \sum_{\lambda} \log P(O, I \mid \lambda) \cdot P\left(O, I \mid \lambda^{(t)}\right)\\=\sum_{I}\left[\left(\log \pi_{i_{1}}+\sum_{t=2}^{T} \log a_{i_{t-1}, i_{t}}+\sum_{t=1}^{T} \log b_{i_{t}}\left(o_{t}\right)\right) \cdot P\left(O, I \mid \lambda^{(t)}\right)\right]

其中 λ\lambdaπ,A,B\pi, A, B 三个参数,以下挑选 π\pi 进行推导:

π(t+1)=argmaxπQ(λ,λ(t))=argmaxπ[logπi1P(O,Iλ(t))]=argmaxπi1iT[logπi1P(O,i1,,iTλ(t))]=argmaxπi1[logπi1P(O,i1λ(t))]=argmaxπN[logπiP(O,i1=qiλ(t))] \begin{aligned} \pi^{(t+1)} &=\underset{\pi}{\operatorname{argmax}} Q\left(\lambda, \lambda^{(t)}\right) \\ &=\operatorname{argmax} \sum_{\pi}\left[\log \pi_{i_{1}} \cdot P\left(O, I \mid \lambda^{(t)}\right)\right] \\ &=\underset{\pi}{\operatorname{argmax}} \sum_{i_{1}} \cdots \sum_{i_{T}}\left[\log \pi_{i_{1}} \cdot P\left(O, i_{1}, \cdots, i_{T} \mid \lambda^{(t)}\right)\right] \\ &=\underset{\pi}{\operatorname{argmax}} \sum_{i_{1}}\left[\log \pi_{i_{1}} \cdot P\left(O, i_{1} \mid \lambda^{(t)}\right)\right] \\ &=\operatorname{argmax} \sum_{\pi}^{N}\left[\log \pi_{i} \cdot P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)\right] \end{aligned}

HMM 的基础概念中有约束条件:i=1Nπi=1\sum_{i=1}^{N} \pi_{i}=1

因此使用拉格朗日乘子法求解:

L(π,η)=i=1N[logπiP(O,i1=qiλ(t))]+η(i=1Nπi1) L(\pi, \eta)=\sum_{i=1}^{N}\left[\log \pi_{i} \cdot P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)\right]+\eta\left(\sum_{i=1}^{N} \pi_{i}-1\right)

Lπi=1πiP(O,i1=qiλ(t))+η=0P(O,i1=qiλ(t))+πiη=0i=1N[P(O,i1=qiλ(t))+πiη]=0 \frac{\partial L}{\partial \pi_{i}}=\frac{1}{\pi_{i}} P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)+\eta=0\\ P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)+\pi_{i} \eta=0\\ \sum_{i=1}^{N}\left[P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)+\pi_{i} \eta\right]=0

P(Oλ(t))+η=0η=P(Oλ(t)) P\left(O \mid \lambda^{(t)}\right)+\eta=0\\ \eta=-P\left(O \mid \lambda^{(t)}\right)

η\eta 代入 P(O,i1=qiλ(t))+πiη=0P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)+\pi_{i} \eta=0 得:

πi(t+1)=P(O,i1=qiλ(t))P(Oλ(t)) \pi_{i}^{(t+1)}=\frac{P\left(O, i_{1}=q_{i} \mid \lambda^{(t)}\right)}{P\left(O \mid \lambda^{(t)}\right)}

π(t+1)=(π1(t+1),π2(t+1),,πN(t+1)) \pi^{(t+1)}=\left(\pi_{1}^{(t+1)}, \pi_{2}^{(t+1)}, \cdots, \pi_{N}^{(t+1)}\right)

Decoding

解码采用维特比算法:

以下使用概率矩阵 CC 与 动作矩阵 DD 来进行辅助解释。其中 X=w1,w2..wKX={w_1,w_2..w_K} 为观测变量,Z=t1,t2,..tNZ=t_1,t_2,..t_N 为隐状态。aa 为状态转移矩阵,bb 为发射矩阵。

概率矩阵中 ci,jc_{i,j} 记录 max P(w1,w2...wi,z1,z2..,zi=tj)max\ P(w_1,w_2...w_i,z_1,z_2..,z_i=t_j) 。即,对于序列 w1,w2...wiw_1,w_2...w_iii 时刻对应的隐状态为 tjt_j 时候的最大概率。ii 时刻之前的隐状态没有条件限制。

动作矩阵中 dijd_{ij} 记录:对于序列 w1,w2...wiw_1,w_2...w_iii 时刻对应的隐状态为 tjt_j 概率最大时, i1i-1 时刻隐状态为 dijd_{ij}

  1. 初始化概率矩阵 CC 与 动作矩阵 DD
  1. 前向推导,填充满 C,DC,D 两个矩阵。
  1. 反向推导。

CRF

对于解决分类问题,模型可以分为硬模型(输出为类似 01 的确认值)与软模型(输出为概率)。

软模型可以再分为: 概率生成模型(对 P(X,Y)P(X,Y) 建模)。如朴素贝叶斯、HMM。 概率判别模型(对 P(XY)P(X|Y))进行建模。如 MEMM、CRF

CRF 概率图如下,打破了 HMM 的观测独立假设,即 y2y_2 会受到 x1,x2..xtx_1,x_2..x_t 的影响:

相关图片
相关图片

随机场: 当给每一个位置中按照某种分布随机赋予相空间的一个值之后,其全体就叫做随机场。

马尔科夫随机场:

马尔科夫随机场及由马尔科夫性质的随机场,它指的是一个随机变量序列按时间先后关系依次排开的时候,第 N+1 时刻的分布特性,与 N 时刻以前的随机变量的取值无关。(比如今天天气仅与昨天有关,与前天...无关)

线性条件随机场 CRF

通常 NLP 中的 CRF 默认为线性链条件随机场。如同马尔科夫随机场,条件随机场为无向图模型。不同的是,CRF 具有给定的观测变量 XX

线性链条件随机场中 XXYY 结构相同。

线性链条件随机场分解:

根据 Hammersley-Clifford 定理,马尔科夫随机场可以分解为:

P(x)=1Zi=1Kψi(xci),xRp P(x)=\frac{1}{Z} \prod_{i=1}^{K} \psi_{i}\left(x_{c i}\right), x \in \mathbb{R}^{p}

CC 是无向图的最大团,xx 联合概率分布,ψi\psi_{i}为势函数。通常指定势函数为指数函数,因此:

P(x)=1Zi=1Kexp[Ei(xci)],xRp=1Zexpi=1KFi(xci),xRp \begin{aligned} P(x) &=\frac{1}{Z} \prod_{i=1}^{K} \exp \left[-E_{i}\left(x_{c i}\right)\right], x \in \mathbb{R}^{p} \\ &=\frac{1}{Z} \exp \sum_{i=1}^{K} F_{i}\left(x_{c i}\right), x \in \mathbb{R}^{p} \end{aligned}

根据 CRF 的概率图表示,有:

P(YX)=1Zexpt=1TF(yt1,yt,x1:T) P(Y \mid X)=\frac{1}{Z} \exp \sum_{t=1}^{T} F\left(y_{t-1}, y_{t}, x_{1: T}\right)

其中 F(yt1,yt,x1:T)=yt,x1:T+yt1,yt,x1:TF\left(y_{t-1}, y_{t}, x_{1: T}\right)=\triangle y_{t}, x_{1: T}+\triangle y_{t-1}, y_{t}, x_{1: T}

yt1,yt,x1:T=kλkfk(yt1,yt,x1:T)\triangle y_{t-1}, y_{t}, x_{1: T}=\sum_k \lambda_kf_k(y_{t-1}, y_{t}, x_{1: T} ) 为转移函数(类似 HMM 转移矩阵)

yt,x1:T=l=1Lηlgl(yt,x1:1)\triangle y_{t}, x_{1: T}=\sum_{l=1}^{L} \eta_{l} g_{l}\left(y_{t}, x_{1: 1}\right) 为状态函数(类似 HMM 发射矩阵)。

其中 ,fk,gl0,1f_k,g_l \in {0,1} 为给定的特征函数。对状态及转移的可能性进行限制。而 λ,η\lambda, \eta 是需要学习的参数。

因此 CRF 的概率函数总结为:

P(YX)=1Z(X)expi=1T(k=1Kλktk(yi1,yi,X,i)+l=1Lμlsl(yi,X,i)) P(Y \mid X)=\frac{1}{Z(X)} \exp \sum_{i=1}^{T}\left(\sum_{k=1}^{K} \lambda_{k} t_{k}\left(y_{i-1}, y_{i}, X, i\right)+\sum_{l=1}^{L} \mu_{l} s_{l}\left(y_{i}, X, i\right)\right)

CRF 简化表示

P(Y=yX=x)=1Z(x,λ,η)expt=1T[λf(yt1,yt,x)+ηg(yt,x)] P(Y=y \mid X=x)=\frac{1}{Z(x, \lambda, \eta)} \exp \sum_{t=1}^{T}\left[\lambda^{\top} \cdot f\left(y_{t-1}, y_{t}, x\right)+\eta^{\top} \cdot g\left(y_{t}, x\right)\right]

定义 θ=(λη)k+L\theta=\left(\begin{array}{l} \lambda \\ \eta \end{array}\right)_{k+L}H=(t=1Tft=1Tg)k+LH=\left(\begin{array}{c} \sum_{t=1}^{T} f \\ \sum_{t=1}^{T} g \end{array}\right)_{k+L}

因此:

P(Y=yX=x)=1Z(x,λ,η)expt=1T[θTH] P(Y=y \mid X=x)=\frac{1}{Z(x, \lambda, \eta)} \exp \sum_{t=1}^{T}\left[\theta^TH \right]

其中 ZZ 为归一化因子。

参数学习 Learning

学习的目标是 argmaxλ,ηP(yixi)argmax_{\lambda, \eta}\prod P(y_i|x_i)

即:

argmaxλ,ηi=1N(logz(xi,λ,η)+t=1T[λf(yt1,yt,x)+ηg(yt,x)])=argmaxλ,ηL(λ,η,xi) \arg\max_{\lambda, \eta} \sum_{i=1}^N\left(-\log z(x^i, \lambda, \eta)+\sum_{t=1}^{T}\left[\lambda^{\top} \cdot f\left(y_{t-1}, y_{t}, x\right)+\eta^{\top} \cdot g\left(y_{t}, x\right)\right]\right)\\ = \arg\max_{\lambda,\eta} L(\lambda, \eta, x^i)

采用梯度下降/梯度上升法进行优化即可。

λL=i=1Nt=1T(f(yt1,ytx(i))yt1ytP(yt1,yt,x(i))f(yt1,yt,x(i))) \nabla_{\lambda} L=\sum_{i=1}^{N} \sum_{t=1}^{T}\left(f\left(y_{t-1}, y_{t} x^{(i)}\right)-\sum_{y_{t-1}} \sum_{y_{t}} P\left(y_{t-1}, y_{t}, x^{(i)}\right) \cdot f\left(y_{t-1}, y_{t}, x^{(i)}\right)\right)

解码 Decoding

解码采用维特比算法,与 HMM 部分的维特比算法相似。

上次编辑于:
贡献者: kevinng77