0

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

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


似乎我对“不可微分”不清楚。让我给你举个例子。考虑以下目标函数。X 是数据集,B 是将被整合出来的未观察到的随机误差,θ 是参数。但是,A 是离散的,因此不可微分。

4

1 回答 1

1

我并不完全是优化专家,但是:这取决于您所说的“不可微分”是什么意思。

对于许多使用的数学函数,“不可微”仅表示“并非处处可微”——但这仍然是“几乎处处可微,除了在可数的许多点上”(例如,absrelu)。这些函数根本不是问题——你可以选择任何次梯度并应用任何正常的梯度方法。这就是基本上所有用于机器学习的 AD 系统所做的。无论如何,非奇异次梯度的情况发生的概率很小。某些形式的凸目标的替代方法是近端梯度方法,它以一种有效的方式“平滑”目标,保持最优(参见ProximalOperators.jl)。

然后是那些看起来根本无法区分的函数,因为它们看起来是“组合的”或离散的,但实际上是分段可微的(如果从正确的角度来看)。这包括排序和排名。但是你必须找到它们,并且描述和实现衍生物是相当复杂的。AD系统是否支持这些功能取决于其“标准库”的复杂程度。这种情况的一些变体,如“置换”,可能只是在控制结构上脱离 AD,而移动复杂的则需要手动定义原始伴随。

然而,对于某些类型的问题,我们只是在一个本质上离散的空间中工作——比如一些概率分布的整数参数。在这些情况下,区分是没有意义的,因此 AD 库将它们的原语定义为不适用于这些参数。可能的替代方法是使用(混合)整数规划、近似、搜索和模型选择。这种情况也发生在优化空间本身取决于所讨论的参数的问题上,例如fill. 我们也有诸如ℓ0“范数”或矩阵秩之类的东西,其中存在众所周知的连续松弛,但这超出了 AD 的范围)。

(在 MCMC 用于离散或维度参数的特定情况下,还有其他方法可以解决这个问题,例如在 Gibbs 采样器中将 HMC 与其他 MC 方法组合,或者使用非参数模型。VI可以使用其他技巧。)

话虽如此,您在优化中很少会遇到复杂的无处可微连续函数。它们已经很难描述,只是不太可能出现在我们用于建模的那种数学中。

于 2020-03-13T09:50:18.307 回答