搞懂 - BiLSTM-CRF - (1)

时间:2024-04-03 22:40:25

转自大神:https://createmomo.github.io/

搞懂 - BiLSTM-CRF - (1)

 

自己????记录下,方便后面复习一波:

自己的理解:其实CRF 就是 HMM 的变体,本质上是一样的,但是CRF经过变换后可以减小未出现pair的几率,这个HMM做不到

这个模型用来找到,一串文本正确的tag序列。

1)了解BiLSTM-CRF 模型

常识了解下

搞懂 - BiLSTM-CRF - (1)

模型样子:

搞懂 - BiLSTM-CRF - (1)

为什么我们需要CRF这层,直接挑出最大的概率的那个不行吗?还真不行,CRF会学习到合适的表达

举反例:

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

原因总结: 比如某些tag不能出现在开头,比如 一个词语由几个词组成,这几个词的标签种类应该一样

搞懂 - BiLSTM-CRF - (1)

 

2)介绍一波CRF 的 的两个分数

了解一下CRF层的两个score,

发射概率 emission score  来自 BiLSTM层吐出的结果:  某个text 被标记为不同tag的几率

转移概率 transition score  来自BiLSTM训练过程中,自动获得的矩阵(需要啊初始化):某个tag 下一个tag是什么的几率

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

注意这里 其实 转移概率矩阵就告诉了我们,哪些tag大几率出现在开头,某个tag后面正常应该接什么tag。

搞懂 - BiLSTM-CRF - (1)

3)了解一波CRF 的loss function

目标其实很明确:找到正确路径的几率 = 需要正确路径概率/所有路径概率

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

如何定义路径的概率

如何计算所有路径的概率

难道需要穷举所有路径?很明显不用

4)real path score

注意其实新增了 start  end 2个词

计算正确的概率,我们就是要算出这两个概率,发射概率,转移概率

搞懂 - BiLSTM-CRF - (1)

金标准,正确的路径好算: 训练的时候,其实我们是知道正确答案的

搞懂 - BiLSTM-CRF - (1)

5)问题的计算所有路径的概率:

回忆一下,

搞懂 - BiLSTM-CRF - (1)

注意因为我们目标是最大化某个概率,但是实际训练中,我们一般是最小化loss,所以数学变化一下,加负号,顺便再来个log操作,骚气!

搞懂 - BiLSTM-CRF - (1)

再来,假设我们现在训练模型,送一个短句子,假设个短的句子 [w0, w1, w2],   tag=[ l1, l2] 两种,我们已经有了两种scores

搞懂 - BiLSTM-CRF - (1)

 

好了,开始  回忆下我们的目标:

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

前面算好的,可以用上,如果w0的total score算好了,我们可以用它来算接下来的w0 -> w1的total scores

以此类推,我们有两个变量,之前的previous ,和现在的 obs 观察到的 emission scores,

刚开始  total scores 就是只有发射概率,就一个字,就是某个子被标记为不同tag的概率 x01, x02

 

ok,接下来 两个text,两个词语,  我们已经有了obs(上一步的结果), previous(转移概率查表)

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

第二步,现在观察到的obs 中的 w2的发射概率是 x11, x12,  之前看到的发射概率存在 previous中

数学变化一波,先别管为啥,后面有用,--》 感觉就是这个操作,可以正好弄出所有的路径,在矩阵中表示出来

这个时候,注意   sum 之前的 previous,现在的obs,以及现在有了转移概率,相加一波

搞懂 - BiLSTM-CRF - (1)

注意,previous不是只存 发射概率,就是存 上一步的total scores,这里变换形式,存下previous

搞懂 - BiLSTM-CRF - (1)

开始计算 w0 -> w1  的total scores:

搞懂 - BiLSTM-CRF - (1)

同理,到第三个词语了,继续,截图太累,就放链接了,原理同上,。。。

直接放结果:

搞懂 - BiLSTM-CRF - (1)

 

 

6) 如果训练ok了,那么来一个推理呗

搞懂 - BiLSTM-CRF - (1)

 

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

 

上面 维特比算法

开始推断

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

举例:

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

搞懂 - BiLSTM-CRF - (1)

 

搞懂 - BiLSTM-CRF - (1)