使用反向传播培训CNN

时间:2016-07-11 10:03:41

标签: image-processing machine-learning computer-vision deep-learning backpropagation

我之前曾在浅层(一层或两层)神经网络中工作过,所以我对它们有了解,它们是如何工作的,并且很容易在训练期间可视化前向和后向传递的推导,目前我正在研究深度神经网络(更准确地说是CNN),我已经阅读了很多关于他们训练的文章,但我仍然无法理解CNN训练的大局,因为在某些情况下,人们使用预训练使用自动编码器提取卷积权重的层,在某些情况下使用随机权重进行卷积,然后使用反向传播训练权重,任何人都可以帮助我全面了解从输入到完全连接层的训练过程(正向通过)和从完全连接的层到输入层(向后通过)。

谢谢

1 个答案:

答案 0 :(得分:2)

我想向您推荐一个如何使用反向传播训练多层神经网络的非常好的解释。 This tutorial是关于反向传播如何工作的非常详细解释的第5篇文章,它还有不同类型的神经网络的Python示例,以完全理解正在发生的事情。

作为Peter Roelants教程的摘要,我将尝试解释一下什么是反向传播。

正如您已经说过的,有两种方法可以初始化深度NN:使用随机权重或预先训练的权重。在随机权重和监督学习场景的情况下,反向传播的工作原理如下:

  • 随机初始化您的网络参数。
  • 结转一批带标签的例子。
  • 计算所需输出和实际输出中的错误(由损失函数给出)。
  • 计算每个参数w.r.t输出错误的偏导数。
  • 这些导数是网络参数的误差梯度。换句话说,他们告诉你如何改变权重的值,以获得所需的输出,而不是产生的输出。
  • 根据这些渐变和所需的学习率更新权重。
  • 使用不同的训练样例执行另一个正向传递,重复以下步骤,直到错误停止减少。

从随机权重开始对于反向传播算法来说不是问题,如果有足够的训练数据和迭代,它将调整权重直到它们适用于给定任务。

我真的很鼓励你按照我所链接的完整教程进行操作,因为你会对反向传播如何以及为何适用于多层神经网络有一个非常认真的看法。