我有一个真正有价值的功能,我们称之为,我想最大化并将其最小化. 过了一会儿,我意识到我正在寻找一个鞍点的解决方案。我对这类问题没有经验。
谁能告诉我有什么算法可以处理这些问题?我在 Julia 工作,所以如果有人知道 Julia 中的一些实现,这将进一步帮助我。
注意:这最初是在 CrossValidated 论坛上发布的,但有人建议我把它移到这里。
我有一个真正有价值的功能,我们称之为,我想最大化并将其最小化. 过了一会儿,我意识到我正在寻找一个鞍点的解决方案。我对这类问题没有经验。
谁能告诉我有什么算法可以处理这些问题?我在 Julia 工作,所以如果有人知道 Julia 中的一些实现,这将进一步帮助我。
注意:这最初是在 CrossValidated 论坛上发布的,但有人建议我把它移到这里。
这取决于是否是可微分的和,以及函数在/. 在最简单的情况下,您可以只写下必要的最优条件
或者,您可以使用迭代方法(各种称为ascent-descent、Arrow--Hurwicz或交替方向方法):并设置
如果不可微分但凸/凹,通过使用近端映射而不是梯度可以实现类似的方法;目前最广泛使用的特殊情况的方法以原始对偶混合梯度方法的名称而闻名(或者通常,在提出它的论文的作者之后,Chambolle--Pock 方法)。
所有这些在 Matlab 中实现都相当简单(因此很容易移植到 Python 或 Julia)。
编辑:我应该指出,与非线性优化相比,没有找到非凸可微函数鞍点的一般理论(据我和谷歌所知);我熟悉的所有作品都假设凸面/凹面或非常具体的结构(例如,作为凸函数的差异或来自约束优化问题的拉格朗日)。以上只是对这些论文中使用的两类粗略方法的描述。