大型语言模型——transformers——几乎完全改变了自然语言处理领域。此外,它们也开始颠覆计算机视觉和计算生物学等领域。
由于transformers对每个人的研究都产生了很大的影响,在这里我想为初学者提供一个短的阅读清单。
以下清单我主要是按时间顺序阅读的,我个人专注于学术研究论文。当然在说论文之前,我推荐几个个人认为有用的资源(有些可能需要科学上网进行访问,如果不方便请评论区留言,后续我会将这些大佬的博客翻译之后发布在我的主页以便大家学习):
如果你是初学transformers/大型语言模型的人,最好从头开始。
(1) Bahdanau、Cho和Bengio在2014年发表的“Neural Machine Translation by Jointly Learning to Align and Translate”:
我建议如果你有几分钟的时间,从上面的论文开始阅读。它引入了一种针对递归神经网络(RNN)的注意力机制,以提高长序列建模能力。这使得RNN能够更准确地翻译更长的句子——这是后来开发原始transformer架构的动机。
(2)《Attention Is All You Need》(2017),作者为Vaswani、Shazeer、Parmar、Uszkoreit、Jones、Gomez、Kaiser和Polosukhin:
这篇论文介绍了最初的transformer架构,由编码器和解码器组成,后来将成为独立模块。此外,本文还介绍了缩放点积注意力机制、多头注意力块和位置输入编码等概念,这些概念仍是现代transformers的基础。
(3)BERT: Pre-training of Deep Bidirectional Transformers for Language Understanding(2018) 由 Devlin, Chang, Lee, and Toutanova 撰写,文章链接如下:
在按照原始Transformer架构进行的研究后,大型语言模型的研究开始分成两个方向:编码器样式的Transformer用于预测建模任务,例如文本分类;解码器样式的Transformer用于生成建模任务,例如翻译、摘要和其他形式的文本生成。
上述BERT论文介绍了遮蔽语言建模的创新概念,而next-sentence预测任务则成为了一种具有影响力的解码器样式的架构。如果对这个研究方向感兴趣,我推荐阅读RoBERTa(RoBERTa: A Robustly Optimized BERT Pretraining Approach)的相关内容,因为RoBERTa简化了预训练的目标,去除了next-sentence预测任务。
(4)Improving Language Understanding by Generative Pre-Training(2018)由Radford和Narasimhan撰写:
这篇文章介绍了受欢迎的解码器风格体系结构和通过下一个词预测的预训练方法。由于其遮盖语言模型预训练目标,BERT可以被认为是双向transformer,而GPT是单向的自回归模型。虽然GPT嵌入也可以用于分类,但GPT方法是当今最具影响力的LLMs的核心,例如ChatGPT。
如果对这个研究分支感兴趣,我建议你继续阅读GPT-2([PDF] Language Models are Unsupervised Multitask Learners | Semantic Scholar)和GPT-3(Language Models are Few-Shot Learner)的论文。这两篇论文说明了LLMs能够进行零和Few-Shot学习,并突出了LLMs的新兴能力。GPT-3仍然是当前一代LLMs的流行基准和基础模型,例如ChatGPT的训练。我将在后面单独介绍InstructGPT方法,该方法也促成了ChatGPT的产生。
(5)BART: Denoising Sequence-to-Sequence Pre-training for Natural Language Generation, Translation, and Comprehension(2019), 由 Lewis, Liu, Goyal, Ghazvininejad, Mohamed, Levy, Stoyanov, 和Zettlemoyer等人撰写:
正如之前提到的,BERT类型的编码器风格的LLMs通常用于预测建模任务,而GPT类型的解码器风格的LLMs则更适用于生成文本。为了兼顾二者的优点,上述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:
这虽然不是一篇研究论文,但是是迄今为止最好的总体架构调查,展示了不同的架构是如何发展的。然而,除了讨论BERT风格的掩码语言模型(编码器)和GPT风格的自回归语言模型(解码器)外,它还提供了关于预训练和微调数据的有用讨论和指导。
如果你想了解更多提高Transformer效率的技术,我推荐阅读2020年的《Efficient Transformers: A Survey》论文(Efficient Transformers: A Survey),以及随后的2023年的《A Survey on Efficient Training of Transformers》论文(A Survey on Efficient Training of Transformers)。
此外,下面是我发现特别有趣且值得阅读的论文。
(7) FlashAttention: Fast and Memory-Efficient Exact Attention with IO-Awareness (2022), Dao, Fu, Ermon, Rudra, and Ré等人撰写:
大多数 transformer 论文都没有考虑替换实现自注意力的原始缩放点积机制,但 FlashAttention 是我最近看到引用最频繁的一种机制。
(8)Cramming: Training a Language Model on a Single GPU in One Day (2022) 由 Geiping 和Goldstein撰写:
这篇论文中,研究人员在单个GPU上训练了一个遮蔽语言模型/编码器风格的LLM(即BERT)长达24小时。相比之下,2018年的原始BERT论文使用了16个TPU进行了为期四天的训练。一个有趣的发现是,尽管较小的模型具有更高的吞吐量,但它们学习的效率也更低。因此,较大的模型不需要更多的训练时间就能达到特定的预测性能的阈值。
(9)LoRA: Low-Rank Adaptation of Large Language Models (2021)是由Hu、Shen、Wallis、Allen-Zhu、Li、L Wang、S Wang和Chen撰写的论文,链接:
现代大型语言模型在大型数据集上进行预训练,展现出新兴的能力,并在语言翻译、摘要、编码和问答等各种任务上表现良好。然而,如果我们想要提高transformer在特定领域数据和专门任务上的能力,值得进行微调。
低秩适应(LoRA)是一种在参数有效的方式下进行微调大型语言模型的最具影响力的方法之一。虽然存在其他方法进行参数有效的微调(见下文的调查),但LoRA特别值得强调,因为它是一种优雅而非常通用的方法,可以应用于其他类型的模型。
LoRA作者指出,虽然预训练模型的权重在预训练任务上具有完整秩,但当它们适应新任务时,预训练大型语言模型具有低“内在维度”。因此,LoRA的主要思想是将权重变化ΔW分解为更具参数效率的低秩表示。
(10)Scaling Down to Scale Up: A Guide to Parameter-Efficient Fine-Tuning(2022),作者为Lialin、Deshpande和Rumshisky,文章链接:
现代大型语言模型在大型数据集上进行预训练,表现出新兴的能力,能够在各种任务中表现出色,包括语言翻译、摘要、编码和问答等。然而,如果我们想要提高transformer在特定领域数据和专业任务上的能力,微调是值得的。这篇综述回顾了40多篇关于参数高效微调方法的论文(包括流行的技术,如前缀微调、适配器和低秩适应),以使微调变得(非常)计算高效。
(11)Training Compute-Optimal Large Language Models(2022),作者为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和Sifre,文章链接:
该文绍了拥有700亿个参数的Chinchilla模型,它在生成建模任务上的表现优于流行的拥有1750亿个参数的GPT-3模型。该文的主要观点是当代大型语言模型“显着地训练不足”。
论文定义了大型语言模型训练的线性缩放定律。例如,尽管Chinchilla的大小只有GPT-3的一半,但它的表现优于GPT-3,因为它训练了1.4万亿(而不仅仅是3000亿)个tokens。换句话说,训练tokens的数量与模型大小一样重要。
(12)Pythia: A Suite for Analyzing Large Language Models Across Training and Scaling(2023),作者为Biderman、Schoelkopf、Anthony、Bradley、O'Brien、Hallahan、Khan、Purohit、Prashanth、Raff、Skowron、Sutawika和van der Wal,文章链接:
Pythia是一套开源的LLMs(70M到12B个参数),用于研究LLMs在训练过程中的演变。该架构类似于GPT-3,但包括一些改进,例如Flash Attention(类似于LLaMA)和Rotary Positional Embeddings(类似于PaLM)。Pythia在The Pile数据集(825 GB)上进行了训练,训练了3000亿个tokens(在常规PILE上约1个epoch,在去重PILE上约1.5个epoch)。
Pythia研究的主要见解如下:
近年来,我们见证了许多相对有能力的大型语言模型,能够生成逼真的文本(例如,GPT-3和Chinchilla等)。似乎已经达到了使用常见的预训练范式所能实现的极限。
为了使语言模型更加有用,减少错误信息和有害语言输出,研究人员设计了额外的训练范式来微调预训练基础模型。
(13)Training language models to follow instructions with human feedback(2022) ,由 Ouyang, Wu, Jiang, Almeida, Wainwright, Mishkin, Zhang, Agarwal, Slama, Ray, Schulman, Hilton, Kelton, Miller, Simens, Askell, Welinder, Christiano, Leike, and Lowe等人撰写:
在这篇名为 InstructGPT 的论文中,研究人员使用了一个包含人类反馈的强化学习机制(RLHF)。他们从一个预训练的 GPT-3 基础模型开始,使用由人类生成的提示-响应对进行监督学习进行微调(第一步)。接下来,他们要求人类对模型输出进行排名,以训练一个奖励模型(第二步)。最后,他们使用奖励模型通过近端策略优化来更新预训练和微调的 GPT-3 模型(第三步)。
顺便提一嘴,这篇论文也被称为 ChatGPT 的思想背后的论文 , 根据传言,ChatGPT 是在更大的数据集上微调的 InstructGPT 的放大版本。
(14)Constitutional AI: Harmlessness from AI Feedback(2022):
在这篇论文中,研究人员将对齐的思想推进了一步,提出了一种用于创建“无害”AI系统的训练机制。与直接人类监督不同,研究人员提出了一种基于规则列表(由人类提供)的自我训练机制。与上述提到的InstructGPT论文类似,所提出的方法使用了强化学习方法。
(15)Self-Instruct: Aligning Language Model with Self Generated Instructions(2022) 由 Wang, Kordi, Mishra, Liu, Smith, Khashabi, Hajishirzi等人撰写:
指导微调(instruction finetuning)是我们从类似于GPT-3的预训练基础模型到像ChatGPT这样更强大的LLM的方式。而像databricks-dolly-15k这样的开源人工生成指令数据集可以帮助实现这一目标。但是我们如何进行规模化?一种方法是通过LLM自身的生成引导LLM。
自我指导(Self-Instruct)是一种(几乎无需注释)将预训练LLMs与指令对齐的方法。
它是如何工作的呢?简而言之,它是一个4步过程:
在实践中,这个方法相对来说效果不错,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)。
人工生成的指令数据集和自我指导数据集哪个更有前途?我认为两者都可以。为什么不先使用类似databricks-dolly-15k(dolly/data at master · databrickslabs/dolly)的人工生成的指令数据集,然后再使用Self-Instruct进行扩展呢?
虽然RLHF(带有人类反馈的强化学习)可能并不能完全解决当前LLM的问题,但它目前被认为是可用性最好的选择,特别是与上一代LLM相比。我们很可能会看到更多创造性的方法将RLHF应用于其他领域的LLM中。
上述两篇论文,InstructGPT和Constitutional AI,都使用了RLHF,由于它将成为近期最有影响力的方法之一,因此这一节我提供一些学习RLHF的有关资源。
(我认为,Constitutional AI论文使用AI而不是人类反馈,但它遵循使用RL的类似概念。)
(16)Asynchronous Methods for Deep Reinforcement Learning(2016)由Mnih、Badia、Mirza、Graves、Lillicrap、Harley、Silver和Kavukcuoglu撰写,介绍了策略梯度方法作为基于深度学习的强化学习中Q-learning的一种替代方法。Asynchronous Methods for Deep Reinforcement Learning
(17)Proximal Policy Optimization Algorithms(2017)由Schulman、Wolski、Dhariwal、Radford和Klimov撰写,提出了一种改进的近端策略优化强化学习程序,其数据效率和可扩展性比上述基础策略优化算法更高。Proximal Policy Optimization Algorithms
(18)Fine-Tuning Language Models from Human Preferences(2020)由Ziegler、Stiennon、Wu、Brown、Radford、Amodei、Christiano和Irving撰写,阐述了PPO和奖励学习应用于预训练语言模型的概念,包括KL正则化以防止策略与自然语言差距过大。Fine-Tuning Language Models from Human Preferences
(19)Learning to Summarize from Human Feedback(2022)是由 Stiennon、Ouyang、Wu、Ziegler、Lowe、Voss、Radford、Amodei 和 Christano 共同撰写的论文,链接:Learning to summarize from human feedback。该论文介绍了流行的RLHF 三步骤程序:
该论文还表明,使用 PPO 强化学习算法比仅使用常规监督学习方法训练的模型效果更好。
(20)Training language models to follow instructions with human feedback(2022)也称作InstructGPT的论文,是由Ouyang、Wu、Jiang、Almeida、Wainwright、Mishkin、Zhang、Agarwal、Slama、Ray、Schulman、Hilton、Kelton、Miller、Simens、Askell、Welinder、Christiano、Leike和Lowe撰写的,它采用了与前文所述类似的RLHF三步法,但它的重点是根据人类指令生成文本,而不是摘要文本。此外,它使用了一个标签器,将输出从最好到最差排名(而不是仅仅通过人工和AI生成文本进行二元比较)。
我尽量用简洁的方式推荐论文,重点关注的是了解现代大型语言模型的设计、约束和演化的前十篇论文(加上3篇关于RLHF的论文)。
如果想进一步阅读,我建议翻翻上述论文中的参考文献。或者,我在这里也有一些其他推荐:
Superconductor Pb10-xCux(PO4)6O showing levitation at room temperature and atmospheric pressure
Chameleon: Plug-and-Play Compositional Reasoning with Large Language Models