ViT (Vision Transformer) ---- SimpleRNN + Self-Attention

本文介绍了自注意力机制如何从Seq2Seq模型扩展到单一RNN模型中,通过对比简单RNN的状态计算过程,阐述了自注意力如何解决传统RNN的遗忘问题。在带有注意力机制的RNN中,每个状态不仅考虑当前输入,还综合了之前所有状态的相关性,提高了模型的记忆能力。以一个实例说明,当输入单词'run'时,模型发现它与'FBI'、'a'、'on'等词有较高相关性。
摘要由CSDN通过智能技术生成

首先attention第一次是在2015年应用在Seq2Seq模型上的,该模型有两个网络一个是Encoder,一个是decoder,后来研究者们发现,attention不仅仅可以应用到Seq2Seq模型上,还可以应用到所有的RNN模型上,该研究是在2016年发表的一篇文章,比attention晚一年(Cheng, Dong, & Lapata. Long Short-Term Memory-Networks for Machine Reading. InEMNLP, 2016),这篇论文是把attention应用到LSTM即自注意力机制,这里使用simpleRNN进行替换,方便理解原理和大意,这里需要注意的是,这是单个RNN模型,不是seq2seq模型。

上图是简单的RNN网络,其中计算输出的状态h_t是通过输入x_t和上一个输出状态h_t-1 concat,然后乘上矩阵A,在经过tanh激活函数获得h_t,那么使用自注意力机制如何做呢?

在没有注意力机制的simpleRNN就散输出状态的方法很简单就是通过把输入x_t和上一个状态的输出S_t-1进行concat,然后乘上参数矩阵A,在通过tanh激活函数就可以获得x_t的输出S_t了,那么增加注意力机制如何更新状态的呢?

其实很简单如上图的①,增加了一个额外的状态contextion 参数C_t-1和输入x_t进程concat,得到的向量乘上参数矩阵A,然后经过tanh激活函数就可以获取到当前的状态h_t了,和simpleRNN的唯一区别就是把状态h_t-1换为c_t-1,其他第一样。

算出当前状态h_t后,需要计算contextion 参数C_t,首选使用当前的状态h_t去和之前的所有状态h_1,h_2,h_3,,,,,h_t-1求相关性α如上图的②方式,获取每个状态的相关性后,在通过加权求和获取到C_t如③,那么这个求取相关系数的方法是什么呢?可以看上一篇文章。

同理按照上面的方法,分别求出所有的状态。

总结:

RNN 都具备遗忘的特性,

Attention 解决了遗忘,因为每个状态的输出都需要看一遍之前的状态,

例子:

红色单词是输入,蓝色部分是相关性的值,例如当输入run的时候,计算当前的C的时候,使用当前的h和之前的状态计算相关性,发现和FBI、a、on相关性比较大

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值