【引子】“脚踏实地,仰望星空”, 知其然还要知其所以然。读论文是一条重要的途径,这一篇文章https://magazine.sebastianraschka.com/p/understanding-large-language-models非常值得借鉴,不敢私藏,编译成文。
大型语言模型已经成为公众关注的焦点,这几乎彻底改变了自然语言处理领域,甚至是在过去的五年中,大型语言模型中的transformer也已经开始引领在计算机视觉和计算生物学领域中的革命。
由于LLM和transformer对每个领域的研究影响巨大,如何进行系统性学习呢?当然,还有许多其他有用的资源,例如,
Jay Alammar的Illustrated Transformer;
Lilian Weng的更多技术博客文章;
Xavier Amatriain 所有关于transformer的文字;
Andrej Karpathy为教育目的而实现的生成语言模型的minimal code implementation;
......
但是,研读论文仍然是系统性学习的重要方式,了解来龙去脉,跟踪最新发展。
1. 理解架构和任务
从头开始,对于transformer/大型语言模型来说,从哪里读起呢?
(1) Neural Machine Translation by Jointly Learning to Align and Translate (2014) by Bahdanau, Cho, and Bengio, https://arxiv.org/abs/1409.0473
建议从上面的论文开始阅读。它介绍了一种注意力机制,用于改进循环神经网络(RNN)的长序列建模能力。这使得RNN能够更准确地翻译更长的句子——这也是后来开发原始Transformer架构的动机。
(2) Attention Is All You Need (2017) by Vaswani, Shazeer, Parmar, Uszkoreit, Jones, Gomez, Kaiser, and Polosukhin, https://arxiv.org/abs/1706.03762
这一篇是引用最为广泛的经典论文,介绍了最初的Transformer架构,包括后来成为单独模块的编码器和解码器部分。此外,还介绍了缩放点积注意力机制、多头注意力块和位置输入编码等概念,这些概念仍然是现代Transformer的基础。
(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架构,大型语言模型研究开始分为两个方向:编码器风格的Transformer用于预测建模任务,如文本分类,解码器风格的Transformer用于生成建模任务,如翻译,摘要和其他形式的文本创作。而这一篇介绍了BERT掩码语言建模的原始概念,而下一个句子的预测仍然是一种有影响力的解码器风格架构。可以继续关注RoBERTa,它通过删除下一个句子的预测任务简化了预训练目标。
(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论文介绍了流行的解码器架构和通过下一个单词预测进行预训练。由于其以掩码语言模型为预训练目标,BERT可以被认为是一个双向变压器,而GPT是一个单向的自回归模型。虽然GPT嵌入也可以用于分类,但GPT方法是当今最有影响力的LLM,也是ChatGPT的核心。
这两篇论文GPT-2和GPT-3说明了LLM能够进行zero-shot和few-shot样本学习,并突出了LLM的涌现能力。GPT-3是当LLM(如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类型的编码器LLM通常用于预测建模任务,而GPT类型的解码器LLM则更适合生成文本。为了兼顾两者优点,上面的BART论文结合了编码器和解码器部分(与本列表中的第二篇论文类似,就像原始的Transformer一样)。
(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风格的掩码语言模型(编码器)和GPT风格的自回归语言模型(解码器)之外,它还提供了有关预训练和微调数据的有用讨论和指导。
2. 缩放方式与效率提升
如何进一步提高Transformer效率呢?2020 Efficient Transformers: A Survey 论文,接着是2023年的2023 A Survey on Efficient Training of Transformers论文,这两篇文章可以提供帮助。此外,下面的论文也非常值得一读。
(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论文都不会考虑替换实现自注意力的原始缩放点积机制,但FlashAttention则描绘这样一种机制。
(8) Cramming: Training a Language Model on a Single GPU in One Day (2022) by Geiping and Goldstein, https://arxiv.org/abs/2212.14034.
在这篇论文中,使用掩码语言模型/编码器风格的LLM(这里是BERT)在单个GPU上进行了24小时的训练。相比之下,2018年的BERT论文使用16个TPU进行了为期四天的训练。有趣的是,较小的模型具有更高的吞吐量,较小的模型学习效率也更低。因此,较大的模型不需要更多的训练时间才能达到特定的预测性能阈值。
(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.
在大型数据集上预训练的大语言模型表现出了新兴能力,并在各种任务中表现良好,包括语言翻译、摘要、编码和问答。然而,如果想要提高Transformer在特定领域数据和专业任务上的能力,值得进行微调。
LoRA是一种在参数效率方面进行大型语言模型微调时最有影响力的方法之一。虽然存在其他用于参数效率微调的方法,但是LoRA特别值得一提,因为它既是一种优雅的方法,也是一种非常通用的方法,可以应用于其他类型的模型。
虽然预训练模型的权重在预训练任务上具有完整的秩,但LoRA的作者指出,当它们适应于新任务时,预训练的大型语言模型具有低“内在维度”。因此,LoRA背后的主要思想是将权重变化ΔW分解为更具有有效参数的低秩表示。
(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.
预训练在大规模数据集上的现代LLM中展示了新兴的能力,并在各种任务(包括语言翻译、摘要、编码和问答)中表现良好。然而,如果提高transformer在特定领域数据和专业任务上的能力,需要对变形金刚进行微调。这篇论文回顾了40多篇有关参数高效的微调方法(包括流行的技术,如前缀调整、适配器和低秩适应),以使微调计算实现高效率。
(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.
本文介绍了具有70亿参数的Chinchilla模型,该模型在生成模型任务上优于流行的具有1750亿参数的GPT-3模型。然而,其主要观点是LLM的“显著未经训练”。
本文为大型语言模型训练定义了线性缩放定律。例如,虽然Chinchilla只有GPT-3的一半大小,但它表现更好,因为它是在1.4万亿(而不仅仅是3000亿)token上进行训练的。换句话说,训练token数量与模型大小同样重要。
(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个参数),用于研究LLM在训练过程中的演变。
其架构类似于GPT-3,但包括一些改进,例如Flash Attention(类似于LLaMA)和Rotary Positional Embeddings(类似于PaLM)。Pythia是在The Pile dataset(825 Gb)上进行训练的,共训练了300 Btoken,在常规PILE上为约1个时期,在去重后的PILE上为约1.5个时期。
Pythia 研究的主要结论如下:
在重复数据上进行训练(LLMs如何训练,这意味着训练超过一个 epoch)不会对性能造成影响。
训练顺序不会影响记忆。这很不幸,因为如果相反的情况是真的,可以通过重新排列训练数据来减轻不良的逐字记忆问题。
预先训练的词频会影响任务性能。例如,少量样本的准确率往往对更频繁出现的词语更高。
增加批量大小可以将训练时间减半,但不会影响收敛。
3.调整与对齐——引导LLM达到预期目标和收益
近年来,有许多大型语言模型可以生成逼真的文本(例如GPT-3和Chinchilla等),似乎已经达到了常用预训练范式的限制。
为了使语言模型更有用,减少错误信息和有害语言,可以设计了额外的训练范式来微调预训练基础模型。
(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基础模型开始,并使用由人类生成的一组提示-响应进行监督学习进一步微调(步骤1)。接下来,要求人类对模型输出进行排名以训练奖励模型(步骤2)。最后,使用奖励模型通过近端策略优化来更新预训练和微调的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.
在这篇论文中,将对齐思想推进了一步,提出了一种用于创建“无害”人工智能系统的训练机制。研究人员提出了一种基于规则列表的自我训练机制(这些规则由人类提供)。与上面提到的InstructGPT论文类似,所提出的方法采用强化学习方法。
(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
指令微调是从类似于GPT-3的预训练基础模型到更强大的LLM(例如ChatGPT)的方法。开源人工生成指令数据集(例如databricks-dolly-15k)可以帮助实现这一目标。但是如何扩大规模呢?一种方法是通过其自身的生成来引导LLM的训练。
自我指导是一种(几乎没有标注的)方法,用于将预训练的LLM与指令对齐。
这是怎么工作的?简而言之,它是一个4步骤的过程:
使用一组人工编写的指令(在本例中为175个)和示例指令填充任务池。
使用预训练的LLM(例如GPT-3)确定任务类别。
给定新指令,让预训练的LLM生成响应。
收集、修剪和过滤响应,然后将其添加到任务池中。
实践表明,基于 ROUGE 分数的方法相对有效。
例如,一个自我指导微调 LLM 的表现优于 GPT-3 基础 LLM(1),并且可以与预先训练了大量人工编写的指令集的 LLM 竞争(2)。同时,自我指导也可以为已经在人类指令上进行了微调的 LLM带来好处(3)。
当然,评估 LLM 的黄金标准是要询问人类评估者的意见。基于人类评估,自我指导的表现优于基础 LLM,以及在监督方式下训练的人工指令数据集的 LLM(SuperNI,T0 Trainer)。但有趣的是,Self-Instruct 并没有超越通过人类反馈进行强化学习训练的方法(RLHF)。
哪种方法更有前途,是人类生成的指令数据集还是自我指导的数据集?可能两者都有前途。为什么不从一个人类生成的指令数据集(如来自 databricks-dolly-15k 的 15k 指令)开始,然后再使用自我指导进行扩展呢?
4. 补充: 人类反馈的增强学习(RLHF)
虽然强化学习与人类反馈(RLHF)可能无法完全解决当前LLM的问题,但它目前被认为是最好的选择,可能会看到更多创造性的方法将RLHF应用于LLM的其他领域。
上述两篇论文,“InstructGPT”和“Constitutional AI”都使用了RLHF。由于RLHF将成为一种有影响力的方法,因此本节还包括了其他论文资源。
(16) Asynchronous Methods for Deep Reinforcement Learning (2016) by Mnih, Badia, Mirza, Graves, Lillicrap, Harley, Silver, and Kavukcuoglu (https://arxiv.org/abs/1602.01783)
本文介绍了一种梯度方法,可以作为深度学习和强化学习中 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正则化,以防止策略偏离自然语言。
(19) Learning to Summarize from Human Feedback (2022) by Stiennon, Ouyang, Wu, Ziegler, Lowe, Voss, Radford, Amodei, Christiano https://arxiv.org/abs/2009.01325
本文介绍了流行的RLHF三个步骤:
预训练GPT-3
有监督地微调它,
以有监督的方式训练奖励模型。然后使用近端策略优化器使用此奖励模型对微调模型进行训练。
本文还表明,使用近端策略优化的强化学习比仅使用常规有监督学习得到更好的模型。
(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), also known as InstructGPT paper)
RLHF 使用与上述类似的三步骤过程,但不是总结文本,而是基于人类指令生成文本。此外,还使用一个标签器将输出从最佳到最差进行排名,而不仅仅是人工和 AI 生成文本之间的比较。
5. 结论与扩展阅读
大模型的研究日新月异,这里重点关注大语言模型的设计、约束和演变,包括前10篇论文(以及3篇关于RLHF的论文)。我们可以跟随上述论文中的参考文献进行更深入的学习。当然,还有很多其他的资源,例如:
Open-source alternatives to 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 alternatives
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
Large language models in computational biology
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
【关联阅读】
一文读懂“语言模型”
解读TaskMatrix.AI
深度学习架构的对比分析
解读ChatGPT中的RLHF
解读Toolformer
知识图谱的5G追溯
图计算的学习与思考
AI系统中的偏差与偏见
面向AI 的数据生态系统
机器学习与微分方程的浅析
神经网络中常见的激活函数
老码农眼中的大模型(LLM)
《深入浅出Embedding》随笔
机器学习系统架构的10个要素
清单管理?面向机器学习中的数据集
DuerOS 应用实战示例——机器狗DIY
《基于混合方法的自然语言处理》译者序