稀疏自动编码器 [Hyper] 参数

机器算法验证 神经网络 优化 深度学习 深度信念网络 自动编码器
2022-03-13 13:34:10

我刚刚开始在 R 中使用自动编码器包。

该函数的输入autoencode()包括 lambda、beta、rho 和 epsilon。

这些值的界限是什么?它们是否因每个激活函数而异?这些参数是否称为“超参数”?

假设一个稀疏的自动编码器,rho=.01 对逻辑激活函数有好处,而 rho=-.9 对双曲正切激活函数有好处吗?

为什么手册将 epsilon 设置为 .001?如果我没记错的话,LeCun 的“Efficient Backpropagation”推荐的起始值不太接近于零。

Beta 的“好”值有多重要?

选择隐藏层中的神经元数量是否有“经验法则”?例如,如果输入层有 N 个节点,那么隐藏层中有 2N 个神经元是否合理?

你能推荐一些关于自动编码器实际使用的文献吗?

2个回答

autoencoder包只是 Andrew Ng 的课堂笔记中描述的自动编码器的一个实现,这可能是进一步阅读的一个很好的起点。现在,来解决你的问题


人们有时会区分学习算法自己计算的参数和控制学习过程并需要提供给学习算法的超参数。重要的是要意识到超参数没有神奇的价值。最佳值会有所不同,具体取决于您要建模的数据:您必须在数据上尝试它们。

a) Lambda ( ) 控制在反向传播期间如何更新权重。成本函数不只是根据模型输出和基本事实之间的差异来更新权重,而是包含一个惩罚大权重的项(实际上是所有权重的平方值)。Lambda 控制这个惩罚项的相对重要性,它倾向于将权重拖向零并有助于避免过度拟合。λ

b) 罗 (ρ)和测试版(β) 控制稀疏度。Rho 是隐藏单元的预期激活(在训练集中取平均值)。随着它变得更小,表示将变得越来越稀疏。这种稀疏性是通过调整偏置项来施加的,而 beta 控制其更新的大小。(看起来像β实际上只是重新调整了整体学习率α.)

c) 厄普西隆 (ϵ)控制从随机抽取的初始权重值N(0,ϵ2).

您的 rho 值似乎并不合理,因为两者都接近激活函数范围的底部(逻辑为 0 到 1,tanh 为 -1 到 1)。但是,这显然取决于您想要的稀疏度以及您使用的隐藏单元的数量。


LeCunn 对小权重的主要关注是,如果您使用对称 sigmoid,误差表面在原点附近会变得非常平坦。在该论文的其他地方,他建议使用从均值为零的正态分布中随机抽取的权重进行初始化,并且m1/2标准差,其中m是每个单元接收的连接数。


选择隐藏单元的数量有很多“经验法则”。您最初的猜测(2x 输入)似乎与大多数猜测一致。也就是说,这些猜测比估计更多的是猜测。假设你有处理能力,我会犯更多隐藏单元的错误,然后用低 rho 值强制稀疏。
自编码器的一个明显用途是为其他学习算法生成更紧凑的特征表示。原始图像可能有数百万像素,但(稀疏)自动编码器可以在更小的空间中重新表示。Geoff Hinton(和其他人)已经证明它们为后续分类生成了有用的特征。一些深度学习工作使用自动编码器或类似方法来预训练网络。文森特等人。直接使用自动编码器进行分类。

生成简洁特征表示的能力也可以在其他上下文中使用。这是一个简洁的小项目,其中使用自动编码器生成的状态来指导强化学习算法通过Atari 游戏

最后,人们还可以使用自动编码器来重建嘈杂或退化的输入,就像这样,这本身就是一个有用的目的。

在我看来,Matt Krause 的某些部分答案并不正确(Lambda 和 Beta),也没有提到 epsilon。实际上这篇文章应该是评论,但由于 50 名誉限制,我正在回答这个问题。如果您发现任何错误,请随时发表评论。

来自http://web.stanford.edu/class/archive/cs/cs294a/cs294a.1104/sparseAutoencoder.pdf Lambda 是权重衰减项的系数,它阻止权重达到较大的值,因为它可能会过拟合。权重衰减项(或权重正则化项)是成本函数的一部分,如下面解释的稀疏项。

rho 是控制隐藏层平均激活次数的稀疏约束。包含它是为了使自动编码器即使在相对于输入单元具有相对大量隐藏单元的情况下也能工作。例如,如果输入大小为 100,隐藏大小为 100 或更大(甚至更小但接近 100),则可以构造输出而不会丢失任何内容,因为隐藏单元可以学习恒等函数。Beta 是稀疏项的系数,稀疏项是成本函数的一部分。它控制稀疏项的相对重要性。Lambda 和 Beta 指定了它们的术语在成本函数中的相对重要性。

Epsilon(如果他们使用与 Andrew Ng 相同的符号)是白化过程的正则化参数,它对输入具有低通滤波器效果。这对重建方法有一些重要影响。检查基于重建的模型下的链接我认为他们对输出层使用了线性激活并使用了某种类型的白化(单变量特征)。

参数(权重和偏差)的更新率称为学习率,通常用 eta 表示。但是,它已被 Andrew Ng 用作 alpha。检查第一个链接。