machine-learning - 具有 UFLDL 的 Tanh 激活功能的稀疏自动编码器

标签 machine-learning neural-network pattern-recognition sparse-matrix

我一直在研究 UFLDL 教程(在 matlab/octave 中):

http://deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial

并且一直在不同的数据集上尝试稀疏自动编码器。我尝试在时间序列数据上运行它并遇到了问题。由于输入数据具有负值,因此 sigmoid 激活函数 (1/1 + exp(-x)) 不合适。当替换为 tanh 时,优化程序 minfunc (L-BFGS) 失败(步长低于 TolX)。我大幅降低了 TolX 常数,但没有任何变化。 我将输出层更改为线性,保留输入层 sigmoid,但这不是一个更好的解决方案。自动编码器的输出按常数 (0.5) 放大,这会扰乱成本函数。所以......简而言之:

为什么 Tanh 激活函数不能与 L-BFGS 一起使用? (或者还有其他问题)?

..我错过了什么?人们在任何地方读到的内容都说激活函数是可以互换的。我知道有解决方法(重新调整数据、使用 FFT 系数等),但我不明白为什么这不起作用。

无论如何,先感谢所有回答的人!这是这里的第一篇文章,我越来越多地阅读这些类型的论坛,并发现它们越来越有帮助......

最佳答案

我想我可能已经明白了。谢谢两位的回答!稀疏性惩罚使用 Kullback Leibler Divergence。请参阅此链接,位于页面下方一半以上。 (你可以在这里输入 Latex 吗?)无论如何,它可能有点长..

http://deeplearning.stanford.edu/wiki/index.php/Autoencoders_and_Sparsity

英文:稀疏性惩罚试图最小化隐藏单元的激活,但它假设输出范围在 0 和 1 之间的 sigmoid,因为 KL div 仅在 0 和 1 之间才是实数。 如果 tanh 的平均激活值为 0(这就是我们想要的稀疏自动编码器),那么该页面上给出的 KL div 就不令人满意。 我环顾四周,但运气不佳;

是否有一种形式的 KL div 具有适当的 tanh 激活范围?有人可以指出我的任何引用资料吗?在上面链接的网站上,作者说稀疏惩罚的许多选择都是可以的,但没有进一步详细说明其他选择可能是什么。编造一些东西是否谨慎?或者寻找一些被接受的东西。再次感谢!

关于machine-learning - 具有 UFLDL 的 Tanh 激活功能的稀疏自动编码器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11430870/

相关文章:

python - 如何使用字典设置超参数

tensorflow - 如何设置用于二元分类的神经网络架构

python - Pandas:从 DataFrame 列制作字典的最有效方法

python - 找出两个(不谐波)波之间的相位差

image - 匹配的拼图 block

python - 在python中使用基因表达矩阵进行层次聚类

machine-learning - InfogainLoss 层 blob 失败

c - 在 opencv 中训练神经网络时出错

algorithm - 关于调整级联 AdaBoost 阶段阈值的一些细节

machine-learning - 机器学习算法表明哪些训练数据导致当前决策