LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING

开始于2023年7月29号

摘要

LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第1张图片
通过学习 增长预训练(grow pretrained)的transformers 来加速transformer的训练过程,通过学习通过线性映射用较小的模型参数初始化较大的模型。且将线性变换分解为线性宽度和线性深度增长算子的组合,并用克罗内科(Kronecker)分解来编码架构知识。

算子

Wikipedia:在数学上,设U、V是两个向量空间。 从U到V的任意映射被称为算子。
LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第2张图片

**域K:**就是指离散数学中的一个域,起名为K
x属于U,Ax与Bx属于V
且在下面定义了一种新的运算:
( A + B ) x = A x + B x (A+B)x = Ax + Bx (A+B)x=Ax+Bx
( α A ) x = α A x (\alpha A)x = \alpha Ax (αA)x=αAx

LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第3张图片

Kronecker 积

Kronecker 积是张量计算中非常重要的一种运算规则,不同于常见的矩阵运算规则,给定 任意两个矩阵,两者之间进行 Kronecker 积得到的是一个分块矩阵。Kronecker 分解是一种以 Kronecker 积为基础的分解形式,又被称为 Kronecker 积分解、Kronecker 积逼近 (Kronecker product approximation)、最近 Kronecker 积 (nearest Kronecker product) 等。参考

给定任意矩阵 X ∈ R m × n , Y ∈ R p × q X\in R^{m\times n}, Y\in R^{p\times q} XRm×n,YRp×q, 则两者之间的 Kronecker积为:
X ⊗ Y = [ x 11 Y x 12 Y ⋯ x 1 n Y x 21 Y x 22 Y ⋯ x 2 n Y   ⋮   ⋮ ⋱   ⋮ x m 1 Y x m 2 Y ⋯ x m n Y ] ∈ R ( m p ) × ( n q ) X\otimes Y = \left[ \begin{array}{l} x_{11}Y& x_{12}Y & \cdots & x_{1n} Y\\ x_{21}Y& x_{22}Y & \cdots & x_{2n} Y\\ ~\vdots & ~\vdots & \ddots & ~\vdots\\ x_{m1}Y& x_{m2}Y & \cdots & x_{mn} Y \end{array} \right] \in R^{(mp)\times (nq)} XY= x11Yx21Y xm1Yx12Yx22Y xm2Yx1nYx2nY xmnY R(mp)×(nq)
结果的每部分均为分块矩阵
不存在交换律

运算规律

X 、 Y 和 Z分别为矩阵,则
X ⊗ Y ⊗ Z = X ⊗ ( Y ⊗ Z ) X \otimes Y \otimes Z = X \otimes (Y\otimes Z) XYZ=X(YZ)
( X + Y ) ⊗ Z = X ⊗ Z + y ⊗ Z (X+Y)\otimes Z = X \otimes Z + y\otimes Z (X+Y)Z=XZ+yZ

矩阵相乘

LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第4张图片

求逆矩阵

LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第5张图片

Kronecker 分解

朴素分解

LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第6张图片
注意,其中范数下标F表示F范数
LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第7张图片

3.1

在介绍已有的两种方法,分别进行了深度扩展和宽度扩展:
W l W_l Wl 为小规模神经网络的第 l l l层参数矩阵, W l ( n e w ) W_l^{(new)} Wl(new) 则为大规模的神经网络的第 l l l层参数矩阵。

深度扩展:Depth expansion

L 2 = k L 1 L_2 = kL_1 L2=kL1
方法1:StackBERT:
则:
W l n e w = W l   m o d   L 1 W_l^{new} = W_{l ~mod~L_1} Wlnew=Wl mod L1

方法2:Interpolation(插值方法)
利用每层交错从而得到新的层:
W i n e w = W ⌊ l / k ⌋ , ∀ l ∈ [ L 2 ] W_i^{new} = W_{\lfloor l/k \rfloor}, \forall l \in [L_2] Winew=Wl/k,l[L2]

宽度扩展 Width expansion

Net2Net方法
LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第8张图片
(字母太多不想打了QWQ)

3.2 文章的方法:LiGO

LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第9张图片
但即使M为一个线性的映射函数,计算量仍然很大,因此文章在后续章节继续介绍了一种简化方法:

3.2.1 DECOMPOSITION ALONG DEPTH AND WIDTH(沿深度和宽度的分解)

LiGO的第一步:先分解M:
M = L d e p t h R w i d t h M = L_{depth}R_{width} M=LdepthRwidth
来分别扩展模型的深度和宽度。
具体而言:
LEARNING TO GROW PRETRAINED MODELS FOR EFFICIENT TRANSFORMER TRAINING_第10张图片
个人觉得,这里的 D i D_i Di 应该指的是第 i i i层的维度,是一个数,与上文的对角矩阵不同,尽管符号相同。
其中,将 R w i d t h R_{width} Rwidth应用到weights v e c ( Θ ) vec(\Theta) vec(Θ),意思应该是指,对于 ∀ i ∈ L 1 \forall i \in L_1 iL1,均有 v e c   Θ i = R i vec~\Theta_i = R_i vec Θi=Ri,而由上文知:
v e c ( Θ ) = [ v e c ( W 1 ) v e c ( W 2 ) ⋮ v e c ( W L 1 ) ] vec(\Theta) = \begin{bmatrix} vec(W_1)\\ vec(W_2)\\ \vdots \\ vec(W_{L_1}) \end{bmatrix} vec(Θ)= vec(W1)vec(W2)vec(WL1)
故有: v e c ( W i ) = R i vec(W_i) = R_i vec(Wi)=Ri
而由上文有: v e c ( Θ ( n e w ) ) = v e c ( M ( Θ ) ) = M   v e c ( Θ ) vec(\Theta^{(new)}) = vec(M(\Theta)) = M~vec(\Theta) vec(Θ(new))=vec(M(Θ))=M vec(Θ)
然后怎么得出来论文中 v e c ( W l ( n e w ) ) = R l v e c ( W l ) vec(W_l^{(new)}) = R_lvec(W_l) vec(Wl(new))=Rlvec(Wl),我猜是因为M中的 R w i d t h R_{width} Rwidth负责扩展宽度,也就是作用于 W l W_l Wl,使得 W l W_l Wl一一对应变换为更宽的 W l ( n e w ) W_l^{(new)} Wl(new),而新的层是由 L d e p t h L_{depth} Ldepth负责的,因此,就直接对应过来了:
v e c ( Θ ( n e w ) ) = v e c ( M ( Θ ) ) = M   v e c ( Θ ) = R w i d t h v e c ( Θ ) vec(\Theta^{(new)}) = vec(M(\Theta)) = M~vec(\Theta)=R_{width}vec(\Theta) vec(Θ(new))=vec(M(Θ))=M vec(Θ)=Rwidthvec(Θ)
然后每一维对应就行。

你可能感兴趣的:(论文阅读,transformer,深度学习,人工智能)