机器学习之数学03 有约束的非线性优化问题——拉格朗日乘子法KKT条件投影法

Posted wuliyttaotao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了机器学习之数学03 有约束的非线性优化问题——拉格朗日乘子法KKT条件投影法相关的知识,希望对你有一定的参考价值。

梯度下降法、最速下降法、牛顿法等迭代求解方法,都是在无约束的条件下使用的,而在有约束的问题中,直接使用这些梯度方法会有问题,如更新后的值不满足约束条件。

那么问题来了,如何处理有约束的优化问题?大致可以分为以下两种方式:

  1. 将有约束的问题转化为无约束的问题,如拉格朗日乘子法和KKT条件;
  2. 对无约束问题下的求解算法进行修改,使其能够运用在有约束的问题中,如对梯度下降法进行投影,使得更新后的值都满足约束条件。

将有约束问题转化为无约束问题

拉格朗日法

仅含等式约束的优化问题
\\[ \\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条件成立:

  1. \\(\\bm \\mu^* \\geq 0\\)
  2. \\(D f\\left(\\boldsymbolx^*\\right)+\\boldsymbol\\lambda^* \\top D \\boldsymbolh\\left(\\boldsymbolx^*\\right)+\\boldsymbol\\mu^* \\top D \\boldsymbolg\\left(\\boldsymbolx^*\\right)=\\mathbf0^\\top\\)
  3. \\(\\boldsymbol\\mu^* \\top \\boldsymbolg\\left(\\boldsymbolx^*\\right)=0\\)
  4. \\(\\boldsymbolh(\\boldsymbolx^*)=\\mathbf0\\)
  5. \\(\\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条件投影法的主要内容,如果未能解决你的问题,请参考以下文章

拉格朗日乘数法

[转] 拉格朗日乘数法

拉格朗日乘数法

拉格朗日对偶

机器学习之线性回归---logistic回归---softmax回归

03 SVM - KKT条件