如何在 Transformer Self-Attention 中训练 Q、K 和 V 向量?

数据挖掘 机器学习 nlp 序列到序列 变压器 注意机制
2022-03-01 15:51:35

我是变形金刚的新手,所以这可能是一个愚蠢的问题,但我正在阅读变形金刚以及它们如何使用注意力,它涉及三个特殊向量的使用。大多数文章说,在阅读了它们如何用于注意力之后,人们就会明白它们的目的。我相信我了解它们的作用,但我不确定它们是如何创建的。

我知道它们来自输入向量乘以三个相应的权重,但我不确定这些权重是如何得出的。它们是随机选择的并像标准神经网络一样训练吗?如果是这样,如果训练语料库中没有预定义的注意力数据怎么办?

我对此很陌生,所以我希望我所说的一切都是有道理的。如果我有什么完全错误的,请告诉我!

3个回答

这些矩阵不是学习参数,而是先前(尚未参数化)计算的结果。在 self-attention 层中,它们三个是否都相同,它们是前一层的输出。在编码器-解码器注意力中,查询是来自前一层的解码器状态、键和值以及编码器状态。

在 Attention 的公式 1 中,您只需要纸张,这些只是来自外部的参数:

在此处输入图像描述

它只是说,如果从外部某个地方获取一些查询、键和值,你会怎么做。这也是第 5 页顶部未编号的方程式的情况。在这里,您只为多个注意力的头部投射键、查询和值。

在此处输入图像描述

这里WiQ,WiK, 和WiV是可学习的参数,它们通过标准的反向传播算法学习。

请注意,尽管键和值(以及自注意力中的查询)仅在Multihead功能。Attention函数已经获得了投影状态。

Q、K、V 向量使用标准反向传播进行训练所有可训练的参数都是随机初始化的,然后用梯度下降算法逐步调整。

令人惊讶的是,他们的训练与任何标准 ANN 一样!他们用这样一个经典的把戏能达到什么程度,真是太神奇了。

正如 Jindřich 所说,Q、K、V 来自之前的计算,它们没有直接使用反向传播进行训练。然而,权重WiQ,WiK,WiV直接用反向传播训练。

对此进行扩展,在“Attention is all you need paper”中,在编码器和解码器使用的self attention中, Q、K、V 是相同的矩阵

如果我们只看编码器中的自注意力,在第一层 Q、K、V 是输入句子的表示,经过嵌入和位置编码步骤。这些矩阵中的行数等于输入序列中的标记数,列数基于架构(论文中为 64)。然后将第一个编码器层的输出用作下一层的 Q、K、V(同样这些都是相同的矩阵)。

解码器的注意力自注意力层类似,但是解码器还包含用于关注编码器的注意力层。对于这种注意力,Q 矩阵来自解码器的自注意力,K,V 是最终编码器层的输出。