Machine learning 神经网络中保持随机初始权值的ADADELTA算法

Machine learning 神经网络中保持随机初始权值的ADADELTA算法,machine-learning,neural-network,gradient-descent,Machine Learning,Neural Network,Gradient Descent,我正在尝试使用ADADELTA算法在MNIST数据集上训练一个2隐层tanh神经网络 以下是我的设置参数: Tanh激活函数 2个隐藏层,784个单元(与输入单元的数量相同) 我正在使用输出层上具有交叉熵损失的softmax 我随机初始化了fanin为~15的权重,以及标准偏差为1/sqrt(15)的高斯分布权重 我使用的是10%的小批量,50%的退出率 我使用的是ADADELTA的默认参数(rho=0.95,epsilon=1e-6) 我已经检查了我的导数和自动微分 如果我运行ADADEL

我正在尝试使用ADADELTA算法在MNIST数据集上训练一个2隐层tanh神经网络

以下是我的设置参数:

  • Tanh激活函数
  • 2个隐藏层,784个单元(与输入单元的数量相同)
  • 我正在使用输出层上具有交叉熵损失的softmax
  • 我随机初始化了fanin为~15的权重,以及标准偏差为1/sqrt(15)的高斯分布权重
  • 我使用的是10%的小批量,50%的退出率
  • 我使用的是ADADELTA的默认参数(rho=0.95,epsilon=1e-6)
  • 我已经检查了我的导数和自动微分
如果我运行ADADELTA,首先它会从错误中获益,我可以看到第一层正在学习识别数字的形状。它能很好地对数字进行分类。然而,当我运行ADADELTA很长一段时间(30000次迭代)时,很明显有些地方出了问题。虽然目标函数在几百次迭代后停止改进(内部ADADELTA变量停止变化),但第一层权重仍然具有初始化时使用的相同稀疏噪声(尽管在该噪声之上学习了真实特征)

为了说明我的意思,这里是网络可视化的示例输出。

注意第一层权重中的像素噪声,尽管它们具有结构。这与它们初始化时使用的噪声相同

没有一个训练示例具有像这种噪声这样的不连续值,但出于某种原因,ADADELTA算法从未减少这些离群值权重,使其与它们的邻居一致


发生了什么?

您似乎认为ADADDelta是问题所在,但您没有说明是否使用其他方法进行了测试。您是否尝试过另一种方法,但没有出现此问题?我尝试了固定学习率SGD。具有较高的学习率,收敛后发散为像素噪声。由于学习率较低,它花了太长时间才能收敛。我不认为ADADELTA本身就是问题,但它应该可以消除很多学习率不正确的失败案例。