算法岗常考面试题:transformer中的attention为什么要除以根号d_k

相关博客:手把手教你用Pytorch代码实现Transformer模型(超详细的代码解读)

我们知道attention其实有很多种形式,而transformer论文中的attention是Scaled Dot-Porduct Attention,如下图所示:

在这里插入图片描述
在这里插入图片描述

那么问题来了,这里的attention为什么要做除以根号d_k呢?

一句话概括就是:如果不对softmax的输入做缩放,那么万一输入的数量级很大,softmax的梯度就会趋向于0,导致梯度消失。
在这里插入图片描述

在这里插入图片描述

证明

Attention is All You Need并没有对下面的话进行证明:
在这里插入图片描述

证明:
在这里插入图片描述

你想现在scaled后,q*k的均值为0,方差为1,那自然数值不会很大了。

(原来的方差是d_k,d_k如果很大,比如256,那softmax就容易出现梯度消失)

相关资料

### Transformer模型练习题与学习资料 #### Scaled Dot-Product Attention机制解析 在Transformer模型中,Scaled Dot-Product Attention的计算方法涉及查询(Query)、键(Key)和值(Value)三个矩阵的操作。具体来说,Attention函数会将查询和所有的键进行比较,得到一个注意力分布,再利用该分布加权求和对应的值向量作为最终输出[^1]。 #### XLM模型介绍及其优势 XLM模型由Facebook AI Research开发,是一种能够处理多语言任务的预训练模型。此模型不仅继承了Transformer的强大性能,还特别针对跨语言场景进行了优化。通过联合训练来自不同语种的数据集,使得模型具备更好的迁移能力和适应性,在面对未曾见过的语言时也能表现出色[^2]。 #### 推荐深入理解Transformers的方式 对于想要深入了解Transformers的人来说,《Attention is All You Need》这篇论文无疑是最好的起点之一;此外还有许多优质的书籍如《Deep Learning with Python》,它们都提供了详尽的技术细节讲解以及实际应用案例分析。当然,实践同样重要,参与开源项目或是完成一些针对性强的小型实验都能帮助巩固理论知识[^3]。 #### 实战题目推荐 为了更好地掌握Transformer相关技能并准备可能遇到的大规模模型面试环节,“2024最全Transformer面试题汇总”这份文档集合了大量的经典考题和技术要点覆盖范围广泛,非常适合用来检验自己对该领域知识点的理解程度及查漏补缺[^4]。 ```python # 示例代码:实现简单的自定义attention层 import torch.nn as nn class SimpleAttention(nn.Module): def __init__(self, dim_qkv=512): super(SimpleAttention, self).__init__() def forward(self, Q, K, V): # 计算QK转置后的乘积除以根号下dim_k scores = torch.matmul(Q, K.transpose(-2,-1)) / (K.size()[-1])**0.5 # 应用softmax获得权重 weights = F.softmax(scores,dim=-1) # 加权求和V得到输出 output = torch.matmul(weights,V) return output ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

捡起一束光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值