Mask大致分为两种
Padding Mask:在NLP任务中,由于句子长度不一致,经常会进行padding操作,在sequence中加入零向量。这部分padding不应该起作用,但是在Attention的计算中用到了softmax等操作,即便0向量也会参与计算(e^0=1),因此需要手动将这部分信息mask才行。padding mask主要包含两种:
key mask:在计算score之后,且softmax之前进行,将值设为很小的数字(如-e^12),这样经过的softmax之后值几乎为0
query mask:在softmax之后进行,因此对应元素设置为0即可。
Future(blinding) Mask:例如在翻译的任务中(“我喜欢机器学习”),在翻译喜欢的时候,我们只知道“我喜欢”,而后面的“机器学习”并不知道,也就是不能提前利用Future的信息,因此需要将Future的信息Mask掉。Future Mask主要用在Decoder中,只有Decoder中才会有future 信息。Future Mask的实现也比较简单,首先建立一个对应的下三角形矩阵,之后根据这个矩阵过滤即可,因为下三角对应的之前的信息。
————————————————
版权声明:本文为CSDN博主「我叫龙翔天翼」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_40901056/article/details/97514718