参考:https://www.cnblogs.com/liaohuiqiang/p/7805954.html
1.无约束条件下求解最优问题【直接求偏导】
【步骤】:
- 直接对函数求偏导,令偏导为0
- 前提:f(x)是凸函数
凸函数的充要条件:如果f(x)在开凸集S上具有二阶连续偏导数,且f(x)的海塞矩阵(二阶偏导的矩阵)在S上处处半正定,则f(x)为S上的凸函数。
半正定矩阵的判定:设A是实对称矩阵。如果对任意的实非零列向量x,有 x T A x ≥ 0 x^TAx≥0 xTAx≥0,就称A为半正定矩阵
2.等式条件下求解最优问题【拉格朗日乘子法】
【步骤】:
- 构造拉格朗日函数L
- 对L关于各个参数求偏导,并令偏导为0,联立求解各个参数
- 代入目标函数f中得到最优解。
【注意】:
- 如果优化问题是凸优化,通过上图条件1-2求得的解就是极小值点(而且是全局极小)。
- 如果优化问题不是凸优化,条件1-2只是极小值点的必要条件,还需要附加多一个正定的条件3才能变成充要条件(半正定得到的是极小,正定得到的是严格极小)。
3.不等式条件下求解最优问题【KKT条件】
KKT条件可以看成是拉格朗日乘子的泛化。
- 极小值点落在可行域内(不包含边界):这个时候可行域的限制不起作用,相当于没有约束即 λ = 0 \lambda=0 λ=0,直接f(x)的梯度等于0求解,这个时候g(x极小值点)<0(因为落在可行域内)。
- 极小值点落在可行域外(包含边界):可行域的限制起作用,极小值点应该落在可行域边界上即g(x)=0,类似于等值约束,此时有g(x)的梯度和f(x)的负梯度同向。
总结以上两种情况,可以构造拉格朗日函数来转换求解问题。
对于不等式约束的优化,需要满足三个条件,满足这三个条件的解x*就是极小值点。
这三个条件就是著名的KKT条件,它整合了上面两种情况的条件。
【步骤】:
- 构造拉格朗日函数L
- 利用KKT条件求解
【注意】:
- 如果优化问题是凸优化,KKT条件(条件1-3) 就是极小值点(而且是全局极小)存在的充要条件。
- 如果优化问题不是凸优化,KKT条件(条件1-3)只是极小值点的必要条件,不是充分条件,KKT点是驻点,是可能的极值点。也就是说,就算求得的满足KKT条件的点,也不一定是极小值点,只是说极小值点一定满足KKT条件。
- 如果优化问题不是凸优化,需要附加多一个正定的条件(条件4-5)才能变成充要条件(半正定得到的是极小,正定得到的是严格极小)。
习题:https://wenku.baidu.com/view/e1ddf8126529647d2628526b.html