GPT 经验篇
来源:AiGC面试宝典 | 作者:宁静致远 | 日期:2024年01月27日
一、GPT 源码 past_key_values 是干啥的?
在 GPT(Generative Pre-trained Transformer)中,past_key_values 是用于存储先前层的 Key-Value 注意力矩阵的结构。在进行推理时,过去的 Key-Value 注意力矩阵可以被重复使用,避免重复计算,从而显著提高推理效率。
📝 通俗解释:想象你在看一本很长的书,每翻一页都需要重新理解之前所有页的内容,那就太累了。past_key_values 就像是你的"记忆缓存",已经理解过的内容不需要重新理解,直接调用之前的记忆就能继续阅读,这样读书(推理)速度就会快很多。
二、GPT One-by-One 每一层怎么输入输出?
在 GPT One-by-One(逐token生成)的模式下,每一层的输入是上一层的输出。具体而言:
- 输入:初始输入是词嵌入(Word Embedding)加上位置编码(Position Encoding)
- 处理:通过自注意力机制(Self-Attention)和前馈神经网络(Feed Forward Network)进行处理
- 输出:每一层的输出作为下一层的输入,最终得到当前层的表示向量
📝 通俗解释:就像流水线上的工人,每个工人(每一层)把上一个人传来的半成品加工一下,再传给下一个人。第一个工人用的是原材料(词嵌入),经过层层加工后,最终得到成品(输出表示)。
三、BERT 和 GPT 有什么区别
BERT(Bidirectional Encoder Representations from Transformers)和 GPT(Generative Pre-trained Transformer)是两种不同类型的预训练语言模型,主要区别如下:
| 特性 | BERT | GPT |
|---|---|---|
| 架构 | 双向编码器 | 单向解码器 |
| 训练方式 | 掩码语言模型(MLM) | 自回归语言模型 |
| 适用任务 | 理解型任务 | 生成型任务 |
| 典型应用 | 文本分类、命名实体识别 | 文本生成、对话生成 |
- BERT 是一个双向编码器,通过预测输入序列中被掩码的部分来学习上下文表示,适用于多种理解型任务。
- GPT 是一个单向解码器,通过预测下一个单词来生成文本,主要用于生成型任务。
📝 通俗解释:BERT 像是"阅读理解高手",它能同时看到句子的前后文,所以适合做分析、判断、分类这类"理解"工作。GPT 像是"写作文高手",它只能从左往右写,所以适合做续写、对话这类"生成"工作。
四、文本生成的几大预训练任务?
1. GPT(Generative Pre-trained Transformer)系列
包括 GPT、GPT-2、GPT-3 等。这些模型使用 Transformer 架构进行预训练,在大规模语料上学习语言模型,能够生成连贯、具有语义的文本。
2. BART(Bidirectional and Auto-Regressive Transformer)
BART 是一种基于 Transformer 的生成式预训练模型。它通过自回归解码器实现文本生成,通过自编码器预训练目标来重构输入文本,能够生成流畅、连贯的文本。
3. T5(Text-to-Text Transfer Transformer)
T5 是一种通用的文本生成模型,使用了编码器-解码器结构。它将不同的自然语言处理(NLP)任务转换为文本到文本的转换任务,可用于机器翻译、摘要生成、问题回答等多个 NLP 任务。
4. XLNet
XLNet 是一种基于 Transformer 架构的预训练模型,采用了自回归和自编码器的组合方式进行训练。它在语言建模任务上引入了全局的上下文信息,能够生成更加准确和连贯的文本。
5. UniLM(Unified Language Model)
UniLM 是一种多任务学习的预训练模型,将不同的自然语言处理任务转化为统一的生成式任务。它可以用于文本摘要、问答系统、机器翻译等多个任务。
📝 通俗解释:这些模型就像是不同风格的"写作老师"。GPT 系列是自学成才的作家,靠大量阅读自己领悟写作技巧;BART 是"修补大师",专门学习如何把损坏的文章修复好;T5 是"全能翻译官",把所有任务都当成"把A变成B"的翻译问题;XLNet 是"贪心学者",既要学从头写也要学填空;UniLM 是"多面手",一个人能同时教好几门课。
五、讲讲 T5 和 BART 的区别,讲讲 BART 的 DAE 任务?
T5 和 BART 的区别
| 特性 | T5 | BART |
|---|---|---|
| 定位 | 通用的文本到文本模型 | 专注于生成式任务 |
| 结构 | 编码器-解码器 | 编码器-解码器 |
| 训练目标 | 文本到文本转换 | 去噪自编码器 |
| 应用场景 | 机器翻译、摘要、问答等 | 文本生成、摘要、对话等 |
- T5 是一种基于 Transformer 的通用文本生成模型,将所有 NLP 任务统一为"文本到文本"的转换任务。
- BART 是建立在 T5 模型基础上的变种,专注于生成式任务。它通过去噪自编码器来重构原始文本,生成的文本更加流畅和连贯。
📝 通俗解释:T5 像是"万能转换器",不管是翻译、总结还是问答,都被它统一看成"把一段文字转换成另一段文字"的问题。BART 则是"文本修复专家",它的训练方式是给一段文字"故意搞破坏"(比如删除词语、打乱顺序、添加噪声),然后让模型学习如何把被破坏的文字还原回去,这个过程让它特别擅长生成完整、流畅的文本。
BART 的 DAE(Denoising AutoEncoder,去噪自编码器)任务
DAE 任务是 BART 模型的一种预训练目标,要求模型从输入的有噪声文本中恢复原始的无噪声文本。具体方法包括:
- 文本掩码(Masking):随机替换部分词为 [M] 标记
- 文本删除(Deletion):随机删除部分词
- 文本打乱(Permutation):随机打乱句子顺序
- 文本截断(Infilling):随机截断文本跨度
通过这些去噪训练,BART 可以学习到更好的文本表示和重构能力,从而提高生成文本的质量和准确性。
📝 通俗解释:DAE 就像是让学生做"完形填空"和"错别字纠正"的练习。老师把一篇正常的文章故意弄乱——有些字被涂黑、有些句子顺序被调换、有些词被删除,然后让学生努力把文章还原成原来的样子。通过这种训练,学生的语言理解能力和组织能力都会大大提升。BART 就是通过这种方式学会了如何生成高质量的文本。
六、讲讲 BART 和 BERT 的区别?
BART 和 BERT 是两个不同的预训练模型,区别如下:
| 特性 | BART | BERT |
|---|---|---|
| 模型类型 | 生成式预训练模型 | 理解式预训练模型 |
| 架构 | 自回归解码器 | 双向 Transformer 编码器 |
| 训练目标 | 去噪自编码器 | 掩码语言模型(MLM) |
| 核心能力 | 文本生成 | 上下文表示 |
| 典型应用 | 文本生成、摘要、对话 | 文本分类、命名实体识别 |
- BART 是一种基于 Transformer 的生成式预训练模型,主要应用于文本生成、摘要生成、对话系统等任务。它通过自编码器预训练目标来重构输入文本,从而生成流畅、连贯的文本。
- BERT 是一种双向的预训练模型,用于生成文本的上下文表示。它采用了双向的 Transformer 编码器,通过将上下文的信息融合到表示中,提供了更全面的语境理解能力,主要应用于词嵌入、文本分类、命名实体识别等任务。
📝 通俗解释:BERT 像是"质检员",它的任务是分析一段文字的含义、理解上下文关系,适合做判断、分类这类工作。BART 像是"作家",它的目标是创作出新的、完整的文本,适合做续写、总结、对话这类工作。简单来说,BERT 擅长"读懂",BART 擅长"写好"。
七、GPT-3 和 GPT-2 的区别?
GPT-3 和 GPT-2 是由 OpenAI 开发的两个语言模型,区别主要在于规模和功能:
| 特性 | GPT-2 | GPT-3 |
|---|---|---|
| 参数规模 | 15 亿 | 1750 亿 |
| 模型规模 | 较小 | 巨大 |
| 零样本学习 | 不支持 | 支持 |
| 生成能力 | 有限 | 强大 |
| 计算资源需求 | 较低 | 极高 |
- 参数规模:GPT-3 是目前最大的语言模型之一,具有 1750 亿个参数,是 GPT-2 的 100 多倍
- 零样本学习:GPT-3 可以在没有对特定任务进行显式训练的情况下执行各种语言任务
- 生成质量:GPT-3 生成的文本更连贯、更具逻辑性,能够生成更长的文本
- 计算成本:GPT-3 的使用需要更高的计算资源和成本
📝 通俗解释:GPT-2 像是"中学生",已经学会了很多知识,能完成一些写作任务,但能力和知识储备都有限。GPT-3 像是"超级教授",脑子里装了海量的知识,不仅能写长文章,还能"举一反三"——不需要专门训练就能处理各种新任务。当然,这位"超级教授"也需要更多的"教学资源"(计算资源)才能运转。
致谢
感谢 AiGC面试宝典 提供的面试资料,感谢宁静致远的整理分享。
📝 整理说明:本笔记整理自 AiGC面试宝典,涵盖了 GPT 系列模型及相关预训练模型的核心知识点。笔记中补充了通俗解释,帮助读者更好地理解复杂的技术概念。如有错误,欢迎指正。