趋近智
稀疏自编码器旨在生成表示,其中在任意给定时刻只有少量隐藏单元处于激活状态。这通常不能仅通过架构设计实现,而是通过在自编码器的损失函数中加入正则项。这种惩罚机制阻止网络激活过多神经元,引导它学习更具选择性和更有效的特征。实现这种稀疏性有两种常用方法:L1 正则化和 KL 散度。
一种直接促进稀疏性的方法是直接惩罚隐藏层的激活值。L1 正则化在损失函数中增加一个项,该项与隐藏单元激活值的绝对值之和成比例。
如果 hi 是给定输入的第 i 个隐藏单元的激活值,L1 惩罚项是:
RL1=i∑∣hi∣该惩罚项被加到标准的重构损失(例如,均方误差,MSE)中。总损失函数变为:
L(x,x^)=MSE(x,x^)+λi∑∣hi∣这里,x 是输入,x^ 是重构输出,而 λ(lambda)是一个超参数,用于控制稀疏惩罚的强度。
为什么这会产生稀疏性?L1 范数(绝对值之和)的特点是将许多不那么重要的激活值推向精确的零,从而使这些神经元在给定输入下不激活。较大的 λ 值将强制实现更强的稀疏性,意味着更少的神经元将处于激活状态,但将其设置过高可能会妨碍自编码器有效重构输入的能力。找到 λ 的适当平衡通常需要多次实验。
另一种常用的诱导稀疏性的方法是使用 Kullback-Leibler (KL) 散度。这种方法不是直接惩罚单个激活值,而是尝试使每个隐藏神经元在训练样本批次中的平均激活值与一个预设的低活动水平匹配。
我们将 ρ (rho) 定义为隐藏神经元的期望平均激活值,通常称为稀疏参数。ρ 的典型值可能很小,例如 0.05,这表示我们希望每个神经元平均只在批次中 5% 的训练样本上激活。
现在,让 ρ^j(rho-hat sub j)表示第 j 个隐藏单元的实际平均激活值,在一个训练小批次中计算得出:
ρ^j=m1k=1∑mhj(x(k))其中 m 是小批次中的样本数量,hj(x(k)) 是第 k 个训练样本的第 j 个隐藏单元的激活值。
KL 散度项衡量期望分布(均值为 ρ 的伯努利分布)与观察分布(均值为 ρ^j 的伯努利分布)之间的差异。对于每个隐藏单元 j,KL 散度是:
KL(ρ∣∣ρ^j)=ρlogρ^jρ+(1−ρ)log1−ρ^j1−ρ如果 ρ^j 接近 ρ,此项将很小;而当 ρ^j 偏离 ρ 时,此项会增加。自编码器的总损失函数随后包含这些 KL 散度项在所有隐藏单元上的总和,并由另一个超参数 β(beta)加权:
L(x,x^)=MSE(x,x^)+βj∑KL(ρ∣∣ρ^j)超参数 β 控制此稀疏惩罚的权重。较高的 β 值将更强制地使每个隐藏单元的平均激活值 ρ^j 与目标稀疏度 ρ 匹配。
KL 散度方法不像 L1 正则化那样直接将单个激活值强制归零。相反,它鼓励每个神经元的平均表现稀疏。这表示一个神经元可能在少数特定输入模式下强烈激活,但在大多数其他模式下保持不激活,从而实现目标平均值 ρ。
图表显示了稀疏性正则化如何融入自编码器的损失计算。在使用 L1 或 KL 散度正则化等方法时,密集激活会比稀疏激活产生更高的惩罚。
L1 和 KL 散度正则化都能有效诱导稀疏性,但它们实现的方式略有不同:
无论采用哪种方法,正则化的强度(由 L1 的 λ 或 KL 散度的 β 控制)是一个重要的超参数。
调整这些超参数通常涉及使用不同值训练自编码器,并观察重构损失和隐藏层激活的稀疏性。您还可以评估下游任务中提取特征的质量,以找到最佳正则化强度。在训练期间监控隐藏层中的平均激活水平也可以提供帮助,尤其是在使用 KL 散度时。
通过整合这些正则化技术,稀疏自编码器可以从数据中学习到更精细且通常更易于解释的特征,从简单的压缩转向能够捕捉输入更不同方面的表示。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造