是什么阻止了网络在多头注意力机制中学习相同的权重

机器算法验证 神经网络 深度学习 注意力
2022-03-28 13:27:42

我一直在尝试了解变压器网络,特别是多头注意力位。因此,据我了解,计算输入特征的多个注意力加权线性组合。

我的问题是什么阻止网络为每个头学习相同的权重或线性组合,即基本上使多头位冗余。这会发生吗?我猜它必须发生,例如在翻译只取决于当前位置的单词的简单情况下?

我还想知道我们是否真的为每个磁头使用了完整的输入向量。所以,想象一下我的输入向量的长度是 256,我使用的是 8 个头。我会把我的输入分成256/8=32长度向量并对其中的每一个执行注意并连接结果,或者我是否为每个向量使用完整向量然后组合结果?

3个回答

我们在几乎所有神经网络架构中都观察到这种冗余,从简单的全连接网络(见下)开始,其中相同的输入被映射到多个隐藏层。没有什么能阻止网络在这里也以相同的权重结束。

在此处输入图像描述

我们通过随机初始化权重来解决这个问题。您通常需要随机初始化所有权重,除非在某些特殊情况下使用零或其他值进行初始化证明效果更好。优化算法是确定性的,因此如果所有初始条件都相同,那么相同的输入不会导致不同的输出。

最初的注意力论文似乎也是如此,但为了说服自己,您还可以查看这篇带有 PyTorch 代码(或 Keras实现,如果您愿意)和此博客文章的出色“注释”论文除非我错过了论文和实现中的某些内容,否则在每种情况下权重都被视为相同,因此没有额外的措施来防止冗余。实际上,如果您查看“带注释的 Transformer”帖子中的代码,您可以在课程中看到多头注意力层中的所有权重都是使用相同类型的层生成的。MultiHeadedAttentionnn.Linear

我不是专家,我会尽力回答你的问题。:)

1)我相信它会发生,因为冗余单元在神经网络中很常见。transformer论文引用的另一篇论文中,它通过在损失函数中添加一个正则化项来解决这个问题。p=∣∣AATI,这会惩罚矩阵 A 中的冗余。

2)它应该是全向量,因为权重矩阵的维数是dmodel×dk.

在此处输入图像描述 由于每个头的维度减少,总计算成本与全维度的单头注意力相似。

此外,如果我们在注意力之前拆分向量,计算成本将减少一个因子 h。

我的问题是什么阻止网络为每个头学习相同的权重或线性组合,即基本上使多头位冗余。这会发生吗?

不停止或阻止它,但不同的注意力头正在计算查询和键向量的不同子部分的注意力,512 维的标准设置是 8 个头,每个头做 64 维。两组不同的 64 维在所有标记上冗余是极不可能的,尽管一些论文证明了一些注意力头,如果对很多人来说,对整体结果贡献不大。多头更多的是关于处理的并行化而不是改进结果。

我还想知道我们是否真的为每个磁头使用了完整的输入向量。

是的。完整的输入序列,所有 512 个标记,但每个注意力头的向量维度组不同。