1.方法
1.1 基于特征的高维空间低秩分解
PCA已经是老朋友了,每次一说主成分都会出现PCA。这篇文章1利用预训练数据的子集作为校准数据集
D
c
a
l
=
{
x
i
}
i
=
1
n
\mathcal{D}_{cal}=\{x_{i}\}_{i=1}^{n}
Dcal={xi}i=1n,首先用校准数据集的样本协方差矩阵(SCM)估计整个特征空间分布的Y的协方差矩阵
C
o
v
S
(
Y
)
=
1
n
−
1
∑
i
=
1
n
(
y
i
−
y
ˉ
)
T
(
y
i
−
y
ˉ
)
(1)
Cov_S(\boldsymbol{Y})=\frac{1}{n-1}\sum_{i=1}^n(\boldsymbol{y}_i-\bar{\boldsymbol{y}})^T(\boldsymbol{y}_i-\bar{\boldsymbol{y}})\tag{1}
CovS(Y)=n−11i=1∑n(yi−yˉ)T(yi−yˉ)(1)
式中
y
i
\boldsymbol{y}_i
yi表示
x
i
\boldsymbol{x}_i
xi的特征,
y
ˉ
\bar{\boldsymbol{y}}
yˉ是校准数据集的特征值平均值。但文章指出,计算高维的协方差矩阵并不简单,他们提出了合并协方差矩阵(PCM),把校准数据集分成
m
m
m组,对每一组分别计算协方差矩阵最后求平均得PCM
C
o
v
P
(
Y
)
=
1
m
∑
k
=
1
m
C
o
v
S
(
Y
k
)
(2)
Cov_P(\boldsymbol{Y})=\frac{1}{m}\sum_{k=1}^mCov_S(\boldsymbol{Y}_k)\tag{2}
CovP(Y)=m1k=1∑mCovS(Yk)(2)
1.2 基于贝叶斯优化得低秩分配
对于每一层,甚至每一层的不同矩阵对低秩分解得敏感度不同,对于一个模型
f
(
⋅
;
θ
)
f(\cdot;\theta)
f(⋅;θ),引入一组压缩率
λ
=
{
λ
i
}
i
=
1
k
\lambda=\{\lambda_{i}\}_{i=1}^{k}
λ={λi}i=1k,引入一个任务模糊数据集D来评价压缩大模型
f
(
⋅
;
θ
,
λ
)
f(\cdot;\boldsymbol{\theta},\lambda)
f(⋅;θ,λ)的性能,例如预训练数据集的子集。因此目标函数表示为
min
λ
∈
V
H
(
λ
)
=
E
(
x
,
y
)
∼
D
h
(
f
(
x
;
θ
,
λ
)
,
y
)
s
.
t
.
Σ
λ
≤
ρ
(3)
\begin{aligned}\min_{\lambda\in\mathcal{V}}H(\boldsymbol{\lambda})&=\mathbb{E}_{(x,y)\sim\mathcal{D}}h(f(x;\boldsymbol{\theta},\boldsymbol{\lambda}),y)\\&s.t.\Sigma\boldsymbol{\lambda}\leq\rho\end{aligned}\tag{3}
λ∈VminH(λ)=E(x,y)∼Dh(f(x;θ,λ),y)s.t.Σλ≤ρ(3)
式中,
ρ
\rho
ρ是模型的整体压缩比,
h
(
⋅
,
⋅
)
h(\cdot,\cdot)
h(⋅,⋅)是评价指标,但事实上,评价指标和低秩分配都是非常耗时耗算力的,所以这篇论文提出样本高效贝叶斯优化(BO)来优化公式3。这里引入一个替代模型(例如高斯模型
N
(
μ
(
⋅
)
,
σ
2
(
⋅
)
)
\mathcal{N}(\mu(\cdot),\sigma^2(\cdot))
N(μ(⋅),σ2(⋅))),BO通过替代模型来估计目标函数
H
(
λ
)
H(\boldsymbol{\lambda})
H(λ),并且基于每一步的结果,更新后面一步的目标函数
H
(
λ
)
H(\boldsymbol{\lambda})
H(λ)。比如给出前t-1步
{
λ
1
,
⋯
,
λ
t
−
1
}
\{\boldsymbol{\lambda}_{1},\cdots,\boldsymbol{\lambda}_{t-1}\}
{λ1,⋯,λt−1}的目标函数值分别为
H
t
−
1
=
[
H
(
λ
1
)
,
⋯
,
H
(
λ
t
−
1
)
]
H_{t-1}=[H(\boldsymbol{\lambda}_{1}),\cdots,H(\boldsymbol{\lambda}_{t-1})]
Ht−1=[H(λ1),⋯,H(λt−1)],替代模型更新为
μ
(
λ
)
=
k
(
K
+
η
2
I
)
−
1
H
t
−
1
σ
2
(
λ
)
=
k
(
λ
,
λ
)
−
k
T
(
K
+
η
2
I
)
−
1
k
(4)
\mu(\boldsymbol{\lambda})=\boldsymbol{k}(\boldsymbol{K}+\eta^{2}\boldsymbol{I})^{-1}H_{t-1}\\\sigma^{2}(\boldsymbol{\lambda})=k(\boldsymbol{\lambda},\boldsymbol{\lambda})-\boldsymbol{k}^{T}(\boldsymbol{K}+\eta^{2}\boldsymbol{I})^{-1}\boldsymbol{k}\tag{4}
μ(λ)=k(K+η2I)−1Ht−1σ2(λ)=k(λ,λ)−kT(K+η2I)−1k(4)
式中
k
(
⋅
,
⋅
)
k(\cdot,\cdot)
k(⋅,⋅)是一个核函数,
(
k
=
k
(
λ
,
λ
i
)
)
i
∈
[
t
−
1
]
(\boldsymbol{k}=k(\boldsymbol{\lambda},\boldsymbol{\lambda}_{i}))_{i\in[t-1]}
(k=k(λ,λi))i∈[t−1],
K
=
(
k
(
λ
i
,
λ
j
)
)
i
,
j
∈
[
t
−
1
]
K = (k(\boldsymbol{\lambda}_{i},\boldsymbol{\lambda}_{j}))_{i,j\in[t-1]}
K=(k(λi,λj))i,j∈[t−1],
η
2
I
\eta^{2}I
η2I是用来模拟噪声的白核函数,得到后验估计
H
(
λ
)
H(\boldsymbol{\lambda})
H(λ)(例如
H
(
λ
)
∼
N
(
μ
(
λ
)
,
σ
2
(
λ
)
)
H(\boldsymbol{\lambda})\sim{\mathcal{N}}(\mu(\boldsymbol{\lambda}),\sigma^{2}(\boldsymbol{\lambda}))
H(λ)∼N(μ(λ),σ2(λ)))之后,BO通过采集函数确定下一次的比率分布,对于采集函数,可以用EI
α
(
λ
)
=
E
H
(
λ
)
[
max
{
0
,
H
′
−
H
(
λ
)
}
]
λ
t
=
a
r
g
m
a
x
λ
α
(
λ
)
,
(5)
\begin{aligned}\alpha(\boldsymbol{\lambda})&=\mathbb{E}_{H(\boldsymbol{\lambda})}\left[\max\left\{0,H'-H(\boldsymbol{\lambda})\right\}\right]\\\boldsymbol{\lambda}_{t}&=\mathop{\mathrm{argmax}}_{\boldsymbol{\lambda}}\alpha(\boldsymbol{\lambda}),\end{aligned}\tag{5}
α(λ)λt=EH(λ)[max{0,H′−H(λ)}]=argmaxλα(λ),(5)
式中,
H
′
=
min
i
∈
[
t
−
1
]
H
(
λ
i
)
H^{\prime}=\operatorname*{min}_{i\in[t-1]}H(\boldsymbol{\lambda}_{i})
H′=mini∈[t−1]H(λi)是指迄今为止观察到的最小值,然后BO选择了最好的EI的方向去搜索。在得到最优比
λ
∗
\lambda^{*}
λ∗之后,可以确定分配
r
i
=
(
1
−
λ
i
)
d
1
d
2
/
(
d
1
+
d
2
)
r_{i}=(1-\lambda_{i})d_{1}d_{2}/(d_{1}+d_{2})
ri=(1−λi)d1d2/(d1+d2)。
1.3 后训练
为了不使模型参数量反弹,文章使用压缩模型的子空间对模型微调。
Y
=
(
B
A
+
Λ
b
B
r
′
Λ
d
A
r
′
)
X
(6)
Y=(BA+\Lambda_bB_{r'}\Lambda_dA_{r'})X\tag{6}
Y=(BA+ΛbBr′ΛdAr′)X(6)
式中,
B
r
′
∈
R
d
2
×
r
′
B_{r^{\prime}}\in\mathbb{R}^{d_2\times r^{\prime}}
Br′∈Rd2×r′,
A
r
′
∈
R
r
′
×
d
1
A_{r^{\prime}}\in\mathbb{R}^{r^{\prime}\times d_1}
Ar′∈Rr′×d1是修正后的
B
B
B和
A
A
A矩阵,
Λ
b
\boldsymbol{\Lambda}_{b}
Λb和
Λ
d
\boldsymbol{\Lambda}_{d}
Λd是对角阵。