LSTM+Attention+CRF的原理讲解

CRF

在这里插入图片描述
简单来说一组参数theta可以唯一确定一组模型,我们需要找到一组最优参数使得训练数据中 x->y 的概率最大化。将上述最大化的目标函数P取负,转化为最小化问题,即可用反向传播算法进行优化,找到近似最优参数theta。
在CRF模型中有一个简单的假设,即当前输出的标签只和上一级输出的标签以及当前的输入有关,所以Score(x, y)应该由两部分组成,一个是转移特征概率,一个是状态特征概率。什么意思呢,转移特征概率是指前一个输出标签为 B 的前提下我当前输出标签为某个值比如 I 的概率大小。而状态特征是指我当前输入的词为x的条件下,当前输出标签为某个值比如 I 的概率大小:
在这里插入图片描述
为了建一个条件随机场,我们首先要定义一个特征函数集,每个特征函数都以整个句子s,当前位置i,位置i和i-1的标签为输入。然后为每一个特征函数赋予一个权重,然后针对每一个标注序列l,对所有的特征函数加权求和,必要的话,可以把求和的值转化为一个概率值。

Bi-LSTM

简单的做法是将输入序列经过一个embeddig层转化为一个向量序列输入两个双向的LSTM单元,将每个时间序列的正向反向输出拼接,经过一个全连接层映射为一个维度为输出标签数量的一个向量,再使用Softmax将输出归一化作为每种标签的概率。

单纯使用CRF的缺陷:

它的前提假设,即当前输出的标签只和上一级输出的标签以及当前的输入有关,这与经验不符,人在寻找一句话中的命名实体的时候显然是以整个句子作为上下文来判断的,在上述假设下显然丢失掉了很多上下文的信息。

单独使用Bi-LSTM的缺陷:

由于没有状态(标签)转移的条件约束,模型很有可能输出一个完全错误的标注序列。这个错误在CRF中是不存在的,因为CRF的特征函数的存在就是为了对given序列观察学习各种特征(n-gram,窗口),这些特征就是在限定窗口size下的各种词之间的关系,比如一般会学到“B后面接I,不会继续出现B”这样的规律。

联合使用Bi-LSTM+CRF:

将Bi-LSTM 与CRF两者结合,取长补短。LSTM的softmax层的输出是相互独立的,即虽然BiLSTM学习到了上下文的信息,但是输出相互之间并没有影响,它只是在每一步挑选一个最大概率值的label输出。这样就会导致如B-person后再接一个B-person的问题。而crf中有转移特征函数,它会学习label的上下文,即它会考虑输出label之间的顺序性,所以考虑用crf去做BiLSTM的输出层。
在这里插入图片描述
其中Pi,yi为第i个位置softmax输出为yi的概率,Ayi,yi+1为label从yi到yi+1的转移概率。这个得分函数就很好地弥补了传统BiLSTM的不足,因为我们当一个预测序列得分很高时,并不是各个位置都是softmax输出最大概率值对应的label,而是针对一个label chain,考虑把前面转移概率相加到一起最大,即在符合输出规则(B后面不能再跟B)的前提下得分最高,比如假设BiLSTM输出的最有可能序列为BBIBIOOO,那么因为我们的转移概率矩阵中B->B的概率很小甚至为负,那么根据s得分,这种序列不会得到最高的分数,即就不是我们想要的序列。

RNN+Attention

对于采用RNN的Decoder来说,如果要生成yi单词,在时刻t = i,我们是可以知道在生成Yi之前的隐层节点t = i时刻的输出值Hi的,而我们的目的是要计算生成Yi时的输入句子单词对Yi来说的注意力分配概率分布,那么可以用t = i时刻的隐层节点状态Hi去和输入句子中每个单词对应的RNN隐层节点状态hj进行对比,即通过函数F(hj, Hi)来获得目标单词Yi和每个输入单词对应的对齐可能性,然后函数F的输出经过Softmax进行归一化就得到了符合概率分布取值区间的注意力分配系数,之后再与每个单词对应的encoder隐层节点状态hj进行加权求和得到向量表示。(self-attention)
在这里插入图片描述
RNN通过Self-attention,句子中的每个词都能与句子中任意距离的其他词建立一个敏感的关系,可以说在一定程度上提升了RNN对于长距离语义依赖建模能力的上限。

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值