基于Attention的神经网络

1、回顾Seq2Seq模型

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NGzx6Oag-1618831515794)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20210418104712265.png)]

Seq2Seq是由一个编码器encoder和解码器decoder组成,encoder输入的是英语,decoder把英语翻译成其他语言。encoder每次读入一个英语词向量x,在状态h中积累输入信息,最后一个状态hm积累了所有的向量x的信息,encoder输出最后一个状态信息hm,把之前的状态向量都扔掉。

在这里插入图片描述

decoder初始状态S0等于encoder最后一个状态hm,其中hm包含了输入句子的所有信息。

在这里插入图片描述

之后decoder就像文本生成器一样,逐子生成德语,这句德语就是模型生成的翻译,可惜Seq2Seq有一个明显的缺陷,如果输入的句子很长,那么encoder会记不住完整的句子。

2、模型比较

在这里插入图片描述

明显看出使用Seq2Seq模型,当单词量超过20个左右,该模型就开始下降,而引入了注意力模型之后,明显优与未使用注意力模型(注:BLEU是评价机器翻译的好坏)

3、引入注意力机制的Seq2Seq模型

1、使用注意力机制,Seq2Seq不会遗忘

2、attention可以告诉decoder应该关注encoder哪些状态

3、attention可以大幅提高准确率

4、attention的计算量很大

在这里插入图片描述

上面说到decoder的初始状态S0等于encoder的最后一个状态hm

在这里插入图片描述

encoder的所有状态h1、h2、····、hm都要保存下来,所以这里要计算S0与每一个h的相关性

在这里插入图片描述

用上面的公式来计算相关性

用encoder的第h个状态与decoder初始状态S0的相关性,结果即为ai,即为权重

未完待续··········

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐