我读了很多关于转换器和自我注意的文章,看到BERT和GPT-2都是一个较新的版本,只使用了编码器变压器(BERT)和解码器变压器(GPT-2)。我一直试图为自己构建一个解码器模型,用于下一个序列预测,但被一件事搞糊涂了。我使用的是PyTorch,我先看了Seq2Seq tutorial,然后又研究了由Transformer Decoder Layers组成的Transformer Decoder Block。我的困惑来自于记忆,这些也需要传递。在文档中,他们说内存是编码块的最后一层,这对于Seq2Seq模型是有意义的,但我想做一个只有解码器的模型。所以我的问题是,如果你没有编码器,你怎么把像GPT-2这样的解码器模型传递给内存呢?
发布于 2021-01-15 20:10:33
经过进一步的调查,我相信我现在可以自己回答这个问题了。只有解码器的转换器实际上不使用任何内存,因为其中没有编码器-解码器自身的注意力,就像在编码器-解码器转换器中一样。仅解码器变压器看起来很像编码器变压器,只是它在自关注层上使用了一个被屏蔽的自关注层。为了做到这一点,您可以传递一个正方形的后续掩码(上三角形),这样模型就不能像GPT-2/GPT-3中那样期望实现解码器才能实现的模型。
https://stackoverflow.com/questions/65341363
复制相似问题