为什么基于transformer的序列分类不用decoder模块?

发布时间 2023-09-15 09:59:14作者: gao_0

Transformer原本是为机器翻译设计的编码-解码(Encoder-Decoder)结构。在序列分类任务中,主要利用的是Transformer的Encoder模块来获取输入序列的特征表示,而不需要Decoder模块,主要有以下原因:

  1. 解码模块主要用来生成目标序列,而分类任务只需要判别整个源序列的类别,不需要生成目标序列,所以不需要Decoder。
  2. Encoder模块可以充分学习输入序列的上下文语义特征,利用[CLS]标记可以获取整个序列的向量表示,已足以判断类别。
  3. Decoder对于分类任务而言是冗余的,会增加计算量和模型复杂度。
  4. 一些研究表明仅使用Transformer Encoder模块也能达到很好的序列分类效果,甚至超过RNN等其他模型。
  5. 一些预训练语言模型如BERT就是仅使用Transformer Encoder堆叠的结构,去掉了Decoder,但效果很好。
  6. 直接使用Encoder输出给线性分类层,构建一个单向Transformer模型对序列分类任务够用,简单高效。

综上,使用单向的Transformer Encoder而不用Decoder,可以减少计算资源,降低模型复杂度,并能获得状态优异的序列分类效果,所以更适合序列分类任务。这也使得Transformer模型被更广泛地应用到NLP的各种下游任务中。