目录
[1. 为什么过去几年大家都在做BERT, 做GPT的人少。](#1. 为什么过去几年大家都在做BERT, 做GPT的人少。)
[2. 但最近做GPT的多了以及为什么GPT架构的scaling(扩展性)比BERT好。](#2. 但最近做GPT的多了以及为什么GPT架构的scaling(扩展性)比BERT好。)
3.BERT是否可以用来做生成,如果可以的话为什么大家都用GPT不用BERT.
[4. BERT里的NSP后面被认为是没用的,为什么?文章里是否有一些indication。](#4. BERT里的NSP后面被认为是没用的,为什么?文章里是否有一些indication。)
[5. BERT的[CLS] token任意两个句子之间的相似度都很高,为什么。](#5. BERT的[CLS] token任意两个句子之间的相似度都很高,为什么。)
1. 为什么过去几年大家都在做BERT, 做GPT的人少。
-
任务差异:BERT 主要用于双向 语言模型预训练,能够更好地捕捉单词在上下文中的语境信息。先预训练再微调 ,它在各种下游任务上都取得了很好的效果,包括++文本分类、命名实体识别、问答++ 等。采用了Transformer架构 。而GPT(特别是早期的 GPT-2)则主要用于单向语言模型预训练,即生成下一个可能的单词,更适合于生成型任务,如++对话生成、文章生成等。++
-
计算资源需求:GPT 模型相对来说更加庞大,需要更多的计算资源和时间进行训练。在早期,这使得许多研究团队难以承担 GPT 的训练成本,相比之下,BERT 的训练相对更加高效一些。
2. 但最近做GPT的多了以及为什么GPT架构的scaling(扩展性)比BERT好。
GPT-3等大型模型展示了在各种任务上取得强大性能的能力
-
自回归生成: GPT采用自回归生成的方式进行预训练,即在训练时每次生成一个单词的概率分布,下一个单词的生成依赖于前面已生成的单词,这种方式使得GPT更容易适应长距离依赖关系。
-
单向上下文: GPT只使用前向(单向)的上下文信息,这意味着在预测每个单词时只依赖于前面已生成的单词。这种模型结构更简单,也更容易进行横向扩展。(BERT的双向结构使得模型在扩展时需要考虑如何更好地捕捉双向上下文信息,增加了模型的复杂性和计算成本,例如权重参数量翻倍?)
-
参数量的增加: GPT的扩展性表现在参数量的增加上,例如,GPT-3拥有1750亿个参数。大规模的参数量使得GPT能够学习更丰富、更复杂的语言表示。
3.BERT是否可以用来做生成,如果可以的话为什么大家都用GPT不用BERT.
BERT并不适合直接用于生成文本 。BERT是一种双向模型,它在训练时利用了一个掩码预测 任务(Masked Language Model,MLM)来学习上下文信息。这使得BERT在理解和表示文本方面非常有效,但在生成文本方面并不擅长。
相对而言,GPT(Generative Pre-trained Transformer)系列模型专门设计用于生成文本。GPT采用单向的Transformer结构,在训练时使用自回归生成 任务来预测下一个词,每个位置的预测都依赖于之前生成的所有位置,因此更适合用于生成连续文本序列。
4. BERT里的NSP后面被认为是没用的,为什么?文章里是否有一些indication。
-
数据偏差:NSP任务的数据集往往存在一定程度的偏斜,即负例(随机选择的句子)往往比正例(相邻句子)更容易识别(负例的主题、词汇等特征可能与正例存在明显差异 ),这导致模型倾向于简单地判断负例,而无法从中获得足够的有效信息。
-
训练目标冗余:一些研究发现,NSP任务和MLM任务(Masked Language Model)之间存在一定的冗余,即模型通过MLM任务已经学会了足够的语言表示能力,而NSP任务未能有效增加额外的语义理解。
-
实际应用中的有限帮助:在实际的自然语言处理任务中,例如文本分类、命名实体识别等,NSP任务并未表现出对模型性能的显著提升。
在一些研究中,通过去掉NSP任务,甚至只采用MLM任务进行预训练 ,可以获得和包括NSP任务的BERT模型性能相当甚至更好的结果。因此,一些研究者认为NSP任务在BERT中的作用有限,甚至可以被舍弃。
例如RoBERTa文章中就去掉了下一句预测(NSP)任务
5. BERT的[CLS] token任意两个句子之间的相似度都很高,为什么。
BERT模型预训练的任务之一是Next Sentence Prediction,即给定两个句子,判断它们是否是连续出现的句子。它并没有直接学习到语义相似性,而是通过判断句子是否连续来学习句子之间的关系 ,BERT模型会学习到将整个句子的语义信息编码到[CLS] token中的表示向量中。
**BERT在预训练过程中,相邻的句子被视为正样本,BERT模型会将相邻的句子编码成相似的向量表示。即使两个句子在语义上并不相似,BERT模型也可能会它们编码成相似的向量表示。**因此语义相不相似的两个句子的向量表示相似度可能都很高