谢 @乎不知 邀,很好的问题!在Transformer中引入位置表示,正是由于self-attention是一个permutation equivariant的操作。而在decoder端的self-attention并不是permutation equivariant的(参见论文https://arxiv.org/abs/1908.11775 的Proposition 1)。正如你所说,mask的引入实质上是一种变相的位置表示,从这个角度来看,它的功能和绝对位置表示是有重叠的。当然能否去掉位置表示,我觉得是任务相关的,我知道有两篇论文有(实验性地)讨论过在语言建模(纯decoder结构)任务上去掉位置编码的情况:
1、这篇论文的实验表明去掉vanilla Transformer的position encoding反而能在语言建模上提升性能。
2、这篇Schmidhuber组的作品,实验部分也表明在语言建模中去掉位置表示效果要更好(见Table 3):
当然,我觉得这种结论还是得辩证地看,因为这两篇似乎都仅仅将位置编码加在输入端,这早已被认为不是一个很好的实践,因为显然经过几层attention模块以后这种位置表示的内容就会慢慢丢失。因此一些工作是明确将绝对位置表示加在每一层的,例如Al-Rfou et al., 2018,以及Universal Transformers 等等 。欢迎讨论。