Rrz*_*rz0 9 machine-learning backpropagation deep-learning tensorflow
通过本书,我熟悉以下内容:
对于每个训练实例,反向传播算法首先进行预测(正向传递),测量误差,然后反过来每个层测量每个连接的误差贡献(反向传递),最后稍微调整连接权重以减少错误.
但是我不确定这与TensorFlow的反向模式autodiff实现有何不同.
据我所知,反向模式自动存储器首先在前向方向上通过图形,然后在第二次通过中计算输出相对于输入的所有偏导数.这与传播算法非常相似.
反向传播与反向模式自动记录有何不同?
感谢David Parks对有效贡献和有用链接的回答,但是我已经找到了本书作者自己对这个问题的答案,这可能会提供一个更简洁的答案:
Bakpropagation指的是使用多个反向传播步骤训练人工神经网络的整个过程,每个反向传播步骤计算梯度并使用它们执行梯度下降步骤.相比之下,反向模式自动差异只是一种用于有效计算梯度的技术,它恰好被反向传播使用.
反向传播和反向模式 AD 之间最重要的区别是反向模式 AD 从 R^n -> R^m 计算向量值函数的向量雅可比积,而反向传播从 R 计算标量值函数的梯度^n -> R。因此,反向传播是反向模式 AD 的子集。
当我们训练神经网络时,我们总是有一个标量值的损失函数,所以我们总是使用反向传播。由于反向传播是反向模式 AD 的子集,因此我们在训练神经网络时也使用反向模式 AD。
反向传播是采用更一般的反向模式 AD 定义应用于标量损失函数,还是采用更具体的反向模式 AD 定义应用于训练神经网络的标量损失函数,这取决于个人喜好。这是一个在不同上下文中含义略有不同的词,但在机器学习社区中最常用来谈论使用标量损失函数计算神经网络参数的梯度。
为了完整性:有时反向模式 AD 可以在单次反向传递中计算完整的雅可比行列式,而不仅仅是向量雅可比式乘积。此外,向量是向量 [1.0] 的标量函数的向量雅可比积与梯度相同。
归档时间: |
|
查看次数: |
968 次 |
最近记录: |