注意力机制用在图像处理、NLP领域
看图说话
我们要从CNN识别结果中选择一个向量作为meaning vector
一般选择倒数第二层的向量,因为倒数第一层的向量更适合分类,而倒数第二层的向量更具泛化能力
使用attention:如果要看图说话, 比如我要生成girl这个单词,那么我的关注点肯定是图片中的小女孩,而不是整张图片
Seq2Seq
编码部分,首先要对每个单词进行pretrain embedding
使用网上下载的,比如Glove的vector。
每个单词都是一个embedding,使用时从embedding取出来
然后每个embedding经过LSTM生成向量g。
要使用attention,比如说我们在预测第一个单词,从start标志开始,产生h1向量,预测第一个单词的话,我肯定要关注中文句子中的第一个单词,所以如何使用attention是这里的问题。
计算每个中文单词gi和h1的内积,得到一个数,这个数经过一个归一化的操作,可以表示每部分的权重信息,比如第一个g1权重为0.6,那么我在预测第一个单词时就更关注g1.
我们这时要根据权重来生成一个新的c,这时生成预测第一个单词使用的就是新的c和h,通过这两个量来生成y1预测
可以将c和h进行拼接,再经过softmax来进行预测y。
之后的过程就是重复的,预测第二个单词,考虑c2和h2
Normalize方法
1、计算概率
2、使用softmax
注意力机制部分解决了梯度的问题
LSTM是时序的模型,没有attention的模型中,解码的过程整个都在使用c,
如果是解码的文本比较长,那么c的表示对前边的单词是表示不到或者表示很微弱
而使用了attention后,综合考虑了之前的所有单词。