赞
踩
在Transformer模型中,注意力填充掩码主要用于遮蔽Encoder输入序列中填充(PAD)的token,以防止Decoder在预测时使用这些token进行注意力计算。
具体来说,Attention Pad Mask是一个二进制张量,其中每个元素的值为True或False。在计算注意力分数时,被标记为True的位置将被设置为负无穷大,以便在Softmax操作中对它们进行归一化时被忽略。因此,在Attention Pad Mask的作用下,模型只会关注输入序列中实际的token,而忽略填充token。
例如,假设我们有一个batch size为2的输入序列,长度分别为5和7,其中填充token的值为0。我们可以将输入序列表示为以下形式:
seq_q = [[1, 2, 3, 0, 0], [4, 5, 6, 7, 0, 0, 0]]
seq_k = [[1, 0, 0, 0, 0, 0, 0], [4, 5, 6, 7, 0, 0, 0]]
seq_q
和seq_k
分别代表查询序列和键序列。
根据seq_k中填充token的位置,我们可以使用get_attn_pad_mask函数生成Attention Pad Mask:
pad_attn_mask = [[False, True, True, True, True, True, True], [False, False, False, False, True, True, True]]
在计算注意力分数时,对于第一个序列中的第4和第5个位置,以及第二个序列中的最后三个位置,由于其对应的填充token为0,因此Attention Pad Mask中的值为True,会将其对应的分数设置为负无穷大。
最终,Attention Pad Mask的作用是确保模型在计算注意力分数时不会将填充token考虑在内,从而提高模型的预测效果。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。