【发布时间】:2017-02-17 11:41:37
【问题描述】:
在大学的那一天(大约 2011 年、2012 年),我被介绍到反向传播作为训练前馈人工神经网络的最先进技术。
在 Tensorflow 的示例中,我看到了梯度下降的现代自旋(例如 RMSProp、Adam)被用于一次训练所有权重,但没有使用反向传播。
从直观的角度来看,我理解反向传播是一次训练每一层,因此有多个空间可供优化,但每个空间的维度较少(层的每个权重都是一个维度)。相反,没有反向传播是在单个高维空间内进行优化。当然 RMSProp 等可以与反向传播相结合,但我看到的是它还没有完成。
例如https://www.tensorflow.org/get_started/mnist/pros 或https://github.com/aymericdamien/TensorFlow-Examples/blob/master/examples/3_NeuralNetworks/autoencoder.py
反向传播过时了吗?
【问题讨论】:
-
他们都在使用反向传播。这不是一种学习算法,而是一种计算 Adam 和 co 的梯度的方法。上使用。也许开始阅读this。
-
@sascha:我链接到的当前代码中没有反向传播:1)神经层是明确编程的。唯一可能隐藏的地方是优化——这似乎不太可能,因为它甚至不知道我一开始正在训练一个人工神经网络——但我还是去看了代码,把我带到了 2).. .
-
2) 在github.com/tensorflow/tensorflow/blob/master/tensorflow/python/… 中没有反向传播,并且梯度是根据github.com/tensorflow/tensorflow/blob/master/tensorflow/python/… 中
def gradients中的总损失(不是层的损失)计算的。因此:不,没有使用反向传播。如果我错过了什么,请直接指出我的显式代码。 (无论如何,感谢您的文章 - 看起来很有趣。) -
不。阅读this too。摘录:
Because TensorFlow knows the entire graph of your computations, it can automatically use the backpropagation algorithm to efficiently determine how your variables affect the loss you ask it to minimize.+What TensorFlow actually does here, behind the scenes, is to add new operations to your graph which implement backpropagation and gradient descent. -
@sasche:好吧,当然,这令人印象深刻。感谢您的回答。据我了解,可以在没有反向传播的情况下训练 NN,不是吗? (尽管使用反向传播可能更有效。)
标签: neural-network backpropagation