稀疏性(sparse)
定义:Sparse表示为模型内的参数中,只用很少的几个非零元素或只有很少的几个远大于零的元素。
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}
L0?范式)
Loss = Training Loss +
λ
\lambda
λ
∣
∣
W
∣
∣
1
{||W||_1}
∣∣W∣∣1? (
L
1
{L_1}
L1?范式)
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=1m?∣∣x(j)?∑i=1k?ai(j)??i?∣∣2+λ∑i=1k?∣∣ai?∣∣1?
其中,
∑
i
=
1
k
a
i
(
j
)
\sum_{i=1}^k a_i^{(j)}
∑i=1k?ai(j)?是重构误差,
λ
∑
i
=
1
k
∣
∣
a
i
∣
∣
1
\lambda\sum_{i=1}^k||a_i||_1
λ∑i=1k?∣∣ai?∣∣1?为稀疏惩罚(
L
1
L_1
L1? Norm)
同样在卷积网络大行其道的时代,我们会在卷积层中加入
L
1
L_1
L1? 范数,以确保其稀疏性。 增加模型的深度和宽度,以确保超完备字典更多。
无脑稀疏到底好还是坏?
超完备字典
?
\Rightarrow
? 大量的高质量数据。 过多的非激活参数
?
\Rightarrow
? 训练过程非常漫长
L
1
L_1
L1?范式在Loss中的某些位置不可导
?
\Rightarrow
? 导数在零处,导数不唯一,因而致使模型难以收敛
总之,在大规模深度学习的模型中,通常倾向使用
L
2
L_2
L2?范式来防止过拟合。
|