我可以对不可微分的函数使用自动微分吗?

问题描述 投票:0回答:1

我正在测试不同求解器的性能,以最小化由矩量模拟方法得出的目标函数。鉴于我的目标函数不可微,我想知道在这种情况下自动微分是否可行?我尽力阅读了有关此方法的一些介绍,但无法弄清楚。

我实际上正在尝试在Julia中使用Ipopt + JuMP进行此测试。以前,我已经在Julia中使用BlackBoxoptim对它进行了测试。如果您能提供一些有关Julia中不可微分函数优化的见解,我也将不胜感激。


似乎我不清楚“不可微”。让我给你举个例子。考虑以下objective function。 X是数据集,B是不可观察到的随机误差,将被积分掉,\ theta是参数。但是,A是离散的,因此不可微。

julia numerical-methods ipopt autodiff
1个回答
0
投票

我不是优化专家,但是:这取决于您所说的“不可区分”。

[对于许多使用的数学函数,“不可微”将仅表示“并非在所有地方都是可微的”-但这仍然“几乎在所有地方都是可微的,除了许多点之外”(例如absrelu)。这些功能完全没有问题-您可以选择any subgradient并应用任何常规梯度方法。这就是基本上所有用于机器学习的AD系统所做的事情。无论如何,非奇异子梯度的情况将以低概率发生。某些形式的凸物镜的替代方法是proximal gradient methods,它可以有效地“平滑”物镜,并保持最佳状态(参见ProximalOperators.jl)。

然后,这些功能似乎根本无法区分,因为它们似乎是“组合的”或离散的,但实际上是分段可区分的(如果从正确的角度来看)。这包括sorting and ranking。但是您必须找到它们,并且描述和实现派生过程相当复杂。 AD系统是否支持这些功能,取决于其“标准库”的复杂程度。这样的某些变体,例如“ permute”,可能会超出控制结构的AD范围,而移动复杂的结构则需要手动定义原始伴随。]

但是,对于某些类型的问题,我们只是在本质上离散的空间中工作-像某些概率分布的整数参数。在这种情况下,区分是没有意义的,因此AD库定义了它们的原语而不适用这些参数。可能的选择是使用(混合)整数编程,逼近,搜索和模型选择。对于优化空间本身取决于相关参数(例如fill的第二个参数)的问题,也会发生这种情况。我们也有ℓ0 "norm"或矩阵的秩,它们存在着众所周知的连续弛豫,但这不在AD的范围之内。

((对于离散或维数参数的MCMC,在其他情况下,还有其他处理方法,例如在Gibbs采样器中将HMC与其他MC方法结合,或者使用非参数模型。其他技巧are possible for VI。]] >

话虽如此,您很少会在优化中遇到复杂的nowhere differentiable continuous函数。它们的描述已经很复杂,只是不太可能出现在我们用于建模的数学形式中。

© www.soinside.com 2019 - 2024. All rights reserved.