1
0
分享
本文系统介绍了数学优化问题的定义、分类及求解方法,涵盖离散优化(组合优化与整数规划)与连续优化(无约束优化、约束优化、线性与非线性优化),并深入探讨了梯度下降法、牛顿法、拉格朗日乘数法及KKT条件等核心算法与理论,为机器学习、运筹学等领域提供理论基础。
数学优化(Mathematical Optimization)问题,也叫最优化问题,是指在一定约束条件下,求解一个目标函数的最大值(或最小值)问题.数学优化问题的定义为:给定一个目标函数(也叫代价函数)𝑓 ∶ 𝒜 → ℝ,寻找一个变量(也叫参数)𝒙∗ ∈ 𝒟 ⊂ 𝒜,使得对于所有 𝒟 中的 𝒙,都满足𝑓(𝒙∗ ) ≤ 𝑓(𝒙)(最小化);或者𝑓(𝒙∗ ) ≥ 𝑓(𝒙)(最大化),其中𝒟 为变量𝒙的约束集,也叫可行域;𝒟 中的变量被称为是可行解。
1. 数学优化的类型
1.1 离散优化和连续优化
根据输入变量 𝑿 的值域是否为实数域,数学优化问题可以分为离散优化问题和连续优化问题。
1.1.1 离散优化问题
离散优化(Discrete Optimization)问题是目标函数的输入变量为离散变量,比如为整数或有限集合中的元素.离散优化问题主要有两个分支:
(1) 组合优化(Combinatorial Optimization):其目标是从一个有限集合中找出使得目标函数最优的元素.在一般的组合优化问题中,集合中的元素之间存在一定的关联,可以表示为图结构.典型的组合优化问题有旅行商问题、最小生成树问题、图着色问题等.很多机器学习问题都是组合优化问题,比如特征选择、聚类问题、超参数优化问题以及结构化学习(Structured Learning)中标签预测问题等。
(2) 整数规划(Integer Programming):输入变量 𝒙 ∈ ℤ𝐷 为整数向量.常见的整数规划问题通常为整数线性规划(Integer Linear Programming,ILP) .整数线性规划的一种最直接的求解方法是:1)去掉输入必须为整数的限制,将原问题转换为一般的线性规划问题,这个线性规划问题为原问题的松弛问题;2)求得相应松弛问题的解;3)把松弛问题的解四舍五入到最接近的整数.但是这种方法得到的解一般都不是最优的,因为原问题的最优解不一定在松弛问题最优解的附近.另外,这种方法得到的解也不一定满足约束条件。离散优化问题的求解一般都比较困难,优化算法的复杂度都比较高。
1.1.2 连续优化问题
连续优化(Continuous Optimization)问题是目标函数的输入变量为连续变量𝒙 ∈ ℝ𝐷,即目标函数为实函数.本节后面的内容主要以连续优化为主。
1.2 无约束优化和约束优化
在连续优化问题中,根据是否有变量的约束条件,可以将优化问题分为无约束优化问题和约束优化问题.无约束优化(Unconstrained Optimization) 问题的可行域通常为整个实数域𝒟 = ℝ𝐷,可以写为min 𝒙 𝑓(𝒙),其中𝒙 ∈ ℝ𝐷 为输入变量,𝑓 ∶ ℝ𝐷 → ℝ为目标函数。约束优化(Constrained Optimization)问题中变量𝒙需要满足一些等式或不等式的约束.约束优化问题通常使用拉格朗日乘数法来进行求解。
1.3 线性优化和非线性优化
如果在公式 (C.1) 中,目标函数和所有的约束函数都为线性函数,则该问题为线性规划(Linear Programming)问题.相反,如果目标函数或任何一个约束函数为非线性函数,则该问题为非线性规划(Nonlinear Programming)问题.在非线性优化问题中,有一类比较特殊的问题是凸优化(Convex Optimization)问题.在凸优化问题中,变量 𝒙 的可行域为凸集(Convex Set),即对于集合中任意两点,它们的连线全部位于集合内部.目标函数 𝑓 也必须为凸函数,即满足
2. 优化算法
优化问题一般都可以通过迭代的方式来求解:通过猜测一个初始的估计𝒙0,然后不断迭代产生新的估计 𝒙1 , 𝒙2 , ⋯ 𝒙𝑡,希望 𝒙𝑡 最终收敛到期望的最优解 𝒙∗。一个好的优化算法应该是在一定的时间或空间复杂度下能够快速准确地找到最优解.同时,好的优化算法受初始猜测点的影响较小,通过迭代能稳定地找到最优解𝒙∗ 的邻域,然后迅速收敛于𝒙∗。优化算法中常用的迭代方法有线性搜索和置信域方法等.线性搜索的策略是寻找方向和步长,具体算法有梯度下降法、牛顿法、共轭梯度法等。
2.1 全局最小解和局部最小解
对于很多非线性优化问题,会存在若干个局部最小值(Local Minima),其对应的解称为局部最小解(Local Minimizer). 局部最小解𝒙∗ 定义为:存在一个𝛿 > 0,对于所有的满足‖𝒙 − 𝒙∗‖ ≤ 𝛿 的𝒙,都有 𝑓(𝒙∗ ) ≤ 𝑓(𝒙).也就是说,在𝒙∗的邻域内,所有的函数值都大于或者等于𝑓(𝒙∗).对于所有的 𝒙 ∈ 𝒟,都有 𝑓(𝒙∗ ) ≤ 𝑓(𝒙) 成立,则 𝒙∗ 为全局最小解(Global Minimizer)。
求局部最小解一般是比较容易的,但很难保证其为全局最小解.对于线性规划或凸优化问题,局部最小解就是全局最小解。要确认一个点 𝒙∗ 是否为局部最小解,通过比较它的邻域内有没有更小的函数值是不现实的.如果函数𝑓(𝒙)是二次连续可微的,我们可以通过检查目标函数在点𝒙∗ 的梯度∇𝑓(𝒙∗)和Hessian矩阵∇2𝑓(𝒙∗)来判断。
假设∇𝑓(𝒙∗ ) ≠ 0,则可以找到一个 Δ𝒙(比如 Δ𝒙 = −𝛼∇𝑓(𝒙∗),𝛼 为很小的正数),使得
证明 如果函数𝑓(𝒙)是二次连续可微的,函数𝑓(𝒙)的二阶展开可以近似为
即∇2𝑓(𝒙∗)为半正定矩阵。
2.2 梯度下降法
梯度下降法(Gradient Descent Method),也叫作最速下降法(Steepest Descend Method),经常用来求解无约束优化的最小值问题。对于函数𝑓(𝒙),如果𝑓(𝒙)在点𝒙𝑡 附近是连续可微的,那么𝑓(𝒙)下降最快的方向是 𝑓(𝒙)在𝒙𝑡 点的梯度方法的反方向。根据泰勒一阶展开公式,有
要使得 𝑓(𝒙𝑡+1) < 𝑓(𝒙𝑡),就得使 Δ𝒙T∇𝑓(𝒙𝑡 ) < 0.我们取Δ𝒙 = −𝛼∇𝑓(𝒙𝑡).如果𝛼 > 0为一个够小数值时,那么 𝑓(𝒙𝑡+1) < 𝑓(𝒙𝑡)成立.这样我们就可以从一个初始值𝒙0 出发,通过迭代公式
生成序列 𝒙0 , 𝒙1 , 𝒙2, ⋯ 使得
梯度下降法为一阶收敛算法,当靠近局部最小解时梯度变小,收敛速度会变慢,并且可能以“之字形”的方式下降.如果目标函数为二阶连续可微,我们可以采用牛顿法。牛顿法(Newton’s method)为二阶收敛算法,收敛速度更快,但是每次迭代需要计算Hessian矩阵的逆矩阵,复杂度较高。相反,如果我们要求解一个最大值问题,就需要向梯度正方向迭代进行搜索,逐渐接近函数的局部最大解,这个过程则被称为梯度上升法(Gradient Ascent Method)。
3. 拉格朗日乘数法与KKT条件
拉格朗日乘数法(Lagrange Multiplier) 是一种有效求解约束优化问题的优化方法。约束优化问题可以表示为
其中ℎ𝑚(𝒙)为等式约束函数,𝑔𝑛(𝒙)为不等式约束函数.𝒙的可行域为
其中dom(𝑓)是函数𝑓 的定义域。
3.1 等式约束优化问题
如果公式(C.10)中只有等式约束,我们可以构造一个拉格朗日函数Λ(𝒙, 𝜆)
3.2 不等式约束优化问题
对于公式(C.10)中定义的一般约束优化问题,其拉格朗日函数为
Γ(𝒂, 𝒃)是一个凹函数,即使𝑓(𝒙)是非凸的. 当𝒃 ≥ 0时,对于任意的 ̃ 𝒙 ∈ 𝒟,有
令𝒑∗ 是原问题的最优值,则有
本文转载自CSDN平台博主:zqwlearning
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/Ws_zqw/article/details/122603886
完善个人信息
可获得CPQC-550比特真机配额奖励
完善渠道来源
可获得CPQC-100比特真机配额奖励
提交成功
真机配额已发放到您的账户,可前往【云平台】查看