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

I. Mathematical Optimization

1.1 定义

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

\[
\begin{align}
&minimize \, f_0(x) \notag \\
&subject \, to \, f_i(x)≤b_i, \, i=1,...,m \tag{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) \tag{1.2}\]

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

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

凸优化问题(Convex Optimization) 需满足的条件相比线性规划更加广泛,所以后者也可以理解为前者的一个子集,凸优化需满足的条件如下:
\[f_i(αx+βy)≤αf_i(x)+βf_i(y) \tag{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 \tag{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 线性规划

  • 定义
    线性规划定义如下:
    \[
    \begin{align}
    &minimize \, c^Tx \notag \\
    &subject \, to \, a_i^Tx≤b_i, i=1,...,m \tag{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 凸优化

  • 定义
    其实凸优化已经在前面介绍过了,这里再重新介绍一下。凸优化问题定义如下:
    \[
    \begin{align}
    & minimize \, f_0(x) \notag \\
    & subject \, to \, f_i(x)≤b_i, \, i=1,...,m \notag \\
    & f_i(αx+βy)≤αf_i(x)+βf_i(y) \tag{1.6}
    \end{align}
    \]
    其中\(x,y∈R^n\)且 \(α,β∈R \, with \, \alpha+\beta=1, \alpha≥0,\beta≥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

【Convex Optimization (by Boyd) 学习笔记】Chapter 1 - Mathematical Optimization的更多相关文章

  1. 【Convex Optimization (by Boyd) 学习笔记】Chapter 2 - Convex sets(1) 仿射集&凸集

    I. 仿射凸集(Affine and convex sets) 1. 线与线段 假设\(R^n\)空间内两点\(x_1,x_2\, (x_1≠x_2)\),那么\(y=\theta x_1+(1-\t ...

  2. 神经网络与深度学习笔记 Chapter 1.

    转载请注明出处:http://www.cnblogs.com/zhangcaiwang/p/6875533.html sigmoid neuron 微小的输入变化导致微小的输出变化,这种特性将会使得学 ...

  3. 神经网络与深度学习笔记 Chapter 6之卷积神经网络

    深度学习 Introducing convolutional networks:卷积神经网络介绍 卷积神经网络中有三个基本的概念:局部感受野(local receptive fields), 共享权重 ...

  4. 神经网络与深度学习笔记 Chapter 3.

    交叉熵 交叉熵是用于解决使用二次代价函数时当单个神经元接近饱和的时候对权重和bias权重学习的影响.这个公式可以看出,当神经元饱和的时候,sigma的偏导接近于0,w的学习也会变小.但是应用交叉熵作为 ...

  5. 神经网络与深度学习笔记 Chapter 2.

    转载请注明出处http://www.cnblogs.com/zhangcaiwang/p/6886037.html 以前都没有正儿八经地看过英文类文档,神经网络方面又没啥基础,结果第一章就花费了我将近 ...

  6. Python学习笔记–Chapter 2

    1.字符串中添加制表符,可使用字符组合\t 2.字符串中添加换行符,可使用字符组合\n 3.字符串\n\t可以换到下一行,并且在开头添加一个制表符. 4.删除末尾空白,使用方法rstrip() 5.删 ...

  7. Python学习笔记 chapter 2基础

    程序输入 >>> print('%s is number %d'%('Python', 1))Python is number 1 输出重定向有问题(待定) 文本输入>> ...

  8. 蟒蛇书学习笔记——Chapter 09 Section 01 创建和使用类

    9.1 创建和使用类 9.1.1 创建Dog类   根据Dog类创建的每个实例都将存储名字和年龄,我们赋予了每条小狗蹲下(sit( ))和打滚(roll_over( ))的能力: class Dog: ...

  9. jQuery的学习笔记

    JQuery学习笔记 Chapter one初识jQuery 1.2测试jQuery 在jQuery库中,$是jQuery的别名,如:$()相当于jQuery() 注意:在使用JQuery进行开发的时 ...

随机推荐

  1. (链表) leetcode 328. Odd Even Linked List

    Given a singly linked list, group all odd nodes together followed by the even nodes. Please note her ...

  2. aggregate聚合

    最近使用mongodb需要查询数据,用到了aggregate,学习下,上代码 db.表名.aggregate([ {$match:{'created_time':{$gte:'2016-01-15', ...

  3. 【简单易用的傻瓜式图标设计工具】Logoist 3.1 for Mac

    [简介] Logoist 是一款Mac上强大易用的傻瓜式图标设计制作工具,通过使用内置模板和预设效果,您可以立即创建高质量的图形内容和艺术作品.通过使用该应用程序,可用于制作图标LOGO. 一款用于创 ...

  4. fuel6.0安装部署

    在经过一系列安装openstack方式后,个人觉得fuel的安装方式相对简易,接下来记录下安装部署fuel6.0的过程.本教程适合想把fuel6.0部署后,云主机需要连接外网的需求. 安装virtua ...

  5. 运维监控-Open-Falcon安装Agent实战篇

    运维监控-Open-Falcon安装Agent实战篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 本文参考链接来自:http://book.open-falcon.org/zh/ ...

  6. Java 读取propertoes文件

    我一直不懂,Java里面的路径是咋样的,怎么找到我的资源文件? 直到我看到了这篇文件,写的是真棒.这篇文章  看完之后,豁然开朗的感觉 下面做些笔记,首先,Java有一个targer文件,下面有一个c ...

  7. Linux记录-shell实现脚本监控服务器及web应用

    1.apache web 服务器 1 2 3 4 5 6 7 8 9 10 !/bin/bash # 表示请求链接3秒钟,不要返回的测试数据 nc -w 3 localhost 80 &> ...

  8. docker 系列 - 容器数据持久化和数据共享

    docker 主要有两种数据存储形式, 一种是storage driver(也叫做 Graph driver), 另一种是 volume driver. stroage driver主要是存储那些无状 ...

  9. Kudu系列: Kudu主键选择策略

    每个Kudu 表必须设置Pimary Key(unique), 另外Kudu表不能设置secondary index, 经过实际性能测试, 本文给出了选择Kudu主键的几个策略, 测试结果纠正了我之前 ...

  10. 关于CPU的User、Nice、System、Wait、Idle各个参数的解释

    使用Ganglia监控整个Hadoop集群,看到Ganglia采集的各种指标:CPU各个具体的指标含义解释如下: ①CPU(监测到的master主机上的CPU使用情况) 从图中看出,一共有五个关于CP ...