我试图使用ADADELTA算法在MNIST数据集上训练一个隐藏层tanh神经网络。
以下是我的设置参数:
如果我运行ADADELTA,首先它会增加错误,我可以看到第一层正在学习识别数字的形状。它在对数字进行分类方面做得不错。但是,当我长时间运行ADADELTA(30,000次迭代)时,很明显出现了问题。虽然目标函数在几百次迭代后停止改进(并且内部ADADELTA变量停止变化),但第一层权重仍然具有与它们初始化相同的稀疏噪声(尽管在该噪声之上学习了真实特征)。
为了说明我的意思,这里是网络可视化的示例输出。
注意第一层权重中的像素噪声,尽管它们具有结构。这与他们初始化的噪音相同。
没有一个训练样例具有像这种噪声那样的不连续值,但由于某种原因,ADADELTA算法永远不会减少这些异常值权重以与其邻居一致。
发生了什么事?