作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我最近学习了“梯度检查”算法,以确保正确计算神经网络反向传播的导数。
The course from which I have learned ,以及许多其他来源,例如 this one ,声称它比计算导数慢得多,但我似乎找不到任何地方可以解释原因。
那么,为什么梯度检查比直接计算导数慢?
慢了多少?
最佳答案
您在反向传播中所做的是自动/算法微分的向后模式,适用于具有大量 N
输入和只有一个输出的函数。这里的“输入”主要是指神经网络节点的实数参数,也可能是网络的输入变量。
在向后模式中,您可以通过操作链一次计算所有输入的导数。这需要大约 3 次功能评估的成本,加上向后执行操作链以及存储和访问中间结果的组织开销。
在用于“梯度检查”的相同情况的前向模式中,无论您是否前推 AD 导数或计算除差,都需要单独计算每个导数。其总成本约为 2*N
次函数评估。
由于 N
很大,2*N
远大于 3。
关于machine-learning - 为什么梯度检查反向传播速度很慢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52779783/
我是一名优秀的程序员,十分优秀!