【学习笔记】语言模型的发展历程

server/2025/3/15 22:40:59/

语言模型的发展大致经历了以下四个阶段
<a class=语言模型发展历程" />

统计语言模型(SLM)

主要建立在统计学习的理论框架下,尝试解决的是如下问题
p ( x t ∣ x 1 , x 2 , … x t − 1 ) (1) p(x_{t}|x_{1},x_{2},\dots x_{t-1})\tag{1} p(xtx1,x2,xt1)(1)
根据之前的历史信息预测接下来的token
因为保留过去所有信息用于预测可能过于困难,有时候会只保留前 τ \tau τ个历史信息,此时表示为
p ( x t ∣ x t − τ , … x t − 1 ) (2) p(x_{t}|x_{t-\tau},\dots x_{t-1})\tag{2} p(xtxtτ,xt1)(2)
那么想要计算这个,我们需要首先对句子的概率进行建模,这有多种方式
P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ) P ( x 3 ) P ( x 4 ) P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 2 ) P ( x 4 ∣ x 3 ) P ( x 1 , x 2 , x 3 , x 4 ) = P ( x 1 ) P ( x 2 ∣ x 1 ) P ( x 3 ∣ x 1 , x 2 ) P ( x 4 ∣ x 1 , x 2 , x 3 ) (3) P(x_{1},x_{2},x_{3},x_{4}) = P(x_{1})P(x_{2})P(x_{3})P(x_{4})\\ P(x_{1},x_{2},x_{3},x_{4}) = P(x_{1})P(x_{2}|x_{1})P(x_{3}|x_{2})P(x_{4}|x_{3})\\ P(x_{1},x_{2},x_{3},x_{4}) = P(x_{1})P(x_{2}|x_{1})P(x_{3}|x_{1},x_{2})P(x_{4}|x_{1},x_{2},x_{3})\tag{3} P(x1,x2,x3,x4)=P(x1)P(x2)P(x3)P(x4)P(x1,x2,x3,x4)=P(x1)P(x2x1)P(x3x2)P(x4x3)P(x1,x2,x3,x4)=P(x1)P(x2x1)P(x3x1,x2)P(x4x1,x2,x3)(3)
不难注意到每一个token的依赖序列是不同的,这可以记为阶数,k阶依赖称为 k + 1 k+1 k+1阶语法
对于语法中不同的条件概率的概率的计算,可以通过贝叶斯公式来实现,即
P ( x ∣ x ′ ) = P ( x ′ , x ) P ( x ′ ) = n ( x ′ , x ) n ( x ′ ) (4) P(x|x') = \frac{P(x',x)}{P(x')} = \frac{n(x',x)}{n(x')}\tag{4} P(xx)=P(x)P(x,x)=n(x)n(x,x)(4)
其中 n ( x ) n(x) n(x)表示 x x x的出现次数。但是这种计算方式对于稀疏数据是存在问题的,如下所示

平滑

只需要对 ( 4 ) (4) (4)式添加极小项即可,变为
P ( x ∣ x ′ ) = n ( x ′ , x ) + 1 n ( x ′ ) + V (5) P(x|x') = \frac{n(x',x)+1}{n(x')+V}\tag{5} P(xx)=n(x)+Vn(x,x)+1(5)
其中 V V V是词典大小。这样操作依然可以保持概率分布的相关性质

回退

分母词组可能出现次数过少,可以将其退化
P ( x i ∣ x i − 1 , x i − 2 ) → P ( x i ∣ x i − 1 ) (6) P(x_{i}|x_{i-1},x_{i-2})\rightarrow P(x_{i}|x_{i-1})\tag{6} P(xixi1,xi2)P(xixi1)(6)

总结

总之,可以通过序列建模加上极大似然优化来实现一定的next token预测的任务,但是因为历史信息长度被限制为 τ \tau τ,无法实现长距离依赖,以及参数量有限,表达能力有限,后面提出了更好的模型

神经语言模型(NLM)

使用神经网络来进行序列生成
对于之前使用的问题定义
p ( x t ∣ x 1 , x 2 , … x t − 1 ) (7) p(x_{t}|x_{1},x_{2},\dots x_{t-1})\tag{7} p(xtx1,x2,xt1)(7)
其实也有另外一种表示手段
p ( x t ∣ w t − 1 ) , w r t . w t − 1 = f ( x 1 , x 2 , … x t − 1 ) (8) p(x_{t}|w_{t-1}), wrt.\ w_{t-1} = f(x_{1},x_{2},\dots x_{t-1})\tag{8} p(xtwt1),wrt. wt1=f(x1,x2,xt1)(8)
相当于通过一个中间变量将之前信息统一寄存了,这样的好处是避免了对之前每一个时刻的信息显式建模,这同时也在一定程度上解决了数据稀疏的问题:哪怕文本没有实际出现过,它在这里依然有可能出现,而只要它出现过,影响就会反映在参数的改变上。
并且这里开始使用向量形式来表示单词,相比原本添加了更多参数,提高了表达能力。
这里的模型有RNN,GRU,LSTM,word2vec等等。

预训练模型(PLM)

与早期的词嵌入模型相 比,预训练语言模型在训练架构与训练数据两个方面进行了改进与创新
典型模型有GPT-1,BERT,ELMo等,主要确立了预训练-微调的训练步骤。预训练阶段旨在通过大规模无标注文本建立模型的基础能力,而微调阶段则使用有标注数据对于模型进行特定任务的适配,从而
更好地解决下游的自然语言处理任务

其中GPT系列作为自回归语言模型,只使用了Decoder架构

其Loss设计依然为
m i n θ log ⁡ ( P θ ( X ) ) = − l o g ∏ t = 1 T p θ ( x t ∣ X < t ) (9) min_{\theta}\log(P_{\theta}(X)) = -log \prod_{t=1}^{T}p_{\theta}(x_{t}|X_{<t})\tag{9} minθlog(Pθ(X))=logt=1Tpθ(xtX<t)(9)
BERT等自编码模型,则是只采用了Encoder架构

其Loss设计为
m i n θ log ⁡ ( P θ ( X ∣ X ^ ) ) ≈ − l o g ∏ t = 1 T m t p θ ( x t ∣ X ^ ) w r t . m t = { 1 当前位置被遮掩 0 当前位置未被遮掩 (10) min_{\theta}\log(P_{\theta}(X|\hat{X})) \approx -log \prod_{t=1}^{T}m_{t}p_{\theta}(x_{t}|\hat{X})\tag{10}\\ wrt. m_{t} = \left\{\begin{matrix} 1& \text{当前位置被遮掩}\\ 0& \text{当前位置未被遮掩} \end{matrix}\right. minθlog(Pθ(XX^))logt=1Tmtpθ(xtX^)wrt.mt={10当前位置被遮掩当前位置未被遮掩(10)

一般来说,Encoder架构被认为更适合去解决自然语 言理解任务(如完形填空等),而Decoder架构更适合解决自然语言生成任务(如文 本摘要等)

语言模型(LLM)

相比之前的模型,llm在模型参数量,训练数据量上面都有了很大的跨越,并且需要更加精细的训练手段来实现更好的性能与泛化性,这是由scaling law指导的。
最终在任务求解上能力有了显著提升,能够不再依靠下游任务数据的微调进行通用任务的求解


http://www.ppmy.cn/server/175272.html

相关文章

Django-ORM-select_related

Django-ORM-select_related 作用使用场景示例无 select_related 的查询有 select_related 的查询 如何理解 "只发起一次查询&#xff0c;包含所有相关作者信息"1. select_related 的工作原理2. 具体示例解析3. 为什么只发起一次查询 数据库中的books量巨大&#xff0…

SpringMVC(三)响应处理

目录 响应数据类型&#xff1a; 一、自动 JSON 响应 1 实现解析 二、文件下载 1 核心实现 2 优化与问题 响应数据类型&#xff1a; 一、自动 JSON 响应 1 实现解析 RestController 作用 类注解&#xff0c;自动将方法返回值序列化为 JSON&#xff08;无需 ResponseBody …

C#控制台应用程序学习——3.11

一、整型数字计算 如果我们想执行以下程序&#xff1a;程序提示用户输入一个数字并输出 num 20 的结果&#xff0c;我们的思维应该是这样的&#xff1a; using System;public class Class1 {public static void Main(string[] args){Console.WriteLine("Enter the first…

002-告别乱码-libiconv-C++开源库108杰

本课文包含三个视频&#xff01; 为什么中文版Windows是编程出现乱码的高发地带&#xff1f;怎么用 libiconv 把国标编码的汉字转换成宇宙统一码&#xff1f;怎么简化 libiconv 那些充满坑的 纯C 函数API&#xff1f; 1. 安装 libiconv 通常&#xff0c;你在 MSYS2 中安装过 G…

Linux各种命令大全

Linux课程笔记 目录结构 /&#xff1a;根目录&#xff0c;唯一顶级目录路径示例&#xff1a;/home/itheima/a.txt 表示根目录下的home/itheima文件夹内的a.txt 基础命令 ls&#xff1a;列出文件 ls [选项] [目录] # 选项&#xff1a; # -l 列表形式显示 # -h 人性化显示文…

mysql学习-常用sql语句

1、安装mysql参考网上链接&#xff0c;进入mysql数据库 mysql -u root -p 2、数据库操作 2.1、创建数据库 create database 数据库名 default character set utf8; 2.2、显示所有数据库 show databases; 2.3、选择数据库 use elementInfo; 2.4、删除数据库 drop database…

图论part4|827. 最大人工岛、127. 单词接龙、463. 岛屿的周长

827. 最大人工岛 &#x1f517;&#xff1a;827. 最大人工岛 - 力扣&#xff08;LeetCode&#xff09;827. 最大人工岛 - 给你一个大小为 n x n 二进制矩阵 grid 。最多 只能将一格 0 变成 1 。返回执行此操作后&#xff0c;grid 中最大的岛屿面积是多少&#xff1f;岛屿 由一…

基于图像比对的跨平台UI一致性校验工具开发全流程指南——Android/iOS/Web三端自动化测试实战

一、需求背景与方案概述 1.1 为什么需要跨平台UI校验&#xff1f; 在移动互联网时代&#xff0c;同一产品需覆盖Android、iOS和Web三端。由于不同平台的开发框架&#xff08;如Android的Material Design与iOS的Cupertino风格&#xff09;及渲染引擎差异&#xff0c;UI界面易出…