在T5模型中,如何针对交叉注意力计算相对距离?

时间:2020-09-01 06:13:19

标签: huggingface-transformers

假设我们有一个长度为7的源序列和一个长度为5的目标序列。在每个解码器层的交叉注意子层中,目标序列中的每个标记都参与输入序列中的每个标记。

在T5模型中,我们使用https://github.com/huggingface/transformers/blob/master/src/transformers/modeling_t5.py#L289中的query-len和key-len来计算相对距离以计算偏差。

我的问题是,如果两个标记分别属于源序列和目标序列,则如何计算它们之间的距离。相对距离矩阵(5 x 7)如下:

tensor([[ 0,  1,  2,  3,  4,  5,  6],
        [-1,  0,  1,  2,  3,  4,  5],
        [-2, -1,  0,  1,  2,  3,  4],
        [-3, -2, -1,  0,  1,  2,  3],
        [-4, -3, -2, -1,  0,  1,  2]])

一旦我们将距离放入交叉注意的水桶中,它将看起来像:

tensor([[0, 0, 0, 0, 0, 0, 0],
        [1, 0, 0, 0, 0, 0, 0],
        [2, 1, 0, 0, 0, 0, 0],
        [3, 2, 1, 0, 0, 0, 0],
        [4, 3, 2, 1, 0, 0, 0]])

鉴于交叉注意力是解码器的一部分,bidirectional标志设置为False。因此,这意味着在步骤i进行解码时,解码器将处理位置i, i+1, i+2, ...上的所有源令牌,这些令牌与位置0上的目标令牌有距离i。这是正确的吗?

0 个答案:

没有答案