我对神经网络、反向传播和链式法则有很好的掌握,但是我很难理解自动微分。
下面指的是反向传播上下文之外的自动微分:
- 自动微分如何计算矩阵的梯度?
- 计算梯度有什么要求?是否需要指定功能?
- 这有哪些用例(除了反向传播)?
- 为什么它很重要,有哪些替代方案?
我错过了什么吗?
我对神经网络、反向传播和链式法则有很好的掌握,但是我很难理解自动微分。
下面指的是反向传播上下文之外的自动微分:
我错过了什么吗?
在自动微分系统中,大多数运算符(例如加法、减法)与它的微分一起定义。
因此,在您通过堆叠一系列运算符编写函数后,系统可以自行计算出相应的导数应该如何计算,通常使用计算图和链式法则。
自动微分有利于基于梯度的优化(例如,使用梯度下降训练神经网络),因为它使我们免于计算数学、实现代码和逐个数字验证导数。
以下是如何在Theano和Tensorflow中定义运算符(op) 。