self-attention为什么要除以根号d_k

该博客详细解析了自注意力(self-attention)机制的公式,解释了为何在计算时需要除以$sqrt{d_k}

self-attention的公式为
attention(Q,K,V)=Softmax(QKdk)Vattention(Q,K,V)=Softmax( \frac{QK}{\sqrt{d_{k}}})Vattention(Q,K,V)=Softmax(dkQK)V

个人理解,除以dk\sqrt{d_{k}}dk的原因有两点:
dkd_{k}dk是词向量/隐藏层的维度
1、首先要除以一个数,防止输入softmax的值过大,导致偏导数趋近于0;
2、选择根号d_k是因为可以使得q*k的结果满足期望为0,方差为1的分布,类似于归一化

公式分析,首先假设q和k都是服从期望为0,方差为1的独立的随机变量。
Assume:X=qiX=q_{i}X=qiY=kiY=k_{i}Y=ki,那么:
1、E(XY)=E(X)E(Y)=0∗0=0E(XY)=E(X)E(Y)=0*0=0E(XY)=E(X)E(Y)=00=0
2、D(XY)=E(X2Y2)−[E(XY)]2D(XY)=E(X^{2}Y^{2})-[E(XY)]^{2}D(XY)=E(X2Y2)[E(XY)]2
      =E(X2)E(Y2)−[E(X)E(Y)]2=E(X^{2})E(Y^{2})-[E(X)E(Y)]^{2}=E(X2)E(Y2)[E(X)E(Y)]2
      =E(X2−02)E(Y2−02)−[E(X)E(Y)]2=E(X^{2}-0^{2})E(Y^{2}-0^{2})-[E(X)E(Y)]^{2}=E(X202)E(Y202)[E(X)E(Y)]2
      =E(X2−[E(X)]2)E(Y2−[E(Y)]2)−[E(X)E(Y)]2=E(X^{2}-[E(X)]^{2})E(Y^{2}-[E(Y)]^{2})-[E(X)E(Y)]^{2}=E(X2[E(X)]2)E(Y2[E(Y)]2)[E(X)E(Y)]2
      =[E(X2)−[E(X)]2][E(Y2)−[E(Y)]2]−[E(X)E(Y)]2=[E(X^{2})-[E(X)]^{2}][E(Y^{2})-[E(Y)]^{2}]-[E(X)E(Y)]^{2}=[E(X2)[E(X)]2][E(Y2)[E(Y)]2][E(X)E(Y)]2
      =D(X)D(Y)−[E(X)E(Y)]2=D(X)D(Y)-[E(X)E(Y)]^{2}=D(X)D(Y)[E(X)E(Y)]2
      =1∗1−0∗0=1*1-0*0=1100
      =1=1=1
3、D(QKdk)=dk(dk)2=1D(\frac{QK}{\sqrt{d_{k}}})=\frac{d_{k}}{(\sqrt{d_{k}})^{2}}=1D(dkQK)=(dk)2dk=1
需要注意的是,D(QK)=D(∑i=0dkqiki)=dk∗1=dkD(QK)=D(\sum_{i=0}^{d_{k}}q_{i}k_{i})=d_{k}*1=d_{k}D(QK)=D(i=0dkqiki)=dk1=dk

附:AI工具箱
链接:https://hxmbzkv9u5i.feishu.cn/docx/Mv4Dd8TEYoUmTAxfpLtcUoOKnZc?from=from_copylink

评论 5
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值