趋近智
标准自编码器虽然对降维有效,但其学习到的潜在编码无法自然保证捕捉到真正有意义的特征。若无约束,编码器可能仅学习到一个恒等函数(尤其当潜在维度较大时),或者过度适应训练数据。稀疏自编码器引入了一种正则化方法,专门用来解决此问题,即强制其隐藏(瓶颈)层中的激活值具有稀疏性。
主要思想是,对于任何给定的输入样本,隐藏层中只有一小部分神经元应显著活跃(即具有非零或接近非零的激活值)。这鼓励网络为数据中存在的独立特征学习专门的检测器,而不是让所有神经元对许多输入都做出微弱响应。这类似于生物神经网络系统的运作方式。
稀疏自编码器通过施加稀疏性约束,旨在学习更有意义的特征。施加稀疏性约束主要有两种方法:使用 L1 正则化或 Kullback–Leibler (KL) 散度。
这种方法直接惩罚隐藏层中激活值的量级。回想一下,L1 正则化会添加一个与参数绝对值之和成比例的惩罚项。在稀疏自编码器的情况下,我们将这种惩罚应用于隐藏层神经元的激活值,而不是权重。
设 hj(x(i)) 表示第 i 个输入样本 x(i) 的第 j 个隐藏单元的激活值。L1 稀疏性惩罚项被添加到标准重构损失中:
L总(x,x^)=L重构(x,x^)+λj∑∣hj(x)∣其中:
思路直接明了:为了最小化总损失,网络必须平衡精确重构输入(最小化 L重构)和保持隐藏层激活值小(最小化 L1 项)。由于 L1 范数已知能够促进稀疏解(与鼓励小但非零值的 L2 范数不同),这种惩罚能有效地促使许多隐藏单元的激活值趋近于零。
另一种常用方法是,通过约束每个隐藏神经元在整个训练数据集(或一个大批次)上的平均激活值来引导稀疏性。我们定义一个目标稀疏性参数 ρ,它表示每个隐藏神经元期望的平均激活水平(例如,ρ=0.05,表示我们希望每个神经元平均而言只有5%的时间活跃)。
首先,我们计算第 j 个隐藏神经元在 m 个训练样本上的实际平均激活值 ρ^j:
ρ^j=m1i=1∑mhj(x(i))请注意,这要求激活函数 hj 的输出值通常在0到1之间(例如 sigmoid 函数),以便将其解释为激活概率或激活水平时有意义。
接着,我们使用 Kullback–Leibler (KL) 散度来度量期望平均激活值 ρ(视为均值为 ρ 的伯努利分布)与观察到的平均激活值 ρ^j(视为均值为 ρ^j 的伯努利分布)之间的差异。两个伯努利分布之间的 KL 散度由下式给出:
KL(ρ∣∣ρ^j)=ρlogρ^jρ+(1−ρ)log1−ρ^j1−ρ这个 KL 散度项充当惩罚项。当 ρ^j=ρ 时,它被最小化(等于零),并且随着 ρ^j 偏离 ρ 而增大。我们将此惩罚项对所有 s 个隐藏单元求和,并将其添加到重构损失中,由另一个超参数 β 加权:
L总(x,x^)=L重构(x,x^)+βj=1∑sKL(ρ∣∣ρ^j)最小化这个总损失鼓励网络在实现精确重构的同时,确保每个隐藏神经元的平均激活值 ρ^j 接近目标稀疏性水平 ρ。
这两种方法都服务于同一目的:强制自编码器学习一种压缩表示,其中对于任何给定输入,只有少数隐藏单元是活跃的。这鼓励隐藏单元进行专门化,有可能从数据中获取更独立和可解释的特征,同时也是一个强大的正则化器,可防止过拟合。在它们之间进行选择,并调整相关的超参数(λ 或 ρ 和 β),通常取决于具体数据集和任务。
这部分内容有帮助吗?
© 2026 ApX Machine Learning用心打造