Primal vs Dual

为什么要把原始问题(primal) 转为 对偶问题(dual), 主要原因在于, 求解方便吧大概.

对偶问题

  • 原始问题和其对偶问题, 都是对看待同一个问题的,从不同角度, 例如求解一个最小化问题, 然后通过对偶形式求解最大化问题等.
  • 原问题不好求解, 转为对偶问题, 有一种类似逼近的思想, 比如拉格朗日 或是 泰勒级数展开

既然是对于同一个问题的不同角度来看, 假设就两个角度: primal 和 dual. 假设, 在primal 即原始问题下的最优解为 \(p*\), 在其dual的角度下, 最优解为 \(d^*\)则有

  • p* = d* (Strong duality), 强对偶, 比如SVM 的KKT条件
  • p* != d* (Week duality)

从primal 转为 dual, 可以通过 拉格朗日乘子来实现.

Lower bound property

结论: p* >= d*

Standard Form:

\(minmize \ f_0(x) \\ s.t. \\ f_i(x) <=0, i=1,2,..m \\ h_j(x) = 0, j = 1,2...p\)

通过拉格朗日乘子(将约束转为无约束求极值)

why 拉格朗日乘子法?

  • 回顾多元函数求条件极值的思路(高数),

  • 假设2维, 曲线g(x,y) = 0 与f(x,y) =Ck, 的等值线(面) 相交, 那么沿着g(x,y)=0的方向两头向曲点靠近, 必然一个方向使得f(x,y)=Ck增大, 而另一个方向使CK减少, 必然在g(x,y)上存在一点使得Ck最小. 而这个点就是f(x,y)=a 与g(x,y)=0 相切的点, 切点处的两个法向量(梯度向量) 是平行的
  • 即: 在切点的法向量(梯度方向) 是平行的 (相乘\(\lambda\) 倍常数, \(\lambda >0\))

假设切点是 \((x_0, y_0)\), 根据f(x,y), g(x,y) 在该处的梯度是平行的, 即

\(\nabla f(x_0, y_0) = (f_x(x_0, y_0), f_y (x_0, y_0)) \\ \nabla g(x_0, y_0) = (g_x(x_0, y_0), g_y (x_0, y_0))\)

\(由 \nabla f(x_0,y_0) // \nabla g(x_0,y_0) 得 \\ \frac {\nabla f(x_0,y_0) } {\nabla g(x_0,y_0)} = -\lambda _0 因此得出:\)

\(f_x(x_0, y_0) + \lambda_0 \ g_x(x_0,y_0)) = 0 \\ f_y(x_0, y_0) + \lambda_0 \ g_y(x_0,y_0))=0 \\ g(x_0, y_0) = 0\)

由此将条件极值问题通过拉格朗日乘子,转为了求解方程组的问题.

为了求解,引入一个辅助函数 \(L(x,y, \lambda) = f(x,y) + \lambda \ g(x,y)\)

  • 这个函数称为拉格朗日函数, \(\lambda\) 称为拉格朗日乘子
  • 可微函数去极值的必要条件是梯度向量等于零

即: \(\nabla L(x_0,y_0, \lambda_0) = 0\), 恰好对应上面的方程组, 巧了吗, 这不是.

(ps, 当然也可以通过分析方法隐函数相关知识来推导出, 这里不展开了).

通过拉格朗日, 将primal 转为dual 即

\(L(x, \lambda, \nu) = f_0(x) + \sum _{i=1}^{m} \lambda_i f_i(x) + \sum _{i=1}^p \nu_ih_i(x)\)

转为拉格朗日的 dual 函数形式即:

\(g(\lambda, \nu) = infimum_x L(x, \lambda, \nu), \ inf..表示下界\)

\(= inf_x [ f_0(x) + \sum _{i=1}^{m} \lambda_i f_i(x) + \sum _{i=1}^p \nu_ih_i(x) ]\)

即所谓的 lower bound property:

即: \(g(\lambda, \nu) <= p* = f_0(x*) \leftarrow \forall \lambda, \nu\) (此乃最为关键一环),

这种思想就是: \(min \ primal \rightleftharpoons max \ dual\)

证明如下:

\(minmize \ f_0(x) \\ s.t. \\ f_i(x) <=0, i=1,2,..m \\ h_j(x) = 0, j = 1,2...p\)

假设 x' 是primal 问题的可行解, 即:

\(L(x', \lambda, \nu) = f_0(x') + \sum _{i=1}^{m} \lambda_i f_i(x') + \sum _{i=1}^p \nu_ih_i(x')\) , 则必然有

$f_0(x') >= L(x', \lambda, \nu) >= inf_x (x,\lambda, \nu) = g(\lambda, \nu) $ (可证: \(g(\lambda, \nu) 是一个 凹函数 "\cap"这样的\) )

  • \(\sum _{i=1}^{m} \lambda_i f_i(x') <= 0\), 因为x'是可行解, 满足约束条件
  • \(\sum _{i=1}^p \nu_ih_i(x') = 0\), 同样因为约束条件

即证: $f_0(x') >= g(\lambda, \nu), 即: p* >= d^* $

case1: Least Norm Minimization

\(min \ x^Tx \\ s.t. \ Ax=b\)

解:

引入拉格朗日函数:

\(L(x, \lambda) = x^Tx + \lambda^T(Ax-b) \\ 首先来"固定"x: \\ \nabla_x L(x, \lambda) = 0 = 2x+ A^T\lambda \\ 得出 x = -\frac {1}{2}A^T \lambda \\ 代入\)

\(g(\lambda) = inf_x [x^Tx + \lambda ^T (Ax-b)] \\ = (-\frac {1}{2}A^T \lambda) ^T (-\frac {1}{2}A^T \lambda) + \lambda ^T[A( -\frac {1}{2}A^T \lambda)-b]\)

\(= \frac {1}{4} \lambda^T A A^T \lambda - \frac {1}{2} \lambda^T AA^T \lambda - \lambda^Tb\)

$ = - \frac{1}{4} \lambda^T AA^T \lambda - \lambda^Tb $

即: $ p* >= - \frac{1}{4} \lambda^T AA^T \lambda - \lambda^Tb $

即对应的dual:

\(max \ z = - \frac{1}{4} \lambda^T AA^T \lambda - \lambda^Tb \\ s.t. ..\)

case2: Linear Programing

\(min \ w^Tx \\ s.t. \\ Ax=b \\ x \succ =0\)

先进行标准化得到:

\(min \ w^Tx \\ s.t. \\ Ax=b \\ -x <=0\)

引入拉格朗日函数得:

\(L(x, \lambda, \nu) = w^Tx + \lambda^T (Ax-b) + \nu ^T(-x)\)

\(= w^Tx + \lambda^T Ax - \lambda ^Tb -\nu^T x\)

\(= (w + A^T \lambda - \nu) x -\lambda^Tb\)

同样首先"固定x:"

\(\nabla_x L(x, \lambda, \nu) = 0 = w + A^T \lambda -v \\ 得出: x 好像不影响哦\)

将不影响的x 代入g得到:

\(g(\lambda, \nu) = inf_x ( -\lambda^Tb)\)

即对应的 daul:

\(max \ -\lambda ^T b \\ s.t. \ w+A^T \lambda- \nu = 0\)

发现 \(\nu >0\) 其实跟木目标函数无关, 即可转为:

\(max \ -\nu ^T b \\ s.t. \ w+A^T >= 0\)

Strong and Weak duality

由上, 关于primal 问题和 dual 问题, 如果其最优解分别是 p* 和 d* ,

根据 lower bound property 的推导则有p * >= d * :

  • if p* = d*, 则称为强对偶

  • if p* < d*, 则称为弱对偶

强对偶(strong) ,一般情况下不会发生, 在凸函数下一般会成立; 对于non-convex 有时是会成立的. 针对于convex 判断其是强对偶的条件称为:

slater's condtions

即: \(minmize \ f_0(x) \\ s.t. \\ f_i(x) <=0, i=1,2,..m \\ h_j(x) = 0, j = 1,2...p\)

\(\exists \ x', f_i(x') <0, h_j(x')=0\)

则称满足 slater's conditons, 可判定该凸函数是强对偶的哦.

complementary slackness

暂时我也不知道该怎么进行翻译, "松弛条件?", 感觉也不大合理. 算了, 就英文吧, 反正都是一个符号而已. 假设, 我们来来**考虑强对偶的情况下(p * = d *):**

  • x* 是 primal 问题的解
  • \(\lambda^*, \nu^*\) 是dual 问题的解

\(minmize \ f_0(x) \\ s.t. \\ f_i(x) <=0, i=1,2,..m \\ h_j(x) = 0, j = 1,2...p\)

即有

\(f_0(x^*) = g(\lambda^*, \nu^*) \\ 对于 \\ inf_x [f_0(x) + \sum _{i=1}^{m} \lambda_i ^* f_i(x) + \sum _{i=1}^p \nu_i^*h_i(x) ]\)

必然:

\(<= inf_x [f_0(x^*) + \sum _{i=1}^{m} \lambda_i ^* f_i(x^*) + \sum _{i=1}^p \nu_i^*h_i(x^*) ]\)

  • \(h_i(x*) = 0\)
  • \(\lambda^* f_i(x^*)<=0\)

\(<= f_0(x^*)\)

这就发现有点矛盾(= 和 <=)了, 要使不等式成立的话, 发现只能取等于哦, 即:

\(\lambda^* f_i(x^*)=0\), 这样也就意味着2种情况:

  • \(\lambda ^* = 0, \ 然后 \lambda^* f_i(x^*)<=0\)
  • \(\lambda ^* > 0, \ 然后 \lambda^* f_i(x^*)=0\)

把这个条件: \(\lambda^* f_i(x^*)=0\) 就称为 complementary slackness, 它是构成KKT条件的一部分, 后面再整一波KKT吧.

ML-对偶(Duality)问题初识的更多相关文章

  1. 【机器学习】从SVM到SVR

    注:最近在工作中,高频率的接触到了SVM模型,而且还有使用SVM模型做回归的情况,即SVR.另外考虑到自己从第一次知道这个模型到现在也差不多两年时间了,从最开始的腾云驾雾到现在有了一点直观的认识,花费 ...

  2. SVM-SVR

    高频率的接触到了SVM模型,而且还有使用SVM模型做回归的情况,即SVR.另外考虑到自己从第一次知道这个模型到现在也差不多两年时间了,从最开始的腾云驾雾到现在有了一点直观的认识,花费了不少时间.因此在 ...

  3. Apache-Flink深度解析-JOIN 算子

    什么是JOIN 在<Apache Flink 漫谈系列 - SQL概览>中我对JOIN算子有过简单的介绍,这里我们以具体实例的方式让大家对JOIN算子加深印象.JOIN的本质是分别从N(N ...

  4. Apache Flink 漫谈系列 - JOIN 算子

    聊什么 在<Apache Flink 漫谈系列 - SQL概览>中我们介绍了JOIN算子的语义和基本的使用方式,介绍过程中大家发现Apache Flink在语法语义上是遵循ANSI-SQL ...

  5. Category Theory: 01 One Structured Family of Structures

    Category Theory: 01 One Structured Family of Structures 这次看来要放弃了.看了大概三分之一.似乎不能够让注意力集中了.先更新吧. 群的定义 \( ...

  6. 拉格朗日对偶(Lagrange duality)

    拉格朗日对偶(Lagrange duality) 存在等式约束的极值问题求法,比如下面的最优化问题:              目标函数是f(w),下面是等式约束.通常解法是引入拉格朗日算子,这里使用 ...

  7. iOS Core ML与Vision初识

    代码地址如下:http://www.demodashi.com/demo/11715.html 教之道 贵以专 昔孟母 择邻处 子不学 断机杼 随着苹果新品iPhone x的发布,正式版iOS 11也 ...

  8. 简易解说拉格朗日对偶(Lagrange duality)(转载)

    引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...

  9. 简易解说拉格朗日对偶(Lagrange duality)

    引言:尝试用最简单易懂的描述解释清楚机器学习中会用到的拉格朗日对偶性知识,非科班出身,如有数学专业博友,望多提意见! 1.原始问题 假设是定义在上的连续可微函数(为什么要求连续可微呢,后面再说,这里不 ...

随机推荐

  1. 掌握Visual Studio断点

    我知道你现在在想什么.断点?真的吗?关于断点有什么需要掌握的?你按F9然后停在代码行.如果你是这么想的,这篇文章是给你的:继续读 Visual Studio提供了一组相当丰富的断点类型和操作,可以使您 ...

  2. ZBX_TCP_READ() time out windows

    zabbix 客户端无法推送数据,日志显示在启动的时候ZBX_TCP_READ() time out windows, 场景:agent 到proxy的10051通,proxy到agnet的10050 ...

  3. maker使用说明书

    1.以自带的示例数据为例 dpp_contig.fasta dpp_est.fasta dpp_protein.fasta te_proteins.fasta 2.生成控制文件 控制文件是特定于运行的 ...

  4. vue响应数据的原理

    vue最大的特点就是数据驱动视图. vue的数据改变,页面一定发生改变?不一定. 当操作引用类型的数据,动态添加属性时,页面不会发生改变. vue响应式数据原理(也叫数据绑定原理.双向数据绑定原理): ...

  5. async和await对promise异步方案的改进,以及使用注意事项

    async.await相比原生promise的有优势: 1.更加简洁,await一个promise即可,那么会自动返回这个promise的resolve值,无需在then函数的回调中手动取值,彻底解决 ...

  6. 深入解析ES6中的promise

    作者 | Jeskson来源 | 达达前端小酒馆 什么是Promise Promise对象是用于表示一个异步操作的最终状态(完成或失败)以及其返回的值. 什么是同步,异步 同步任务会阻塞程序的执行,如 ...

  7. Java实现AES加密(window机器和linux机器) 注意window机器 和linux机器算法稍有不同

    一)什么是AES? 高级加密标准(英语:Advanced Encryption Standard,缩写:AES),是一种区块加密标准.这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用. ...

  8. VisualStudio ------- vs发布软件

    上线的系统和自己做的系统有什么区别 上线的没有源代码,没有实体层,数据库访问层  业务逻辑层 只有表现层  而且也也没有    .cs 和 .psd   文件,这样就不能修改系统代码 他们都在 Web ...

  9. Sitecore 8.2 安全性第2部分:安全性编辑器和Access Viewer

    在Sitecore中使用安全性时,您可以使用两个主要应用程序:安全编辑器和Access Viewer.从表面上看,这些工具看起来很相似,但它们扮演着截然不同的角色.让我们回顾一下每个应用程序以及它们的 ...

  10. AngularJS 的全选、反选实现

    目录 AngularJS 的全选.反选实现 一.需求 二.思路 三.实现 AngularJS 的全选.反选实现 一.需求 要使用 AngularJS 实现 checkbox 的全选.反选. 其中所有项 ...