定义: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=1kai(j)ϕi∣∣2+λ∑i=1k∣∣ai∣∣1
其中, ∑ i = 1 k a i ( j ) \sum_{i=1}^k a_i^{(j)} ∑i=1kai(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范式来防止过拟合。