自动分化背景
自动微分法是什么?
自动分化(也称为autodiff,广告,或算法的区别)是一种广泛使用的工具优化。的解决
函数使用默认自动微分运用一般非线性目标函数和约束优化;看到自动微分优化工具箱。
自动微分是一组技术评估衍生品(梯度)的数值。分化的方法使用符号规则,更精确的比有限差分近似。与纯象征性的方法不同,自动分化早期评估表达式数值计算,而不是执行大符号计算。换句话说,自动分化在特定的数值评估衍生品;它不构造符号表达式的衍生品。
转发模式自动微分计算一个数值导数通过执行基本导数并发操作的操作评估函数本身。在下一节中,详细的软件上执行这些计算计算图。
反模式自动分化使用远期模式计算图的扩展,使一个梯度的计算反向遍历图的。在软件运行时代码计算函数及其导数,它在一个数据结构称为记录操作跟踪。
研究人员注意到(例如,Baydin投资、工作、拉多,和Siskind[1]一个标量函数),许多变量,反向模式计算梯度比前进更有效的模式。因为一个目标函数是标量,解决
自动分化为标量优化使用反模式。然而,非线性最小二乘法和等向量值函数方程求解,解决
使用提出一些计算模式。看到自动微分优化工具箱。
转发模式
考虑评估这个函数及其梯度的问题:
自动分化在特定点工作。在这种情况下,x1= 2,x2= 1/2。
下面的计算图形编码的计算功能f(x)。
计算的梯度f(x)使用转发模式,你计算相同的图在同一方向,但修改计算基于微分的基本规则。为了进一步简化计算,你填写的导数每个子表达式的值u我当你走。计算整个梯度,必须遍历图两次,一次每个独立变量的偏导数。链式法则中的每个子表达式的数值,所以整个表达式同样的评价图函数本身。
计算是一个重复应用链式法则。在这个例子中,的导数f关于x1扩大这个表达式:
让 代表的导数表达式u我关于x1。使用的评估值u我从功能评估,你计算的偏导数f关于x1如以下图所示。请注意,所有的值 可用当你从上到下遍历图。
计算偏导数x2,你遍历一个类似的计算图表。因此,当你计算函数的梯度,图遍历的数量是一样的变量的数量。对于许多应用程序,这个过程可能是缓慢的,当目标函数或非线性约束取决于许多变量。
反模式
反向模式使用一个向前遍历计算图表的设置跟踪。然后计算一遍历整个函数的梯度图的相反的方向。与许多变量问题,这种模式更有效。
反向模式背后的理论也是基于链式法则,连同相关overbar伴随变量表示。伴随变量的u我是
的计算图表,每个即将离任的箭头从一个变量会导致相应的伴随变量的链式法则。例如,变量u1即将离任的箭头两个变量,u1和u6。图的相关方程
在这个计算,回忆 和u6=u5u1,你获得
在图的遍历,软件计算中间变量u我。在反向遍历,从种子值 ,相反的模式计算获得伴随所有变量的值。因此,反向模式计算梯度在一计算,节省了大量的时间与转发模式。
下面的图显示了计算梯度反向模式的功能
再次,计算代价x1= 2,x2= 1/2。计算依赖于相反的模式u我值函数的计算中得到最初的计算图表。正确的图的一部分,伴随变量的计算值出现伴随变量的名称,使用公式从左边部分的图。
最终表现为梯度值 和 。
自动分化优化工具箱
适用于自动分化(广告)解决
和prob2struct
函数在下列条件:
客观支持和约束函数,描述金宝app金宝app支持操作优化变量和表达式。他们不需要使用的
fcn2optimexpr
函数。对于优化问题,
“ObjectiveDerivative”
和“ConstraintDerivative”
名称-值对的理由解决
或prob2struct
将“汽车”
(默认),“auto-forward”
,或自动翻转的
。对于方程的问题,
“EquationDerivative”
选项设置为“汽车”
(默认),“auto-forward”
,或自动翻转的
。
当广告应用 | 所有约束功能支持金宝app | 不支持一个或多个约束金宝app |
---|---|---|
目标函数的支持金宝app | 广告用于目标和约束 | 广告仅用于客观 |
目标函数不支持金宝app | 广告仅用于约束 | 广告不习惯 |
当这些条件不满意,解决
由有限差分估计梯度,prob2struct
在其生成的函数文件不会创建渐变。
解决选择默认以下类型的广告:
对于一般的非线性目标函数,
fmincon
默认为反向广告为目标函数。fmincon
默认为反向广告为非线性约束函数当非线性约束的数量小于变量的数量。否则,fmincon
默认转发广告为非线性约束函数。对于一般的非线性目标函数,
fminunc
默认为反向广告。最小二乘目标函数,
fmincon
和fminunc
目标函数的默认转发广告。运用基于最小二乘的定义目标函数,看看写具体问题具体分析最小二乘法的目标函数。lsqnonlin
默认转发广告当目标向量中的元素的数量大于或等于变量的数量。否则,lsqnonlin
默认为反向广告。fsolve
默认转发广告当方程的数量大于或等于变量的数量。否则,fsolve
默认为反向广告。
请注意
使用自动衍生品问题的转换prob2struct
,通过选项指定这些衍生品。
选择= optimoptions (“fmincon”,“SpecifyObjectiveGradient”,真的,…“SpecifyConstraintGradient”,真正的);问题。选择=选项;
目前,广告作品只有一阶导数;它并不适用于第二或高阶导数。举个例子,如果你想使用一个分析黑森速度优化,您不能使用解决
直接,而且必须用描述的方法提供衍生品运用工作流。
引用
[1]Baydin投资,Atilim枪,巴拉克a .工作Alexey Andreyevich拉多,和杰弗里·马克Siskind。机器学习中“自动分化:一项调查。”机器学习研究期刊》的研究,18(153),2018年,页1 -。可以在https://arxiv.org/abs/1502.05767。
[2]自动分化。维基百科。可以在https://en.wikipedia.org/wiki/Automatic_differentiation。