Lesson 7 Self-attention

听课(李宏毅老师的)笔记,方便梳理框架,以作复习之用。本节课主要讲了self-attention的输入输出,内部架构和工作流程计算方法,以及介绍了更高阶的self-attention——muli-head self-attention,还有位置编码,self-attention的应用以及与其他网络的对比。

1. 输入

1.1 复杂的输入

在之前的学习中我们学到的都是一个向量作为输入
但是在自然语言处理中我们的输入可能是很多vector(比如说一句话,那么一个字就是一个vector)
在这里插入图片描述

1.2 输入类型

1.2.1 文字

我们可以选择这样的方法:比如有一种语言有十万词汇,那么每个向量长度就是10万,比如下图左侧的编码方法。但是这样就表现不出来语义的相似,比如dog和cat其实是动物一类的,他们的vector表示方法应该有一些相似的地方。
所以我们想出来了一种新的方法,叫做word embedding,这种方法将词汇分类编成向量,将相似语义的词汇编到一起更合理。
在这里插入图片描述

1.2.2 语音

25ms作为一个窗口,每次滑动10ms
在这里插入图片描述

1.2.3 图

图也可以作为一个输入,一个图有很多节点,每个节点与其他节点相连接形成边,这些边和结点的关系形成图
在这里插入图片描述
在这里插入图片描述

2. 输出

每个vector都有一个label,e.g.词性标注
在这里插入图片描述
一个序列有一个label,e.g.文本情感分析
在这里插入图片描述
由模型自己决定输出多长,e.g.翻译
在这里插入图片描述

3. 序列标注

3.1 采用Fully Connected?

一开始想的是每个vector都单独丢进一个fc network,但是如果我们在做词性标注问题,很有可能只会输出一种结果,对于多词性的单词,这样的结果是不准确的,我们必须考虑到该单词的语境和所在句子的位置。
进一步的方法是开一个window,每次都将当前的vector前后的vector一起丢入fc network,但是如果要考虑到整个句子怎么办?难道开一个window长度覆盖整个序列吗?
这样做其实也不太好。一是要知道sequence多长,二是参数太多,可能造成over fitting。
在这里插入图片描述
所以我们提出了一种新的方法:self-atttention

3.2 Self-attention

结构如下
在这里插入图片描述
self-attention可以叠加
在这里插入图片描述
self-attention层内部架构
在这里插入图片描述
α是用来描述ai与aj之间的相关性的
在这里插入图片描述
计算α的两种方式:左边是用dot-product,更加常用,transformer里也是用的这个。q=aWq,k=aWk
在这里插入图片描述
q跟k相乘得α
在这里插入图片描述
得到α之后需要使用softmax转换成α’
在这里插入图片描述
得到α’还没结束,每个α’还需要α’*v,再加起来
在这里插入图片描述
b2,b3,b4等如法炮制,最后b1,b2,b3……是同时得出的
在这里插入图片描述
用矩阵表示self-attention的计算过程
先计算出q,k
在这里插入图片描述
再计算出α,通过soft-max计算出α’
在这里插入图片描述
再计算出b
在这里插入图片描述
整体回顾
只有Wq,Wk,Wv是需要学习的参数
在这里插入图片描述

3.3 Multi-head Self-attention

进阶版self-attention:有可能会有不同种类的相关性
在这里插入图片描述
相比起self-attention,multi-head self-attention就有很多的q,以两个q举例,每一个vector都有两个q,两个k,两个v,qi1只跟ki1,kj1相乘,不跟ki2,kj2相乘,相当于有多少个头就有多少套qkv,一套qkv只跟自己一套里面的做运算
在这里插入图片描述
最后会算出来两套b,再*Wo就变成一个b了
在这里插入图片描述

4. Positional Encoding

ei可以人为设定,但是也可以从数据中学得,比如使用sin和cos函数
在这里插入图片描述
计算ei有多种方式,目前尚待研究
在这里插入图片描述

5. 应用

self-attention应用于transformer和bert,在NLP中也应用广泛
在这里插入图片描述

5.1 语音

当sel-attention用于语音时,会产生很长的vector。考虑到内存和运算速度,提出了truncated self-attention。truncated self-attention只考虑局部范围,不看一整句话。
在这里插入图片描述

5.2 图像

在这里插入图片描述
在这里插入图片描述

5.3 图

在这里插入图片描述

6. 对比

6.1 self-attention vs CNN

CNN考虑receptive field里的资讯
self-attention考虑整张图片的资讯
在这里插入图片描述
CNN是self-attention的特例
在这里插入图片描述
CNN在更小的数据集下表现更好,当数据量增大,CNN没法从更大的资料集中得到好处
Self-attention在数据量更大的数据集下表现更好
在这里插入图片描述

6.2 self-attention vs RNN

RNN是串行的,self-attention是并行的,速度会更快
在这里插入图片描述

  • 22
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迟迟迟迟迟子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值