当前位置: 首页 > article >正文

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

语言模型的发展大致经历了以下四个阶段
语言模型发展历程

统计语言模型(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.kler.cn/a/584308.html

相关文章:

  • vue2安装scss
  • Java 断言(Assert)机制
  • 西门子S7-1200 PLC远程调试技术方案(巨控GRM532模块)
  • 【蓝桥杯速成】| 1.暴力解题
  • 音视频入门基础:RTP专题(17)——音频的SDP媒体描述
  • NVIDIA k8s-device-plugin源码分析与安装部署
  • 要登录的设备ip未知时的处理方法
  • 浅谈 JavaScript 对象:属性、方法与创建模式
  • MySql学习_基础Sql语句
  • 记录一个SQL自动执行的html页面
  • Mistral OCR:重新定义文档理解的下一代OCR技术
  • 课堂练习 1:配置虚拟主机
  • TCP协议支持全双工原因TCP发送接收数据是生产者消费者模型
  • JAVA-Thread类实现多线程
  • 【NLP 33、实践 ⑦ 基于Triple Loss作表示型文本匹配】
  • 数字化新零售与 AI 大模型,如何重塑大健康赛道?​
  • IDE 使用技巧与插件推荐:全面提升开发效率
  • ESP32移植Openharmony外设篇(10)inmp441麦克风
  • 基于PyTorch通信算子的分布式训练阻塞定位方法
  • 算法手记3