声明:
本文基于哔站博主【Shusenwang】的视频课程【RNN模型及NLP应用】,结合自身的理解所作,旨在帮助大家了解学习NLP自然语言处理基础知识。配合着视频课程学习效果更佳。
材料来源:【Shusenwang】的视频课程【RNN模型及NLP应用】
视频链接:RNN模型与NLP应用(9/9):Self-Attention (自注意力机制)_哔哩哔哩_bilibili
一、学习目标
1.简单了解什么是自注意力机制
2.理解自注意力机制的底层逻辑
二、Self-Attention——自注意力机制
我们上节课学习到使用Attention改进Sequence to Sequence模型,Sequence to Sequence模型有两个RNN神经网络(一个Encoder,一个Decoder)。我们今天要学习的是将Attention运用到一个RNN网络 上。
前言:
原论文讲的是将Attention与还能用在一个LSTM上,为了简单方便大家理解,本博客将Attention用在Simple RNN上。
Simple RNN与Attention的结合:
1.初始状态下,h0和C0都是全零向量。
标准的SimpleRNN是这样更新h状态向量的:
Self-Attention+Simple RNN是这样的更新h状态向量的:
有了新的状态向量h后,我们就该计算新的C1(contect vector), 新的C1是已有状态向量的加权平均。
因为初始状态的h0是全零向量,因此第一个C1=h1
接下来我们更新状态向量h:
然后要计算下一个C,计算下一个C之前我们首先需要计算权重α。α公式如下:
h2将会拿h1做对比,拿h2自己做对比,计算出两个权重α1和α2。C2就是h1和h2的加权平均
按照此过程不断循环计算,计算出新的状态h和C
三、总结
1.self-attention就能解决遗忘的问题
RNN都有遗忘的问题,比如分析电影评论是正面的还是负面的,如果评论太长,最后一个状态就记不住整句话,不能有效利用整句话的信息。
self-attention每一轮更新状态之前,都会用C看一遍之前所有状态,这样就不会遗忘之前的信息了
self-attention和Attention的道理是一样的但是self-attention不局限于Sequence to Sequence模型,他可以作用于任何RNN模型
2.除了避免遗忘,Self-Attention还可以帮助RNN关注相关的信息
如下图所示:
红色部分是输入信息,而高亮标出的是权重很大的位置,这些α说明前面最相关的是哪一个。