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

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

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

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

..我想念什么?到处都读到它说激活功能是可以互换的。我知道有解决方法(重新缩放数据,使用FFT系数等),但我不明白为什么这不起作用。

无论如何,预先感谢任何回答!我在这里的第一篇文章越来越多地阅读这些类型的论坛,并且发现它们越来越有用。

最佳答案

我想我可能已经知道了。感谢你们两个的回答!稀疏性惩罚使用Kullback Leibler Divergence。请参阅此链接,距离页面的一半还多。 (您可以在这里输入Latex吗?)反正可能会很长。

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

用英语:稀疏度惩罚试图最小化隐藏单元的激活,但是它假定输出信号范围在0到1之间的S型,因为KL div仅在0到1之间。
如果tanh的平均激活为0(这是稀疏自动编码器所需的值),则该页面上给出的KL div不满意。
我走运没有运气。

是否有一种形式的KL div具有适当的tanh激活范围?有人可以指出我的参考吗?在上面链接的那个站点上,作者说稀疏惩罚的很多选择都是可以的,但是没有详细说明其他选择。只化妆是明智的吗?或者寻找可以接受的东西。再次感谢!

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

10-12 18:03
查看更多