我之前在浅层(一层或两层)神经网络中工作过,所以我对它们有了解,它们是如何工作的,并且在训练它们的过程中很容易可视化正向和后向传递的推导,目前我正在研究深度神经网络(更准确地说是CNN),我读了很多关于他们训练的文章, 但我仍然无法理解 CNN 训练的大局,因为在某些情况下,人们使用预训练层,其中卷积权重是使用自动编码器提取的,在某些情况下,随机权重用于卷积,然后使用反向传播他们训练权重,任何人都可以帮助我全面了解从输入到全连接层(Forward Pass)和从完全连接的训练过程层到输入层(向后传递)。
谢谢
我想向您推荐一个非常好的解释,说明如何使用反向传播训练多层神经网络。本教程是关于反向传播如何工作的非常详细的解释的第 5 篇文章,它还提供了不同类型神经网络的 Python 示例,以充分了解正在发生的事情。
作为 Peter Roelants 教程的总结,我将尝试解释一下什么是反向传播。
正如您已经说过的,有两种方法可以初始化深度 NN:使用随机权重或预先训练的权重。在随机权重的情况下,对于监督学习场景,反向传播的工作原理如下:
- 随机初始化网络参数。
- 转发一批带标签的示例。
- 计算所需输出和实际输出内的误差(由损失函数给出)。
- 计算每个参数的输出误差的偏导数。
- 这些导数是误差 w.r.t 对网络参数的梯度。换句话说,他们告诉您如何更改权重的值以获得所需的输出,而不是生成的输出。
- 根据这些梯度和所需的学习率更新权重。
- 使用不同的训练示例执行另一个正向传递,重复以下步骤,直到错误停止减少。
对于反向传播算法来说,从随机权重开始不是问题,只要有足够的训练数据和迭代,它将调整权重,直到它们适用于给定的任务。
我真的鼓励你遵循我链接的完整教程,因为你将非常清楚地了解反向传播如何以及为什么适用于多层神经网络。