编者按:在仅仅五年的时间里,大语言模型、transformers几乎完全改变了自然语言处理领域。
为了便于快速、扎实、深入地学习大语言模型,本文整理一个简单的经典学术资料列表,供正在入门中的机器学习研究人员和开发者参考。
以下是译文,Enjoy!
本文经原作者授权,由Baihai IDP编译。如需转载译文,请联系获取授权。
原文链接:
<https://magazine.sebastianraschka.com/p/understanding-large-language-models>
作者 | SEBASTIAN RASCHKA
编译 | 岳扬
大语言模型已经风靡全球——这并非妄言。在仅仅五年的时间里,大语言模型、transformers几乎完全改变了自然语言处理领域。而且,它们也已经开始为计算机视觉(computer vision)和计算生物学(computational biology) 等领域带来变革性的改变。
由于transformers对每大家的研究安排(research agenda)都有比较大的影响,我想整理一个简单的经典学术资料列表,供正在入门中的机器学习研究人员和开发者参考。
下文的学术资料主要是按时间顺序排列的,主要是学术研究论文。当然,还有许多其它有用的学术资料。例如:
- Jay Alammar的《The Illustrated Transformer》\[1]
- Lilian Weng的一篇更有技术深度的博客《The Transformer Family》\[2];
- Xavier Amatriain的《Transformer models: an introduction and catalog — 2023 Edition》介绍了所有重要的Transformer models及其系谱图(family tree)\[3];
- Andrej Karpathy 介绍了实现生成语言模型(generative language model)的最简单方法\[4];
以及我自己(原文作者)的一系列讲座\[5]和书籍相关章节\[6]。
01 了解主要的模型架构和task
如果您之前从未接触过transformer模型或大语言模型领域,最好从头开始学习。
(1) Neural Machine Translation by Jointly Learning to Align and Translate (2014) by Bahdanau, Cho, and Bengio, <https://arxiv.org/abs/1409.0473>
如果您有能抽出较多空闲时间来学习,我建议从上面这篇的论文开始阅读。其介绍了一种注意机制(attention mechanism),可用于改进循环神经网络(RNN)的长序列建模(long-range sequence modeling)能力。这使得RNN能够更准确地翻译更长的句子——这也是后来开发原始transformer模型架构的动机。
Source: <https://arxiv.org/abs/1409.0473>
(2) Attention Is All You Need (2017) by Vaswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser, and Polosukhin, <https://arxiv.org/abs/1706.03762>
上述论文介绍了最初的Transformer架构,由编码器(encoder)和解码器(decoder)组成,这两部分将在之后作为独立的模块而变得相关。此外,该论文引入了一些概念,如缩放点积注意力机制(scaled dot product attention mechanism)、多头注意力块(multi-head attention blocks)和位置编码(positional input encoding),它们仍然是现代Transformer系列模型的基础。
Source: <https://arxiv.org/abs/1706.03762>
(3) BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding (2018) by Devlin, Chang, Lee, and Toutanova, <https://arxiv.org/abs/1810.04805>
- 基于原始的transformer架构,大型语言模型研究开始分为两个方向:
- encoder-style transformers:用于预测语言建模任务,如文本分类;decoder-style transformers:用于生成语言建模任务,如翻译、生成摘要和其他形式的文本创作。
上面那篇BERT论文介绍了掩码语言建模(masked-language modeling)的原始概念(original concept),而next-sentence prediction(下一句预测)仍然是一个具有影响力的解码器式架构(decoder-style architecture)。如果您对这个研究方向感兴趣,我推荐您继续阅读RoBERTa\[7],该模型通过删除下一句预测任务(next-sentence prediction tasks)简化了预训练目标(pretraining objectives)。
Source: <https://arxiv.org/abs/1810.04805>
(4) Improving Language Understanding by Generative Pre-Training (2018) by Radford and Narasimhan, <https://www.semanticscholar.org/paper/Improving-Language-Understanding-by-Generative-Radford-Narasimhan/cd18800a0fe0b668a1cc19f2ec95b5003d0a5035>
GPT论文引入了现在流行的解码器式架构(decoder-style architecture),并通过next-word prediction(下一个单词的预测)进行预训练。因其使用掩码语言建模预训练目标(masked language model pretraining objective),BERT可以被视为双向transformer,而GPT是一个单向、自回归的模型。虽然GPT嵌入(GPT embeddings)也可用于分类,但GPT这种方法是当下最具影响力的LLMs核心,比如ChatGPT。
如果您对这个研究方向感兴趣,我推荐您接下来阅读GPT-2和GPT-3论文。这两篇论文表明,LLMs能够实现零样本和小样本学习(zero- and few-shot learning),并突显了LLMs的“涌现”能力。GPT-3仍然是当前ChatGPT等最新一代LLM的baseline和基础模型,我们将在后续的文章中单独介绍InstructGPT方法,它是ChatGPT的关键所在。
(5) BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension (2019), by Lewis, Liu, Goyal, Ghazvininejad, Mohamed, Levy, Stoyanov, and Zettlemoyer, <https://arxiv.org/abs/1910.13461>.
正如前面提到的,BERT-type encoder-style的LLMs通常更适用于预测建模任务,而GPT-type decoder-style的LLMs则更擅长生成文本。为了兼顾两者优势,上述那篇BART论文将编码器(encoder)和解码器(decoder)部分结合起来(类似于原始的transformer——该清单中的第二篇论文)。
Source: <https://arxiv.org/abs/1910.13461>
(6) Harnessing the Power of LLMs in Practice: A Survey on ChatGPT and Beyond (2023) by Yang, Jin, Tang, Han, Feng, Jiang, Yin, and Hu, <https://arxiv.org/abs/2304.13712>
这不是一篇研究性的论文,但可能是迄今最好的关于当前主要模型架构的调查,展示了不同的架构是如何演变的。然而,在讨论 BERT-style 掩码语言模型(编码器)和GPT-style自回归语言模型(解码器)的同时,该篇文章还提供了一些有关预训练和微调数据的有价值讨论和指导。
The evolutionary tree of modern LLMs via <https://arxiv.org/abs/2304.13712>.
02 缩放定律和提高效率 Scaling Laws and Improving Efficiency
如果您想要了解那些有助于提高transformer的效率的技术,我建议您阅读2020年发表的这篇论文——《Efficient Transformers: A Survey》\[8],以及2023年发表的《A Survey on Efficient Training of Transformers》\[9]。
另外,还有一些我认为特别有趣并值得阅读的论文。
(7) FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (2022), by Dao, Fu, Ermon, Rudra, and Ré, <https://arxiv.org/abs/2205.14135>.
尽管大多数有关transformer的论文并不涉及取代原来的缩放点积机制(scaled dot product mechanism)来实现自注意力,但FlashAttention是我最近经常看到被提到或引用的一种机制。
Source: <https://arxiv.org/abs/2205.14135>
(8) Cramming: Training a Language Model on a Single GPU in One Day (2022) by Geiping and Goldstein, <https://arxiv.org/abs/2212.14034>.
在这篇论文中,研究人员花24小时在单个GPU上训练了一种掩码语言模型encoder-style LLM(这里说的是BERT)。相比之下,2018年最初的BERT论文是在16个TPU上进行了为期四天的训练。有趣的一点是,虽然较小的模型具有更高的吞吐量(throughput),但较小的模型学习效率也较低。因此,更大的模型并不需要更多的训练时间就能够达到特定的预测性能阈值(predictive performance threshold)。
Source: <https://arxiv.org/abs/2212.14034>
(9) LoRA: Low-Rank Adaptation of Large Language Models (2021) by Hu, Shen, Wallis, Allen-Zhu, Li, L Wang, S Wang, and Chen, <https://arxiv.org/abs/2106.09685>.
低秩自适应(LoRA)是参数高效性(parameter-efficient manner)微调大型语言模型最具影响力的方法之一。虽然还有其他参数高效性微调方法(请参见下面的内容),但需要特别注意的是,LoRA既是一个优雅的(elegant)方法,也是一个非常通用的(very general)方法,可适用于其他类型的模型。
尽管预训练模型的权重在预训练任务上具有Full rank(满秩),但LoRA的作者指出,当它们适应新任务时,预训练的大型语言模型具有较低的“本征维度(intrinsic dimension)”。因此,LoRA的主要思想是将权重变化ΔW分解为lower-rank(低秩)表示,这样使得参数效率更高。
LoRA示意图及其性能表现 来自<https://arxiv.org/abs/2106.09685>
(10) Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning (2022) by Lialin, Deshpande, and Rumshisky, <https://arxiv.org/abs/2303.15647>.
如今的大语言模型在大型数据集上进行预训练,展现出了“涌现”能力,还能够在各种任务中表现良好,包括语言翻译(language translation)、摘要(summarization)、编码(coding)和问答(Q\&A)。然而,如果我们希望提高transformer在特定领域数据和专业任务上的能力,微调transformer是值得的。本文回顾了40多篇有关参数高效性微调方法的论文(包括时下热门的技术,如Prefix-tuning(前缀微调)、adapters和Low-Rank Adaptation (LoRA,低秩自适应)),以使微调能够拥有非常高的计算效率。
Source: <https://arxiv.org/abs/1910.13461>
(11) Training Compute-Optimal Large Language Models (2022) by Hoffmann, Borgeaud, Mensch, Buchatskaya, Cai, Rutherford, de Las Casas, Hendricks, Welbl, Clark, Hennigan, Noland, Millican, van den Driessche, Damoc, Guy, Osindero, Simonyan, Elsen, Rae, Vinyals, and Sifre, <https://arxiv.org/abs/2203.15556>.
该论文介绍了拥有700亿参数的Chinchilla 模型,其在生成式建模任务(generative modeling tasks)上优于时下流行的1750亿参数的 GPT-3 模型。然而,该论文的主要观点是当下的大型语言模型“训练程度不足”。
该论文定义了大语言模型训练的Linear Scaling Law。例如,虽然Chinchilla 的大小仅为GPT-3的一半,但它的表现优于GPT-3,因为它训练的token数目为1.4万亿(而不仅仅是3000亿)。换句话说,训练的token数目与模型大小一样重要。
Source: <https://arxiv.org/abs/2203.15556>
(12) Pythia: A Suite for Analyzing Large Language Models Across Training and Scaling (2023) by Biderman, Schoelkopf, Anthony, Bradley, O'Brien, Hallahan, Khan, Purohit, Prashanth, Raff, Skowron, Sutawika, and van der Wal, <https://arxiv.org/abs/2304.01373>
Pythia是一套开源的LLM套件(70M至12B参数),可用于研究LLMs在训练过程中如何演变。
该架构类似于GPT-3,但拥有一些改进,例如Flash Attention(类似于LLaMA\[10])和Rotary Positional Embeddings(类似于PaLM\[11])。Pythia在The Pile数据集\[12](825 Gb)上进行了300 B个token的训练(\~1 epoch on regular PILE, \~1.5 epochs on deduplicated PILE)。
Pythia大模型套件 via <https://arxiv.org/abs/2304.01373>
Pythia相关研究的主要结论如下:
- 在重复的数据上进行训练(由于LLMs的训练方式特性,这意味着训练超过一个epoch)对性能没有好处也没有坏处。
- 训练顺序不影响模型的记忆能力(memorization)。这其实是不太好的,因为如果是相反的情况,我们就可以通过重新排序训练数据来减轻效果不好的逐字逐句记忆问题(verbatim memorization issues)。
- 预训练时的词频(term frequency)影响任务性能。例如,小样本的准确率往往对于更常见的词语更高。
- 加倍batch size可以使得训练时间减半,但不会影响收敛性(convergence)。
03 Alignment - 引导大语言模型达成预期的Goals和Interests
近年来,我们看到许多相对有能力的大语言模型,能够生成逼真的文本(例如GPT-3和Chinchilla等)。就我们常用的预训练范式(pretraining paradigms)所能达到的效果而言,我们似乎已经达到了一个上限。
为了使语言模型对人类更加有帮助,并减少错误信息和有害言论,研究人员设计了额外的训练范式(training paradigms)来微调预训练的基础模型(base models)。
(13) Training Language Models to Follow Instructions with Human Feedback (2022) by Ouyang, Wu, Jiang, Almeida, Wainwright, Mishkin, Zhang, Agarwal, Slama, Ray, Schulman, Hilton, Kelton, Miller, Simens, Askell, Welinder, Christiano, Leike, and Lowe, <https://arxiv.org/abs/2203.02155>.
在这篇所谓的InstructGPT论文中,研究人员使用了一种有人类参与的强化学习机制(RLHF)。他们从预先训练好的GPT-3基础模型开始,并使用人类提供的提示-响应对(prompt-response pairs)进行监督学习来进一步微调它(步骤1)。接下来,需要人类对模型输出内容进行排名,以训练一个奖励模型(步骤2)。最后,使用奖励模型通过近端策略优化(proximal policy optimization)来更新预训练和微调的GPT-3模型(步骤3)。
顺带一提,这篇论文也被称为ChatGPT背后核心思想的论文——根据最近的传言,ChatGPT是一个对InstructGPT进行大规模数据集微调的扩展版本。
Source: <https://arxiv.org/abs/2203.02155>
(14) Constitutional AI: Harmlessness from AI Feedback (2022) by Yuntao, Saurav, Sandipan, Amanda, Jackson, Jones, Chen, Anna, Mirhoseini, McKinnon, Chen, Olsson, Olah, Hernandez, Drain, Ganguli, Li, Tran-Johnson, Perez, Kerr, Mueller, Ladish, Landau, Ndousse, Lukosuite, Lovitt, Sellitto, Elhage, Schiefer, Mercado, DasSarma, Lasenby, Larson, Ringer, Johnston, Kravec, El Showk, Fort, Lanham, Telleen-Lawton, Conerly, Henighan, Hume, Bowman, Hatfield-Dodds, Mann, Amodei, Joseph, McCandlish, Brown, Kaplan, <https://arxiv.org/abs/2212.08073>.
在这篇论文中,研究人员将对齐思想(alignment idea)推进了一步,提出了一种可用于创建“无危害”AI系统的训练机制。与直接的人类监督不同,研究人员提出了一种基于人类提供的规则的自我训练机制。与上述InstructGPT论文类似,所提出的方法采用强化学习方法。
Source: <https://arxiv.org/abs/2212.08073>
(15) Self-Instruct: Aligning Language Model with Self Generated Instruction (2022) by Wang, Kordi, Mishra, Liu, Smith, Khashabi, and Hajishirzi, <https://arxiv.org/abs/2212.10560>
指令微调(Instruction finetuning)是一种让类似GPT-3这样的预训练基础模型变成更具能力的LLM(如ChatGPT)的方法。而像databricks-dolly-15k这样开源的人类输入指令数据集可以帮助实现这一目标。但是怎样才能扩展这个规模呢?有一种方法是通过自身生成来引导LLM的训练。
Self-Instruct是一种(几乎无需注释)将预训练的LLM与指令对齐的方法。
它是如何工作的呢?简而言之有4个步骤:
第1步,使用一组人类编写的指令(本例中为175条)和样本指令(sample instructions)来作为种子任务池(seed task pool)。
第2步,使用预训练的LLM(如GPT-3)确定任务类别。
第3步,给定新指令,让预训练的LLM生成响应。
第4步,收集(collect),精简(prune),和过滤(filter)大模型的响应,然后将其添加到任务池(task pool)中。
self-instruct方法的注释图,来源于<https://arxiv.org/abs/2212.10560>
在实践中,根据 ROUGE 分数,这种方法表现相对良好。
例如,经过Self-Instruct微调的LLM表现优于 GPT-3 基础LLM(1),并且可以与以使用大规模人工指令集预训练的LLM(2)竞争。此外,self-instruct还可以使已经在人类指令上进行了微调的LLM受益(3)。
但当然,评估LLM的黄金标准是询问人类。根据人类的评价,Self-Instruct方法优于基础LLM和以监督方式使用人工指令数据集(如SuperNI、T0 Trainer)进行训练的LLM。但有趣的是,Self-Instruct方法并不能超越通过人类反馈进行强化学习训练的方法(RLHF)。
人类编写的指令数据集与Self-Instruct数据集,哪个更有前途?我认为两者都很有前途。为什么不先使用像 databricks-dolly-15k 中的人类编写指令数据集,然后再使用Self-Instruct方法来扩展呢?
04 Bonus: 介绍Reinforcement Learning with Human Feedback(RLHF)
虽然RLHF(带有人类反馈的强化学习)可能不能完全解决目前LLM的问题,但其目前被认为是最好的选择,特别是与前一代的LLM相比。我们以后很可能会看到更多具有创造性的方式,将RLHF应用于LLM的其他领域。
上面的两篇论文,InstructGPT和Consitutinal AI,都使用了RLHF,我认为在不久的将来它会成为一种有影响力的方法,如果你想了解RLHF,本节还介绍了其他资源。(为了技术层面上的正确性,Constitutional AI的那篇论文使用了人工智能而不是人类的反馈,但是它遵循了一种RL(强化学习)的类似概念)。
(16) Asynchronous Methods for Deep Reinforcement Learning (2016) by Mnih, Badia, Mirza, Graves, Lillicrap, Harley, Silver, and Kavukcuoglu (<<https://arxiv.org/abs/1602.01783>) 介绍了策略梯度方法(policy gradient methods)作为基于深度学习的RL中Q-learning的替代方法。
(17) Proximal Policy Optimization Algorithms (2017) by Schulman, Wolski, Dhariwal, Radford, Klimov (<<https://arxiv.org/abs/1707.06347) > 提出了一种改进的近端策略优化强化学习流程,比上面的原始策略梯度算法更具数据效率和可扩展性。
(18) Fine-Tuning Language Models from Human Preferences (2020) by Ziegler, Stiennon, Wu, Brown, Radford, Amodei, Christiano, Irving (<<https://arxiv.org/abs/1909.08593>) 阐述了PPO和奖励学习的概念,以及应用于预训练语言模型的方法(包括KL正则化),来防止策略(policy)与自然语言相差过大。
(19) Learning to Summarize from Human Feedback (2022) by Stiennon, Ouyang, Wu, Ziegler, Lowe, Voss, Radford, Amodei, Christiano \[2009.01325] Learning to summarize from human feedback 介绍了时下流行的RLHF三步骤:
- 对GPT-3进行预训练,
- 以监督方式对其进行微调,
- 以监督方式训练奖励模型。然后使用近端策略优化(proximal policy optimization)算法,利用这个奖励模型对微调后的模型进行训练。
本文还表明,与仅使用常规监督学习方式相比,在近端策略优化强化学习的支持下会得到更好的模型。
Source: <https://arxiv.org/abs/2009.01325>
(20) Training Language Models to Follow Instructions with Human Feedback (2022) by Ouyang, Wu, Jiang, Almeida, Wainwright, Mishkin, Zhang, Agarwal, Slama, Ray, Schulman, Hilton, Kelton, Miller, Simens, Askell, Welinder, Christiano, Leike, and Lowe (<https://arxiv.org/abs/2203.02155>) 也被称为InstructGPT论文,使用与上述RLHF相似的三大步骤,但它不是总结文本,而是根据人类指令生成文本。此外,它使用一个labeler对输出进行排序(而不仅仅是在人工智能生成的文本和人类生成的文本之间进行二元比较)。
05 总结和扩展阅读 Conclusion and Further Reading
我已经尽量保持本文的论文清单简明扼要,重点是了解当代大语言模型背后的设计、约束和演变(design, constraints, and evolution),列出了top-10论文(以及三篇关于RLHF的论文)。
如果想要更进一步了解,我建议阅读上面提到的论文的参考文献。或者,下面这些扩展阅读材料(这个清单并不全面)也建议阅读:
替代GPT的开源方案
BLOOM: A 176B-Parameter Open-Access Multilingual Language Model (2022), <https://arxiv.org/abs/2211.05100>
OPT: Open Pre-trained Transformer Language Models (2022), <https://arxiv.org/abs/2205.01068>
UL2: Unifying Language Learning Paradigms (2022), <https://arxiv.org/abs/2205.05131>
ChatGPT的替代方案
LaMDA: Language Models for Dialog Applications (2022), <https://arxiv.org/abs/2201.08239>
(Bloomz) Crosslingual Generalization through Multitask Finetuning (2022), <https://arxiv.org/abs/2211.01786>
(Sparrow) Improving Alignment of Dialogue Agents via Targeted Human Judgements (2022), <https://arxiv.org/abs/2209.14375>
BlenderBot 3: A Deployed Conversational Agent that Continually Learns to Responsibly Engage, <https://arxiv.org/abs/2208.03188>
计算生物学中的大语言模型
ProtTrans: Towards Cracking the Language of Life’s Code Through Self-Supervised Deep Learning and High Performance Computing (2021), <https://arxiv.org/abs/2007.06225>
Highly Accurate Protein Structure Prediction with AlphaFold (2021), <https://www.nature.com/articles/s41586-021-03819-2>
Large Language Models Generate Functional Protein Sequences Across Diverse Families (2023), <https://www.nature.com/articles/s41587-022-01618-2>
如果想要学习更多AI知识,可以阅读原文作者的书籍:
<https://sebastianraschka.com/books>
END
参考资料
- <https://arxiv.org/abs/2203.02155>
- <https://lilianweng.github.io/posts/2020-04-07-the-transformer-family/>
- <https://amatriain.net/blog/transformer-models-an-introduction-and-catalog-2d1e9039f376/>
- <https://github.com/karpathy/nanoGPT>
- <https://sebastianraschka.com/blog/2021/dl-course.html#l19-self-attention-and-transformer-networks>
- <https://github.com/rasbt/machine-learning-book/tree/main/ch16>
- <https://arxiv.org/abs/1907.11692>
- <https://arxiv.org/abs/2009.06732>
- <https://arxiv.org/abs/2302.01107>
- <https://arxiv.org/abs/2302.13971>
- <https://arxiv.org/abs/2204.02311>
- <https://arxiv.org/abs/2101.00027>