李宏毅transformer学习总结(一)Self-Attention机制

本文探讨了Transformer在计算机视觉领域的兴起,重点介绍了Self-Attention机制如何通过整合上下文信息改善模型性能。作者通过李宏毅老师的课程,对比了Transformer与CNN、RNN的差异,并揭示了其在计算量和灵活性上的优势。
摘要由CSDN通过智能技术生成

@TOC
最近transformer在cv行业大火,在数据量充足的情况下,各项指标力压CNN。我比较好奇transformer是如何工作的,于是去看了李宏毅老师的机器学习课程,在此帖写下自己的感悟和心得。

Self-Attention机制

讲到transformer,就不得不先学习Self-Attention的机制。Self-Attention是为了语音识别和文字识别的功能而引出的,一种将前后文信息结合起来作为网络输入的机制。

上下文信息的引入

如图1,在没有Self-Attention的情况下,每个FC层的输入仅仅只有一个单词本身,这样会带来一个问题,I saw a saw(我看到了一把雨伞)这句话中出现了两次saw,如果没有提取上下文的信息,那么机器对两次输入的saw的映射应该是相同的,这跟我们的想要的结果不同,因此,我们必须在网络的输入中加入上下文的信息。如图2。
图1 无上下文信息的网络

图12 有上下文信息的网络

如何加入上下文信息

那么我们如何在网络中引入上下文信息呢?
我们把每个输入×三个矩阵,变成q1,k1,v1,算出q的目的是与其他输入(包括自己)的k矩阵做运算,得到其他输入的位置等信息a‘,然后再×v矩阵,并求和得到b矩阵,而b就是self-attention的输出。
在这里插入图片描述
用矩阵描述就是这样:I是SA(self-attention)层的输入,×三个矩阵变成Q,K,V,然后K的转置×Q,得到A,再经过一系列的变换变成A’,再V×A‘就得到了SA层的输出
矩阵形式的计算
上下文的信息其实也包括位置信息,因此SA层在上面的基础上还要加一个偏置(positional encoding)作为位置信息:
插入位置信息
这个位置信息可以是多种多样的,也有很多人发了很多paper,提出了很多种ei的形式。

引入上下文带来的问题:计算量

当一句话有很多个单词的时候,我们想给每个输入都加上整句话的上下文信息,那么这个步骤的计算量是巨大的。因此,我们有一种解决方案:只给每个输入加上局部的上下文信息,这样既不会造成单一映射的情况,也不会增城计算量过大。
其实这种思想很像cnn里面的卷积核的思想,就是每个卷积核只负责很小的一个板块(目标的一小部分特征),并且卷积核提取的也是图片的一小部分,跟这里的Self-Attention机制很像。使用我们得出结论:cnn其实是Self-Attention的一种特例。

与其他神经网络的比较

CNN:

对于CNN来说,卷积核的大小是我们认为设定的,而对于Self-Attention来说,与某个像素有关的其他像素完全可以自己学习出来,也就是说,self-attention的’卷积核‘其实不必是一个矩形,可以是各种各样的形状,也有可能是离散的两个区域。
总体来说,如果数据体量很大,那么self-attention完全可以在指标上超越CNN,但是如果数据体量比较小,那么还是规定卷积核形状的CNN在指标上更甚一筹。

在这里插入图片描述

RNN:

与RNN相比,最大的不同在于输出的方式。RNN是把已有的输出作为输入,一环扣一环产生的,但是self-attention是并行产生的(前文中矩阵运算那张图,考虑了上下文的信息),比RNN更加有效率

总结

突然发现坑有点大,一上午连复习带码字,根据有些忙不过来了,先写这么多,有时间再继续整理。
总体来说,self-attention就是一种把上下文的信息也作为每个输入的一部分的结构,其输入是一串序列,输出也是一段序列,只不过这段序列已经带有了上下文信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值