范叶亮写智能体、模型和数据系统时,习惯先把定义和边界钉死。把「预训练自然语言模型」整理成可落地的中文笔记:问题在哪、默认做法会踩什么坑、该怎么选。原站导航和广告已去掉。

预训练原理

本文为 Pre-trained Models for Natural Language Processing: A Survey 和相关模型的读书笔记 1 。

在当下的 NLP 研究领域,随着计算机算力的不断增强,越来越多的通用语言表征的预训练模型(Pre-trained Models,PTMs)逐渐涌现出来。这对下游的 NLP 任务非常有帮助,可以避免大量从零开始训练新的模型。PTM 大致可以分为两代:

语言表示学习

分布式表示的核心思想为用一个低维的实值向量表示一段文本,向量单独每个维度不具有任何实质含义,但整个向量表示了一个具体的概念。下图展示了一个 NLP 任务的一般神经网络架构:

词嵌入包含两种类型: 上下文无关的词嵌入 和 基于上下文的词嵌入 。两者的不同点在于一个词的嵌入是够会随着上下文的不同而随之改变。

神经上下文编码器

为了表征语义,我们需要将离散的语言符号映射到一个分布式嵌入空间中。对于词典 $\mathcal{V}$ 中的一个词 $x$ ,我们将其映射为查询表 $\mathbf{E} \in \mathbb{R}^{D_e \times \|\mathcal{V}\|}$ 中的一个向量 $\mathbf{e}_x \in \mathbb{R}^{D_e}$ ,其中 $D_e$ 为嵌入的维度。

这种类型的嵌入主要有两个缺陷:一是嵌入是静态的,词在不同的上下文中的嵌入表示是相同的,因此无法处理一词多义;二是未登录词(out-of-vocabulary,OOV)问题,通常可以采用字符级嵌入表示解决该问题。更多上下文无关的词嵌入模型,请参见之前的博客 词向量 。

为什么预训练

为了解决上述问题,我们需要区分在不同上下文下词的含义。给定一段文本 $x_1, x_2, \dotsc, x_T$ 其中每段标记 $x_t \in \mathcal{V}$ 为一个词或子词, $x_t$ 基于上下文的表示依赖于整段文本。

$$ \left[\mathbf{h}_1, \mathbf{h}_2, \dotsc, \mathbf{h}_T\right] = f_{\text{enc}} \left(x_1, x_2, \dotsc, x_T\right) $$

预训练任务

其中, $f_{\text{enc}} \left(\cdot\right)$ 为神经编码器, $\mathbf{h}_t$ 为标记 $x_t$ 的 基于上下文的嵌入 或 动态嵌入 。

对于大多数的 NLP 任务,构建一个大规模的有标签的数据集是一项很大的挑战。相反,大规模的无标签语料是相对容易构建的,为了充分利用这些无标签数据,我们可以先利用它们获取一个好的语言表示,再将这些表示用于其他任务。预训练的好处如下:

应用于下游任务

预训练任务对于学习语言的通用表示来说至关重要。通常情况下,预训练任务具有挑战性,同时需要大量训练数据。我们将预训练任务划分为 3 类:

NLP 中最常见的非监督任务为概率语言建模,这是一个经典的概率密度估计问题。给定一个文本序列 $x_{1:T} = \left[x_1, x_2, \dotsc, x_T\right]$ ,他的联合概率 $p \left(x_{1:T}\right)$ 可以分解为:

值得单独记下的点

  • 第一代 PTM 旨在学习词嵌入。由于下游任务不在需要这些模型,因此为了计算效率,这些模型往往采用浅层模型,例如 Skip-Gram 2 ,GloVe 3 等。尽管这些模型可以捕获词的语义,但由于未基于上下文环境,因此不能够捕捉到更深层次的概念,例如:句法结构,语义角色,指代等等。
  • 第二代 PTM 专注于学习基于上下文的词嵌入,例如 CoVe 4 ,ELMo 5 ,OpenAI GPT 6 和 BERT 7 等。这些学习到的编码器在下游任务中仍会用于词在上下文中的语义表示。
  • 基于卷积的模型 :基于卷积的模型通过卷积操作从一个词的邻居中聚合局部信息来捕获这个词的含义 8 。 Convolutional model
  • 基于序列的模型 :基于序列的模型采用 RNNs(LSTM 9 和 GRU 10 ) 来捕获词的上下文信息。实际中,我们采用双向的 RNNs 从词的两端收集信息,不过整体效果容易收到长期依赖问题的影响。 Sequential model
  • 预训练可以从大规模语料中学习得到通用的语言表示,并用于下游任务。
  • 预训练提供了更优的模型初始化方法,有助于提高模型的泛化能力和加速模型收敛。
  • 预训练可以当作是在小数据集上一种避免过拟合的正则化方法。
  • 监督学习 ,即从包含输入输出对的训练数据中学习一个由输入到输出的映射函数。

落地时建议先做的 5 件事

  1. 先写清任务能不能被自动验证:能验证的交给系统和评测,不能验证的留给人审。
  2. 本地部署先算显存、延迟和失败回滚,不要只看能跑通一次。
  3. 多智能体只在单智能体触到上下文或专业边界时再拆。
  4. Token、微调和压缩都要有对照数字,避免口号式优化。
  5. 结论写成可检查清单:接口、超时、评测集、回滚版本。

和智能体产品怎么接

龙虾PRO做 OpenClaw 落地时,最该拿走的是「单智能体先做好工具和提示,再谈编排」。数字员工、技能市场和网关应共用同一套评测与权限,而不是各写一套角色人设。

本文侧重全链路风控方法论。落地时请用自身业务单据做回放验证,不要把示例阈值直接当生产策略。 相关:风控体检 · 方案资源

常见问题 FAQ

什么是AI智能系统?

「AI智能系统」可概括为:本文为 Pre-trained Models for Natural Language Processing: A Survey 和相关模型的读书笔记 1 。 本文从定义、方法与实践要点展开说明。

为什么要关注AI智能系统?

关注AI智能系统,是因为它直接影响效率、风险与可复制性。文中指出:本文为 Pre-trained Models for Natural Language Processing: A Survey 和相关模型的读书笔记 1 。

如何落地AI智能系统?有哪些关键步骤?

建议按以下路径推进AI智能系统:1) 第一代 PTM 旨在学习词嵌入。由于下游任务不在需要这些模型,因此为了计算效率,这些模型往往采用浅层模型,例如 Skip-Gram 2 ,GloVe 3 等。…;2) 第二代 PTM 专注于学习基于上下文的词嵌入,例如 CoVe 4 ,ELMo 5 ,OpenAI GPT 6 和 BERT 7 等。这些学习到的编码器在下游任…;3) 基于卷积的模型 :基于卷积的模型通过卷积操作从一个词的邻居中聚合局部信息来捕获这个词的含义 8 。 Convolutional model;4) 基于序列的模型 :基于序列的模型采用 RNNs(LSTM 9 和 GRU 10 ) 来捕获词的上下文信息。实际中,我们…

AI智能系统适合哪些人或团队?

AI智能系统更适合:产品/技术负责人、运营与增长团队、需要落地智能体或自动化的中小团队、关注「AI智能系统」方向的读者。若你只需要单次聊天式问答,可先读概念;若要上生产,请重点看步骤、权限与风控相关段落。

关于「预训练原理」,本文给出了什么结论?

在「预训练原理」部分,要点是:务非常有帮助,可以避免大量从零开始训练新的模型。PTM 大致可以分为两代: 语言表示学习 分布式表示的核心思想为用一个低维的实值向量表示一段文本,向量单独每个维度不具有任何实质含义,但整个向量表示了一个具体的概念。下图展示了一个 NLP 任务的一般神经网络架构: 词嵌入包含两种类型: 上下文无关的词嵌入 和 基于上下文的词嵌入 。两者的不同点在于一个词的嵌入是够会随着上下文的不同而随之改变。 神经上下文编码器 为了表征语义,我们需要将离

关于「语言表示学习」,本文给出了什么结论?

在「语言表示学习」部分,要点是:同的上下文中的嵌入表示是相同的,因此无法处理一词多义;二是未登录词(out-of-vocabulary,OOV)问题,通常可以采用字符级嵌入表示解决该问题。更多上下文无关的词嵌入模型,请参见之前的博客 词向量 。 为什么预训练 为了解决上述问题,我们需要区分在不同上下文下词的含义。给定一段文本 $x_1, x_2, \dotsc, x_T$ 其中每段标记 $x_t \in \mathcal{V}$ 为一个词或子词, $x_t$ 基于上下