前言
在自然语言处理(NLP)和深度学习的快速发展中,Transformer模型和 GPT系列模型扮演了至关重要的角色。本篇博客旨在对这些开创性的论文进行介绍,涵盖它们的提出时间、网络结构等关键信息,能够快速的理解这些模型的设计理念和工作原理。本博客不会涉及具体的工程训练细节,而是侧重于理论分析和模型架构的解读。
- Transformer模型
Transformer模型由Ashish Vaswani等人在2017年提出,其论文《Attention is All You Need》彻底改变了序列到序列学习的方法。该模型完全基于注意力机制,摒弃了传统的循环神经网络(RNN)结构,使得模型能够并行处理序列数据,显著提高了训练效率。Transformer模型的核心是自注意力机制,它允许模型在处理序列时动态地聚焦于输入序列的不同部分,从而更好地捕捉长距离依赖关系。- GPT系列模型
GPT(Generative Pre-trained Transformer)系列模型由OpenAI提出,是一系列基于Transformer架构的预训练语言模型。GPT模型通过在大规模文本数据上进行预训练,学习语言的通用表示,然后在特定任务上进行微调。GPT系列模型的发展历程包括GPT、GPT-2和GPT-3等,每个版本都在模型规模和性能上有所提升。GPT-3尤其引人注目,展现了强大的语言理解和生成能力。(当然现在已经 GPT-4了,本篇没记录)全面对比速览
特性 GPT-1 BERT GPT-2 GPT-3 提出时间 2018年 2018年 2019 年 2020 年 架构 Transformer解码器 Transformer编码器 Transformer解码器 Transformer解码器 参数数量 1.1亿 1.1亿(base),3.4亿(large) 15亿 1750亿 数据集 BooksCorpus BooksCorpus + Wikipedia WebText Common Crawl, WebText2, Books1/2, Wikipedia 预训练目标 生成下一个单词 掩码语言模型(MLM),下一个句子预测(NSP) 生成下一个单词 生成下一个单词 微调 有监督微调 有监督微调 无需任务特定微调 少样本、单样本、零样本学习 主要优势 简单且有效的生成预训练 双向上下文理解能力 强大的文本生成能力 极强的少样本学习能力 应用场景 文本分类、问答、相似性判断 自然语言理解(NLP) 文本生成、翻译、问答 文本生成、翻译、编程、对话等 创新点 生成预训练,Transformer解码器 双向Transformer编码器,MLM和NSP 大规模生成预训练,无监督多任务学习 极大规模的生成预训练,少样本学习
一、Transformer
Transformer模型是Vaswani等人在2017年提出的,用于解决自然语言处理任务中的序列到序列问题。以下是对Transformer论文《Attention Is All You Need》的详细介绍和核心内容。
【论文概要】
- 标题:Attention Is All You Need
- 作者:Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin
- 发表时间:2017年
- 会议:NIPS 2017
【核心内容】
- 背景与动机
传统的序列模型(如RNN和LSTM)在处理长距离依赖时存在诸多问题,如训练时间长、难以并行化等。Transformer通过完全基于注意力机制的方法解决了这些问题,显著提高了计算效率和效果。- 模型架构
Transformer模型由编码器(Encoder)和解码器(Decoder)组成,两者都是由堆叠的层组成。
- 编码器(Encoder)
编码器由6层相同的子层组成,每层包含两个子层:
- 多头自注意力机制(Multi-Head Self-Attention Mechanism):
输入序列经过嵌入后,通过多个注意力头并行计算自注意力(self-attention)。
计算查询(Query)、键(Key)和值(Value)矩阵:
Q = X W Q K = X W K V = X W V Q = XW_Q \\ K = XW_K \\ V = XW_V Q=XWQK=XWKV=XWV这里的 X X X 是一个输入矩阵,它可能代表了一系列数据点或特征。而 W Q , W K , W V W_Q, W_K, W_V WQ,WK,WV 是三个不同的权重矩阵,它们分别用于生成查询(Query)、键(Key)和值(Value)矩阵,这在注意力机制(如Transformer模型中的自注意力层)中非常常见。
我们可以将输入 X X X 转换为三个不同的表示( Q , K , V Q, K, V Q,K,V),这些表示在注意力机制中起着关键作用,使得模型能够处理复杂的序列数据并捕捉其中的依赖关系。- 计算注意力分数(Attention Scores): Scores = Q K T d k \text{Scores} = \frac{QK^T}{\sqrt{d_k}} Scores=dk QKT
通过 softmax 函数计算注意力权重: Attention Weights=softmax(Scores) \text{Attention Weights=softmax(Scores)} Attention Weights=softmax(Scores)
计算加权求和值:
Output=Attention Weights×V \text{Output=Attention Weights×V} Output=Attention Weights×V- 前馈神经网络(Feed-Forward Neural Network, FFN):
两层线性变换,中间有一个 ReLU 激活函数。
FFN(x) = m a x ( 0 , x W 1 + b 1 ) W 2 + b 2 \text{FFN(x)}=max(0,xW _1 +b_1 )W_2 +b_2 FFN(x)=max(0,xW1+b1)W2+b2- 层归一化和残差连接(Layer Normalization and Residual Connection):
在每个子层后应用残差连接和层归一化: LayerNorm ( x + SubLayer ( x ) ) \text{LayerNorm}(x+\text{SubLayer}(x)) LayerNorm(x+SubLayer(x))- 解码器(Decoder)
解码器与编码器类似,但多了一个注意力层,用于将编码器的输出和解码器的输入结合:
- mask 多头自注意力(Masked Multi-Head Self-Attention ):
类似于编码器的自注意力,但在解码过程中对未来位置进行遮蔽(mask),确保每个位置只能关注到它之前的位置。- 编码器-解码器注意力(Encoder-Decoder Attention):
解码器的输入通过注意力机制关注编码器的输出,捕捉源语言和目标语言之间的依赖关系。- 注意力机制(Attention Mechanism)
- 点积注意力(Scaled Dot-Product Attention)
计算查询、键和值矩阵,得到注意力分数和加权求和值。- 多头注意力(Multi-Head Attention)
将输入通过不同的线性变换得到多组查询、键和值矩阵,分别计算注意力,并将结果拼接在一起:
MultiHead(Q,K,V) = Concat ( h e a d 1 , h e a d 2 , ... , h e a d h ) W O \text{MultiHead(Q,K,V)}=\text{Concat}(head_1,head_2,...,head_h)W_O MultiHead(Q,K,V)=Concat(head1,head2,...,headh)WO其中, h e a d i = A t t e n t i o n ( Q W Q i , K W K i , V W V i ) head_i =Attention(QW_{Q_i},KW_{K_i},VW_{V_i}) headi=Attention(QWQi,KWKi,VWVi)- 位置编码(Positional Encoding)
由于Transformer没有内置的顺序信息,通过加入位置编码将位置信息融入到词嵌入中:
PosEmb ( i , 2 j ) = sin ( i 1000 0 2 j / d ) ,PosEmb ( i , 2 j + 1 ) = cos ( i 1000 0 2 j / d ) \text{PosEmb}(i,2j)= \sin(\frac{i}{10000^{2j/d}}),\text{PosEmb}(i,2j+1)= \cos(\frac{i}{10000^{2j/d}}) PosEmb(i,2j)=sin(100002j/di),PosEmb(i,2j+1)=cos(100002j/di)
其中,𝑖 是位置,𝑗 是维度的一半,𝑑 是嵌入维度。- 训练与优化
- 损失函数:使用交叉熵损失函数。
- 优化器:使用 Adam 优化器,并对学习率进行调度。
- 正则化:使用 Dropout 技术进行正则化。
【实验与结果 】
Transformer 在机器翻译任务(如英德翻译和英法翻译)上表现出色,显著超越了当时的最先进模型。论文中的实验结果表明,Transformer 在BLEU得分上显著优于RNN和LSTM等模型,并且在训练时间和并行计算效率上具有明显优势。
【总结 】
Transformer 模型通过完全基于注意力机制的方法,解决了传统序列模型在处理长距离依赖时的诸多问题。其核心创新点包括多头自注意力机制、位置编码和高效的并行计算。Transformer 的成功不仅在机器翻译任务中取得了突破,也为后续的预训练语言模型(如 BERT 和 GPT 系列)奠定了基础。二、GPT-1
GPT-1的论文《Improving Language Understanding by Generative Pre-Training》于2018年发布,由OpenAI团队撰写。该论文介绍了通过生成预训练提高语言理解的创新方法,标志着GPT系列的开端。以下是该论文的详细介绍和核心内容。
【论文概要】
- 标题:Improving Language Understanding by Generative Pre-Training
- 作者:Alec Radford, Karthik Narasimhan, Tim Salimans, Ilya Sutskever(AlexNet的二作,去了OpenAI当CTO)
- 发表时间:2018年
- 论文背景:在自然语言处理领域,标注数据相对匮乏。传统的深度学习模型通常需要大量的标记数据来进行训练,这限制了它们在很多缺乏标注资源的领域的应用。
- 主要贡献:提出了生成预训练(Generative Pre-Training, GPT)的方法,通过在大规模未标注文本数据上进行预训练,然后在特定的下游任务上进行微调,从而减少对标记数据的依赖,显著提高了自然语言处理(NLP)任务的性能。
克服难点:
【核心内容】
- 模型架构
- Transformer和RNN的选择:前者具有更结构化的信息,使得在更长的句子段落上的信息提取更佳
- GPT-1模型基于Transformer架构,主要仅保留了Transformer的解码器部分。这种架构使得GPT-1可以专注于单序列文本的生成式任务。
- GPT-1模型由12层Transformer Decoder的变体组成:其中嵌入维度的大小为768,Attention的头数为12,Feed Forward层的隐层维数为3072,总参数达到1.5亿。
- 每层包含以下组件:
- Masked Multi-Head Self-Attention:在计算自注意力时,遮盖(mask)未来的单词,使得每个单词只能关注到它之前的单词。自注意力层主要负责捕获输入序列内部各元素之间的依赖关系。
- Position-wise Feed-Forward Networks:逐位感知前馈层。每个位置的向量单独通过前馈神经网络进行非线性变换。FFN则基于自注意力层提供的上下文进行深度特征变换和提取
- Residual Connections and Layer Normalization:在每个子层之后应用残差连接和层归一化。
- 无监督预训练
- 目标:最大化生成模型预测下一个单词的概率,即给定前面词的情况下预测下一个词。
- 数据集:使用BooksCorpus数据集,该数据集包含约7000本书,共计8亿词。
- 方法:
- 输入:序列经过词嵌入(word embeddings)和位置嵌入(positional embeddings)相加后传入模型。
词嵌入:将输入的每个单词转换为一个固定维度的向量。
位置嵌入:由于Transformer没有顺序信息,位置嵌入加入了位置信息,将每个单词的位置编码成一个向量。- 输出:给定输入序列 生成下一个词的概率分布,通过 softmax 层计算。
- 前向传播:模型通过多层自注意力机制和前馈神经网络进行处理。 h 0 = U W e + W p h l = transformer_block ( h l − 1 ) ∀ i ∈ [ 1 , n ] P ( u ) = softmax ( h n W e T ) \begin{aligned} h_0&=UW_e+W_p\\ h_l&=\text{transformer\block}(h{l-1})\forall_i\in[1,n] \\ P(u)&=\text{softmax}(h_nW_e^T) \end{aligned} h0hlP(u)=UWe+Wp=transformer_block(hl−1)∀i∈[1,n]=softmax(hnWeT)
- 训练过程:通过最大化对数似然(log-likelihood)进行训练:
L 1 ( U ) = ∑ i log P ( u i ∣ u i − k , . . . , u i − 1 ; Θ ) L_1(U)=\sum_i\text{log}P(u_i | u_{i-k}, ..., u_{i-1}; \Theta) L1(U)=i∑logP(ui∣ui−k,...,ui−1;Θ) k k k 为上下文的窗口大小, u i u_i ui 表示序列中的第 𝑖 个单词, θ \theta θ 表示模型参数。- 有监督微调
- 目标:在特定任务上微调预训练模型,以提升任务性能。
- 数据集:在不同的下游任务上使用有标注的数据集。
- 训练过程:将预训练模型的最后一层输出传递给特定任务的分类头,然后通过标准的交叉熵损失函数进行微调。具体的为:
假设有一个标注的数据集C:每组数据包含:一个长度为m的输入tokens序列 x 1 , . . . , x m x^1, ..., x^m x1,...,xm,一个标签y。
- 前向计算:[输入] 经过 [预先训练过的模型] 来获得激活 h h h,然后再送到一个 [参数为 W y W_y Wy的线性输出层] 预测输出 y y y: P ( y ∣ x 1 , . . . , x m ) = softmax ( h l m W y ) (3) P (y |x^1, ..., x^m)=\text{softmax}(h_l^m W_y)\tag{3} P(y∣x1,...,xm)=softmax(hlmWy)(3)
- 最大化目标为: L 2 ( C ) = ∑ x , y log P ( y ∣ x 1 , . . . x m ) (4) L_2(C)=\sum_{x,y}\text{log}P(y|x^1,...x^m)\tag{4} L2(C)=x,y∑logP(y∣x1,...xm)(4)
- 此外,我们还发现,将语言建模作为微调的辅助目标有助于学习 (a) 改进监督模型的泛化;(b)加速收敛。具体来说,我们优化了以下目标(权重为 λ \lambda λ ) :
L 3 ( C ) = L 2 ( C ) + λ ∗ L 1 ( C ) (5) L_3(C) = L_2(C) + \lambda * L_1(C)\tag{5} L3(C)=L2(C)+λ∗L1(C)(5)
总的来说,微调期间需要额外增加参数是 W y W_y Wy,和分隔符token的嵌入- 实际任务上的使用:
不同任务会具有不同的输入形式,比如
- 在"相似性任务"上,输入为两段文字前后掉转位置,通过预训练模型后相加,在经过线性层,得到输出表达是否相似。
- 在"多选题"上,如果问题有n个答案,就构造n个输入为【起始符、问题、间隔符、答案i、结束符】,分别通过预训练模型+线性层,最后经过softmax得到得分。
- 实验结果
论文在多个自然语言理解任务上进行了实验,包括文本分类、相似性判断和问答任务。主要结果如下:
- 文本分类:在情感分析和主题分类任务上,GPT-1显著超过了之前的最先进模型。
- 相似性判断:在STS-Benchmark和SICK-Relatedness任务上,GPT-1的性能表现出色。
- 问答任务:在RACE和Story Cloze Test任务上,GPT-1也展示了强大的理解和推理能力。
- 讨论与未来工作
论文最后讨论了生成预训练的优势,包括:
- 泛化能力:预训练的生成模型能够很好地泛化到不同的下游任务。
- 数据效率:通过预训练,可以在较少的有标注数据上实现良好的性能。
作者还提出了未来工作的方向,包括进一步扩大模型规模和预训练数据集,以及探索更多的预训练方法和架构改进。【总结】
- GPT-1的论文通过提出生成预训练的方法,在NLP领域取得了显著进展。该方法在未标注数据上进行预训练,然后在下游任务上进行微调,大大提高了模型的性能和泛化能力。GPT-1为后续的GPT-2和GPT-3奠定了基础,开创了NLP模型预训练的新范式。
三、 GPT-2
GPT-2 是由 OpenAI 于 2019 年发布的,它在 GPT-1 的基础上进行了大幅度的扩展和改进。
【论文概要】
- 标题:Language Models are Unsupervised Multitask Learners
- 作者:Alec Radford, Jeffrey Wu, Rewon Child, David Luan, Dario Amodei, Ilya Sutskever。仅第一个和最后一个作者没有变,也就是老板和主要干事的仍在,其他队员都换了一波 >_<
- 发表时间:2019 年
- 主要卖点:下游任务的 zero-shot。
GPT-1微调时候,会在输入当中增加 "开始符、间隔符、结束符",让网络认识这些预训练时未见过的符号。在GPT-2中要做zero-shot,所以在做下游任务时模型不能够被调整,若此时引入模型未见的符号,模型就会困惑无法得到预期结果,所以就要求模型在下游任务的输入 和预训练时候的输入要风格一致。此时输入的形式可构造成更像自然语言:
- 机器翻译:("翻译成法语","具体的文本","翻译后的法语文本")
- 阅读理解:("回答这个问题","阅读的文本","具体的问题","答案")
【核心内容】
- 模型架构
GPT-2 基于 Transformer 的解码器架构,并在 GPT-1 的基础上进行了扩展:
- 更大规模:GPT-2 有 15 亿个参数,而 GPT-1 只有 1.1 亿个参数。
- 更多层数:GPT-2 中有多个大小的版本,最大的有 48 层 Transformer 解码器,每层包含 12 个注意力头,嵌入维度为 1600。
- 自回归模型:GPT-2 沿用了Transformer的解码器Self Attention机制,使用自回归的方式进行文本生成,即每个时刻的信息表征只能依赖于当前词及其之前的信息,也就是预测序列中的下一个单词。
- 预训练任务
- 数据集:WebText数据集,从 Reddit 上评分最高的链接中抓取的文本,包含800万文本,约 40GB 数据。(Common Crawl数据集,公开的网页抓取的WebText,但信噪比比较低,所以这里使用的是Reddit 中高质量的文本数据)
- 目标(类似GPT-1):最大化给定上下文下一个词的概率,自回归语言模型。
- 方法:
- 输入:词嵌入和位置嵌入相加。
- 输出:生成下一个词的概率分布,通过 softmax 层计算。
- 训练过程:GPT-2 的预训练目标与 GPT-1 相同,即最大化语言模型的对数似然:
L 1 ( θ ) = ∑ i = 1 N log P ( x i ∣ x < i ; θ ) L_1(\theta) = \sum_{i=1}^{N} \log P(x_i \mid x_{<i}; \theta) L1(θ)=i=1∑NlogP(xi∣x<i;θ) x i x_i xi 表示序列中的第 𝑖 个单词, θ \theta θ 表示模型参数。- 无监督多任务学习
- GPT-2 采用了完全的无监督多任务学习方式,在不进行任务特定微调的情况下,在多个 NLP 任务上表现出色(文本生成、翻译、问答、摘要(略差点))。
- 实验结果
GPT-2 在多个基准任务上展示了优异的性能:
- 文本生成:GPT-2 生成的文本质量和一致性得到了显著提升,展示了极强的文本生成能力。
- 任务性能:在翻译、问答和摘要任务上,GPT-2 在没有进行任务特定微调的情况下,仍然取得了接近甚至超过部分现有方法的表现。
- Zero-shot 学习:GPT-2 展示了零样本学习的能力,即在没有特定任务训练数据的情况下,通过生成预训练实现任务性能提升。
- 讨论与未来工作
论文最后讨论了 GPT-2 的几个关键点和未来的研究方向:
- 模型规模:GPT-2 展示了随着模型规模增加,性能显著提升的趋势。
- 生成质量:GPT-2 在生成质量和一致性方面取得了突破,但仍存在某些生成内容不一致或不合理的情况。
- 扩展与改进:未来工作可以探索更大规模的模型、更长的训练时间和更多样化的预训练数据,以进一步提升模型性能。
【总结】
- GPT-2 论文通过展示大规模生成预训练模型在多个 NLP 任务上的优异性能,强调了预训练和生成方法的重要性。GPT-2 的无监督多任务学习能力和零样本学习能力为自然语言处理领域带来了新的视角和方法,推动了生成模型的进一步发展。GPT-2 的成功为后续的 GPT-3 和其他大型生成模型奠定了坚实的基础,并对未来的研究方向提供了宝贵的参考。
四、 GPT-3
GPT-3 (Generative Pre-trained Transformer 3) 是由 OpenAI 于 2020 年发布的一种大型语言模型。该模型在自然语言处理(NLP)领域取得了显著进展,拥有 1750 亿个参数,是当时规模最大的语言模型。
【论文概要】
标题:Language Models are Few-Shot Learners
作者:Tom B. Brown, Benjamin Mann, Nick Ryder, Melanie Subbiah, Jared D. Kaplan, Prafulla Dhariwal, Arvind Neelakantan, Pranav Shyam, Girish Sastry, Amanda Askell, Sandhini Agarwal, Ariel Herbert-Voss, Gretchen Krueger, Tom Henighan, Rewon Child, Aditya Ramesh, Daniel M. Ziegler, Jeffrey Wu, Clemens Winter, Christopher Hesse, Mark Chen, Eric Sigler, Mateusz Litwin, Scott Gray, Benjamin Chess, Jack Clark, Christopher Berner, Sam McCandlish, Alec Radford, Ilya Sutskever, Dario Amodei。...只有老板没变,其他成员大换血。发表时间:2020 年
以往工作的问题:
- 需要一个大数据时,就需要对其标注;
- 最终模型表现较好的原因,有可能是来源于微调,预训练模型本身的好坏对结果影响差别不大;
- 对标人类的话,无需要再对具体的下游任务采集成千上万的数据去适应学习
GPT-3提出的方案:
- Few-Shot、one-shot、zero-Shot :这种能力使得 GPT-3 可以在没有进行任务特定微调的情况下,处理各种 NLP 任务,展现了强大的学习能力。
能生成新闻文章,并且人类较难读出是AI生成【核心内容】
Few-Shot, One-Shot, Zero-Shot 学习
这里仍然无需微调训练,而是在使用时 给予对应的示例作为提示,让模型在前向推理时,通过自身的注意力机制,从长句子中提取到有用的信息,从而做下游任务。
- Zero-Shot 学习:不给模型提供示例,直接通过提示词完成任务。
- One-Shot 学习:给模型提供一个示例,模型即可在任务中表现良好。
- Few-Shot 学习:给模型提供几个示例,模型即可在任务中表现良好。但这样的工作也会存在问题,当使用Few-Shot 时,即使前后的问题是相近的,示例也需要每次都参与到输入中,这为使用带来了不便和略微的僵硬
模型架构
GPT-3 的规模显著超过了 GPT-2(15 亿参数),使得模型能够学习到丰富的语言知识和上下文信息,以及更强的生成能力。
- 模型参数上:
- GPT-3 Small:参数的设置与GPT-2相同
- GPT-3 Medium:参数与Bert-large相同
- GPT-3系列模型越来越浅一些、宽一些,整体来说GPT-3 175B 的模型更扁一些 (96/12 << 12288/768)。
- GPT-3 基于 Transformer 架构,最大的模型参数有:层数96 层;注意力头 每层 96 个;嵌入维度12288;参数总量:1750 亿。
- batchsize上:
- 选择较大batch:分布式训练时每台机器运行速度更高,通讯量也降低;大的模型里面噪声减小对训练影响无需特别关注;较大的批量大小并不一定意味着可以使用较大的学习率。相反,为了保持训练的稳定性和收敛性,通常会采用较小的学习率来配合较大的批量大小。
- 补充:小模型上更容易过拟合。所以小模型建议使用小的批量,这样数据里面的噪声比较多,有利于模型的抗噪。
训练数据
- GPT-3 总的训练数据量约为 570GB。是在一个混合的大规模文本数据集上进行训练,该数据集涵盖了多种来源和内容。
- 数据集在使用时,认为Common Crawl为质量偏差的数据集(尽管做了过滤),故训练时采样的比例进行了设置,降低该数据集的采样比例。
- 该数据集包括:
- a) Common Crawl:经过过滤和处理的网络抓取数据。
- gpt2中的WebText数据集作为正例,Common Crawl数据集作为负例,训练一个简单的二分类,然后对Common Crawl的数据集进行预测,为正类则保留,负类则滤除。
- 文本去重:lsh算法,Information Retrieval (IR,信息检索是计算机科学的一个领域,专注于开发从结构化或非结构化数据集中检索和获取信息的有效方法) 中的技术。
- b) WebText2:一个扩展版本的 WebText 数据集。
- c) Books1 和 Books2:两个大规模的书籍数据集。
- d) Wikipedia:完整的英文维基百科。
预训练目标
与 GPT-1 和 GPT-2 类似,GPT-3 的预训练目标是自回归语言建模,最大化给定上下文下一个词的概率: L 1 ( θ ) = ∑ i = 1 N log P ( x i ∣ x < i ; θ ) L_1(\theta) = \sum_{i=1}^{N} \log P(x_i \mid x_{<i}; \theta) L1(θ)=i=1∑NlogP(xi∣x<i;θ) x i x_i xi 表示序列中的第 𝑖 个单词, θ \theta θ 表示模型参数。实验与结果
GPT-3 在多个基准任务上进行了评估,展示了其强大的性能和多任务处理能力。原论文中主要实验:语言建模、阅读理解、翻译、其他任务(文本生成、总结、回答问题、代码生成)。这里细节不做详述。当然原论文中也做了更多的讨论:如偏见、大模型在社会中的安全性(可能会发布虚假信息、论文造假等)等,这里也不做赘述。
【总结】
- GPT-3 论文展示了大规模语言模型在预训练和少样本学习方面的强大能力,通过增加模型规模和训练数据,显著提升了模型在各种 NLP 任务上的性能。GPT-3 展示了在 Few-Shot、One-Shot 和 Zero-Shot 学习中的强大能力,使其能够在没有任务特定微调的情况下,处理广泛的 NLP 任务。GPT-3 的成功为未来更大规模的语言模型研究提供了宝贵的经验和方向,并对自然语言处理领域产生了深远的影响。
五、 BERT
BERT(Bidirectional Encoder Representations from Transformers)是由Google AI Language团队在2018年提出的一种预训练语言表示模型。BERT模型在自然语言处理(NLP)任务中取得了显著的性能提升,开创了基于Transformer的双向语言表示学习的新范式。
【论文概要】
- 标题:BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding
- 作者:Jacob Devlin, Ming-Wei Chang, Kenton Lee, Kristina Toutanova
- 发表时间:2018年
- 发表会议:NAACL-HLT 2019
- 背景与动机:在BERT之前,大多数预训练语言模型(如GPT、ELMo)都是基于单向或浅层双向的语言模型。这些模型在处理上下文信息时存在一定的局限性。BERT通过引入双向Transformer编码器,实现了更深层次的双向上下文理解,从而大幅提升了NLP任务的性能。
【核心内容】
- 模型架构
BERT模型具体包括以下几个部分:
- BERT使用了BERT只使用Transformer的编码器部分,不使用解码器。
- BERT使用了Transformer编码器的双向变体,能够同时从左右两个方向理解上下文信息。
- BERT-base包含12层Transformer编码器,每层有12个注意力头,嵌入维度为768,总参数数量为1.1亿。
- BERT-large包含24层Transformer编码器,每层有16个注意力头,嵌入维度为1024,总参数数量为3.4亿。
- 预训练任务
目标:通过双向 Transformer 编码器进行语言表示预训练。
数据集:BooksCorpus 和英文维基百科,合计 33 亿词。
方法:
- 输入:词嵌入、段嵌入和位置嵌入相加,得到最终的输入表示。
词嵌入:使用WordPiece分词,将输入的每个词转换为子词(subword)表示,并将每个子词转换为固定维度的向量。
段嵌入:表示输入句子的不同段(A段和B段),用于NSP任务。
位置嵌入:编码每个子词的位置。- 模型输出:
- 掩码语言模型(MLM)输出:对被掩盖的单词进行预测,通过 softmax 层生成掩盖位置的词汇概率分布。
- 下一个句子预测(NSP)输出:通过分类层输出句子对是否连续的概率。
- BERT的预训练包括两个主要任务:
- 掩码语言模型(Masked Language Model, MLM):
- 通过随机遮盖(mask)输入序列中的一些单词,然后预测这些被遮盖的单词。
- 这种方法使模型能够从双向上下文中学习单词表示。
- 掩码策略:在输入序列中随机选择15%的词进行遮盖,其中80%的词用[MASK]标记替换,10%的词用随机词替换,10%的词保持不变。
- 下一句预测(Next Sentence Prediction, NSP):
- 用于建模句子间的关系。
- 给定一对句子,模型需要预测第二个句子是否是第一个句子的下一个句子。
- 在预训练过程中,50%的句子对是真实的连续句子对,50%是随机选取的句子对。
- 微调
BERT通过在不同下游任务上进行微调,进一步提升性能。微调过程如下:
- 任务适配:将预训练好的BERT模型应用到具体的下游任务上,如文本分类、问答、命名实体识别等。
- 添加任务特定层:在BERT的顶层添加任务特定的输出层,如分类头或序列标注层。
- 端到端训练:在下游任务的训练数据上,进行端到端的微调训练,优化整个模型的参数。
- 实验与结果
论文在多个基准测试上验证了BERT的性能,包括GLUE(General Language Understanding Evaluation)、SQuAD(Stanford Question Answering Dataset)和SWAG(Situations with Adversarial Generations)。主要结果如下:
- GLUE基准:在所有子任务上BERT均取得了最先进的结果,显著超越了之前的模型。
- SQuAD问答:在SQuAD 1.1和SQuAD 2.0上,BERT的性能达到了人类水平,并在多个测评指标上刷新了纪录。
- SWAG推理:在SWAG数据集上的表现也优于之前的最先进模型。
- 局限性
- BERT在预训练时会出现特殊的[MASK]标记,但在下游的微调任务中不会出现,这可能导致预训练阶段和微调阶段的不一致。
- BERT在分词后做[MASK]可能会产生一些问题,例如,为了解决OOV(out-of-vocabulary)问题,BERT会将一个词切分成更细粒度的WordPiece,这可能会影响模型的表现。
- 讨论与未来工作
论文讨论了BERT的几个关键贡献和未来的研究方向:
- 双向上下文的优势:BERT通过双向编码器实现了更好的上下文理解,提升了模型的表现。
- 预训练任务的选择:MLM和NSP任务在捕捉语言特征方面起到了重要作用。
- 扩展与改进:未来工作可以探索更大的模型、更长的训练时间和更多样化的预训练任务。
【总结】
- BERT论文提出了基于Transformer编码器的双向语言表示模型,通过掩码语言模型和下一个句子预测任务进行预训练,然后在下游任务上进行微调。BERT在多个NLP任务上取得了最先进的性能,证明了双向上下文理解和预训练方法的有效性。BERT模型开创了基于Transformer的预训练语言模型的新范式,对自然语言处理领域产生了深远的影响。