1 概述
1.1 GPT-2 概览
- 名称:GPT-2论文全称《Language Models are Unsupervised Multitask Learners》【语言模型是无监督的多任务学习者】
- 时间:2019年2月
- 作者:OpenAI 6人(负责人是ilya)
- 代码:https://github.com/openai/gpt-2(没有提供训练代码,也没有大号预训练模型。。。)
- 一段话总结GPT-2:用的transformer解码器结构(48层decoder),15亿参数,模型输入是文本,输出也是文本。训练数据源自reddit上被点赞的4500万个网站链接,各种筛选后获得800万文本,大概40GB文本数据量。预训练模型能够实现zero-shot,即无需微调直接能在各种领域使用。在众多zero-shot领域达到SOTA,并且这种架构的精度天花板还远未触及,只要继续去提高参数量和数据量。
1.2 资料推荐
-
强推:李沐的B站视频《GPT,GPT-2,GPT-3 论文精读》
-
再读:GPT-2论文逐章详细解读:
-
其他参考:
- (推荐)https://dongnian.icu/paper_reading/2.5.GPT_GPT-2_GPT-3/index.html
- 相当于李沐视频的完整笔记
- https://blog.csdn.net/u013308709/article/details/135231524
- 精简的提炼GPT2核心点
- https://zhpmatrix.github.io/2019/02/16/transformer-multi-task/
- 自问自答式提炼GPT-2的核心问题
- (推荐)https://dongnian.icu/paper_reading/2.5.GPT_GPT-2_GPT-3/index.html
2 个人总结
2.1 背景
GPT-1发布不久,bert就出来了,并且在某些领域精度比GPT-1更好。当然,基于transformer编码器结构的bert模型的参数量和数据集都比GPT-1大很多(bert参数是3.4亿,GPT-1是1亿),GPT-2如果也仅仅是提高参数量和数据集,未免太LOW了,并且openai是一家有着构建强人工智能伟大目标的公司,所以,GPT-2不但需要在精度上更上一层楼,还必须有其他方面的大突破。
2.2 目标
- 提升精度和泛化能力:增大模型参数量、增大数据量、增大数据的多样性。
- 实现zero-shot:调整输入输出方式,让预训练好的模型能够直接在各种领域进行应用,不再需要微调。
2.3 具体方法
2.3.1 GPT-2的模型结构、输入输出、token、模型参数
在模型结构上,如上图,GPT-2相对GPT-1将LN层前挪了,并且在全连接之前又加了个LN。【后面有解读】
模型的输入输出已经跟现在的GPT-4一致了,输入输出都是文本,比如一个词、一句话、一个段落、文章等等。也就是说,你有什么问题,直接写好文字输给它,然后它直接生成文本回答你。
GPT-2 使用 Byte Pair Encoding (BPE) 作为词汇分割方法。BPE 通过将常见的字符序列合并成词级别的 token,以提高模型的效率。BPE 将词汇表大小限制在 50257 种 token。这些 token 是通过对 WebText 语料库进行分析和频率优化生成的。
根据decoder层数选择,GPT-2模型有4个尺度,最大的是15亿,最小的基本想相当于GPT-1模型,3.4亿参数的刚好对标bert:
2.3.2 数据集
数据来源
互联网上文字很容易爬取,但要确保网页的高质量(意思就是不要掺杂重复低质的、毫无逻辑的、充满各种情绪化等等的垃圾文章文字)就很麻烦。GPT2作者们的方法是爬取reddit网站上获得用户推荐的4500万个网页链接,这些链接可以被视为其他用户认为有趣、具有教育意义或值得分享的网页。
维基百科对Reddit的介绍:Reddit是一个娱乐、社交及新闻网站,注册用户可以将文字或链接在网站上发布,使它基本上成为了一个电子布告栏系统。注册用户可以对这些帖子进行投票,结果将被用来进行排名和决定它在首页或子页的位置。网站上的内容分类被称为“subreddit”。subreddit的内容包括新闻、电子游戏、电影、音乐、书籍、健身、食物和图片分享等。
数据处理、过滤
直接使用上述4500万网站文字,并不可靠,因为里面肯定有很多重复、低质量文本。作者对抓取到的文本进行了去重和清理,去除了无效内容或低质量文本。在清理过程中,排除了维基百科的内容,因为维基百科常作为其他数据集的来源,为避免数据集重叠,特别剔除了这部分内容。
数据集在经过去重和清理后,包含约 800 万份文档,总计约 40GB 的文本数据。
2.4 训练的细节
关于 GPT-2 的训练细节论文中没提,openai官方虽然开源了TensorFlow版代码,但是我去看了下,好像只有模型结构、编码方式等东西。关于训练的代码和细节,也还是没分享。而且GPT-2预训练模型仅提供1亿参数的提供下载。。。
2.5 模型效果
下图是论文中原图,最核心的一点:这种架构的模型,精度上限还远没触及,只要继续增大参数量和数据集,模型精度还能继续大幅提升!
以下是GPT-4回答:
该图片展示了 GPT-2 模型在多个 NLP 任务上的零次学习(zero-shot learning)性能,随着模型参数量的增加,模型在这些任务上的表现也有所提升。四个任务分别是:阅读理解(Reading Comprehension)、翻译(Translation)、**摘要生成(Summarization) **和 问答(Question Answering)。以下是详细解读:
1. 阅读理解(Reading Comprehension)
-
任务:CoQA 数据集,用 F1 分数表示模型的阅读理解性能。
-
趋势:随着参数量从 117M 增加到 1542M,模型的 F1 分数显著提升。
- 117M 参数模型的 F1 分数接近 30。
- 345M 参数模型的 F1 分数达到约 45。
- 762M 参数模型的 F1 分数约为 55。
- 1542M 参数模型的 F1 分数接近 60。
-
比较:最高性能接近现有模型 DrQA+PGNet 的性能,但尚未达到人类的水平。
2. 翻译(Translation)
-
任务:WMT-14 英法翻译任务,用 BLEU 分数衡量翻译质量。
-
趋势:随着参数量增加,模型在翻译任务上的 BLEU 分数不断提升。
- 117M 参数模型的 BLEU 分数接近 0。
- 345M 参数模型的 BLEU 分数达到约 5。
- 762M 参数模型的 BLEU 分数超过 10。
- 1542M 参数模型的 BLEU 分数接近 15。
-
比较:尽管 GPT-2 在翻译任务上有所提升,但其表现仍然低于无监督的统计机器翻译(Unsupervised Statistical MT)方法。
3. 摘要生成(Summarization)
-
任务:CNN 和 Daily Mail 数据集上的摘要生成任务,用 ROUGE-1、ROUGE-2、ROUGE-L 的平均分数表示。
-
趋势:模型参数量对摘要生成的提升相对有限。
- 117M 参数模型的 ROUGE 平均分数约为 18。
- 345M 参数模型的 ROUGE 分数提升至 22 左右。
- 762M 参数模型的表现稍有提升,接近 24。
- 1542M 参数模型略微下降,说明参数量并没有显著提高摘要生成的性能。
-
比较:在摘要任务上,模型性能接近经典方法 Random-3,但仍低于 Lead-3 和 PGNet 等更为先进的摘要模型。
4. 问答(Question Answering)
-
任务:Natural Questions 数据集,用准确率表示模型在开放领域问答任务上的表现。
-
趋势:随着参数量增加,模型的问答性能明显提升。
- 117M 参数模型的准确率接近 0,仅略高于“最常见问题类型答案”的基准。
- 345M 参数模型的准确率接近 2%。
- 762M 参数模型的准确率提升至约 3.5%。
- 1542M 参数模型的准确率接近 4.5%。
-
比较:尽管 GPT-2 在问答任务上有所改进,但仍远低于开放领域问答系统的性能。
总结:
图中显示了 GPT-2 随着参数量增加在不同 NLP 任务上的性能提升趋势。在阅读理解、翻译和问答任务中,模型参数量越大,性能提升越显著。然而,在摘要生成任务中,增加参数量对模型性能的影响相对有限。这表明在某些任务中,单纯依赖模型规模并不能带来线性性能提升,可能还需要结合其他优化策略。
3 一些问题的解答
3.1 为什么这种模型和数据集能够让GPT-2学会翻译?
在上述爬取的网站数据中,其实包含很多翻译的样例数据,论文中给了一个截图来说明,如下图:
李沐的解读是:作者想表达的意思是说,如果你想在这样的数据集下训练语言模型,很有可能模型确实可以把英语翻译为法语,因为你的文本里面出现过很多这样的例子。
我让GPT-4解答了一下上述图片,如下:
这张图片展示了一个表格,列举了 WebText 数据集中从英语到法语以及从法语到英语的自然语言翻译示例。这些例子展示了 GPT-2 模型如何通过处理这些自然语言中的上下文信息来学习翻译。以下是一些具体的解读:
示例解读:
- 句子:
-
原文:“I’m not the cleverest man in the world, but like they say in French: Je ne suis pas un imbecile [I’m not a fool].”
-
翻译: “Je ne suis pas un imbecile”(法语,意思是“我不是傻瓜”)。
-
解读:这句展示了法语的日常表达如何在上下文中自然嵌入到英语对话中,这有助于模型学习两种语言之间的自然转换。
-
句子:
- 原文:“Mentez mentez, il en restera toujours quelque chose,” which translates as, “Lie lie and something will always remain.”
- 翻译:“Mentez mentez”(法语,意思是“撒谎,撒谎,总会留下些痕迹”)。
- 解读:这句展示了从法语到英语的直接翻译,帮助模型理解这些语言结构的不同之处。
-
句子:
- 原文:“I hate the word ‘perfume,’” Burr says. 'It’s somewhat better in French: ‘parfum’."
- 翻译:法语词"parfum"被用来替代英语词"perfume"。
- 解读:这是一个简单的词汇替换展示,帮助模型学习单词层面的翻译。
-
句子:
- 原文:“Comment on fait pour aller de l’autre coté? - Quel autre coté?” which means “How do you get to the other side? - What side?”
- 翻译:展示了法语中对话的自然翻译,解释了对话中的不同问句的对应翻译。
- 解读:这有助于模型学习口语对话中的上下文理解和翻译。
-
句子:
- 原文:“As-tu aller au cinéma?” or “Did you go to the movies?” which literally translates as “Have-you to go to movies/theater?”
- 翻译:展示了法语句子 “As-tu aller au cinéma?” 如何被翻译成英语 “Did you go to the movies?”。
- 解读:展示了句子结构上的差异,例如法语中的“have-you”如何对应到英语中的 “did you”。
-
句子:
- 原文:“Brevet Sans Garantie Du Gouvernement,” translated to English as “Patented without government warranty.”
- 翻译:展示了正式术语如何从法语翻译成英语。
- 解读:这种句子可以帮助模型学习较为正式的术语翻译。
这些示例展示了如何在日常对话和正式文本中进行自然语言翻译,帮助 GPT-2 模型通过处理这些上下文信息,理解并学习两种语言之间的转换和对应关系。
3.2 为什么模型结构中LN层往前挪?
根据 GPT-2 论文中的解释,Layer Normalization (LN) 层的前移是为了优化模型的训练过程和稳定性。具体来说,GPT-2 将 Layer Normalization 移到了每个子块的输入处,而不是放在原来的输出位置。这种修改类似于 pre-activation residual network(预激活残差网络)的结构。
具体原因如下:
- 稳定性改进:
-
这种设计类似于残差网络的预激活版本,通过在子块输入处进行 Layer Normalization,可以使模型在训练深度网络时更加稳定。
-
在深层网络中,累积的梯度可能导致模型的不稳定或训练变慢。通过在输入处进行标准化,可以减少梯度消失或爆炸的风险,从而使训练过程更平滑。
-
改善梯度流动:
- GPT-2 的 Transformer 结构使用了多层自注意力和前馈网络。随着模型深度的增加,残差路径上的梯度会累积,因此将 Layer Normalization 放在输入位置有助于缓解这种梯度累积问题,确保梯度能够有效地传递。
-
借鉴预激活残差网络的成功经验:
- 预激活残差网络在计算机视觉任务中已被证明是一种有效的架构改进,它能够在训练非常深的网络时显著提高性能。GPT-2 借鉴了这一经验,通过在 Transformer 的自注意力和前馈子层中前置 Layer Normalization,提升了语言模型的表现。
总之,GPT-2 论文将 Layer Normalization 前置,是为了增强模型在深层次结构中的稳定性,改善梯度的流动,从而提高模型的整体训练效率和性能。
3.3 GPT-2跟Bert精度有没有对比?
虽然 GPT-2 和 BERT 都属于 Transformer 模型,但它们在任务设置上已经不同了。BERT 主要通过有监督学习和微调在特定任务上取得了高精度,而 GPT-2 已经专注于在没有任务标注的情况下展示强大的零次学习能力。
3.4 GPT-2不足之处有哪些?
以下是GPT-4的整理:
在 GPT-2 论文中,作者提到了一些模型的局限性和潜在的缺点。以下是一些关键的限制:
1. 模型规模的局限
- 计算资源需求大:GPT-2 最大的 1542M 参数模型需要大量的计算资源进行训练。即便在使用了大规模计算集群的情况下,训练时间和计算成本依然非常高。这使得普通研究人员或小型团队难以复现或扩展该模型。
- 模型规模与性能的关系:尽管参数量增加可以带来性能提升,但作者指出,GPT-2 在翻译和摘要生成任务上的表现仍然不如经过专门训练的有监督模型。这表明模型规模的增加并不是提升所有任务性能的唯一有效途径。
2. 依赖大规模数据集
- 数据集偏差:GPT-2 依赖 WebText 数据集进行训练,而该数据集来源于 Reddit 平台上的推荐链接。虽然这种方法确保了文本的多样性,但这也可能带来一定的偏见或数据质量问题。例如,某些领域的文本可能不足,或存在特定的社会文化偏向,这会影响模型的泛化性和公平性。
- 需要更多数据:作者提到,即使是最大的 GPT-2 模型,在训练时仍未充分拟合整个 WebText 数据集。这意味着如果有更大规模的数据和更长的训练时间,模型性能可能还会进一步提升,但这种需求也导致训练成本的不断上升。
3. 理解能力的局限
- 缺乏深层次推理能力:虽然 GPT-2 在常识推理和长距离依赖任务上表现出了显著提升,但它仍然在需要复杂推理和逻辑推断的任务上表现有限。例如,在需要多步推理或世界知识背景的任务上,GPT-2 的表现仍不如人类或专门设计的推理系统。
- 易产生不合逻辑的输出:作为自回归模型,GPT-2 会基于当前生成的内容预测下一个 token。在长序列生成中,它有时会生成不合逻辑或自相矛盾的句子,特别是在上下文信息不足或文本过于复杂的情况下。
4. 零次学习的局限
- 零次学习的性能不足:虽然 GPT-2 在多个任务上展示了零次学习的潜力,但与经过有监督微调的模型相比,GPT-2 的零次学习性能仍有较大差距。在某些复杂任务(如机器翻译和问答任务)中,零次学习的表现明显不如专门训练的有监督模型。
- 依赖提示的质量:GPT-2 的零次学习效果在很大程度上取决于输入提示的设计质量。如果提示信息不明确或不够精确,模型的生成结果可能会出现较大偏差。
5. 道德和安全性问题
- 滥用风险:由于 GPT-2 能够生成高质量的文本,作者在论文中指出,可能存在模型被滥用的风险。恶意用户可以利用 GPT-2 来生成虚假新闻、垃圾信息或误导性内容,这会对社交媒体和其他平台带来负面影响。
- 内容控制困难:由于 GPT-2 是基于大规模无监督数据集进行训练的,模型生成的内容可能包含偏见、攻击性语言或其他不适合公开的内容。控制这些生成内容的难度较大,尤其是在未经过特定领域微调的情况下。
总结:
GPT-2 在多任务学习和零次学习中展现了强大的能力,但仍然面临规模、数据、推理能力和道德问题等局限。模型的训练成本高、对大规模数据的依赖以及生成结果的不稳定性都是需要进一步解决的挑战。此外,GPT-2 的潜在滥用风险和偏见问题也值得引起更多关注和讨论。