大语言模型-LLaMA-Large Language Model Meta AI

一、背景信息:

LLaMA(Large Language Model Meta AI)模型是于2020 年由发布的一个大型基础语言模型。
LLaMA使用的数据集来源都是公开数据集,无任何定制数据集。
LLaMA性能的亮点充分地证明了高质量数据的重要性,而不是一股脑地叠加网络深度以及参数量。

二、整体结构:

和 GPT 系列一样,LLaMA 模型也是 Decoder-only 架构,但结合前人的工作做了一些改进,比如:

  • RMSNorm, 归一化函数的调整:为了提高训练稳定性,LLaMA使用 RMSNorm归一化函数(旧为LayerNorm)

  • SwiGLU, FFN层激活函数调整: LLaMA引入SwiGLU激活函数 用在FFN层以提高性能。

  • RoPE, 位置编码的调整: LLaMA不再位置向量合成输入向量,而是在每次Attention时进行RoPE的位置向量编码。

三、SwiGLU

1、ReLU激活函数

 最初的Transformer中在FFN层采用了ReLU激活函数,其中ReLU的定义为 R e L U ( x ) = m a x ( 0 , x ) ReLU(x) = max(0, x) ReLU(x)=max(0,x) 优点在于不存在饱和的非线性区域且计算快。

2、GELU激活函数

 GELU将随机正则化(例如dropout)和ReLU激活函数结合在一起,GELU的定义为
G E L U ( x ) = x P ( X ≤ x ) = x Φ ( x ) = x ⋅ 1 2 [ 1 + e r f ( x 2 ) ] GELU(x) = xP(X\le x) = x\Phi (x) = x \cdot \frac{1}{2} [1 + erf(\frac{x}{\sqrt{2} } )] GELU(x)=xP(Xx)=xΦ(x)=x21[1+erf(2 x)]
其中标准正态分布的分布函数 Φ ( x ) \Phi (x) Φ(x)的定义为 Φ ( x ) = 1 2 π ∫ − ∞ x e − t 2 2 d t \Phi (x) = \frac{1}{\sqrt{2\pi } } \int_{-\infty}^{x} e^{- \frac{t^{2}}{2} } dt Φ(x)=2π 1xe2t2dt,误差函数erf(x)是正态函数的不定积分。

3、SwiGLU激活函数

 SwiGLU是Gated Linear Units(GLU)激活函数的一种变体。结合了Swish 和 GLU 两者的特点。

1) GLU(Gated Linear Units)

GLU是一个线性变换后面接门控机制的结构。其中门控机制是一个sigmoid函数,用来控制信息能够通过多少。
G L U ( x ) = s i g m o i d ( x W + b ) ⊗ ( x V + c ) GLU(x) = sigmoid(xW + b) \otimes (xV + c) GLU(x)=sigmoid(xW+b)(xV+c)
其中, ⊗ \otimes 为逐元素乘;W、V、b、c为可训练的权重或参数。通过使用其他的激活函数可以得到GLU的各种变体。

2) Swish激活函数

Swish可以被视为一个平滑的非单调函数能够缓解梯度消失问题,在处理负输入时表现出了比ReLU更好的性能。 GELU的定义为
S w i s h ( x ) = x ⋅ s i g m o i d ( β x ) Swish(x) = x \cdot sigmoid(\beta x) Swish(x)=xsigmoid(βx)
其中, β \beta β是一个可学习的参数。

3)SwiGLU激活函数

SwiGLU是采用Swish作为激活函数的GLU变体,SwiGLU的定义为:
S w i G L U ( x ) = S w i s h ( x W + b ) ⊗ ( x V + c ) SwiGLU(x) = Swish(xW + b) \otimes (xV + c) SwiGLU(x)=Swish(xW+b)(xV+c)

其中,Swish激活函数的 β \beta β=1;由于引入了更多的权重矩阵,通常会对隐藏层的大小做一个缩放,从而保证整体的参数量不变。

四、RMS Norm

 对每一层的输出进行归一化LayerNorm是为了提高训练的稳定性。RMS Norm简化了Layer Norm 的计算,可以再减少约7%∼64%的计算时间。
 RMS Norm去掉了Layer Norm中减去均值的操作,也就是没有去中心化的操作,只有缩放的操作。

Layer Normalization ( a i ⟶ a i ˉ a_{i} \longrightarrow \bar{a_{i}} aiaiˉ)
其中 a i a_{i} ai是模型的输入, a i ˉ \bar{a_{i}} aiˉ是经过归一化后的:

a i ˉ = a i − μ σ \bar{ a_{i}} = \frac{a_{i}-\mu }{\sigma } aiˉ=σaiμ
上式中 a i a_{i} ai的均值 μ = 1 n ∑ i = 1 n a i \mu = \frac{1}{n} \sum_{i=1}^{n}a_{i} μ=n1i=1nai, a i a_{i} ai的标准差 σ = 1 n ∑ i = 1 n ( a i − μ ) 2 \sigma = \sqrt{\frac{1}{n}\sum_{i=1}^{n}(a_{i}-\mu ) ^{2}} σ=n1i=1n(aiμ)2

RMS Normalization的公式如下
a i ˉ = a i R M S ( a ) \bar{ a_{i}} = \frac{a_{i} }{RMS(a)} aiˉ=RMS(a)ai
其中, R M S ( a ) = 1 n ∑ i = 1 n a i 2 RMS(a) = \sqrt{\frac{1}{n}\sum_{i=1}^{n}a_{i} ^{2}} RMS(a)=n1i=1nai2 ,从公式上看RMS Norm去掉了Layer Norm中每一步的减去均值的操作。
RMS(均方根、Root Mean Square) 是指一组数据的平方的平均数的算术平方根。

五、旋转位置编码(RoPE)

 使用RopE旋转位置编码后不需要在输入向量中与位置向量相加,而是在每个Attention层中分别对Q K 进行RoPE位置编码。
Attention公式如下:
A t t e n t i o n ( Q , K , V ) = s o f t m a x ( Q K T d k ) V Attention(Q, K, V) = softmax( \frac{QK^{T} }{\sqrt{d_{k}} } )V Attention(Q,K,V)=softmax(dk QKT)V
RoPE编码对Attention的输入参数Q、K进行下式的变换:
q ~ = f ( q , m ) k ~ = f ( k , m ) \begin{matrix} \tilde{q} = f(q, m) \\\tilde{k} = f(k, m) \end{matrix} q~=f(q,m)k~=f(k,m)

其中计算RoPE的函数为:
f ( q , m ) = R f ( q , m ) e i Θ f ( q , m ) = ∥ q ∥ e i ( Θ ( q ) + m θ ) = q e i m θ \begin{matrix} f(q, m) & = R_{f}(q, m)e^{i\Theta_{f}(q, m) } \\ & = \left \| q \right \| e^{i(\Theta(q)+m\theta ) } \\ & = qe^{im\theta } \\ \end{matrix} f(q,m)=Rf(q,m)eiΘf(q,m)=qei(Θ(q)+mθ)=qeimθ

R f ( q , m ) = ∥ q ∥ R_{f}(q, m)=\left \| q \right \| Rf(q,m)=q; Θ ( q ) \Theta(q) Θ(q)是q本身的幅角; Θ f ( q , m ) = Θ ( q ) + m θ \Theta_{f}(q, m)=\Theta(q)+m\theta Θf(q,m)=Θ(q)+mθ θ i θ_{i} θi的选择依然沿用Sinusoidal位置编码的方案,即 θ i = 1000 0 − 2 i d θ_{i} = 10000^{\frac{-2i}{d} } θi=10000d2i,它可以带来一定的远程衰减性。
RoPE的函数可以表示为矩阵形式:
f ( q , m ) = [ cos ⁡ m θ − sin ⁡ m θ sin ⁡ m θ cos ⁡ m θ ] [ q 0 q 1 ] f(q, m) = \begin{bmatrix} \cos m\theta & - \sin m\theta \\ \sin m\theta & \cos m\theta \end{bmatrix} \begin{bmatrix} q_{0}\\ q_{1} \end{bmatrix} f(q,m)=[cosmθsinmθsinmθcosmθ][q0q1]
RoPE中还整理了更适于计算机进行计算的表述方式。

Reference

1、LLaMA: Open and Efficient Foundation Language Models
2、苏剑林-让研究人员绞尽脑汁的Transformer位置编码
3、苏剑林-Transformer升级之路:2、博采众长的旋转式位置编码
4、一文带你了解LLAMA(羊驼)系列
5、大模型基础|激活函数|从ReLU 到SwiGLU

  • 9
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值