大语言模型 (LLM) 快速理解
自 2022 年 ChatGPT 发布之后,大语言模型(Large Language Model),简称 LLM 掀起了一波狂潮。作为学习理解 LLM 的开始,先来整体理解一下大语言模型的核心概念与架构。
大语言模型基于深度学习技术,通过海量数据预训练和指令微调实现通用智能。梳理了从统计语言模型到 Transformer 的演进历史,解析了参数规模、训练数据及计算资源三大要素。重点阐述了预训练、微调(SFT)及强化学习人类反馈(RLHF)的训练流程,对比了编码器 - 解码器、因果解码器等架构差异,并探讨了其在文本生成、问答及代码辅助等领域的应用场景。同时分析了模型面临的幻觉、安全及成本挑战,为初学者提供系统的入门指南。

自 2022 年 ChatGPT 发布之后,大语言模型(Large Language Model),简称 LLM 掀起了一波狂潮。作为学习理解 LLM 的开始,先来整体理解一下大语言模型的核心概念与架构。
大语言模型的发展历史可以追溯到早期的语言模型和机器翻译系统,但其真正的起点可以说是随着深度学习技术的兴起而开始。
在深度学习技术出现之前,语言模型主要基于传统的统计方法,也称为统计语言模型(SLM)。
SLMs 是基于统计语言方法开始,基本思想是基于马尔可夫假设建立词预测模型,如根据最近的上下文预测下一个词。具有固定上下文长度 n 的 SLM 也称为 n-gram 语言模型。
然而这些模型虽然简单,但在处理长文本序列时存在着词汇稀疏性和上下文理解能力有限等问题。
随着神经网络技术的发展,Bengio 等人于 2003 年提出了神经语言模型,将语言模型建模问题转化为了一个神经网络的学习问题。
循环神经网络(RNN)和长短期记忆网络(LSTM)的提出进一步增强了神经语言模型对文本序列的建模能力。这些模型能够捕捉到文本序列中的长程依赖关系,从而提高了语言模型的性能。
2013 年,Google 提出了 Word2Vec 模型,通过词嵌入(Word Embedding)的方式将单词映射到连续的向量空间中,提高了语言模型对单词语义的理解能力。
2017 年,谷歌提出了 Transformer 模型,该模型通过自注意力机制(Self-Attention)实现了并行计算,大大提高了模型的训练速度。
2018 年,OpenAI 发布了第一个版本的 GPT 模型,利用 Transformer 结构进行预训练,这是首个成功利用大规模无监督学习方法来预训练通用语言表示的模型。
2018 年,Google 提出了 BERT 模型,与 GPT 的区别是 GPT 采用了单向的自回归方式进行预训练,而 BERT 通过 MLM 和 NSP 实现双向上下文建模。使得预训练语言模型的性能得到了进一步的提升。
随后就激发了后续一系列的预训练模型的发展,如 XLNet、RoBERTa、T5、GPT-2、GPT-3、GPT 3.5、GPT-4 等等。而大语言模型也是在此过程中被定义下来的。
从大语言模型字面意思来理解,'语言'和'模型'很好理解,就是代表着在自然语言处理上的 AI 模型。而这个大指的是神经网络很大,包括模型的参数数量、训练数据量、计算资源等。
大语言模型通常含有数十亿到数千亿个参数,使得模型能够有更强的语言理解、推理和生成能力。
如果只通过 GPT(生成式预训练 Transformer)模型的演进规模来看:
2018 年发布的 GPT-1 包含 1.17 亿个参数,9.85 亿个单词。
2019 年发布的 GPT-2 包含 15 亿个参数。
2020 年发布的 GPT-3 包含 1750 亿个参数。ChatGPT 就是基于这个模型。
2023 年发布的 GPT-4 据爆料它可能包含 1.8 万亿个参数
训练大语言模型通常需要大规模的文本语料库。这些语料库可以包括来自互联网、书籍、新闻等各种来源的文本数据,从而确保模型能够学习到丰富和多样化的语言知识。
如 GPT-3,它是在混合数据集上进行训练的;PaLM 使用了一个有社交媒体对话、过滤后的网页、书籍、Github、多语言维基百科和新闻组成的预训练数据集。
训练大型语言模型需要大量的计算资源,包括高性能的计算机集群、大容量的存储设备以及高速的网络连接。
英伟达价格高昂但依然一卡难求的高性能 GPU H100,长期霸占着 LLM 领域的热门话题,可以说,英伟达垄断了目前的 AI 算力市场。马斯克甚至戏言:GPU 现在比 drug 还紧俏。
现有的神经网络在进行训练时,一般基于反向传播算法(BP 算法),先对网络中的参数进行随机初始化,再利用随机梯度下降(SGD)等优化算法不断优化模型参数。
大语言模型的训练通常采用两阶段方法:预训练(pre-training)和微调(fine-tuning)。
在预训练阶段,模型使用大规模无监督的文本数据进行训练,学习文本数据中的语言表示。
通常采用自监督学习方法,即使用文本数据自身作为标签来训练模型。
训练过程中,模型通过最小化损失函数来优化参数,以使得模型能够更好地表示文本中的语义和语法信息。
在预训练完成后,可以将预训练好的模型参数应用于特定的下游任务,如文本生成、文本分类、情感分析等。
在微调阶段,通常使用带标签的数据集对模型进行进一步训练,以适应特定任务的需求。微调可以在预训练模型的顶部添加一个或多个额外的层,并使用标签数据对这些层进行训练。
微调的目标是调整模型参数,使得模型能够更好地适应特定任务的特征和标签,从而提高任务性能。
在微调阶段,模型在与目标任务或领域相关的更具体、更小的数据集上进一步训练。这有助于模型微调其理解,并适应任务的特殊要求。
无论是怎样的模型,数据的质量都是相当重要的。现有的大语言模型主要混合各种公共文本数据集作为预训练语料库。
语料库的来源可以广义分为通用文本数据和专用文本数据。通用指的就是如网页、书籍和对话文本等广泛可获取的,可以增强模型的泛化能力;专用文本数据就是在想让模型更加专注某一专业领域时所用的,如科学数据、代码等。
收集数据之后,由于不确定性,所以需要对数据进行预处理,尤其是噪声、冗余、无关或有害的数据。预处理过程如下:
如传统 Transformer 模型就是建立在此结构上。它使用了 6 层的 Encoder 和 Decoder。这种架构适用于序列到序列的任务,如机器翻译。
这是当前主流使用的,采用单向注意力掩码,以确保每个输入标记只能关注过去的标记和它本身。输入输出标记通过解码器以相同的方式处理。典型的模型有 GPT-1/2/3, OPT, BLOOM, Gopher。
修正了因果解码器的掩码机制,以使其能够对前缀标记执行双向注意力,并仅对生成的标记执行单向注意力。这样与编码器 - 解码器架构类似,前缀解码器可以双向编码前缀序列并自回归地逐个预测输出标记,其中在编码和解码过程中共享相同的参数。
总的来说,Encoder-Decoder 适用于序列到序列的任务,Causal Decoder 适用于需要生成自回归序列的任务,而 Prefix Decoder 适用于需要根据特定前缀生成序列的任务。
在数据处理好,模型搭建好之后,就要开始对模型进行训练。这一阶段涉及多个关键技术点:
在预训练后,大语言模型可以获得解决各种任务的通用能力。然而,还可以通过特定目标进一步调整,也就是微调(Instruction Tuning)。
通过在特定的指令性任务数据集上进行训练,提高模型对于指令类输入的理解和响应。
指令的意思,举个例子,对聊天机器人的指令,需要包括如'今天天气如何'和对应的回答,供模型学习。
也就是说需要包含明确指令的数据集,一个指令需要包括一个任务描述、一个输入输出对以及少量实例(可选)。
常用的指令实例格式化方法有格式化已有的数据集还有格式化人类需求。
指令微调对模型的性能改进和任务泛化能够起到很好的作用。
大语言模型有时可能表现出意外的行为,例如制造虚假信息、追求不准确的目标,以及产生有害的、误导性的和偏见性的表达。为了避免这些意外行为,研究提出了人类对齐,使大语言模型行为能够符合人类的期望也就是对齐微调。
在预训练阶段使用的训练语料库是没有对模型的主观定性评估的。所以可以在使用人类反馈的数据进行微调,这个过程称为强化学习(RLHF)。
RLHF 流程通常包含三步:
大语言模型作为具有广泛应用的变革工具而受到重视。
尽管 LLM 表现强大,但仍面临诸多挑战:
未来,随着量化技术、MoE(Mixture of Experts)架构以及更高效训练方法的引入,大语言模型将在保持能力的同时降低门槛,更好地服务于各行各业。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online