NLP——9.隐式马尔科夫链

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在初始状态确定的情况下,(1 0)状态下,马尔科夫链的结果最终会趋于稳态分布。

即最终结果会得到一个固定的稳态分布。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
没有办法给出完整的判断,这个时候就需要多一条马尔科夫链。

先设置一个牛市和熊市的马尔科夫链,然后牛市对应涨跌,熊市也对应涨跌。从而得到一个双层结构的马尔科夫链。

能观测到的最外侧的涨跌(显性的状态集合),而牛市和熊市没办法直接观测得到为隐式。

通过能观测的显性求解出整个双层马尔科夫链集合,这就是隐马尔科夫链。
在这里插入图片描述
在这里插入图片描述
由于每次掷骰子的时候只能得到黑盒输出的数字(可见状态链:1,6,8,5,4),

并不能直接知道是哪一种骰子得到的,只能推测出(隐形状态链:D4,D6,D8,D6,D4)。(根据上述可见状态连的结果来对应推测出隐形状态链)
在这里插入图片描述
在这里假设三种骰子出现的概率都是三分之一,因此上图中每条线上,他们之间的转换概率都是三分之一。

每一种骰子都能产生出一种,因此在上述隐式马尔科夫链外面加上一层显式的喷射(投射)的可见状态并对应相应的概率值。
在这里插入图片描述
展开的隐式马尔科夫链,横向是时间表示每个节点就是每一次选的骰子并掷出一定的数值。

此图类似于展开的RNN中有一个记录状态,每个状态能射出不同的数值。
在这里插入图片描述
三种问题中,观测结果是一定会已知能观测出来的。
在这里插入图片描述
问题1:Evaluation:O表示可以直观看到的观测序列;模型为λ=(A状态转移矩阵,B观测的概率分布,π初始概率分布)。然后计算出在模型确定情况下观测值出现的概率。

问题2:Recognition:已知观测序列和模型,如何选择一个相关的状态序列(就是隐层的马尔科夫链)Q来最好地描述观测值的产生。

例如,HMM在语音识别问题中,同一句话有不同的语音,通过不同的语音想要识别出背后真正传达的含义。

问题3:Training:已知观测值,如何通过调整模型的参数(模型未知)找到最好的A,B,π使得该模型对应的观测序列值最大化。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
三种观测值和两种天气状态的组合情况:2^3=6种,分别进行计算。例如:

P ( R , R , R , W , S , C ) = P ( 1 R ) P ( W ∣ 1 R ) P ( 2 R ) P ( S ∣ 2 R ) P ( 3 R ) P ( C ∣ 3 R ) = 0.6 ∗ 0.1 ∗ 0.7 ∗ 0.4 ∗ 0.1 ∗ 0.5 P(R,R,R,W,S,C) = P(1R) P(W|1R) P(2R) P(S|2R) P(3R) P(C|3R) = 0.6*0.1*0.7*0.4*0.1*0.5 P(R,R,R,W,S,C)=P(1R)P(W1R)P(2R)P(S2R)P(3R)P(C3R)=0.60.10.70.40.10.5
在这里插入图片描述
将所有可能的路径,全部算出来相应的概率值。
在这里插入图片描述
先预设Q的值,然后猜测对于一个样本序列Q而言,此概率P(O|Q,λ)的大小:将所有时间节点都连乘起来。b表示q状态喷射出来的观测值相应概率。
在这里插入图片描述
P ( O , Q ∣ λ ) P(O,Q|λ) PO,Qλ表示模型已知情况下, O , Q O,Q O,Q显示观测值和隐式值同时出现的概率。

可以将所有隐 Q Q Q加起来

P ( Q ∣ λ ) P(Q|λ) PQλ表示出此天气的权重

虽然思路简单,但时间复杂度较高,计算量很大。
在这里插入图片描述

t = 1 , w t =1,w t=1,w

P ( W , R ) = P ( 1 R ) ∗ P ( W ∣ R ) = 0.6 ∗ 0.1 = 0.06 P(W,R) = P(1R)*P(W|R) = 0.6*0.1 = 0.06 P(W,R)=P(1R)P(WR)=0.60.1=0.06

P ( W , S ) = P ( 1 S ) ∗ P ( W ∣ 1 S ) = 0.4 ∗ 0.6 = 0.24 P(W,S) = P(1S)*P(W|1S) = 0.4*0.6 = 0.24 P(W,S)=P(1S)P(W1S)=0.40.6=0.24

t = 2 , S t =2, S t=2,S

P ( 1 W , 2 S , 2 R ) = [ P ( 1 W , 1 R ) ∗ P ( 2 R ∣ 1 R ) + P ( 1 W , 1 S ) ∗ P ( 2 R ∣ 1 R ) ] ∗ P ( 2 S ∣ 2 R ) = P(1W,2S,2R) = [P(1W,1R)*P(2R|1R)+P(1W,1S)*P(2R|1R)]*P(2S|2R) = P(1W,2S,2R)=[P(1W,1R)P(2R1R)+P(1W,1S)P(2R1R)]P(2S2R)=

以此类推,之后的情况按照时间累计,需要考虑之前的情况。

好处在于:时间复杂度相比遍历算法降低了。时间复杂度随着时间的变长会越来越低,因为是基于之前算好的进行计算的。

遍历算法(图论的形式)不仅有横向的(每天不同的状态值)还有纵向的(每天不同状态下不同的观测值)。时间复杂度是指数形式。

在这里插入图片描述
观测到时间t的时候的可能观测值,以及t时刻预测状态值为Sj的概率。利用前向变量作为中介值写出两条公式。

bjot+1为喷发值,πi为本身的初始概率。

在t+1时刻喷发值j的概率bjot+1,计算出递推结果αj(t+1)

最后把所有可能性都加起来。
在这里插入图片描述
从最后一个状态慢慢往前推导。后向变量β

初始化 i n i t : β 3 ( R ) = 1 init:β3(R)=1 initβ3R=1或者 β 3 ( S ) = 1 β3(S)=1 β3S=1然后进行递推。( A A A状态转移, B B B模型喷射值, π π π初始值)

已知最后一个观测值为 O 3 = C O3=C O3=C,由于后向观测值为一个确定的数值,所以初始值不像前向计算时初始化为一定的概率了,这里直接初始化为1。

β 2 ( R ) = 状 态 转 移 α ( R − R ) b R ( O 3 = C ) β 3 ( R ) + a ( R − S ) b S ( O 3 = C ) β 3 ( S ) = 0.7 ∗ 0.5 ∗ 1 + 0.3 ∗ 0.1 ∗ 1 β2(R) =状态转移α(R-R) bR(O3=C) β3(R) + a(R-S) bS(O3=C) β3(S) = 0.7*0.5*1+0.3*0.1*1 β2(R)=α(RR)bR(O3=C)β3(R)+a(RS)bS(O3=C)β3(S)=0.70.51+0.30.11

以此类推,利用递推公式,求出所有的 β 1 ( R ) , β 1 ( S ) , β 1 ( R ) β1(R),β1(S),β1(R) β1(R)β1(S)β1(R)

P ( W , S , C ) = π R b R ( O 1 = W ) β 1 ( R ) + π S b S ( O 1 = W ) β 1 ( S ) P(W,S,C) = πR bR(O1=W)β1(R) + πS bS(O1=W) β1(S) P(W,S,C)=πRbR(O1=W)β1(R)+πSbS(O1=W)β1(S)
在这里插入图片描述
在这里插入图片描述
类似图论。已知最后的结果是W,S,C,利用暴力搜索的模式遍历所有的中介点。探求以什么中介点组合能使得最后结果的概率P(W,S,C)最高。

i n i t : δ 1 ( R ) = π R ∗ b R ( O 1 = W ) = 0.06 init:δ1(R) = πR * bR(O1=W) =0.06 initδ1(R)=πRbR(O1=W)=0.06

δ 1 ( S ) = π S ∗ b S ( O 1 = W ) = 0.06 δ1(S) = πS * bS(O1=W) =0.06 δ1(S)=πSbS(O1=W)=0.06

路 径 : 状 态 存 储 量 φ 1 ( R ) = 0      φ 1 ( S ) = 0 路径:状态存储量 φ1(R) = 0 \ \ \ \ φ1(S) = 0 φ1(R)=0    φ1(S)=0

δ 2 ( R ) = m a x [ δ 1 ( R ) ∗ a ( R − R ) ∗ b R ( O 2 = S ) ] = δ2(R) = max[δ1(R) * a(R-R) * bR(O2=S)] = δ2(R)=max[δ1(R)a(RR)bR(O2=S)]= 得到此最大值的是 r a i n n y rainny rainny还是 s u n n y sunny sunny,记录到 φ φ φ当中。

δ 2 ( S ) = m a x [ δ 1 ( R ) ∗ a ( R − R ) ∗ b R ( O 2 = S ) ] = δ2(S) = max[δ1(R) * a(R-R) * bR(O2=S)] = δ2(S)=max[δ1(R)a(RR)bR(O2=S)]=
在这里插入图片描述
viterbi算法相当于动态规划算法。本质就是利用空间换取时间。用更多的存储量将中间点都存储下来,并且算下一层的时候直接通过中间点往后进行计算。

viterbi每次都是依照前一次的进行计算,并将前一次中能够使得这一次达到最好值的中介点记录下来。

好处:
1)不必再做烦琐的遍历了,每次都把最好的结果保存下来。

2)可以防止进入贪心算法的误区:因为贪心算法每次都拿最好的,这样容易拿到的是局部最优。而动态规划算法一直关注的是全局最优。

viterbi变量 δ j ( t ) δ_j(t) δjt中j为让 δ j ( t ) δ_j(t) δjt能取到最大概率的状态

递推公式induction中 δ j ( t + 1 ) δ_j(t+1) δjt+1是由 δ j ( t ) a i j δ_j(t)a_{ij} δj(t)aij最大的值乘上当前状态的喷射值概率bjOt+1

回溯过程backtracking:由于我们的目标并不是求出最大值,而是求出取得最大值的路径,即天气的最优排列表。

当仅仅知道观测值,别的什么都不知道的时候来推导模型的解法如下:

解决此方法得到的只能是局部最优解,找不到全局的。因为在只有观测值的情况下,对模型参数的任何猜测都有一个先天的限制(自定义的一个初始化范围内)。

两种解决方法:
1)gradient techniques梯度下降

2)Baum-Welch reestimation(EM)最难的方法
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最终会稳定到HMM的一个最优值:maximum likelihood estimate of HMM

得到的是局部最优点,很复杂。
在这里插入图片描述
利用viterbi算法自己写出词性标注Tag:将一句话中的所有单词标注出它的词性。

本例采用英语(因为可以直接利用空格进行分词,用中文还需要利用jieba分词在词与词之间加上空格)

标注词性之后可以用于NLP后续的名词提取。
在这里插入图片描述
根据词性写出一种句子。
在这里插入图片描述
每种词性能喷射出具体的单词。然后通过观测值和这个HMM模型推测出内层的具体链条构造。

此时做的是毫无意识的推测,这是上面描述的最难的问题三,此法非常低效且复杂度高。

利用语料库corpus总结标好句子与词性之间的关系,利用总结学习好的句子模型再对新的句子进行标注。这就将上述的问题三降维到了问题二。

然后计算出所有概率得到完整的HMM模型 λ = ( π , A , B ) λ=(π,A,B) λ=πAB,然后将新句子放入此模型中进行标注。
在这里插入图片描述
在单词确定(句子给定的条件下),出现某一标注的概率 P ( t 1... t N ∣ w 1... w N ) P(t1...tN|w1...wN) Pt1...tNw1...wN利用贝叶斯方程来求解。

链式法则chain rule
在这里插入图片描述
词性标注转换分布 P ( t 1... t N ) P(t1...tN) P(t1...tN)

单词喷射分布
在这里插入图片描述
求出A和B的分布。AT为A的起始值

如果有tag和相应的sentences就是问题1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值