目录
李宏毅2022ML第四周课程笔记——自注意力机制
为什么引入自注意力机制?
因为之前rnn的使用,我们可以看到是对于序列数据输入的处理,但它不能实现并行处理,只能当上一时刻的输入处理完成才能继续下一步,同时我们希望能对于一长串的vector同时进行处理。
自注意力机制就是这样一种能对一串vector同时处理输出若干序列的方法,同时FC会考虑整个vector集合的属性。
Self-Attention的具体机理
首先我们对于每个输入ai都会分别乘3个不同的weight得到qi、ki、vi,然后通过a1的q1和其它ai的qi计算关联性得到a1i,将所有的a1i通过softmax层之后与对应的vi相乘得到b1,其它为重复过程。
多头注意力机制
类似单头,所谓多头是增加对每一个输入ai产生的qi、ki、vi的数量,其它过程一样。多头相对于单头来说,考虑的关联性更加多样,但同时会使得整个模型高度复杂化,容易产生过拟合。
位置编码
如果你觉得位置信息很重要,可以使用positional encoding的技术,对于每一个位置的输入可以加上一个与之相关的向量一起作为输入。
CNN vs self-attention
如果我们比较CNN跟Self-attention的话,CNN 可以看作是一种简化版的Self-attention,因為在做CNN的时候,我们只考虑接受野内的资讯,而在做Self-attention的时候,我们是考虑整张图片的资讯,所以CNN,是简化版的Self-attention。
RNN
为什么RNN会有奇特的特性
为什么rnn很难使用?
因为其error surface是陡峭的,在训练的时候会突然飞出去,即其梯度过大,导致很难train起来。
为什么我们把rnn换成lstm?
从上面的图,我们可以看到,rnn架构而言,输入微小的变化,会导致最终结构有巨大变化,很容易发生梯度爆炸或者梯度消失。
而lstm的Memory和Input是相加的(在RNN中每个时间点的memory会被洗掉),而且只要forget gate不关,cell的影响始终存在
LSTM
long short term memory
由门函数来控制网络架构中的memory是否释放。