zoukankan      html  css  js  c++  java
  • 【Convex Optimization (by Boyd) 学习笔记】Chapter 1

    以下笔记参考自Boyd老师的教材【Convex Optimization】。

    I. Mathematical Optimization

    1.1 定义

    数学优化问题(Mathematical Optimization) 有如下定义:

    [egin{align} &minimize \, f_0(x) otag \ &subject \, to \, f_i(x)≤b_i, \, i=1,...,m ag{1.1} end{align} ]

    • 向量(x=(x_1,...,x_n))是优化问题中的优化变量(optimization variable)
    • 函数(f_0:R^n→R)目标函数
    • 函数(f_i:R^n→R, i=1,...,m)限制函数(constraint function)

    何为最优呢?我们有如下定义:

    当对于满足限制条件(f_1(z)≤b_1,...,f_m(z)≤b_m)任意变量(z),都有(f_0(z)≥f_0(x^*)),则称(x^*)为最优(optimal)。

    • 分类
      当定义(1.1)中的满足如下条件时,称该优化问题为线性规划(linear program)

    [f_i(αx+βy)=αf_i(x)+βf_i(y) ag{1.2} ]

    其中(x,y∈R^n)(α,β∈R)

    同理当不满足(1.2)的优化问题则成为非线性规划(nonlinear program)

    凸优化问题(Convex Optimization) 需满足的条件相比线性规划更加广泛,所以后者也可以理解为前者的一个子集,凸优化需满足的条件如下:

    [f_i(αx+βy)≤αf_i(x)+βf_i(y) ag{1.3} ]

    • 理解定义
      光看定义(1.1)不太直观,举个栗子直观理解理解一下:

    我们都知道在机器学习中我们的目标是需要基于一些先验知识,找到一个模型对数据进行拟合。 此时优化变量(x)就是模型中的参数,限制函数就是那些先验知识以及对超参数的限制等等,目标函数就是(以分类问题为例)模型对数据拟合的准确度。

    不同优化算法之间的有效性不同,而且一般都取决于这些因素:

    • 目标函数和约束函数的特殊形式
    • 优化变量和约束(constraints)的数量
    • 特殊的结构(sparsity 稀疏结构)

    1.2 最小二乘法&线性规划

    Least-squares and linear programming

    1.2.1 最小二乘问题

    • 定义
      最小二乘问题(least-squares) 没有约束,也就是说此时定义(1.1)中的(m=0),其目标函数定义如下:

    [minimize \, f_0(x)=||Ax-b||^2_2=sum_{i=1}^k(a_i^Tx-b_i)^2 ag{1.4} ]

    其中(A∈R^{k×n}\,(k≥n)),(a_i^T)是A的行向量,(x∈R^n)是优化变量。

    • 求解
      求解(1.4)中的优化问题可化简为一组线性方程,即:

    [(A^TA)x=A^Tb ]

    解为(x=(A^TA)^{-1}A^Tb)

    • 应用
      如今的算法和软件已经能非常高效的求解出最小二乘优化问题了,即使是成千上万的变量(variable)和项(term),都可以在一分钟以内计算出来(一般都要求是稀疏模式)。所以如果能把优化问题转变成最小二乘法优化问题,一切就简单很多了。

    1.2.2 线性规划

    • 定义
      线性规划定义如下:

    [egin{align} &minimize \, c^Tx otag \ &subject \, to \, a_i^Tx≤b_i, i=1,...,m ag{1.5} end{align} ]

    其中(c, a_1,... ,a_m ∈ R^n) and 标量 (b_1, . . . , b_m ∈ R)

    • 求解
      求解线性规划没有像最小二乘那样的简化公式,但是还是有各种各样的方法的,例如Dantzig's simplex method以及interior-point methods(复杂度一般为(n^2m\,(m≥n))阶)。

    • 应用
      虽然将原始的优化问题转化为线性规划问题要比转化为最小二乘法优化问题复杂得多,但是也不是那么难。已经有部分软件系统可以自动转化优化问题为线性规划了。

    1.3 凸优化

    • 定义
      其实凸优化已经在前面介绍过了,这里再重新介绍一下。凸优化问题定义如下:

    [egin{align} & minimize \, f_0(x) otag \ & subject \, to \, f_i(x)≤b_i, \, i=1,...,m otag \ & f_i(αx+βy)≤αf_i(x)+βf_i(y) ag{1.6} end{align} ]

    其中(x,y∈R^n)(α,β∈R \, with \, alpha+eta=1, alpha≥0,eta≥0)

    • 求解
      对于凸优化问题而言,并没有像最小二乘法优化问题那样的求解公式,但是interior-point methods也不失为一个不错的方法。

    • 应用
      将优化问题转化为凸优化问题要比上面两个更难一些,这个转化过程需要不少技巧,但是只要转化成功,求解起来就和上面两种优化问题一样简单了。

    1.4 非线性规划

    非线性规划(nonlinear programming)也叫非线性优化(nonlinear optimization)。

    注意:非线性优化问题可能是也可能不是凸优化问题。

    此时优化问题解可划分成局部最优解全局最优解

    1.5 大纲

    本书的大纲如下:

    • Part I: Theory
      • Chapter 2:Convex Sets(凸集)
      • Chapter 3:Convex functions(凸函数)
      • Chapter 4:Convex optimization problems
      • Chapter 5: Lagrangian duality (拉格朗日对偶)
    • Part II: Applications(主要介绍凸优化是如何应用在实际中的)
    • Part III: Algorithms
      • unconstrained optimization
      • equality constrained optimization
      • inequality constrained optimization

    第三部分算法主要分三个阶段:
    1.Base level:二次方优化(如最小二乘)
    2.Next level:牛顿算法(Newton's method),用于解决非约束或者等式约束问题
    3.Top level:内点算法(Interior-point methods),解决不等式约束问题



    MARSGGBO原创





    2018-12-13



  • 相关阅读:
    C#中TreeView组件使用方法初步
    DataList编辑、更新、取消、删除、分页
    使用JMeter做web应用的压力测试
    再读Struts1.3.5 User Guide 3 Building Control Components
    Tomcat DBCP Connection Pool Abandon Feature
    在Linux调试web应用时,如何查看System.out.println的输出?
    再读Struts1.3.5 User Guide 4 Configuring Applications
    一篇关于web.xml配置的详细说明
    再读Struts1.3.5 User Guide 1 Building Model Components
    Struts下html:select可以多选时的处理方法
  • 原文地址:https://www.cnblogs.com/marsggbo/p/10116367.html
Copyright © 2011-2022 走看看