稀疏性(sparse)
定义:
Sparse表示为模型内的参数中,只用很少的几个非零元素或只有很少的几个远大于零的元素。
WHY:
为什么模型中要包含稀疏性的特征呢?
WHY:
例子:考研学霸有10000的词汇量,考试使用的词汇量,是10000个词汇积累库中的一小部分。
Example:
Test Number:123.456
第一组数字基底:
[100,10,1]
⇒
\Rightarrow
⇒
123.456
≈
\approx
≈
100
×
\times
×
1 + 10
×
\times
×
2 + 1
×
\times
×
3 (error=0.456)
第二组数字基底:
[100,50,10,1,0.5,0.1,0.03,0.01,0.001]
123.456=100
×
\times
×
1 +
50
×
\times
×
0
+ 10
×
\times
×
2 + 1
×
\times
×
3 +
0.5
×
\times
×
0
+ 0.1
×
\times
×
4 +
0.03
×
\times
×
0
+ 0.01
×
\times
×
5 + 0.001
×
\times
×
6(error=0)
其中
Sparse Feature(有备无患):
有50,0.5,0.03这三个数。
compared with PCA(Principal Component Analysis)
PCA(a complete set of basis vectors:完备字典)
通过这组完备字典中的向量基底,对原始数据进行还原。
Sparse Represnetation(an over-complete set of basis vectors:超完备字典,与稀疏性背道而驰。)
基向量的数量远远大于输入向量的维度
如何保证稀疏性呢?
机器学习模型
⇒
\Rightarrow
⇒
基于训练集优化参数(比如降低Loss)
⇒
\Rightarrow
⇒
Loss中加入正则项,惩罚模型参数数值使其趋近于0
常见的操作:
Loss = Training Loss +
λ
\lambda
λ
∣
∣
W
∣
∣
0
{||W||_0}
∣
∣
W
∣
∣
0
(
L
0
{L_0}
L
0
范式)
Loss = Training Loss +
λ
\lambda
λ
∣
∣
W
∣
∣
1
{||W||_1}
∣
∣
W
∣
∣
1
(
L
1
{L_1}
L
1
范式)
Sparce Coding(稀疏编码LOSS)
Loss =
∑
j
=
1
m
∣
∣
x
(
j
)
−
∑
i
=
1
k
a
i
(
j
)
ϕ
i
∣
∣
2
+
λ
∑
i
=
1
k
∣
∣
a
i
∣
∣
1
\sum_{j=1}^m||x^{(j)}-\sum_{i=1}^k a_i^{(j)}\phi_i||^2 + \lambda\sum_{i=1}^k||a_i||_1
∑
j
=
1
m
∣
∣
x
(
j
)
−
∑
i
=
1
k
a
i
(
j
)
ϕ
i
∣
∣
2
+
λ
∑
i
=
1
k
∣
∣
a
i
∣
∣
1
其中,
∑
i
=
1
k
a
i
(
j
)
\sum_{i=1}^k a_i^{(j)}
∑
i
=
1
k
a
i
(
j
)
是重构误差,
λ
∑
i
=
1
k
∣
∣
a
i
∣
∣
1
\lambda\sum_{i=1}^k||a_i||_1
λ
∑
i
=
1
k
∣
∣
a
i
∣
∣
1
为稀疏惩罚(
L
1
L_1
L
1
Norm)
同样在卷积网络大行其道的时代,我们会在卷积层中加入
L
1
L_1
L
1
范数,以确保其稀疏性。
增加模型的深度和宽度,以确保超完备字典更多。
无脑稀疏到底好还是坏?
超完备字典
⇒
\Rightarrow
⇒
大量的高质量数据。
过多的非激活参数
⇒
\Rightarrow
⇒
训练过程非常漫长
L
1
L_1
L
1
范式在Loss中的某些位置不可导
⇒
\Rightarrow
⇒
导数在零处,导数不唯一,因而致使模型难以收敛
总之,在大规模深度学习的模型中,通常倾向使用
L
2
L_2
L
2
范式来防止过拟合。