该autoencoder包只是 Andrew Ng 的课堂笔记中描述的自动编码器的一个实现,这可能是进一步阅读的一个很好的起点。现在,来解决你的问题
人们有时会区分学习算法自己计算的参数和控制学习过程并需要提供给学习算法的超参数。重要的是要意识到超参数没有神奇的价值。最佳值会有所不同,具体取决于您要建模的数据:您必须在数据上尝试它们。
a) Lambda ( ) 控制在反向传播期间如何更新权重。成本函数不只是根据模型输出和基本事实之间的差异来更新权重,而是包含一个惩罚大权重的项(实际上是所有权重的平方值)。Lambda 控制这个惩罚项的相对重要性,它倾向于将权重拖向零并有助于避免过度拟合。λ
b) 罗 (ρ)和测试版(β) 控制稀疏度。Rho 是隐藏单元的预期激活(在训练集中取平均值)。随着它变得更小,表示将变得越来越稀疏。这种稀疏性是通过调整偏置项来施加的,而 beta 控制其更新的大小。(看起来像β实际上只是重新调整了整体学习率α.)
c) 厄普西隆 (ϵ)控制从随机抽取的初始权重值N(0,ϵ2).
您的 rho 值似乎并不合理,因为两者都接近激活函数范围的底部(逻辑为 0 到 1,tanh 为 -1 到 1)。但是,这显然取决于您想要的稀疏度以及您使用的隐藏单元的数量。
LeCunn 对小权重的主要关注是,如果您使用对称 sigmoid,误差表面在原点附近会变得非常平坦。在该论文的其他地方,他建议使用从均值为零的正态分布中随机抽取的权重进行初始化,并且m−1/2标准差,其中m是每个单元接收的连接数。
选择隐藏单元的数量有很多“经验法则”。您最初的猜测(2x 输入)似乎与大多数猜测一致。也就是说,这些猜测比估计更多的是猜测。假设你有处理能力,我会犯更多隐藏单元的错误,然后用低 rho 值强制稀疏。
自编码器的一个明显用途是为其他学习算法生成更紧凑的特征表示。原始图像可能有数百万像素,但(稀疏)自动编码器可以在更小的空间中重新表示。Geoff Hinton(和其他人)已经证明它们为后续分类生成了有用的特征。一些深度学习工作使用自动编码器或类似方法来预训练网络。文森特等人。直接使用自动编码器进行分类。
生成简洁特征表示的能力也可以在其他上下文中使用。这是一个简洁的小项目,其中使用自动编码器生成的状态来指导强化学习算法通过Atari 游戏。
最后,人们还可以使用自动编码器来重建嘈杂或退化的输入,就像这样,这本身就是一个有用的目的。