机器学习之数学03 有约束的非线性优化问题——拉格朗日乘子法KKT条件投影法
Posted wuliyttaotao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之数学03 有约束的非线性优化问题——拉格朗日乘子法KKT条件投影法相关的知识,希望对你有一定的参考价值。
目录
梯度下降法、最速下降法、牛顿法等迭代求解方法,都是在无约束的条件下使用的,而在有约束的问题中,直接使用这些梯度方法会有问题,如更新后的值不满足约束条件。
那么问题来了,如何处理有约束的优化问题?大致可以分为以下两种方式:
- 将有约束的问题转化为无约束的问题,如拉格朗日乘子法和KKT条件;
- 对无约束问题下的求解算法进行修改,使其能够运用在有约束的问题中,如对梯度下降法进行投影,使得更新后的值都满足约束条件。
将有约束问题转化为无约束问题
拉格朗日法
仅含等式约束的优化问题
\\[
\\beginarraycl\\text minimize & f(\\boldsymbolx) \\\\ \\text subject to & \\boldsymbolh(\\boldsymbolx)=\\mathbf0\\endarray
\\]
其中,\\(x \\in \\mathbbR^n\\),\\(f : \\mathbbR^n \\rightarrow \\mathbbR\\),\\(\\boldsymbolh : \\mathbbR^n \\rightarrow \\mathbbR^m, \\boldsymbolh=\\left[h_1, \\ldots, h_m\\right]^\\top, \\text and m \\leq n\\)。
该问题的拉格朗日函数为:
\\[
l(\\boldsymbolx, \\boldsymbol\\lambda)=f(\\boldsymbolx)+\\boldsymbol\\lambda^\\top \\boldsymbolh(\\boldsymbolx)
\\]
FONC:对拉格朗日函数 \\(l(\\boldsymbolx, \\boldsymbol\\lambda)\\) 求偏导数,令偏导数都等于 0,求得的解必然满足原问题的等式约束,可以从这些解里面寻找是否有局部最优解。这是求得局部最优解的一阶必要条件。
拉格朗日条件:(分别对 \\(\\bm x\\) 和 \\(\\bm \\lambda\\) 求偏导)
\\[
\\beginarraylD_x l\\left(\\boldsymbolx^*, \\boldsymbol\\lambda^*\\right)=\\mathbf0^\\top \\\\ D_\\lambda l\\left(\\boldsymbolx^*, \\boldsymbol\\lambda^*\\right)=\\mathbf0^\\top\\endarray
\\]
上式中,对 \\(\\lambda\\) 求偏导数得到的就是等式约束。
拉格朗日条件是必要而非充分条件,即满足上述方程的点 \\(\\boldsymbol x^*\\) 不一定是极值点。
KKT条件
既含等式约束又含不等式约束的优化问题:
\\[
\\beginarrayrl\\operatornameminimize & f(\\boldsymbolx) \\\\ \\text subject to & \\boldsymbolh(\\boldsymbolx)=\\mathbf0 \\\\ & \\boldsymbolg(\\boldsymbolx) \\leq \\mathbf0\\endarray
\\]
其中,\\(f : \\mathbbR^n \\rightarrow \\mathbbR\\),\\(\\boldsymbolh : \\mathbbR^n \\rightarrow \\mathbbR^m, m \\leq n\\),并且 \\(\\boldsymbolg : \\mathbbR^n \\rightarrow \\mathbbR^p\\)。
将该问题转化为拉格朗日形式:
\\[
l(\\boldsymbolx, \\boldsymbol\\lambda)=f(\\boldsymbolx)+\\boldsymbol\\lambda^\\top \\boldsymbolh(\\boldsymbolx) +\\boldsymbol\\mu^\\top \\boldsymbolg(\\boldsymbolx)
\\]
设 \\(\\bm x^*\\) 是原问题的一个局部极小点,则必然存在 \\(\\bm\\lambda^* \\top \\in \\mathbbR^m\\),\\(\\bm\\mu^* \\top \\in \\mathbbR^p\\),使得下列KKT条件成立:
- \\(\\bm \\mu^* \\geq 0\\)
- \\(D f\\left(\\boldsymbolx^*\\right)+\\boldsymbol\\lambda^* \\top D \\boldsymbolh\\left(\\boldsymbolx^*\\right)+\\boldsymbol\\mu^* \\top D \\boldsymbolg\\left(\\boldsymbolx^*\\right)=\\mathbf0^\\top\\)
- \\(\\boldsymbol\\mu^* \\top \\boldsymbolg\\left(\\boldsymbolx^*\\right)=0\\)
- \\(\\boldsymbolh(\\boldsymbolx^*)=\\mathbf0\\)
- \\(\\boldsymbolg(\\boldsymbolx^*) \\leq \\mathbf0\\)
KKT条件中,\\(\\bm\\lambda^*\\) 是拉格朗日乘子向量,\\(\\bm\\mu^*\\) 是KKT乘子向量,\\(\\bm\\lambda^*\\) 和 \\(\\bm\\mu^*\\) 的元素分别称为拉格朗日乘子和KKT乘子。
拉格朗日法更新方程
将含约束的优化问题转化为拉格朗日形式后,我们可以用更新方程对该问题进行迭代求解。
这也是一种梯度算法,但拉格朗日乘子、KKT 乘子的更新和自变量 \\(\\bm x\\) 的更新不同,自变量 \\(\\bm x\\) 继续采用梯度下降法更新,而拉格朗日乘子、KKT 乘子的更新方程如下:
\\[
\\boldsymbol\\lambda^(k+1)=\\boldsymbol\\lambda^(k)+\\beta_k \\boldsymbolh\\left(\\boldsymbolx^(k)\\right), \\\\boldsymbol\\mu^(k+1)=\\left[\\boldsymbol\\mu^(k)+\\beta_k \\boldsymbolg\\left(\\boldsymbolx^(k)\\right)\\right]_+
\\]
其中,\\([\\cdot]_+=\\max \\\\cdot, 0\\\\)。
凸优化问题下的拉格朗日法
拉格朗日乘子法和KKT条件在一般的含约束条件的优化问题中,都只是一阶必要条件,而在凸优化问题中,则变成了充分条件。
凸优化问题指的是目标函数是凸函数,约束集是凸集的优化问题。线性规划、二次规划(目标函数为二次型函数、约束方程为线性方程)都可以归为凸优化问题。
凸优化问题中,局部极小点就是全局极小点。极小点的一阶必要条件就是凸优化问题的充分条件。
罚函数法
updating...
对梯度算法进行修改,使其运用在有约束条件下
投影法
梯度下降法、最速下降法、牛顿法等优化算法都有通用的迭代公式:
\\[
\\boldsymbolx^(k+1)=\\boldsymbolx^(k)+\\alpha_k \\boldsymbold^(k)
\\]
其中,\\(\\boldsymbold^(k)\\) 是关于梯度 \\(\\nabla f(\\bm x^(k))\\) 的函数。
考虑优化问题:
\\[
\\beginarraycl\\operatornameminimize & f(\\boldsymbolx) \\\\ \\text subject to & \\boldsymbolx \\in \\Omega\\endarray
\\]
在上述有约束的优化问题中,\\(\\boldsymbolx^(k)+\\alpha_k \\boldsymbold^(k)\\) 可能不在约束集 \\(\\Omega\\) 内,这是梯度下降等方法无法使用的原因。
而投影法做的是,如果 \\(\\boldsymbolx^(k)+\\alpha_k \\boldsymbold^(k)\\) 跑到约束集 \\(\\Omega\\) 外面去了,那么将它投影到约束集内离它最近的点;如果 \\(\\boldsymbolx^(k)+\\alpha_k \\boldsymbold^(k) \\in \\Omega\\),那么正常更新即可。
投影法的更新公式为:
\\[
\\boldsymbolx^(k+1)=\\boldsymbol\\Pi\\left[\\boldsymbolx^(k)+\\alpha_k \\boldsymbold^(k)\\right]
\\]
其中 \\(\\bm \\Pi\\) 为投影算子,\\(\\bm \\Pi[\\bm x]\\) 称为 \\(\\bm x\\) 到 \\(\\Omega\\) 上的投影。
梯度下降法 to 投影梯度法
梯度下降法的迭代公式为:
\\[
\\boldsymbolx^(k+1)=\\boldsymbolx^(k)-\\alpha_k \\nabla f\\left(\\boldsymbolx^(k)\\right)
\\]
将投影算法引入梯度下降法,可得投影梯度法,迭代公式如下:
\\[
\\boldsymbolx^(k+1)=\\boldsymbol\\Pi\\left[\\boldsymbolx^(k)-\\alpha_k \\nabla f\\left(\\boldsymbolx^(k)\\right)\\right]
\\]
正交投影算子
updating...
References
Edwin K. P. Chong, Stanislaw H. Zak-An Introduction to Optimization, 4th Edition
相关博客
【机器学习之数学】01 导数、偏导数、方向导数、梯度
【机器学习之数学】02 梯度下降法、最速下降法、牛顿法、共轭方向法、拟牛顿法
【机器学习之数学】03 有约束的非线性优化问题——拉格朗日乘子法、KKT条件、投影法
以上是关于机器学习之数学03 有约束的非线性优化问题——拉格朗日乘子法KKT条件投影法的主要内容,如果未能解决你的问题,请参考以下文章