P10.2机器学习笔记--李宏毅(self-attention机制)

目录

一、self-attention

二、多头self-attention

三、Positional Encoding

四、self-attention在多领域的运用


一、self-attention

上一章我们讲了如何计算b1

其实b2,b3,b4的计算都是并行的都是一样的

现在我们来介绍每个输入里面的q,k,v是怎么得到的

 上图中W矩阵是经过训练得到的,将输入分别对应相乘就得到每个的q,k,v然后合起来就是Q,K,V矩阵

然后我们就可以简化的写:

直接K的转置乘上Q然后得到A然后经过一个激活函数得到A‘

再分别计算b:

 

以上就可以总结为下图:

 

其中大I就为输入的vector set 

二、多头self-attention

这里以两头为例,其实就把每个q,k,v分解成两个。

计算了bi1 又计算bi2

 然后把bi1和bi2再乘上一个矩阵就得到合起来的bi再传入下一层就和sel-attention一样了

三、Positional Encoding

在self-attention里面没有考虑位置信息,虽然考虑了每一个。像在NLP领域里的词性标注,动词在一个句子有可能大概率不会出现在句子开头,所以我们需要加入位置信息。

其实就在每个输入加上一个vector就行 

四、self-attention在多领域的运用

为了减少计算量,在语音辨识里有可能不会考虑整个序列而是只考虑一个范围 

而在上几次讲的CNN里面,我们可以把每一个三维的pixel看作一个vetor,然后所有合起来就是vetor set这样也可以用self-attention

 其实self-attention就是复杂化的CNN,就像上图一样CNN只考虑每个感受野里面的内容而self-attention会考虑所有。也可以说是CNN是简单化的self-attention。

当参数多的时候我们就需要更多的训练资料,这样我们的模型才不会过拟合!

 

 从上图可以看出当资料量少时,参数少的CNN更占优势,当资料量大时,则self-attention更占优势

对比RNN和self-attention时

RNN只能考虑左边已经输入的而不能考虑右边没有输入的,self-attention更胜一筹 ,现在推出了Bi-RNN弥补了这个劣势

而在图的应用上,我们或许只用考虑和该节点相连的节点

这里相关的有GNN,GAT可以上youtube学习 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值