pytorch dropout_通过pytorch深入理解transformer中的自注意力(self attention)

本文将对自注意力(self attention)进行简要分析,它是tranformer中最重要的模块,而transformer又是bert类模型重要组成部分,所以充分了解自注意力是非常必要的。主要原理来自Google的《Attention Is All You Need》。

首先把Attention的定义给出来:

(1)

对于(1)其实很好理解,注意力公式主要就是算V的加权后的表示,说到加权,必要得有权重啊。权重就是前面的softmax(~)部分,为什么要加softmax,因为权重必须为概率分布即和为1。softmax里面部分算的就是注意力的原始分数,通过计算Q(query)与K(key)的点积得到相似度分数,其中

起到一个调节作用,不至于过大或过小,导致softmax之后就非0即1。所以这种注意力的形式也叫放缩的点积注意力。

但是Google为了更加完善Attention机制,增强Attention的表示能力,提出了Multi-Head Attention,即多头注意力机制。从公式上看,其实很简单,就是把Q,K,V通过参数矩阵进行线性变换一下,然后再做Attention,最后重复h次,结果拼接起来就好了。公式如下:

(2)

(3)

=========================

Pytorch代码如下:

class 

在pytorch上的小实验,用法就是先将Self Attention类实例化,然后输入记得有两个,x_in和x_mask。x_mask = (input_ids > 0).float(),也就是非padding置为1,padding部分置为0。

shape分别为:x_in = [bs, seqlen, hid_size],x_mask = [bs, seqlen]

v2-59408426def743238b1a7e4096425a96_b.jpg

-完结-

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值