主要内容

自动分化背景

自动微分法是什么?

自动分化(也称为autodiff,广告,或算法的区别)是一种广泛使用的深度学习的工具。看到书自动分化。是特别有用的创建和训练复杂的深度学习模型,而不需要手动计算衍生品进行优化。的例子显示如何创建和定制深度学习模型,训练循环,和损失函数,看看自定义训练循环,损失函数和网络

自动微分是一组技术评估衍生品(梯度)的数值。分化的方法使用符号规则,更精确的比有限差分近似。与纯象征性的方法不同,自动分化早期评估表达式数值计算,而不是执行大符号计算。换句话说,自动分化在特定的数值评估衍生品;它不构造符号表达式的衍生品。

  • 转发模式评估一个数值导数通过执行基本导数并发操作的操作评估函数本身。在下一节中,详细的软件上执行这些计算计算图。

  • 反模式自动分化使用远期模式计算图的扩展,使一个梯度的计算反向遍历图的。在软件运行时代码计算函数及其导数,它在一个数据结构称为记录操作跟踪

研究人员注意到(例如,Baydin投资、工作、拉多,和Siskind[1]一个标量函数),许多变量,反向模式计算梯度比前进更有效的模式。因为一个深度学习损失函数是一个标量函数的权重,深度学习工具箱™自动分化使用反模式。

转发模式

考虑评估这个函数及其梯度的问题:

f ( x ) = x 1 经验值 ( 1 2 ( x 1 2 + x 2 2 ) )

自动分化在特定点工作。在这种情况下,x1= 2,x2= 1/2。

下面的计算图形编码的计算功能f(x)。

计算的梯度f(x)使用转发模式,你计算相同的图在同一方向,但修改计算基于微分的基本规则。为了进一步简化计算,你填写的导数每个子表达式的值u当你走。计算整个梯度,必须遍历图两次,一次每个独立变量的偏导数。链式法则中的每个子表达式的数值,所以整个表达式同样的评价图函数本身。

计算是一个重复应用链式法则。在这个例子中,的导数f关于x1扩大这个表达式:

d f d x 1 = d u 6 d x 1 = u 6 u 1 + u 6 u 5 u 5 x 1 = u 6 u 1 + u 6 u 5 u 5 u 4 u 4 x 1 = u 6 u 1 + u 6 u 5 u 5 u 4 u 4 u 3 u 3 x 1 = u 6 u 1 + u 6 u 5 u 5 u 4 u 4 u 3 u 3 u 1 u 1 x 1

u ˙ 代表的导数表达式u关于x1。使用的评估值u从功能评估,你计算的偏导数f关于x1如以下图所示。请注意,所有的值 u ˙ 可用当你从上到下遍历图。

计算偏导数x2,你遍历一个类似的计算图表。因此,当你计算函数的梯度,图遍历的数量是一样的变量的数量。这个过程是典型的深度学习应用程序太慢,哪有成千上万的变量。

反模式

反向模式使用一个向前遍历计算图表的设置跟踪。然后计算一遍历整个函数的梯度图的相反的方向。对于深度学习应用程序,这种模式更有效。

反向模式背后的理论也是基于链式法则,连同相关overbar伴随变量表示。伴随变量的u

u ¯ = f u

的计算图表,每个即将离任的箭头从一个变量会导致相应的伴随变量的链式法则。例如,变量u1即将离任的箭头两个变量,u1u6。图的相关方程

f u 1 = f u 1 u 1 u 1 + f u 6 u 6 u 1 = u ¯ 1 u 1 u 1 + u ¯ 6 u 6 u 1

在这个计算,回忆 u 1 = u 1 2 u6=u5u1,你获得

u ¯ 1 = u ¯ 1 2 u 1 + u ¯ 6 u 5

在图的遍历,软件计算中间变量u。在反向遍历,从种子值 u ¯ 6 = f f = 1 ,相反的模式计算获得伴随所有变量的值。因此,反向模式计算梯度在一计算,节省了大量的时间与转发模式。

下面的图显示了计算梯度反向模式的功能

f ( x ) = x 1 经验值 ( 1 2 ( x 1 2 + x 2 2 ) )

再次,计算代价x1= 2,x2= 1/2。计算依赖于相反的模式u值函数的计算中得到最初的计算图表。正确的图的一部分,伴随变量的计算值出现伴随变量的名称,使用公式从左边部分的图。

最终表现为梯度值 u ¯ 0 = f u 0 = f x 2 u ¯ 1 = f u 1 = f x 1

更多细节,请参阅Baydin投资、工作、拉多,Siskind[1]或维基百科文章自动分化[2]。

引用

[1]Baydin投资,a G。,B. A. Pearlmutter, A. A. Radul, and J. M. Siskind. "Automatic Differentiation in Machine Learning: a Survey."机器学习研究期刊》的研究,18(153),2018年,页1 -。可以在https://arxiv.org/abs/1502.05767

[2]自动分化。维基百科。可以在https://en.wikipedia.org/wiki/Automatic_differentiation

另请参阅

|||

相关的话题