DataWhale学习--大语言模型--模型发展历程
文章目录
- 0.项目背景
- 项目受众
- 技术变革
- 语言模型的发展过程
- 统计语言模型
- 基于频率的估计方法
- 四元模型估计示例
- 加一平滑Laplace smoothing
- 回退
- 插值
- 神经语言模型NLM
- MLP
- 循环神经网络(RNN)
- Word2vec
- 预训练语言模型
- 传统语言模型的问题
- 大语言模型的到来
- 参考资料
0.项目背景
本课程围绕中国人民大学高瓴人工智能学院赵鑫教授团队出品的《大语言模型》书籍展开,覆盖大语言模型训练与使用的全流程,从预训练到微调与对齐,从使用技术到评测应用,帮助学员全面掌握大语言模型的核心技术。并且,课程内容基于大量的代码实战与讲解,通过实际项目与案例
项目受众
本课程面向希望深入掌握大模型技术的 AI 从业者,帮助其训练、优化和应用大模型以解决实际问题。同时,课程适合对人工智能前沿技术感兴趣的学生与研究人员,为其学术研究或职业发展奠定基础。此外,产品经理、技术管理者与创业者也可通过本课程了解大模型的潜力与应用,推动产品创新并优化技术战略。
学员需要具备一定的Python编程能力,熟悉PyTorch等经典深度学习框架,并具有一定的深度学习基础。
技术变革
自ChatGPT的问世以来,大语言模型的技术开始进入到大众的视野,这对于学术界以及工业界都产生的十分深远的影响,预示着新一代的信息产业革命即将到来
语言模型的发展过程
- 语言模型通常表示可以建模自然语言文本生成概率的模型
- 语言建模到任务分解,是科学思维的一次重要跃升
统计语言模型
全称为statistics language model,可以说大语言模型的发展最一开始就是以统计学为基础的,比如李航老师的**<<统计学习方法>>**这本书当中介绍了许多的统计学模型,其实和我们学习的机器学习当中的大部分模型很相近
- 建立在统计学习的理论框架,通常使用链式法则表示建模句子的序列
p ( I , a m , fine ) = p ( I ∣ START ) ∗ p ( a m ∣ I ) ∗ p ( fine ∣ I , am ) p(I, a m, \text { fine })=p(I \mid \text { START }) * p(a m \mid I) * p(\text { fine } \mid I, \text { am }) p(I,am, fine )=p(I∣ START )∗p(am∣I)∗p( fine ∣I, am ) - n-gram语言模型:基于马尔科夫假设,当前词概率仅与前n-1个词相关
p ( s ) = p ( w 1 ) p ( w 2 ∣ w 1 ) … p ( w m ∣ w m − n + 1 , … , w m − 1 ) = ∏ i = 1 m p ( w i ∣ w i − n + 1 , … , w i − 1 ) \begin{aligned} p(s) & =p\left(w_{1}\right) p\left(w_{2} \mid w_{1}\right) \ldots p\left(w_{m} \mid w_{m-n+1}, \ldots, w_{m-1}\right) \\ & =\prod_{i=1}^{m} p\left(w_{i} \mid w_{i-n+1}, \ldots, w_{i-1}\right) \end{aligned} p(s)=p(w1)p(w2∣w1)…p(wm∣wm−n+1,…,wm−1)=i=1∏mp(wi∣wi−n+1,…,wi−1)
基于频率的估计方法
原理是利用最大似然估计的方法,也就是说,根据以往的数据去判断词与词之间的关系,比如在一本书当中I love you
出现较为频繁,那么模型可能在碰到I
的时候自然会将下一个词预测成love
四元模型估计示例
P
(
ω
∣
s
t
u
d
e
n
t
s
o
p
e
n
e
d
t
h
e
i
r
)
=
c
o
u
n
t
(
s
t
u
d
e
n
t
s
o
p
e
n
e
d
t
h
e
i
r
ω
)
c
o
u
n
t
(
s
t
u
d
e
n
t
s
o
p
e
n
e
d
t
h
e
i
r
)
P(\omega|students \ opened \ their)=\frac{count(students \ opened \ their \ \omega)}{count(students \ opened \ their)}
P(ω∣students opened their)=count(students opened their)count(students opened their ω)
加一平滑Laplace smoothing
加一平滑的公式如下:
P
A
d
d
−
1
(
ω
i
∣
ω
i
−
1
)
=
c
o
u
n
t
(
ω
i
−
1
,
ω
)
+
1
c
o
u
n
t
(
ω
i
−
1
)
+
V
P_{Add-1}{(\omega_i|\omega_{i-1})}=\frac{count(\omega_{i-1},\omega)+1}{count(\omega_{i-1})+V}
PAdd−1(ωi∣ωi−1)=count(ωi−1)+Vcount(ωi−1,ω)+1
其中V表示词典的大小
加一平滑的方式保持了原本的概率分布但是却不破坏概率分布的基本性质,可以将其理解为我将一个很大范围的值,将其所在的域进行了一个更改,在表示上更加简便
- P ( ω i ) > 0 , ∀ ω i ∈ V P(\omega_i)> 0,\forall \omega_i \in V P(ωi)>0,∀ωi∈V
- ∑ i P ( ω i ) = 1 \sum_iP(\omega_i)=1 ∑iP(ωi)=1
回退
Back-off 的原理
当高阶n-gram(如trigram)的概率无法计算时,back-off 策略会回退到低阶n-gram(如bigram或unigram)来估计概率。具体步骤如下:
尝试高阶n-gram:首先计算最高阶n-gram的概率。
回退到低阶n-gram:如果高阶n-gram的概率为零或未定义,则使用低阶n-gram的概率。
递归回退:如果低阶n-gram仍无法计算,继续回退到更低阶的n-gram,直到unigram。
该方法的好处在于可以有效的处理稀疏的数据,可以灵活的选择回退策略
插值
interpolation
可以理解为将多个不同的模型,前面给到不同的系数,然后相加组成新的一个模型
神经语言模型NLM
MLP
最早期的工作就是MLP多层感知机,将单词映射到词向量,再将神经网络预测到当时时刻的词汇
循环神经网络(RNN)
属于也是用来预测的一种模型,和LSTM相类似,用于处理序列类型的数据,和多层感知机相类似,但是其有点在于网络的隐藏层不仅接受当前时刻的输入,还接收上一时刻的隐藏状态,可以更好的记住之前的信息,对当前时刻的计算有很大的帮助
当然,这种模型显然存在一定的问题,如果模型的输入是一个较长的序列,比如说是一篇论文当中的内容,那么RNN很难记住这篇论文当中的引言和结论之间的关系,因为他们离得实在是太远了
Word2vec
从名称当中我们可以看到是将词语转变成一个又一个的向量
- 基本功能:给定文本数据,对于每个单词学习一个低维的表示
- 基于分布式语义的思想进行设计
- 不考虑窗口内的单词顺序
- 充分考虑实践和效果
这里给大家推荐一门B站上的课,大家可以去看词向量
预训练语言模型
传统语言模型的问题
- 缺乏背景知识:需要使用知识图谱来补充知识源
- 任务泛化能力差:需要针对特定的任务进行微调,成本较高
- 复杂推理能力弱
大语言模型的到来
可以说随着大语言模型的到来,数据数量以及数据的质量会十分影响模型的能力
参考资料
Datawhale大语言模型:https://www.datawhale.cn/learn/summary/107