引言
一、什么是语言模型
-
语言模型(LM:language model)
-
定义:一种对令牌序列(token)的概率分布
-
说明:
-
假设我们有一个令牌集的词汇表 V 。语言模型p为每个令牌序列 x1, …,xL ∈ V 分配一个概率(介于0和1之间的数字):
p ( x 1 , . . . , x L ) p(x_1,...,x_L ) p(x1,...,xL) -
概率的大小
-
-
example:
- 我们有一个词汇表为{ate, ball, cheese, mouse, the},语言模型可能会分配以下概率:
p ( t h e , m o u s e , a t e , t h e , c h e e s e ) = 0.02 p ( t h e , c h e e s e a t e , t h e , m o u s e ) = 0.01 p ( m o u s e , t h e , t h e , c h e e s e , a t e ) = 0.0001 p(the, mouse, ate, the, cheese)=0.02\\ p(the, cheese ate, the, mouse)=0.01\\ p(mouse, the, the, cheese, ate)=0.0001 p(the,mouse,ate,the,cheese)=0.02p(the,cheeseate,the,mouse)=0.01p(mouse,the,the,cheese,ate)=0.0001
- 我们有一个词汇表为{ate, ball, cheese, mouse, the},语言模型可能会分配以下概率:
-
注意:由于各种知识(如语法知识、语义知识等)的存在,要尽量使序列出现的概率是建立在各种知识的基础上(简而言之,就是不合常理的概率低,符合常理的概率高)
-
也可以做生成任务(根据语言模型生成一个序列)
1. 自回归语言模型(Autoregressive language models)
-
理论储备:
-
联合分布 p ( x 1 : L ) p(x_{1:L}) p(x1:L)的常见写法是使用概率的链式法则:
p ( x 1 : L ) = p ( x 1 ) p ( x 2 ∣ x 1 ) p ( x 3 ∣ x 1 , x 2 ) ⋯ p ( x L ∣ x 1 : L − 1 ) = ∏ i = 1 L p ( x i ∣ x 1 : i − 1 ) . p(x_{1:L}) = p(x_1) p(x_2 \mid x_1) p(x_3 \mid x_1, x_2) \cdots p(x_L \mid x_{1:L-1}) = \prod_{i=1}^L p(x_i \mid x_{1:i-1}). p(x1:L)=p(x1)p(x2∣x1)p(x3∣x1,x2)⋯p(xL∣x1:L−1)=i=1∏Lp(xi∣x1:i−1). -
p ( x i ∣ x 1 : i − 1 ) p(x_{i}∣x_{1:i−1}) p(xi∣x1:i−1)是指给定前面记号 x 1 : i − 1 x_{1:i−1} x1:i−1后下一个记号 x i x_i xi的条件概率分布
-
example:
-
p ( t h e , m o u s e , a t e , t h e , c h e e s e ) = p ( t h e ) p ( m o u s e ∣ t h e ) p ( a t e ∣ t h e , m o u s e ) p ( t h e ∣ t h e , m o u s e , a t e ) p ( c h e e s e ∣ t h e , m o u s e , a t e , t h e ) . \begin{align*} p({the}, {mouse}, {ate}, {the}, {cheese}) = \, & p({the}) \\ & p({mouse} \mid {the}) \\ & p({ate} \mid {the}, {mouse}) \\ & p({the} \mid {the}, {mouse}, {ate}) \\ & p({cheese} \mid {the}, {mouse}, {ate}, {the}). \end{align*} p(the,mouse,ate,the,cheese)=p(the)p(mouse∣the)p(ate∣the,mouse)p(the∣the,mouse,ate)p(cheese∣the,mouse,ate,the).
-
自回归语言模型
-
特点:可以利用例如前馈神经网络等方法有效计算出每个条件概率分布 p ( x i ∣ x 1 : i − 1 ) p(x_{i}∣x_{1:i−1}) p(xi∣x1:i−1)
-
生成序列 x 1 : L x_{1:L} x1:L的过程:
-
一次生成一个令牌(token),该令牌基于之前生成的令牌进行计算获得
for i = 1 , … , L : x i ∼ p ( x i ∣ x 1 : i − 1 ) 1 / T , \begin{aligned} \text { for } i & =1, \ldots, L: \\ x_i & \sim p\left(x_i \mid x_{1: i-1}\right)^{1 / T}, \end{aligned} for ixi=1,…,L:∼p(xi∣x1:i−1)1/T,-
T >=0 是一个控制我们希望从语言模型中得到多少随机性的温度参数
-
T=0:确定性地在每个位置 i 选择最可能的令牌
-
T=1:从纯语言模型“正常(normally)”采样
-
T=∞:从整个词汇表上的均匀分布中采样
-
然而,如果我们仅将概率提高到 1 / T 1/T 1/T 的次方,概率分布可能不会加和到 1。我们可以通过重新标准化分布来解决这个问题。我们将标准化版本 p T ( x i ∣ x 1 : i − 1 ) ∝ p ( x i ∣ x 1 : i − 1 ) 1 / T p_{T}(x_{i}∣x_{1:i−1})∝p(x_{i}∣x_{1:i−1})^{1/T} pT(xi∣x1:i−1)∝p(xi∣x1:i−1)1/T 称为退火条件概率分布。
-
具体来说,这个温度参数会应用于每一步的条件概率分布 p ( x i ∣ x 1 : i − 1 ) p(x_{i}∣x_{1:i−1}) p(xi∣x1:i−1) ,将其幂变为 1 / T 1/T 1/T 。这意味着当 T T T 值较高时,我们会获得更平均的概率分布,生成的结果更具随机性;反之,当 T T T 值较低时,模型会更倾向于生成概率较高的令牌。
- example:
p ( cheese ) = 0.4 , p ( mouse ) = 0.6 p T = 0.5 ( cheese ) = 0.31 , p T = 0.5 (mouse ) = 0.69 p T = 0.2 (cheese ) = 0.12 , p T = 0.2 (mouse) = 0.88 p T = 0 (cheese ) = 0 , p T = 0 (mouse ) = 1 \begin{array}{cl} p(\text { cheese })=0.4, & p(\text { mouse })=0.6 \\ p_{T=0.5}(\text { cheese })=0.31, & \left.p_{T=0.5} \text { (mouse }\right)=0.69 \\ \left.p_{T=0.2} \text { (cheese }\right)=0.12, & p_{T=0.2} \text { (mouse) }=0.88 \\ \left.p_{T=0} \text { (cheese }\right)=0, & \left.p_{T=0} \text { (mouse }\right)=1 \end{array} p( cheese )=0.4,pT=0.5( cheese )=0.31,pT=0.2 (cheese )=0.12,pT=0 (cheese )=0,p( mouse )=0.6pT=0.5 (mouse )=0.69pT=0.2 (mouse) =0.88pT=0 (mouse )=1
- example:
-
-
-
-
-
也有非自回归的条件生成,更一般地,我们可以通过指定某个前缀序列 x 1 : i x_{1:i} x1:i (称为提示)并采样其余的 x i + 1 : L x_{i+1:L} xi+1:L (称为补全)来进行条件生成
二、大模型相关历史回顾
1 信息理论
-
熵:度量概率分布的概念,由克劳德·香农在1948年《通信的数学理论》中提出
H ( p ) = ∑ x p ( x ) log 1 p ( x ) . H(p) = \sum_x p(x) \log \frac{1}{p(x)}. H(p)=x∑p(x)logp(x)1.- 实际上是一个衡量将样本 x ∼ p x∼p x∼p 编码(即压缩)成比特串所需要的预期比特数的度量(数量)
- 熵的值越小,表明序列的结构性越强,编码的长度就越短。
2 英语的熵
-
将英语表示为一系列的字母
-
交叉熵
H ( p , q ) = − ∑ x p ( x ) log q ( x ) H(p, q)=-\sum_x p(x) \log q(x) H(p,q)=−x∑p(x)logq(x)
测量需要多少比特来编码样本x~p,使用由模型q给出的压缩方案 -
印象里数学之美中也有相关的描述,之后记得去看看
3 用于下游应用的N-gram模型
-
语言模型首先被应用于生成文本的实践应用
- 1970年代的语音识别(输入:声音信号,输出:文本)
- 1990年代的机器翻译(输入:源语言的文本,输出:目标语言的文本)
-
噪声信道模型:用于实现上述实践应用
-
语音识别:
-
我们假设有一些从某个分布p中抽取的文本
-
这些文本被转换为语音(声音信号)
-
然后给定语音,我们希望恢复(最有可能的)文本。(贝叶斯定理实现)
p ( text ∣ speech ) ∝ p ( text ) ⏟ language model p ( speech ∣ text ) ⏟ acoustic model . p(\text{text} \mid \text{speech}) \propto \underbrace{p(\text{text})}_\text{language model} \underbrace{p(\text{speech} \mid \text{text})}_\text{acoustic model}. p(text∣speech)∝language model p(text)acoustic model p(speech∣text).
-
-
-
n-gram模型:关于 x i x_{i} xi的预测只依赖于最后的 n − 1 n-1 n−1 个字符 x i − ( n − 1 ) : i − 1 x_{i−(n−1):i−1} xi−(n−1):i−1 ,而不是整个历史(即只根据要预测字符前面的n-1个字符进行预测,抛弃掉更前面的字符携带的信息):
p ( x i ∣ x 1 : i − 1 ) = p ( x i ∣ x i − ( n − 1 ) : i − 1 ) . p(x_i \mid x_{1:i-1}) = p(x_i \mid x_{i-(n-1):i-1}). p(xi∣x1:i−1)=p(xi∣xi−(n−1):i−1).-
example:
- trigram(n=3)模型:
p ( c h e e s e ∣ t h e , m o u s e , a t e , t h e ) = p ( c h e e s e ∣ a t e , t h e ) p(cheese|the,mouse,ate,the) = p(cheese|ate,the) p(cheese∣the,mouse,ate,the)=p(cheese∣ate,the)
- trigram(n=3)模型:
-
优点:
- 拟合到数据上非常便宜且可扩展
-
缺点:
- 如果n太小,那么模型将无法捕获长距离的依赖关系,会丢失很多信息
- 如果n太大,统计上将无法得到概率的好估计(即使在“大”语料库中,几乎所有合理的长序列都出现0次)
-
4 神经语言模型
-
在神经网络引入语言模型之后提出
-
上下文的长度仍然受到n的限制,但现在可以接受更大的n
-
2003年以来,神经语言建模的两个关键发展阶段
- Recurrent Neural Networks(RNNs),包括长短期记忆(LSTMs)
- Transformers是一个较新的架构(于2017年为机器翻译开发),再次返回固定上下文长度n,但更易于训练(并利用了GPU的并行性)
计算 | 统计 | |
---|---|---|
N-gram模型 | 高效 | 低效 |
神经语言模型 | 低效 | 高效 |
三、这门课的意义
- 大型语言模型中的“大型”主要是指神经语言模型的规模
1. 能力
- 迄2018年为止,语言模型主要作为较大系统的组成部分使用(例如语音识别或机器翻译),但如今语言模型越来越具备作为独立系统的能力。
- 语言模型具备条件生成的能力:在给定提示的情况下生成完成的文本
- 填空的方式进行问答
- 解决词汇类比的问题
- 通过提示生成文章的标题
- 上下文学习
- 等等
2. 现实世界中的语言模型
- 研究领域:
- 几乎所有涉及情感分类、问答、摘要和机器翻译等各种任务
- 工业界:
- 大都封闭,无法确认
- 但仍有部分公开的模型正在被使用
- 语言模型(或任何技术)在工业界的使用是复杂的
- 可能会针对特定场景进行微调,并被精简为更具计算效率的较小模型以进行大规模服务(大模型–精简–>小模型–提供服务–>大模型)
- 多个系统协同给出答案
- 风险:
- 可靠性:
- 答案不正确
- 更严重的是:答案似乎是正确的
- 社会偏见
- 它们在不同人群之间存在性能差异,并且其预测可能会强化刻板印象。(性别偏见等)
- 基于带有偏见的数据进行训练的模型将继承数据的特性
- 思考:
- 如何更谨慎地选择数据以减少偏见?
- 在训练过程中可以采取哪些干预措施?
- 退一步说,我们如何定义或衡量社会偏见?
- 有害性
- 用于训练的数据可能包含冒犯性的信息
- 基于这些数据的聊天机器人会有风险
- 虚假信息
- 能够在降低风险的情况下极大的降低不当行为的成本(虚假新闻的制造)
- 安全性
- 现在大模型是基于公共互联网的抓取进行训练的,这意味着任何人都可以建立一个可能进入训练数据的网站。从而会被攻击者攻击(加入不良信息的数据集)
- 如何解决毒性文档的问题(如何筛选)
- 法律考虑
- 用于训练的数据是否通过了授权
- 成本和环境影响
- 使用过程中可能非常昂贵
- 训练通常要数千个GPU的并行化(一次性成本)
- 对训练模型进行推理以进行预测也会带来成本(持续性的成本)
- 供应大模型所需的能源,以及由此产生的碳排放和最终的环境影响(社会成本,这个成本是否过于高估(基于个人直觉),需要查询资料)
- 使用过程中可能非常昂贵
- 获取
- 越来越多的模型倾向于封闭,只能通过API访问获得。
- 似乎慢慢向专有化的方向发展
- 可靠性:
四、课程架构
- 大型语言模型的行为
- 方式:通过黑匣子API访问模型
- 目标:理解这些被称为大型语言模型的对象的行为
- 大型语言模型的数据背后
- 方式:深入研究用于训练大型语言模型的数据
- 目标:解决诸如安全性、隐私和法律考虑等问题
- 构建大型语言模型
- 方式及目的:研究如何构建大型语言模型(模型架构、训练算法等)
- 超越大型语言模型
- 目的:跳出语言模型的视角,以更高的视角去看待语言模型及其相关问题
参考资料:DataWhale大模型理论基础