深度学习笔记-self-attention

输入:

不确定长度的向量。例如:

A.文字处理,不同长度的句子,对词汇的向量表示可采用one-hot Encoding,word embedding(会存在类形似性),如下图:

 B.一段声音信号是一排向量,一段长度(25ms)定义为一个window,定义为一个向量即一个frame,一个window右移一点长度(10ms)得到一个新的向量(frame)

 C.social network,分子

输出:

 问题:

之前确定向量输入网络,现在面对的是一个序列,如何考虑一个序列的前后信息,此时就引入了self-attention。

self-attention

结构如下

就是每一个输入向量都与其他向量相关联后生成一个新的自己,这个FC权重是共享的哦,self attention模块计算是一个序列所有向量并行计算的,输出同样长度的输出后每个输出向量分别进入FC,再强调一次,共享权重。

序列中一个向量如何输出一个融合序列其他向量信息的新向量:

计算α表示两个向量的相关联程度

 α两种计算方法,通常点积法常用

 

 根据α去抽取其他向量信息,哪个α大,哪个v参与程度就高。

 矩阵形式

 之前不熟RNN,所以一直容易误解权重,此时再强调α生成q,k.v,共享矩阵。即序列输入的每个向量共享网络权重,无论是self-atttention模块,还是fc网络。

 

 

 只有Wq,Wk,Wv三个矩阵权重需要学习。

Multi-head self-attention

用来应对不同的相关关系,每个头运算都是独立的,和上面计算方法相同 

位置编码-positional encoding

在self-attention中没有位置信息,一段序列中每个输入顺序不影像输出,因为权重都一样。

但是序列是有位置信息的,所以引入了位置编码。为每一个位置设置一个位置向量,并采用加和的形式。这些位置向量是人为设定的,可能存在缺陷,现在也有通过数据学习位置向量。


self-attention原理大概就是这样

下面这个视频讲解注意力机制的本质还不错,四五分钟,有兴趣可以看看注意力机制的本质|Self-Attention|Transformer|QKV矩阵_哔哩哔哩_bilibili

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值