关于bert中softmax前除以维度d的理解

本文解析了BERT中softmax缩放的必要性,指出大值dk可能导致softmax梯度过小。通过公式分析和直观解释,说明了为何需要1/√dk的缩放,以及它如何防止softmax进入梯度稀疏区域。重点在于理解softmax在BERT注意力机制中的特殊作用和目的调整。
摘要由CSDN通过智能技术生成

这几乎是bert中的一个必考点,网上有很多大神讲的已经非常细致了,那我从另一个角度分享下自己的理解。小王出品:必接地气。

首先我们看下原论文的解释:We suspect that for large values of dk, the dot products grow large in magnitude, pushing the softmax function into regions where it has extremely small gradients . To counteract this effect, we scale the dot products by 1/√dk .

原文说,因为加上softmax以后,会将推向小梯度范畴,导致于无法快速更新参数。

相信很多人会深入问一句,为什么?

首先从公式上看:

  

这里的自注意力机制是一套利用矩阵相乘的soft attention方式(传统的情况是相加的较多),即上述中的QK,而矩阵相乘和相加最大的区别就是会影响结果的数值分布情况。为什么会影响?这里的Q、K都是经过LayerNormal的结果,所有数值分布都是[0, 1]之间,但是相乘后就会出现:q11K11 + q12K21 + q13K31 + ......,一共有dk个,这就很显然了,如果每组qk都是[0, 1]的范畴,那么全部加一起就是[0, dk]的范畴了,那么整个的数据分布就会拉大。

数据分布拉大会怎么样呢?对于softmax来说,整个数据分布拉大,就可能出现一个值非常接近于dk,而其他值都接近于0的情况,多分类的loss是:

到这一步不难想象吧,无论softmax对于前方的权重如何进行梯度下降的计算,梯度的更新是很难的,想了解详细原理的可以看下这边文章,有具体距离softmax的反向求导过程: https://blog.csdn.net/xxuffei/article/details/90022008?spm=1001.2014.3001.5506

重点来了:

以上是从公式上描述了这个问题,那我再说说自己的另一种感性的理解。在bert中,其实softmax的用法是比较特别的,因为往往softmax是函数是用于多分类任务的收尾阶段,用于收尾阶段的softmax最希望的就是能够让其中一个维度的值无限接近于1而其他都接近于0,这就是softmax或者说神经网络追求的最优解的状态,到了这种时候,自然是不希望梯度再随便改动了,多分类的loss也是根据这个原理量身定制的。

但是bert里softmax是用于生成一个attention权重的,他属于中间过程,那这一步的目标就不是希望得到一个最优解的状态(也就是一项为1,其他为0)。可是Q*K带来的数据上的分布变化完全是一种人为的引入结果,换句话说本来这里不会出现一项为1其他为0的状态,因为使用了这种计算方法后,到了这种结果。因此,需要将所有的数据都缩放下,使得尽可能不要在这一段出现所谓的理想状态,要知道,经过同比例缩放,[1, 10]和[1, 100]对于softmax处理后可是完全不一样的结果哦。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值