三类不同的Transformer模型:
- GPT-like(自回归)
- BERT-like(自动编码)
- BART/T5-like(seq2seq)
要执行微调需要获取一个经过预训练的预言模型,然后使用特定于任务的数据集执行额外的训练,之所以不在最后的任务训练是因为:
利用模型在预训练期间获得的知识
避免过拟合 ### 模型块:
Encoder:编码器接收输入并构建其表示(其特征)
Decoder:解码器使用编码器的表示(特征)以及其他输入来生成目标序列。
这些部件可以根据任务独立使用:
- Encoder-only models: 适用于需要理解输入的任务,如句子分类和命名实体识别。
- Decoder-only models: 适用于生成任务,如文本生成。
- Encoder-decoder models 或者 sequence-to-sequence models: 适用于需要根据输入进行生成的任务,如翻译或摘要。
原始结构
Encoder中的注意力层可以看到一个句子中的所有单词,但Decoder只能看到之前的单词,为了加快训练速度,会把整个目标输入,但是不允许获取到之后的单词
解码器块中的第一个注意力层关联到解码器的所有(过去的)输入,但是第二注意力层使用编码器的输出。因此,它可以访问整个输入句子,以最好地预测当前单词。

编码器模型
仅使用编码器的Transformer模型,在每个阶段,注意力层都可以获取初始句子中的所有单词。这些模型通常具有“双向”注意力,被称为自编码模型。“双向注意力”通常指的是在模型中使用的注意力机制,能够在处理输入序列时同时考虑前后文的信息。
解码器模型
“解码器”模型通常指仅使用解码器的Transformer模型。在每个阶段,对于给定的单词,注意力层只能获取到句子中位于将要预测单词前面的单词。这些模型通常被称为自回归模型。“解码器”模型的预训练通常围绕预测句子中的下一个单词进行。这些模型最适合于涉及文本生成的任务。
seq2seq模型
编码器-解码器模型(也称为序列到序列模型)同时使用Transformer架构的编码器和解码器两个部分。在每个阶段,编码器的注意力层可以访问初始句子中的所有单词,而解码器的注意力层只能访问位于输入中将要预测单词前面的单词。这些模型的预训练可以使用训练编码器或解码器模型的方式来完成,但通常涉及更复杂的内容。例如,T5通过将文本的随机跨度(可以包含多个单词)替换为单个特殊单词来进行预训练,然后目标是预测该掩码单词替换的文本。序列到序列模型最适合于围绕根据给定输入生成新句子的任务,如摘要、翻译或生成性问答。

模型头

模型头将hidden states的输出作为输入,并将其投影到不同的维度。它们通常有一个或几个线性层组成。
对输出进行后处理
1 | print(outputs.logits) |
输出不是概率,而是logits,即模型最后一层输出的原始非标准化分数,概率是经过一个SoftMax层