文章主题:
【新智元导读】从头复习大型语言模型发展历程,看这些论文就够了!
短短五年,Transformer就几乎颠覆了整个自然语言处理领域的研究范式,是划时代产品ChatGPT的基础技术,也促进了计算机视觉、计算生物学等领域的研究进展。
在发展的过程中,研究人员发表了大量论文、模型以及训练技巧,对于新入行的研究者来说,面对成山的论文根本不知从何入手。
不久前指出Transformer原始论文中插图存在漏洞的Sebastian Raschka发布了一份全面且简短的论文列表,包含Transformer的机制来源、预训练范式、人类反馈强化学习等诸多里程碑式论文,小白看完轻松变理论高手。
Transformer底层架构
1. Neural Machine Translation by Jointly Learning to Align and Translate(2014)
这篇论文为循环神经网络(RNN)引入了注意力机制,以提升长距离序列建模的能力,使得RNN可以更准确地翻译更长的句子,也是原始Transformer模型的开发动机。
论文链接:https://arxiv.org/abs/1409.0473
2. Attention is All you need (2017)
这篇论文提出了由编码器和解码器部分组成的原始Transformer架构,并且文中提出的概念,如缩放点积(scale dot product)注意力机制,多头注意块、位置输入编码等,到今天为止仍然是Transformer模型的基础。
论文链接:https://arxiv.org/pdf/1706.03762.pdf
3. On Layer Normalization in the Transformer Architecture (2020)
虽然原始Transformer论文中的图很好地展现了编码器-解码器架构,但与具体代码实现存在细微差异,比如层归一化(LayerNorms)在残差块之间等,文中显示的变体也被称为Post-LN Transformer。
论文链接:https://arxiv.org/pdf/2002.04745.pdf
Transformer架构论文中的层归一化表明Pre-LN也很有效,解决了梯度问题,许多模型也在实践中采用Pre-LN,缺点在于可能会导致表示秩崩溃。
虽然业界关于使用Post-LN还是Pre-LN仍然存在争论,但最近有一篇新论文提出同时利用这两种方法,不过在实践中是否有用仍然需要进一步观察。
论文链接:https://arxiv.org/abs/2304.14802
4. Learning to Control Fast-Weight Memories: An Alternative to Dynamic Recurrent Neural Networks (1991)
在1991年,也就是原始Transformer论文发布之前大约25年,Juergen Schmidhuber提出了一种替代循环神经网络的方法,叫做快速权重编程器(FWP, Fast Weight Programmers)
论文链接:https://ieeexplore.ieee.org/document/6796337
FWP方法用到了一个前馈神经网络,通过梯度下降来缓慢学习以对另一神经网络的快速权重变化进行编程。
而发展到今天的Transformer术语中,FROM和TO分别被称为键(key)和值(value),应用快速网络的INPUT叫做查询(query)。
从本质上讲,查询是由快速权重矩阵处理的,是键和值的外积之和(不考虑归一化和投影的话)。
由于两个网络的所有操作都是可微的,通过加性外积或二阶张量积获得快速权重变化的端到端可微主动控制。
因此,慢速网络可以通过梯度下降来学习,以在序列处理期间快速修改快速网络,在数学上等同于不包括归一化的,后来也叫做具有线性化自注意力的Transformer,即线性Transformer
2021年,一篇论文明确证明了线性化自注意力与20世纪90年代的快速权重编程器之间的等价性。
论文链接:https://arxiv.org/pdf/2102.11174.pdf
5. Universal Language Model Fine-tuning for Text Classification (2018)
这篇论文虽然发表于2018年,但并没有研究Transformer,而主要关注循环神经网络,但提出了有效的预训练语言模型和对下游任务的迁移学习。
论文链接:https://arxiv.org/abs/1801.06146
虽然迁移学习最早是在计算机视觉中提出的,但当时在自然语言处理(NLP)领域中还没有普及。
ULMFit是最早证明预训练语言模型并在特定任务上对其进行微调可以在许多NLP任务中实现最先进性能的论文之一。
ULMFit提出的微调语言模型的三阶段过程如下:
1. 在大型文本语料库上训练语言模型
2. 在特定任务的数据上微调预训练的语言模型,使其适应文本的特定风格和词汇
3. 通过逐层解冻来微调特定任务数据的分类器,以避免灾难性遗忘
该方法,即在大型语料库上训练语言模型,然后在下游任务上对其进行微调,是基于Transformer的基础模型(如BERT、GPT-2/3/4、RoBERTa等)中使用的核心方法。
不过ULMFiT的关键组件是逐层解冻,通常无法在Transformer架构中实现,其中所有层通常只经过一次微调。
6. BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018)
在Transformer架构提出之后,大型语言模型研究开始分为两个方向:用于预测建模任务(如文本分类)的编码器Transformer;以及用于生成建模任务(如翻译、摘要和其他形式的文本创建)的解码器Transformer
论文链接:https://arxiv.org/abs/1810.04805
BERT论文提出了遮罩语言建模的概念,并且下一句预测(next-sentence prediction)仍然是一种有影响力的解码器架构,不过后续的RoberTa删除了下一句预测任务,简化了预训练目标。
7. Improving Language Understanding by Generative Pre-Training (2018)
第一版GPT论文提出了解码器架构,以及使用下一个单词预测进行预训练。
论文链接:https://s3-us-west-2.amazonaws.com/openai-assets/research-covers/language-unsupervised/language_understanding_paper.pdf
BERT使用的遮罩语言模型预训练目标,所以是双向Transformer模型;而GPT是单向自回归模型,但其学到的嵌入也可以用于分类。
GPT方法是当下最有影响力的大型语言模型(如chatGPT)的核心技术。
后续发布的GPT-2和GPT-3论文说明了LLM能够进行零样本和少样本学习,指出了大型语言模型的涌现能力。
GPT-3仍然是训练当下语言模型(如ChatGPT)的常用基线和基础模型。
8. BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension (2019)
如前所述,BERT类语言模型主要关注编码器,通常是预测建模任务的首选,而GPT类型的解码器风格的语言模型在文本生成方面更好。
论文链接:https://arxiv.org/abs/1910.13461
为了同时利用二者的优势,BART论文结合了编码器和解码器部分。
9. Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond (2023)
这篇并不是研究论文,但可能是当下最好的综述报告,说明了不同的架构是如何演变的。
论文链接:https://arxiv.org/abs/2304.13712
除了讨论BERT风格的遮罩语言模型(编码器)和GPT风格的自回归语言模型(解码器)之外,还提供了关于预训练和微调数据的讨论和指导。
缩放定律与效率提升
除了下面列出的论文外,如果想了解更多关于提高Transformer效率的各种技术,还可以阅读两篇综述。
论文链接:https://arxiv.org/abs/2009.06732
论文链接:https://arxiv.org/pdf/2302.01107.pdf
10. FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (2022)
论文链接:https://arxiv.org/pdf/2205.14135.pdf
虽然大多数transformer论文都没有替换原始的缩放点积机制来改进自注意力,但FlashAttention是其中最常引用的一种机制。
11. Cramming: Training a Language Model on a Single GPU in One Day (2022)
在这篇论文中,研究人员使用单个GPU用了24个小时训练了一个遮罩语言模型/编码器风格的语言模型,在单个GPU上进行24小时,相比之下,2018年BERT刚提出来的时候,在16个TPU上训练了四天。
论文链接:https://arxiv.org/abs/2212.14034
一个有趣的结论是,虽然较小的模型具有更高的吞吐量,但小模型的学习效率也比较低,所以较大的模型不需要更多的训练时间来达到特定的预测性能阈值。
12. LoRA: Low-Rank Adaptation of Large Language Models (2021)
在大型数据集上预训练的现代大型语言模型展现出了涌现能力,并在各种任务上都实现了非常强大的性能,包括多语言翻译、摘要、编码和问答。
论文链接:https://arxiv.org/abs/2106.09685
不过如果想提高Transformer在特定领域数据和特定任务上的性能,那么就需要对Transformer进行微调。
低秩自适应(LoRA)是一种参数高效(parameter-efficient)的方式来微调大型语言模型,相比其他方法,LoRA既优雅又非常通用,可以应用于其他类型的模型。
虽然预训练模型的权重在预训练任务上具有满秩,但LoRA作者指出,预训练的大型语言模型在适应新任务时具有较低的「内在维度」。
因此,LoRA背后的主要思想是将权重变化ΔW分解为更低秩的表示,即更高效的参数。
13. Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning (2022)
这篇综述回顾了40多篇关于参数高效微调方法,包括prefix调整、adapter和LoRA等。
论文链接:https://arxiv.org/abs/2303.15647
14. Scaling Language Models: Methods, Analysis
AI时代,掌握AI大模型第一手资讯!AI时代不落人后!
免费ChatGPT问答,办公、写作、生活好得力助手!
扫码右边公众号,驾驭AI生产力!