Share E-Book

大模型基础 (毛玉仁,高云君) (Z Library)

Author 毛玉仁, 高云君

ai
Language Chinese

本书旨在为对大语言模型感兴趣的读者系统地讲解相关基础知识、介绍前沿技术。作者团队将认真听取开源社区以及广大专家学者的建议,持续进行月度更新,致力打造易读、严谨、有深度的大模型教材。并且,本书还将针对每章内容配备相关的Paper List,以跟踪相关技术的最新进展。 本书第一版包括传统语言模型、大语言模型架构演化、Prompt工程、参数高效微调、模型编辑、检索增强生成等六章内容。为增加本书的易读性,每章分别以一种动物为背景,对具体技术进行举例说明,故此本书以六种动物作为封面。当前版本所含内容均来源于作者团队对相关方向的探索与理解,如有谬误,恳请大家多提issue,多多赐教。后续,作者团队还将继续探索大模型推理加速、大模型智能体等方向。相关内容也将陆续补充到本书的后续版本中,期待封面上的动物越来越多。

Format PDF
Size 21.2 MB
929
Views
88
Downloads
0.00
Total Donations
(First 20 pages)

Registered users can read the full content for free

Register as a Gaohf Library member to read the complete e-book online for free and enjoy a better reading experience.

Page 1
(This page has no text content)
Page 2
我的语言的界限意味着我的世界的界限。 ——维特根斯坦《逻辑哲学论》 *本书所指大模型为大语言模型。 *本书作者分工情况如下:第一章作者为:毛玉仁、高云君;第二章作者为:李佳晖、毛玉仁、 宓禹;第三章作者为:张超、毛玉仁、胡中豪;第四章作者为:葛宇航、毛玉仁;第五章作者为: 宓禹、樊怡江、毛玉仁;第六章作者为:董雪梅、徐文溢、毛玉仁。高云君为本书编撰总指导。 *本书得到了国家自然科学基金项目 (编号为 62025206、U23A20296、62302436)的资助。由衷 感谢国家自然科学基金委员会的支持。 *本书持续更新,GIT Hub链接为:https://github.com/ZJU-LLMs/Foundations-of-LLMs。
Page 3
(This page has no text content)
Page 4
目录 第 1章 语言模型基础 1 1.1 基于统计方法的语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.1 n-grams语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . 2 1.1.2 n-grams的统计学原理 . . . . . . . . . . . . . . . . . . . . . . 4 1.2 基于 RNN的语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.1 循环神经网络 RNN . . . . . . . . . . . . . . . . . . . . . . . . 7 1.2.2 基于 RNN的语言模型 . . . . . . . . . . . . . . . . . . . . . . 10 1.3 基于 Transformer的语言模型 . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.1 Transformer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 1.3.2 基于 Transformer的语言模型 . . . . . . . . . . . . . . . . . . . 17 1.4 语言模型的采样方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 1.4.1 概率最大化方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 19 1.4.2 随机采样方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 1.5 语言模型的评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.5.1 内在评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 1.5.2 外在评测 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 第 2章 大语言模型架构 33 2.1 大数据 +大模型→新智能 . . . . . . . . . . . . . . . . . . . . . . . . 34 2.1.1 大数据 +大模型→能力增强 . . . . . . . . . . . . . . . . . . 35 2.1.2 大数据 +大模型→能力扩展 . . . . . . . . . . . . . . . . . . 38 2.2 大语言模型架构概览 . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 2.2.1 主流模型架构的类别 . . . . . . . . . . . . . . . . . . . . . . . 40 2.2.2 模型架构的功能对比 . . . . . . . . . . . . . . . . . . . . . . . 44 2.2.3 模型架构的历史演变 . . . . . . . . . . . . . . . . . . . . . . . 47 2.3 基于 Encoder-only架构的大语言模型 . . . . . . . . . . . . . . . . . . 49 2.3.1 Encoder-only架构 . . . . . . . . . . . . . . . . . . . . . . . . . 49 2.3.2 BERT语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 50 2.3.3 BERT衍生语言模型 . . . . . . . . . . . . . . . . . . . . . . . 53
Page 5
目录 2.4 基于 Encoder-Decoder架构的大语言模型 . . . . . . . . . . . . . . . . 59 2.4.1 Encoder-Decoder架构 . . . . . . . . . . . . . . . . . . . . . . . 60 2.4.2 T5语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61 2.4.3 BART语言模型 . . . . . . . . . . . . . . . . . . . . . . . . . . 64 2.5 基于 Decoder-only架构的大语言模型 . . . . . . . . . . . . . . . . . . 66 2.5.1 Decoder-only架构 . . . . . . . . . . . . . . . . . . . . . . . . . 67 2.5.2 GPT系列语言模型 . . . . . . . . . . . . . . . . . . . . . . . . 67 2.5.3 LLAMA系列语言模型 . . . . . . . . . . . . . . . . . . . . . . 76 2.6 非 Transformer架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82 2.6.1 状态空间模型 SSM . . . . . . . . . . . . . . . . . . . . . . . . 83 2.6.2 训练时更新 TTT . . . . . . . . . . . . . . . . . . . . . . . . . . 90 第 3章 Prompt工程 97 3.1 Prompt工程简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.1.1 Prompt的定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 3.1.2 Prompt工程的定义 . . . . . . . . . . . . . . . . . . . . . . . . 99 3.1.3 Prompt分词向量化 . . . . . . . . . . . . . . . . . . . . . . . . 102 3.1.4 Prompt工程的意义 . . . . . . . . . . . . . . . . . . . . . . . . 105 3.2 上下文学习 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 3.2.1 上下文学习的定义 . . . . . . . . . . . . . . . . . . . . . . . . 107 3.2.2 演示示例选择 . . . . . . . . . . . . . . . . . . . . . . . . . . . 110 3.2.3 性能影响因素 . . . . . . . . . . . . . . . . . . . . . . . . . . . 112 3.3 思维链 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115 3.3.1 思维链提示的定义 . . . . . . . . . . . . . . . . . . . . . . . . 115 3.3.2 按部就班 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117 3.3.3 三思后行 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119 3.3.4 集思广益 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121 3.4 Prompt技巧 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.4.1 规范 Prompt编写 . . . . . . . . . . . . . . . . . . . . . . . . . 122 3.4.2 合理归纳提问 . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 3.4.3 适时使用 CoT . . . . . . . . . . . . . . . . . . . . . . . . . . . 133 3.4.4 善用心理暗示 . . . . . . . . . . . . . . . . . . . . . . . . . . . 136 3.5 相关应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 138 3.5.1 基于大语言模型的 Agent . . . . . . . . . . . . . . . . . . . . . 138 3.5.2 数据合成 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141 3.5.3 Text-to-SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144 ii
Page 6
3.5.4 GPTS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146 第 4章 参数高效微调 151 4.1 参数高效微调简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.1.1 下游任务适配 . . . . . . . . . . . . . . . . . . . . . . . . . . . 152 4.1.2 参数高效微调 . . . . . . . . . . . . . . . . . . . . . . . . . . . 154 4.1.3 参数高效微调的优势 . . . . . . . . . . . . . . . . . . . . . . . 155 4.2 参数附加方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 4.2.1 加在输入 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157 4.2.2 加在模型 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158 4.2.3 加在输出 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163 4.3 参数选择方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164 4.3.1 基于规则的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 165 4.3.2 基于学习的方法 . . . . . . . . . . . . . . . . . . . . . . . . . . 165 4.4 低秩适配方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 167 4.4.1 LoRA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 168 4.4.2 LoRA相关变体 . . . . . . . . . . . . . . . . . . . . . . . . . . 170 4.4.3 基于 LoRA插件的任务泛化 . . . . . . . . . . . . . . . . . . . 172 4.5 实践与应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 4.5.1 PEFT实践 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174 4.5.2 PEFT应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176 第 5章 模型编辑 185 5.1 模型编辑简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186 5.1.1 模型编辑思想 . . . . . . . . . . . . . . . . . . . . . . . . . . . 187 5.1.2 模型编辑定义 . . . . . . . . . . . . . . . . . . . . . . . . . . . 188 5.1.3 模型编辑性质 . . . . . . . . . . . . . . . . . . . . . . . . . . . 189 5.1.4 常用数据集 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192 5.2 模型编辑经典方法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194 5.2.1 外部拓展法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195 5.2.2 内部修改法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199 5.2.3 方法比较 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204 5.3 附加参数法:T-Patcher . . . . . . . . . . . . . . . . . . . . . . . . . . 205 5.3.1 补丁的位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 206 5.3.2 补丁的形式 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 5.3.3 补丁的实现 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 208 5.4 定位编辑法:ROME . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210 iii
Page 7
目录 5.4.1 知识存储位置 . . . . . . . . . . . . . . . . . . . . . . . . . . . 211 5.4.2 知识存储机制 . . . . . . . . . . . . . . . . . . . . . . . . . . . 214 5.4.3 精准知识编辑 . . . . . . . . . . . . . . . . . . . . . . . . . . . 215 5.5 模型编辑应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 5.5.1 精准模型更新 . . . . . . . . . . . . . . . . . . . . . . . . . . . 220 5.5.2 保护被遗忘权 . . . . . . . . . . . . . . . . . . . . . . . . . . . 222 5.5.3 提升模型安全 . . . . . . . . . . . . . . . . . . . . . . . . . . . 223 第 6章 检索增强生成 229 6.1 检索增强生成简介 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230 6.1.1 检索增强生成的背景 . . . . . . . . . . . . . . . . . . . . . . . 230 6.1.2 检索增强生成的组成 . . . . . . . . . . . . . . . . . . . . . . . 234 6.2 检索增强生成架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 6.2.1 RAG架构分类 . . . . . . . . . . . . . . . . . . . . . . . . . . . 236 6.2.2 黑盒增强架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 238 6.2.3 白盒增强架构 . . . . . . . . . . . . . . . . . . . . . . . . . . . 241 6.2.4 对比与分析 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 243 6.3 知识检索 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 6.3.1 知识库构建 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 244 6.3.2 查询增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246 6.3.3 检索器 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 248 6.3.4 检索效率增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . 252 6.3.5 检索结果重排 . . . . . . . . . . . . . . . . . . . . . . . . . . . 255 6.4 生成增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 256 6.4.1 何时增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 257 6.4.2 何处增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 262 6.4.3 多次增强 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 264 6.4.4 降本增效 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 267 6.5 实践与应用 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271 6.5.1 搭建简单 RAG系统 . . . . . . . . . . . . . . . . . . . . . . . . 271 6.5.2 RAG的典型应用 . . . . . . . . . . . . . . . . . . . . . . . . . 276 iv
Page 8
1 语言模型基础 语言是一套复杂的符号系统。语言符号通常在音韵(Phonology)、词法(Mor- phology)、句法(Syntax)的约束下构成,并承载不同的语义(Semantics)。语言 符号具有不确定性。同样的语义可以由不同的音韵、词法、句法构成的符号来表 达;同样的音韵、词法、句法构成的符号也可以在不同的语境下表达不同的语义。 因此,语言是概率的。并且,语言的概率性与认知的概率性也存在着密不可分的关 系 [15]。语言模型(Language Models, LMs)旨在准确预测语言符号的概率。从语 言学的角度,语言模型可以赋能计算机掌握语法、理解语义,以完成自然语言处理 任务。从认知科学的角度,准确预测语言符号的概率可以赋能计算机描摹认知、演 化智能。从 ELIZA [20]到 GPT-4 [16],语言模型经历了从规则模型到统计模型,再 到神经网络模型的发展历程,逐步从呆板的机械式问答程序成长为具有强大泛化 能力的多任务智能模型。本章将按照语言模型发展的顺序依次讲解基于统计方法 的 n-grams语言模型、基于循环神经网络(Recurrent Neural Network,RNN)的语 言模型,基于 Transformer的语言模型。此外,本章还将介绍如何将语言模型输出 概率值解码为目标文本,以及如何对语言模型的性能进行评估。 *本书持续更新,GIT Hub链接为:https://github.com/ZJU-LLMs/Foundations-of-LLMs。
Page 9
第 1章 语言模型基础 1.1 基于统计方法的语言模型 语言模型通过对语料库(Corpus)中的语料进行统计或学习来获得预测语言 符号概率的能力。通常,基于统计的语言模型通过直接统计语言符号在语料库中 出现的频率来预测语言符号的概率。其中,n-grams是最具代表性的统计语言模型。 n-grams 语言模型基于马尔可夫假设和离散变量的极大似然估计给出语言符号的 概率。本节首先给出 n-grams语言模型的计算方法,然后讨论 n-grams语言模型如 何在马尔可夫假设的基础上应用离散变量极大似然估计给出语言符号出现的概率。 1.1.1 n-grams语言模型 设包含 N 个元素的语言符号可以表示为 w1:N = {w1, w2, w3, ..., wN}。w1:N 可 以代表文本,也可以代表音频序列等载有语义信息的序列。为了便于理解,本章令 语言符号 w1:N 代表文本,其元素 wi ∈ w1:N 代表词,i = 1, ..., N。在真实语言模型 中,wi可以是 Token等其他形式。关于 Token的介绍将在第三章中给出。 n-grams语言模型中的 n-gram指的是长度为 n的词序列。n-grams语言模型通 过依次统计文本中的 n-gram及其对应的 (n-1)-gram在语料库中出现的相对频率来 计算文本 w1:N 出现的概率。计算公式如下所示: Pn-grams(w1:N) = N∏ i=n C(wi−n+1 : i) C(wi−n+1 : i−1) , (1.1) 其中,C(wi−n+1 : i)为词序列 {wi−n+1, ..., wi}在语料库中出现的次数,C(wi−n+1 : i−1) 为词序列 {wi−n+1, ..., wi−1}在语料库中出现的次数。其中,n为变量,当 n = 1时, 称之为 unigram,其不考虑文本的上下文关系。此时,分子 C(wi−n+1 : i) = C(wi), C(wi)为词 wi在语料库中出现的次数;分母 C(wi−n+1 : i−1) = Ctotal,Ctotal为语料 库中包含的词的总数。当 n = 2时,称之为 bigrams,其对前一个词进行考虑。此时, 2
Page 10
毛玉仁高云君 语料库 如同长颈鹿脖子由短变长的进化历程一样,语言模型也在不断进化。 脖子长是长颈鹿最醒目的特征之一。 脖子长使得长颈鹿看起来非常优雅,并为其在获取食物上带来便利。 长颈鹿脖子和人类脖子一样,只有七节颈椎,也容易患颈椎病。 有了长脖子的加持,长颈鹿可以观察到动物园里那些隐蔽的角落里发生的事情。 图 1.1: n-grams示例语料库。 分子 C(wi−n+1 : i) = C(wi−1, wi),C(wi−1, wi)为词序列 {wi−1, wi}在语料库中出现 的次数;分母 C(wi−n+1 : i−1) = C(wi−1),C(wi−1)为词 wi−1 在语料库中出现的次 数。以此类推,当 n = 3时,称之为 trigrams,其对前两个词进行考虑。当 n = 4 时,称之为 4-grams,其对前三个词进行考虑...... 下面通过一个 bigrams语言模型的例子来展示 n-grams语言模型对文本出现概 率进行计算的具体方式。假设语料库中包含 5个句子,如图1.1所示。基于此语料 库,应用 bigrams对文本“长颈鹿脖子长”(其由 {长颈鹿,脖子,长}三个词构成) 出现的概率进行计算,如下式所示: Pbigrams(长颈鹿,脖子,长) = C(长颈鹿,脖子) C(长颈鹿) · C(脖子,长) C(脖子) 。 (1.2) 在此语料库中,C(长颈鹿) = 5,C(脖子) = 6,C(长颈鹿,脖子) = 2,C(脖子,长) = 2,故有: Pbigrams(长颈鹿,脖子,长) = 2 5 · 2 6 = 2 15 。 (1.3) 在此例中,我们可以发现虽然“长颈鹿脖子长”并没有直接出现在语料库中, 但是 bigrams 语言模型仍可以预测出“长颈鹿脖子长”出现的概率有 2 15 。由此可 见,n-grams具备对未知文本的泛化能力。这也是其相较于传统基于规则的方法的 3
Page 11
第 1章 语言模型基础 优势。但是,这种泛化能力会随着 n的增大而逐渐减弱。应用 trigrams对文本“长 颈鹿脖子长”出现的概率进行计算,将出现以下“零概率”的情况: Ptrigrams(长颈鹿,脖子,长) = C(长颈鹿,脖子,长) C(长颈鹿,脖子) = 0。 (1.4) 因此,在 n-grams语言模型中,n代表了拟合语料库的能力与对未知文本的泛化能 力之间的权衡。当 n过大时,语料库中难以找到与 n-gram一模一样的词序列,可 能出现大量“零概率”现象;在 n过小时,n-gram难以承载足够的语言信息,不足 以反应语料库的特性。因此,在 n-grams语言模型中,n的值是影响性能的关键因 素。上述的“零概率”现象可以通过平滑(Smoothing)技术进行改善,具体技术 可参见文献 [11]。 本小节讲解了 n-grams 语言模型如何计算语言符号出现的概率,但没有分析 n-grams语言模型的原理。下一小节将从 n阶马尔可夫假设和离散型随机变量的极 大似然估计的角度对 n-grams语言模型背后的统计学原理进行阐述。 1.1.2 n-grams的统计学原理 n-grams语言模型是在 n阶马尔可夫假设下,对语料库中出现的长度为 n的词 序列出现概率的极大似然估计。本节首先给出 n阶马尔可夫假设的定义(见定义 1.1)和离散型随机变量的极大似然估计的定义(见定义 1.2),然后分析 n-grams如 何在马尔可夫假设的基础上应用离散变量极大似然估计给出语言符号出现的概率。 定义 1.1 (n阶马尔可夫假设) ♣ 对序列 {w1, w2, w3, ..., wN},当前状态 wN 出现的概率只与前 n 个状态 {wN−n, ..., wN−1}有关,即: P (wN |w1, w2, ..., wN−1) ≈ P (wN |wN−n, ..., wN−1)。 (1.5) 4
Page 12
毛玉仁高云君 定义 1.2 (离散型随机变量的极大似然估计) ♣ 给定离散型随机变量X 的分布律为 P{X = x} = p(x; θ),设X1, ..., XN 为来 自 X 的样本,x1, ..., xN 为对应的观察值,θ 为待估计参数。在参数 θ 下,分 布函数随机取到 x1, ..., xN 的概率为: p(x|θ) = N∏ i=1 p(xi; θ)。 (1.6) 构造似然函数为: L(θ|x) = p(x|θ) = N∏ i=1 p(xi; θ)。 (1.7) 离散型随机变量的极大似然估计旨在找到 θ使得 L(θ|x)取最大值。 在上述两个定义的基础上,对 n-grams的统计原理进行讨论。设文本 w1:N 出 现的概率为 P (w1:N)。根据条件概率的链式法则,P (w1:N)可由下式进行计算。 P (w1:N) = P (w1)P (w2|w1)P (w3|w1:2)....P (wN |w1:N−1) = N∏ i=1 P (wi|w1:i−1)。 (1.8) 根据 n阶马尔可夫假设,n-grams语言模型令 P (wi|wi−n:i−1)近似 P (wi|w1:i−1)。 然后,根据离散型随机变量的极大似然估计,令 C(wi−n:i) C(wi−n:i−1) 近似 P (wi|wi−n:i−1)。从 而,得到 n-grams语言模型的输出 Pn-grams(w1:N)是对 P (wi|w1:i−1)的近似。即, Pn-grams(w1:N) ≈ P (w1:N)。 (1.9) 下面,以 bigrams为例,介绍 C(wi−n:i) C(wi−n:i−1) 与极大似然估计间的关系。假设语料 库中共涵盖M 个不同的单词,{wi, wj}出现的概率为 P (wi, wj) ,对应出现的频率 为 C(wi, wj),则其出现的似然函数为: L(θ) = M∏ i=1 M∏ j=1 P (wi, wj) C(wi,wj), (1.10) 5
Page 13
第 1章 语言模型基础 其中,θ = {P (wi, wj)}Mi,j=1。根据条件概率公式 P (wi, wj) = P (wj|wi)P (wi),有 L(θ) = M∏ i=1 M∏ j=1 P (wj|wi) C(wi,wj)P (wi) C(wi,wj)。 (1.11) 其对应的对数似然函数为: Llog(θ)= M∑ i=1 M∑ j=1 C(wi,wj) logP (wj|wi) + M∑ i=1 M∑ j=1 C(wi,wj) logP (wi)。 (1.12) 因为 ∑M j=1 P (wj|wi) = 1,所以最大化对数似然函数可建模为如下的约束优化问题: max Llog(θ) s.t. M∑ j=1 P (wj|wi) = 1 for i ∈ [1,M ]。 (1.13) 其拉格朗日对偶为: L(λ, Llog) = Llog(θ) + M∑ i=1 λi( M∑ j=1 P (wj|wi)− 1)。 (1.14) 对其求关于 P (wj|wi)的偏导,可得: ∂L(λ, Llog) ∂P (wj|wi) = M∑ i=1 C(wi, wj) P (wj|wi) + M∑ i=1 λi。 (1.15) 当导数为 0时,有: P (wj|wi) = − C(wi, wj) λi 。 (1.16) 因 ∑M j=1 P (wj|wi) = 1,λi可取值为 − ∑M j=1 C(wi, wj),即 P (wj|wi) = C(wi, wj)∑M j=1 C(wi, wj) = C(wi, wj) C(wi) 。 (1.17) 上述分析表明 bigram语言模型中的 C(wi,wj) C(wi) 是对语料库中的长度为 2的词序 列的 P (wj|wi)的极大似然估计。该结论可扩展到 n > 2的其他 n-grams语言模型 模型中。 n-grams语言模型通过统计词序列在语料库中出现的频率来预测语言符号的概 率。其对未知序列有一定的泛化性,但也容易陷入“零概率”的困境。随着神经网 络的发展,基于各类神经网络的语言模型不断被提出,泛化能力越来越强。基于神 6
Page 14
毛玉仁高云君 经网络的语言模型不再通过显性的计算公式对语言符号的概率进行计算,而是利 用语料库中的样本对神经网络模型进行训练。本章接下来将分别介绍两类最具代 表性的基于神经网络的语言模型:基于 RNN的语言模型和基于 Transformer的语 言模型。 1.2 基于 RNN的语言模型 循环神经网络(Recurrent Neural Network, RNN)是一类网络连接中包含环路的 神经网络的总称。给定一个序列,RNN的环路用于将历史状态叠加到当前状态上。 沿着时间维度,历史状态被循环累积,并作为预测未来状态的依据。因此,RNN可 以基于历史规律,对未来进行预测。基于 RNN的语言模型,以词序列作为输入,基 于被循环编码的上文和当前词来预测下一个词出现的概率。本节将先对原始 RNN 的基本原理进行介绍,然后讲解如何利用 RNN构建语言模型。 1.2.1 循环神经网络 RNN 按照推理过程中信号流转的方向,神经网络的正向传播范式可分为两大类:前 馈传播范式和循环传播范式。在前馈传播范式中,计算逐层向前,“不走回头路”。 而在循环传播范式中,某些层的计算结果会通过环路被反向引回前面的层中,形 成“螺旋式前进”的范式。采用前馈传播范式的神经网络可以统称为前馈神经网 络(Feed-forward Neural Network,FNN),而采用循环传播范式的神经网络被统称 为循环神经网络(Recurrent Neural Network, RNN)。以包含输入层、隐藏层、输出 层的神经网络为例。图1.2中展示了最简单的 FNN和 RNN的网络结构示意图,可 见 FNN网络结构中仅包含正向通路。而 RNN的网络结构中除了正向通路,还有 一条环路将某层的计算结果再次反向连接回前面的层中。 7
Page 15
第 1章 语言模型基础 前馈 循环 图 1.2: 前馈传播范式与循环传播范式的对比。 设输入序列为 {x1, x2, x3, ..., xt},隐状态为 {h1, h2, h3, ..., ht},对应输出为 {o1, o2, o3, ..., ot},输入层、隐藏层、输出层对应的网络参数分别为 WI , WH , WO。 g(·)为激活函数,f(·)为输出函数。将输入序列一个元素接着一个元素地串行输入 时,对于 FNN,当前的输出只与当前的输入有关,即 ot = f(WOg(WIxt))。 (1.18) 此处为方便对比,省去了偏置项。独特的环路结构导致 RNN与 FNN的推理过程 完全不同。RNN在串行输入的过程中,前面的元素会被循环编码成隐状态,并叠 加到当前的输入上面。其在 t时刻的输出如下: ht = g(WHht−1 +WIxt) = g(WHg(WHht−2 +WIxt−1) +WIxt) = · · · · ·· ot = f(WOht)。 (1.19) 其中, t > 0, h0 = 0。将此过程按照时间维度展开,可得到 RNN的推理过程,如 图1.3所示。注意,图中展示的 t时刻以前的神经元,都是过往状态留下的“虚影” 并不真实存在,如此展开只是为了解释 RNN的工作方式。 可以发现,在这样一个元素一个元素依次串行输入的设定下,RNN可以将历 史状态以隐变量的形式循环叠加到当前状态上,对历史信息进行考虑,呈现出螺旋 式前进的模式。但是,缺乏环路的 FNN仅对当前状态进行考虑,无法兼顾历史状 态。以词序列 {长颈鹿,脖子,长}为例,在给定“脖子”来预测下一个词是什么的 时候,FFN将仅仅考虑“脖子”来进行预测,可能预测出的下一词包含“短”,“疼” 等等;而 RNN将同时考虑“长颈鹿”和“脖子”,其预测出下一词是“长”的概率 将更高,历史信息“长颈鹿”的引入,可以有效提升预测性能。 8
Page 16
毛玉仁高云君 ....... 图 1.3: RNN推理过程从时间维度拆解示意图。 如果 FNN想要做到对历史信息进行考虑,则需要将所有元素同时输入到模型 中去,这将导致模型参数量的激增。虽然,RNN的结构可以让其在参数量不扩张的 情况下实现对历史信息的考虑,但是这样的环路结构给 RNN的训练带来了挑战。 在训练 RNN时,涉及大量的矩阵联乘操作,容易引发梯度衰减或梯度爆炸问题。 具体分析如下: 设 RNN语言模型的训练损失为: L = L(x, o,WI ,WH ,WO) = t∑ i=1 l(oi, yi)。 (1.20) 其中,l(·)为损失函数,yi为标签。 损失 L关于参数WH 的梯度为: ∂L WH = t∑ i=1 ∂lt ∂ot · ∂ot ∂ht · ∂ht ∂hi · ∂hi ∂WH 。 (1.21) 其中, ∂ht ∂hi = ∂ht ∂ht−1 ∂ht−1 ∂ht−2 ... ∂hi+1 ∂hi = t∏ k=i+1 ∂hk ∂hk−1 。 (1.22) 9
Page 17
第 1章 语言模型基础 并且, ∂hk ∂hk−1 = ∂g(zk) ∂zk WH。 (1.23) 其中,zk = WHhk−1 +WIxk。综上,有 ∂L WH = t∑ i=1 ∂lt ∂ot · ∂ot ∂ht · t∏ k=i ∂g(zk) ∂zk WH · ∂hi ∂WH 。 (1.24) 从上式中可以看出,求解 WH 的梯度时涉及大量的矩阵级联相乘。这会导致 其数值被级联放大或缩小。文献 [17]中指出,当WH 的最大特征值小于 1时,会 发生梯度消失;当WH 的最大特征值大于 1时,会发生梯度爆炸。梯度消失和爆炸 导致训练上述 RNN非常困难。为了解决梯度消失和爆炸问题,GRU [4]和 LSTM [8]引入门控结构,取得了良好效果,成为主流的 RNN网络架构。 1.2.2 基于 RNN的语言模型 对词序列 {w1, w2, w3, ..., wN},基于 RNN的语言模型每次根据当前词 wi和循 环输入的隐藏状态 hi−1,来预测下一个词 wi+1出现的概率,即 P (wi+1|w1:i) = P (wi+1|wi, hi−1)。 (1.25) 其中,当 i = 1时,P (wi+1|wi, hi−1) = P (w2|w1)。基于此,{w1, w2, w3, ..., wN}整 体出现的概率为: P (w1:N) = N−1∏ i=1 P (wi+1|wi, hi−1)。 (1.26) 在基于 RNN的语言模型中,输出为一个向量,其中每一维代表着词典中对应 词的概率。设词典D中共有 |D|个词 {ŵ1, ŵ2, ŵ3, ..., ˆw|D|},基于 RNN的语言模型 的输出可表示为 oi = {oi[ŵd]}|D| d=1,其中,oi[ŵd]表示词典中的词 ŵd出现的概率。因 此,对基于 RNN的语言模型有 P (w1:N) = N−1∏ i=1 P (wi+1|w1:i) = N∏ i=1 oi[wi+1]。 (1.27) 10
Page 18
毛玉仁高云君 长颈鹿 脖子 0.5 0.2 0.1 吃 头部 长颈鹿脖子 长 0.6 0.1 0.05 疼 短 ....... ....... ....... ....... 图 1.4: RNN计算词序列概率示意图。 以下举例对上述过程进行说明。假设词表D = {脖子,头部,吃,长,疼,吃,短}, 基于 RNN的语言模型计算“长颈鹿脖子长”的概率的过程如图1.4所示。 P (长颈鹿脖子长) = P (脖子|长颈鹿) · P (长|脖子, h1) = 0.2× 0.6 = 0.12。 (1.28) 基于以上预训练任务,对 RNN语言模型进行训练时,可选用如下交叉熵函数 作为损失函数。 lCE(oi) = − |D|∑ d=1 I(ŵd = wi+1) log oi[wi+1] = − log oi[wi+1], (1.29) 其中,I(·)为指示函数,当 ŵd = wi+1时等于 1,当 ŵd ̸= wi+1时等于 0。 设训练集为 S,RNN语言模型的损失可以构造为: L(S,WI ,WH ,WO) = 1 N |S| |S|∑ s=1 N∑ i=1 lCE(oi,s), (1.30) 其中,oi,s 为 RNN语言模型输入第 s个样本的第 i个词时的输出。此处为方便表 述,假设每个样本的长度都为 N。在此损失的基础上,构建计算图,进行反向传 播,便可对 RNN语言模型进行训练。上述训练过程结束之后,我们可以直接利用 此模型对序列数据进行特征抽取。抽取的特征可以用于解决下游任务。此外,我们 还可以对此语言模型的输出进行解码,在“自回归”的范式下完成文本生成任务。 在自回归中,第一轮,我们首先将第一个词输入给 RNN语言模型,经过解码,得 到一个输出词。然后,我们将第一轮输出的词与第一轮输入的词拼接,作为第二轮 11
Page 19
第 1章 语言模型基础 的输入,然后解码得到第二轮的输出。接着,将第二轮的输出和输入拼接,作为第 三轮的输入,以此类推。每次将本轮预测到的词拼接到本轮的输入上,输入给语言 模型,完成下一轮预测。在循环迭代的“自回归”过程中,我们不断生成新的词, 这些词便构成了一段文本。 但上述“自回归”过程存在着两个问题:(1)错误级联放大,选用模型自己生 成的词作为输入可能会有错误,这样的错误循环输入,将会不断的放大错误,导 致模型不能很好拟合训练集;(2)串行计算效率低,因为下一个要预测的词依赖 上一次的预测,每次预测之间是串行的,难以进行并行加速。为了解决上述两个 问题,“Teacher Forcing”[21] 在语言模型预训练过程中被广泛应用。在 Teacher Forcing中,每轮都仅将输出结果与“标准答案”(Ground Truth)进行拼接作为下 一轮的输入。在图1.4所示的例子中,第二轮循环中,我们用“长颈鹿脖子”来预 测下一个词“长”,而非选用 o1中概率最高的词“吃”或者其他可能输出的词。 但是,Teacher Forcing的训练方式将导致曝光偏差(Exposure Bias)的问题。曝 光偏差是指 Teacher Forcing训练模型的过程和模型在推理过程存在差异。Teacher Forcing在训练中,模型将依赖于“标准答案”进行下一次的预测,但是在推理预 测中,模型“自回归”的产生文本,没有“标准答案”可参考。所以模型在训练过 程中和推理过程中存在偏差,可能推理效果较差。为解决曝光偏差的问题,Bengio 等人提出了针对 RNN提出了 Scheduled Sampling方法 [2]。其在 Teacher Forcing的 训练过程中循序渐进的使用一小部分模型自己生成的词代替“标准答案”,在训练 过程中对推理中无“标准答案”的情况进行预演。 由于 RNN模型循环迭代的本质,其不易进行并行计算,导致其在输入序列较 长时,训练较慢。下节将对容易并行的基于 Transformer的语言模型进行介绍。 12
Page 20
毛玉仁高云君 1.3 基于 Transformer的语言模型 Transformer 是一类基于注意力机制(Attention)的模块化构建的神经网络结 构。给定一个序列,Transformer将一定数量的历史状态和当前状态同时输入,然 后进行加权相加。对历史状态和当前状态进行“通盘考虑”,然后对未来状态进行 预测。基于 Transformer的语言模型,以词序列作为输入,基于一定长度的上文和 当前词来预测下一个词出现的概率。本节将先对 Transformer的基本原理进行介绍, 然后讲解如何利用 Transformer构建语言模型。 1.3.1 Transformer Transformer是由两种模块组合构建的模块化网络结构。两种模块分别为:(1) 注意力(Attention)模块;(2)全连接前馈(Fully-connected Feedforwad)模块。其中, 自注意力模块由自注意力层(Self-Attention Layer)、残差连接(Residual Connections) 和层正则化(Layer Normalization)组成。全连接前馈模块由全连接前馈层,残差 连接和层正则化组成。两个模块的结构示意图如图1.5所示。以下详细介绍每个层 的原理及作用。 注意力模块 注 意 力 层 层 正 则 化 全连接前馈模块 层 正 则 化 全 连 接 前 馈 层 输入 输出 输入 输出输入 输入 图 1.5: 注意力模块与全连接前馈模块。 13
The above is a preview of the first 20 pages. Register to read the complete e-book.

Recommended for You

Loading recommended books...
Failed to load, please try again later

Tip the Site

Scan the WeChat Pay or Alipay code to tip. No login required.

WeChat Pay
Alipay
Back to List