LLM 一 · 大语言模型基础
语言模型(LM)发展历程
SLM 统计语言模型
Statistical Language Model 兴起于90年代,使用Markov Assumption(马尔可夫假设)根据词序中若干个连续上下文单词预测下一个词出现概率,即通过固定长度前缀来预测目标单词。SLM被广泛用于早期信息检索(IR, Information Retrieval) 和 NLP。
n-gram 统计模型指具有固定上下文长度n的语言模型,又称n元模型。
NLM 神经语言模型
Neural Language Model 使用RNN(Recurrent Neural Networks 循环神经网络)等建模文本序列。
早期使用分布式词表示(Distributed Word Representation)构建基于聚合上下文特征(即分布式词向量)的目标词预测函数。分布式词表示使用低维稠度向量表示词汇语义,能刻画隐含语义特征,这与基于词典空间的稀疏词向量表示(One-Hot Representation)不同。
分布式词向量又称为词嵌入(Word Embedding),word2vec 是一个具有代表性的词嵌入学习模型,它构建了一个简化的浅层神经网络来学习分布式词表示,所学习到的词嵌入可以用作后续任务语义特征提取器。
PLM 预训练语言模型
Pre-trained Language Model 相较于词嵌入模型,优化了训练架构和训练数据。预训练指使用与下游任务无关的大规模无标注数据进行训练,为下游任务模型参数找到较好的初值点,这一思想最早基于大规模图像标注数据集ImageNet用于初始化视觉模型参数。
早期的ELMo使用大量无标注数据训练biLSTM(Bidirectional LSTM)网络,预训练得到的biLSTM可以用来学习上下文感知的单词表示,这与word2vec学习固定词不同。ELMo可以根据下游任务数据对biLSTM网络进行微调(Fine-Tuning)。传统序列神经网络长文本建模能力弱,不易并行训练。
2017年,谷歌提出Self-Attention(自注意力机制)的Transform模型,通过Self-Attention建模长程序列关系。Transformer可以通过GPU或TPU加速,可并行训练。
基于Tranformer架构,谷歌提出预训练模型BERT,采用了仅有编码器的Transformer架构,并通过在大模型无标注数据上使用专门设计的预训练任务来学习双向语言模型。
同期,OpenAI采用Transformer架构训练GPT-1。与BERT不同,GPT-1采用了仅有解码器的Tranformer架构,以及基于下一个词元预测的预训练任务进行模型训练。
编码器架构更适合解决自然语言理解任务(如完形填空),而解码器架构更适合解决自然语言生成任务(如文本摘要)。
LLM 大预言模型
OpenAI从参数、数据、算力三个方面深入研究规模扩展(如增加模型参数规模或数据规模)对模型性能影响,规模扩展能显著提升下游任务模型性能,即扩展法则 Scaling Law。这种大模型具有的能力称为涌现能力(Emergent Abilities)。
小型预训练模型,如330M参数的BERT、1.5G参数的GPT-2。大型预训练模型,如175B参数的GPT-3、540B参数的PaLM。
基于大模型无标注文本的下一个词元预测任务本质上可视为一个多任务学习过程。大模型具有较强的通用任务解决能力。
大模型训练
数据清洗 --> 词元化(Tokenization) --> 切分批次(Batch) --> Pre-training。
由于预训练对大模型极为重要,因此预训练需要收集高质量、多元化数据。目前开源模型至少使用2~3T词元进行预训练,一般训练百亿规模至少需要百卡规模算力集群(A100 80G)并行训练数月,而若干台单机八卡(A100-80G)服务器就能1天内完成百亿模型指令微调。
预训练结束后,需要通过微调将模型与任务、人类价值观等对齐(Alignment),最常见的微调技术为指令微调(又称监督微调 SFT Supervised Fine-Tuning)。OpenAI 2022年论文介绍了如何将语言模型进行人类对齐。具体而言,主要引入RLHF(Reinforcement Learning from Human Feedback 基于人类反馈的强化学习)对齐方法,在指令微调后使用RLHF对齐能力。RLHF算法需要先训练一个符合人类价值观的奖励模型(Reward Model)。为此,需要标注人员对大语言模型所生成的多条输出进行偏好排序,并使用偏好数据训练奖励模型,用于判断模型输出质量。强化学习需要维护辅助模型(如价值观模型),资源消耗多于指令微调。