【发布时间】:2018-07-14 11:28:57
【问题描述】:
所以我有一个我在 Youtube 上关注的神经网络的实现。这家伙使用 SGD(Momentum)作为优化算法,使用双曲正切作为激活函数。我已经将传递函数更改为 Leaky ReLU(用于隐藏层)和 Sigmoid(用于输出层)。
但现在我决定我也应该将优化算法更改为 Adam。最后,我在 Wikipedia 上搜索了 SGD(Momentum),以更深入地了解它的工作原理,我发现有些不对劲。这家伙在剪辑中使用的公式与维基百科上的不同。而且我不确定这是否是一个错误……该剪辑长达一小时,但我并不是要您观看整个视频,但是我对 54m37s 标记和维基百科公式很感兴趣,就在这里:
https://youtu.be/KkwX7FkLfug?t=54m37s https://en.wikipedia.org/wiki/Stochastic_gradient_descent#Momentum
因此,如果您查看该人的实现,然后查看 SGD(动量)公式的 Wikipedia 链接,基本上唯一的区别在于增量权重的计算。
维基百科指出,您从动量乘以旧的 delta 权重、学习率乘以梯度和神经元的输出值中减去。而在本教程中,不是减去那个人将它们加在一起。但是,新权重的公式是正确的。它只是将增量权重添加到旧权重。
所以我的问题是,教程中的人是否犯了错误,或者我缺少什么?因为不知何故,我训练了一个神经网络,它的行为也相应地发生了变化,所以我无法真正说出问题所在。提前致谢。
【问题讨论】:
标签: algorithm optimization machine-learning neural-network backpropagation