大模型算法工程师经典面试题:为什么在softmax之前要对attention进行scaled(为什么除以 d_k的平方根)?”

一、面试题

我们知道attention其实有很多种形式,而transformer论文中的attention是Scaled Dot-Porduct Attention 来计算keys和queries之间的关系。

如下图所示:


在这里插入图片描述

公式一

在公式一中,作者对 Q 和 K 进行点积以获得注意力权重,然后这些权重用于加权平均 V 。但在实际实现中,这个点积会被缩放,即除以keys的维度的平方根,常常表示为 。这里 是key向量的维度。

细心的同学都会发现,Attention 计算公式 中会 除以 根号d,那问题来了!!!

Attention为什么要除以根号d 呢?

注:这个题目属于 NLP 面试中一个高频题,基本上问到 Attention 或者 Transformers 的时候都会问。(小编在找实习的时候,就被问了不止十次,现在抽空整理一下答案。)

二、标准答案

这个问题在《Attention is All Your Need》论文中,作者就对该问题进行解答。

While for small values of the two mechanisms perform similarly, additive attention outperforms dot product attention without scaling for larger values of [3]. We suspect that for large values of, 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

如果你没看懂上面英文答案,那下面我就对其进行解释:

从论文中可以看出,随着 的值变大,点积的大小会增大,从而推动softmax函数往仅有很小的梯度的方向靠拢(分布集中在绝对值大的区域),导致softmax 函数容易导致梯度消失问题。

例如,假设Q和K的均值为0,方差为1。它们的矩阵乘积将有均值为0,方差为 ( 是Q或者K的维度大小)。因此, 的平方根被用于缩放(而非其他数值),因为,Q和K的矩阵乘积的均值本应该为0,方差本应该为1,这样会获得一个更平缓的softmax。

如果你在面试过程中也遇到该问题,可以回答:

随着 的值变大,点积的大小会增大,如果没有及时对点积的大小进行缩放,那么万一点积的数量级很大,softmax的梯度就会趋向于0,也就会出现梯度消失问题。

三、问题引申新问题

当你按上述答案回答后,基本能够回答上点,但是面试官为了考察你对该问题的深度,会进行问以下两个问题:

  1. 为什么 变大会使得 softmax 梯度变小,从而导致梯度消失呢?
  2. 除了 , 是否可以用其他值代替?
  3. self-attention一定要这样表达吗?
  4. 有其他方法不用除根号dk吗?

问题一:为什么 变大会使得 softmax 梯度变小,从而导致梯度消失呢?

标准答案:输入softmax的值过大,会导致偏导数趋近于0,从而导致梯度消失

下面我们将对该问题进行证明:

对于一个输入向量 , softmax函数将其映射归一化到一个分布 。

此时,softmax函数会先采用一个自然底数 e 将输入中的元素间差距先“拉大”,然后归一化为一个分布。假设某个输入 x 中最大的的元素下标是 k ,如果输入的数量级变大(每个元素都很大),那么 会非常接近1。

举个栗子,假定输入 ,对于不同量级的 a 产生的, 的值将发生什么变化:

a=1时,;

a=10时,;

a=100 时,(计算机精度限制)。

通过以下代码:

from math import exp
from matplotlib import pyplot as plt
import numpy as np 
f = lambda x: exp(x * 2) / (exp(x) + exp(x) + exp(x * 2))
x = np.linspace(0, 100, 100)
y_3 = [f(x_i) for x_i in x]
plt.plot(x, y_3)
plt.show()

绘制图像如下:

从图像中,我们发现数量级对于 softmax 函数的分布影响还是很大的。在数量级增大到某个值时,softmax 函数全部概率分布将趋于最大值对应阿标签

接下来,我们一起来分析一个 softmax 函数的梯度,这里我们将 softmax 函数 设定为 ,softmax 函数对应的分布向量 的梯度为:

通过将该矩阵展开:

根据前面的讨论,当输入 x 的元素均较大时,softmax会把大部分概率分布分配给最大的元素假设我们的输入数量级很大,最大的元素是 1,那么就将产生一个接近one-hot的向量 ,,此时上面的矩阵变为如下形式:

可以看出,在输入的数量级很大时,梯度消失为0,造成参数更新困难,

问题二:除了 , 是否可以用其他值代替?

标准答案:为什么选择 ,时因为可以使得 Q 和 K 点积 趋向于 期望为0,方差为1的标准正态分布,说白了就是归一化。

公式分析:

首先假设q和k都是服从期望为0,方差为1的独立的随机变量。

假设 ,则:

此时

故有 Q 和 K 点积的均值 ,方差 。方差越大也就说明,点积的数量级越大(以越大的概率取大值)。那么一个自然的做法就是把方差稳定到1,做法是将 Q 和 K 点积除以,这样有:

将方差控制为1,也就有效地控制了前面提到的梯度消失的问题。

问题三:self-attention一定要这样表达吗?

不需要,能刻画相关性,相似性等建模方式都可以。最好速度快,模型好学,表达能力够。

问题四:有其他方法不用除根号dk吗?

有,同上,只要能做到每层参数的梯度保持在训练敏感的范围内,不要太大,不要太小。那么这个网络就比较好训练。方式有,比较好的初始化方法,类似于google的T5模型,就在初始化把这个事情干了。


最后分享

AI大模型作为人工智能领域的重要技术突破,正成为推动各行各业创新和转型的关键力量。抓住AI大模型的风口,掌握AI大模型的知识和技能将变得越来越重要。

学习AI大模型是一个系统的过程,需要从基础开始,逐步深入到更高级的技术。

这里给大家精心整理了一份全面的AI大模型学习资源,包括:AI大模型全套学习路线图(从入门到实战)、精品AI大模型学习书籍手册、视频教程、实战学习、面试题等,资料免费分享!

1. 成长路线图&学习规划

要学习一门新的技术,作为新手一定要先学习成长路线图方向不对,努力白费

这里,我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。可以说是最科学最系统的学习成长路线。
在这里插入图片描述

2. 大模型经典PDF书籍

书籍和学习文档资料是学习大模型过程中必不可少的,我们精选了一系列深入探讨大模型技术的书籍和学习文档,它们由领域内的顶尖专家撰写,内容全面、深入、详尽,为你学习大模型提供坚实的理论基础。(书籍含电子版PDF)

在这里插入图片描述

3. 大模型视频教程

对于很多自学或者没有基础的同学来说,书籍这些纯文字类的学习教材会觉得比较晦涩难以理解,因此,我们提供了丰富的大模型视频教程,以动态、形象的方式展示技术概念,帮助你更快、更轻松地掌握核心知识

在这里插入图片描述

4. 大模型项目实战

学以致用 ,当你的理论知识积累到一定程度,就需要通过项目实战,在实际操作中检验和巩固你所学到的知识,同时为你找工作和职业发展打下坚实的基础。

在这里插入图片描述

5. 大模型面试题

面试,不仅是技术的较量,更需要充分的准备。在你已经掌握了大模型技术之后,就需要开始准备面试,我们将提供精心整理的大模型面试题库,涵盖当前面试中可能遇到的各种技术问题,让你在面试中游刃有余。

在这里插入图片描述

全套的AI大模型学习资源已经整理打包,有需要的小伙伴可以微信扫描下方CSDN官方认证二维码,免费领取【保证100%免费

如有侵权,请联系删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值