之前介绍了【深度学习笔记】为什么$attention$中要除以$\sqrt{k}$(scaling),提到了scaling的作用。但是在例如、GPT-2、GLM等模型中,均使用了动态scaling,那么动态scaling有什么用呢?

scaling的变化主要有以下几个目的:

获取不同层次的语义信息

多层transformer模型中不同的层可能对应不同层次的语义信息,因此在实践中,针对不同的输出层,选择不同的scaling值,能够更好地控制输出的语义信息的紧度,可以增加非常深的网络层和预训练的最终目标之间的相关性。

决定其性能和效果

在层中使用较大的缩放系数可以降低注意力分布的熵,强化处理噪声和不确定性关键区域的利用,保持注意力分布的有效统计学习性质。此外,相对较大的缩放系数会增强模型对输入序列中与任务目标紧密关联的位置的注意力聚焦,进一步提高模型的性能。

但是较大的缩放系数可能导致注意力更加散漫和掌握无意义的噪音的可能性更大。

而使用较小的缩放系数可以会更加容易在输入序列中找到关键信息,从而提升任务的性能。此外,较小的缩放系数也有助于缓解过拟合和梯度消失等问题,从而增强模型的泛化性和鲁棒性。


那么,既然不同的scaling选择会有不同的效果,应该是逐步变大还是变小呢?

在靠近输入层的位置,小的缩放系数可以让模型更容易找到输入中的关键信息,这是因为小缩放系数使得注意力分布更加聚焦于部分输入特征。当任务要求会强调对局部特征的关注时,使用较小的缩放系数可能会获得更好的效果。

而在靠近输出层的位置时,较大的缩放系数通常可以增强模型的鲁棒性和抗噪性,这是因为较大的缩放系数强化了对输入序列中与任务联系更紧密的位置的注意力聚焦。在面对输入携带噪声等干扰因素参差不齐的情况下,较大的缩放系数可以更好地保持注意力分布的有效统计学习性质,从而提高模型的鲁棒性和泛化性能。

当然,这并不是绝对的。需要结合具体的任务和数据进行选择和调整。对于特定的应用场景和任务,需要根据实际情况综合考虑缩放系数的大小和其他因素的影响,以获得最佳的效果。

因此简单总结就是:较小的scaling会让模型更容易找到上下文中的关键信息,而较大的scaling会增加模型的鲁棒性。但是这些都不是绝对的情况,较小的scaling会带来梯度消失的问题,较大的scaling会让模型的注意力散漫。在一个合适的区间内合适的变化scaling会让模型的性能有所提升。


0 条评论

发表回复

Avatar placeholder

您的电子邮箱地址不会被公开。 必填项已用 * 标注