Casual Mask 可以认为是一个粗粒度的位置编码
在《attention is all you need》中关于
注意力机制的计算是会使用一个
maks 来保证当前的token只收到之前token的注意力影响,不会收到后面token对齐的注意力影响
mask的矩阵形式,我们这里假设一个序列中有10个token

在这个mask矩阵中,横纵坐标均表示token的索引,-inf表示的是对注意力的掩盖,因为在softmax函数中,指数运算会强制让注意力权重为0
相应的torch代码为
python
mask = torch.full((seqlen, seqlen), float("-inf"), device=tokens.device).triu_(1)
从位置编码的角度来说,也可以mask矩阵具备一定的"粗粒度"的位置编码信息,表示了前后因果关系,也就是每一个token仅仅会收到前面token的影响,不会收到序列后面token的影响。但是这种"粗粒度"位置编码并不是token粒度的位置信息,并不具备在表征token之间的距离关系上。