【论文速通省流】Bert&GPT3

一、BERT

Word2Vec 使用训练好的模型来抽取词语、句子的特征,但只能提取比较基本的特征,忽略了时序信息;语言模型只能单向的提取前文的信息,用于后文推理,更多用于生成。

而这两者面对新的下游任务时,往往只能作为Embedding层等,用于提取初级特征,后续还要设计新的网络架构,从零训练来适应下游任务。

BERT想做的是直接设计成一个预训练好的模型,之后应对下游任务只需要在小的数据集上进行微调,之后只需补充一些容易训练的输出层(例如MLP+softmax)即可适应新的下游任务。

预训练的多层双向Transformer-Encoder{多头自注意力+FFN}

  1. Layers = 12, H = 768, A(头数) = 12,模型量110M
  2. L = 24, H = 1024, A = 16,模型量340M

1. 输入

样本是一个句子对,既可以是QA,也可以是相邻的两个句子。

句子的第一个token一定是[CLS],两个句子中间是[SEP]。

每个token相当于是三个值的直接相加,第一个是Embedding,第二相当于bias,两个句子的bias各不同,第三个是可学习的位置编码。实际上三者都可以在预训练中被学习优化。

2.训练阶段

2.1 预训练

预训练分为两个任务,第一个任务阶段是做带有掩码的语言模型(Masked Language Model, MLM),对于输入的文本,除了两个标志,剩下的token有15%的概率被处理,作为被预测的token,其中80%概率这个token会变成[MASK],10%的概率被替换成词表中的一个随机词汇,10%的概率不做变化,只是用于预测。

预训练的第二个任务,下一句子预测(Next Sentence Prediction, NSP)。对于句子对的学习,有50%的概率两个句子对是上下文且相邻的句子(即两者有关联),有50%的概率后者被替换为一个上下文无关的另一个句子。将<cls>对应的输出放在一个全连接层做二分类。

数据集最好选用文本类型,而不是杂散的文章。

如果只是将Bert当成高级Embedding模型(例如用于RAG),NSP可能由于过于简单,而可能会影响模型性能。

2.2 微调

微调阶段Bert的权重也会被更新

(1)句子分类:将句子的第一个token,即<cls>输出的向量与一个全连接层分类。

(2)命名实体识别,即识别一个词元是不是人名、机构名、品牌名、位置等:将除了<cls>、<sep>等特殊词元的其他普通词都放到一个全连接层中,做二分类/多分类。

(3)问题回答,给定一个问题和描述文字,找到一个片段进行回答。即做“阅读理解”,从片段中找到所需要的答案:问题和描述文字分开,将描述文字的每个词进行三分类,判断他是不是答案的“开始、结束、或者都不是“。


二、GPT

1.GPT1

利用Transformer中的解码器,用于nsp,采用半监督学习。

用了12层解码器,dim=768

1.1 预训练

使用语言模型的损失函数,最大化窗口为k的似然值。损失函数为L1

1.2 监督微调

拿最后一层最后一个词的输出,放入一层全连接层+softmax做分类(交叉熵损失为L2)。但损失函数取$L2+\lambda L1$时更优。

1.3 迁移

将子任务表达成 1.2 中的形式,即一串序列和一个标号。

(1)分类:将输入前后分别加上<start>和<extract>作为序列,标号即为分类的标号。输出再用一个线性层做微调即可。

(2)蕴含,类似于bert做的阅读理解,给出一段话+一个设问,输出对/错/不知道:分别加入<start>、<delim>和<extract>,再加一个线性层,做三分类。

(3)相似,判断两个文本是否相似,可用于关键词检索:由于这是一个对称问题,所以构造了两个类似于情况(2)的文本,只是两个文本一前一后,经过Encoder的输出进行相加,最后进入线性层,进行二分类。

(4)选择题:给出一个问题和多个答案,选择其中一个答案:类似情况(2)的构造,有多少个选项就构造多少个句子对,每个QA都经过完整的Decoder+Linear,最后用Softmax选最优选项。

2. GPT2

设计了四个模型,最大的48层,d=1600,1.5B大模型,和GPT1类似的架构,但疑似没怎么打过Bert,所以提出了Zero-Shot的概念。GPT2使用无监督学习,且在不进行微调的情况下,仍然能适应下游任务。

预训练的时候没有微调时期的特殊符号,所以预训练阶段的数据输入形式要能与下游任务做匹配,即引入Prompt。只要模型足够强大,就能理解prompt,且prompt就是以自然语言的形式展现,在广泛的数据集中可能天生就带有类似的描述。

3. GPT3

做few-shot而不做zero-shot,175B大模型,下游任务不做梯度更新和微调。

问题:1、每次用户输入都要给few shot;2、如果手里有比较多的样本,无法全部都放进去,因为模型的上下文能力有限。

局限:1、长文本生成很弱;2、语言模型只能往前看;3、每个词都是均匀的预测,无法抓到重点,在虚词的学习中可能消耗很多时长;4、样本有效性比较弱;5、训练消耗很多算力;6、不可解释;7、没做安全绕过防御。


【论文速通省流】Bert&GPT3
https://blog.sheep0.top/2025/10/05/【论文速通省流】Bert&GPT3/
作者
Sheep0
发布于
2025年10月5日
许可协议