本系列是学习入门级convex optimization理论做的一些笔记,如果是大神请跳过和无视!主要参考的资料有:
1、非常经典的《Convex Optimization》,Stephen Boyd:其实这本书对我来说有点厚,本身做工程项目研发,太理论的知识用不上。学习这本书的主要目的是理解一下凸优化的基本概念,方便在读一些Paper的时候可以基本看懂理论部分在讲什么。我先计划学前面5章,有一个大概的了解就行。有一个课程:ECE236B - Convex Optimization (Winter Quarter 2019-20),课件基本上就是上面的书的课件,没什么差别,可以按照顺序去了解一些概念。
2、ECE236C - Optimization Methods for Large-Scale Systems (Spring 2019):上面课程的进阶版,可以查阅用,需要看什么技术点的时候查一下。
3、Convex Optimization: Fall 2019:Instructor: Ryan Tibshirani:主要看这个课程,也是这个系列的主要资料。个人感觉很好的一个课程。
4、Introductory Lectures on Convex Programming Volume I: Basic course,Yu. Nesterov:这个是一个优化的大牛写的经典材料,对我现在还用不上。推荐有理论功底的同学啃这本书。
在每一个章节开头,我会给出主要的参考资料来源。我写的顺序按我自己看的顺序写,不一定按照书来。
本章节主要参考Boyd书课件的第一章,也就是ECE236B课程的第一章课件。课件内容是截图,我就不重新打了,下面都有文字描述理解。给一个基本的概念,有些不求甚解也问题不大(包括我哈~)。
优化问题的数学定义: f 0 f_0 f0是目标函数, f i f_i fi是不等式约束函数,如果对任意满足约束的向量 z z z,有 f 0 ( z ) ≥ f 0 ( x ∗ ) f_0(z) \geq f_0(x^*) f0(z)≥f0(x∗),那么称 x ∗ x^* x∗为优化问题的最优解。
非作者注:general optimization problem是很难求解的,特别是非凸,以及带约束的优化问题求解,都是比较复杂的。我们现在常用的神经网络优化求解,大部分是无约束的非凸优化,即使一些有约束的问题,往往也是做一些放松,然后加到loss function里面去,看成一个整体function来求解。
本书主要介绍凸优化问题,定义是:对于目标函数以及约束函数都是convex的优化问题,称为convex optimization问题。
本节简单介绍两个非常常用的凸优化例子:最小二乘问题和现行规划问题。
基本最小二乘问题特点是:没有约束条件( m = 0 m=0 m=0),目标函数是若干项的平方和,每一项的形式是 a i T x − b i a_i^Tx-b_i aiTx−bi,写成矩阵形式:
这个就是基础线性回归模型,一般写成 b = A x b= Ax b=Ax,最小化目标是就是(求解是最基础的,E对x求导=0,得到x*):
min x E = ∣ ∣ b − A x ∣ ∣ 2 x ∗ = ( A T A ) − 1 A T y \min_x E=||b-Ax||^2 \\ x^* = (A^TA)^{-1}A^Ty xminE=∣∣b−Ax∣∣2x∗=(ATA)−1ATy
还有加权最小二乘问题,我们最小化加权的误差值:
∑ i = 1 k w i ( a i T x − b i ) 2 \sum_{i=1}^k w_i (a_i^Tx - b_i)^2 i=1∑kwi(aiTx−bi)2
其中,加权系数 w i w_i wi均大于零,表示每一个子项的重要程度,在统计应用中,当给定的现行观测值包含不同方差的噪声时,我们用加权最小二乘来估计向量x。
在线性回归模型上加上一个变量的L2-norm,是一种常见的正则化技术:可以避免x的数值过大,过大时惩罚项会较大。最小化:
∑ i = 1 k ( a i T x − b i ) 2 + ρ ∑ i = 1 n x i 2 x ∗ = ( A T A + ρ I n × n ) − 1 A T y \sum_{i=1}^k (a_i^Tx - b_i)^2 + \rho\sum_{i=1}^n x_i^2 \\ x^* = (A^TA + \rho I_{n\times n})^{-1}A^Ty i=1∑k(aiTx−bi)2+ρi=1∑nxi2x∗=(ATA+ρIn×n)−1ATy
其中 ρ > 0 \rho>0 ρ>0。
虽然线性规划问题一般没有解析解(也有叫做闭合解,closed form),却存在很多有效的求解方法,包括Dantzing的单纯形法以及内点法,(非作者注:这些都是很经典的优化方法,平时我也很难用到,先mark一下,后面有需要的时候找资料看,本CVX书后面算法部分重点介绍了内点法,似乎作者Stephen Boyd特别看重内点法)。
有m盏灯,要照亮n个板子,每一块板子的光照强度公式如下,是所有灯功率的一个加权和。
问题:在灯的功率限制范围内,达到给定光照强度 I d e s I_{des} Ides,给出最接近的功率方案。
这个目标函数挺有意思,先max,后min——意思是说首先对每一个板子k都检查一下光照强度,是否偏离目标 I d e s I_{des} Ides,偏离程度中最大的那一项,我们要最小化它的值,所以相当于我们要求每一个板子k的光照强度都尽可能地和目标 I d e s I_{des} Ides接近。怎么解这个优化问题呢?
方法有很多,最后5是构造了一个凸优化问题,有了这个形式以后就可以用一些成熟的凸优化方法来求解,本章节不介绍。
非作者注:很多问题如何构造成一个凸优化问题往往是最难的,如果能构造出来,那么基本上就是认为可以比较容易求解了。
再给一个例子:
其实和上面点灯的例子很像,但又不完全一样。原始min-max问题可以认为是让现行回归的值 a i T x a_i^Tx aiTx和 b i b_i bi尽可能接近,因此引入一个误差的bound t,限制条件很容看到可以转化为
− t ≤ a i T x − b i ≤ t ∣ a i T x − b i ∣ ≤ t -t \leq a_i^Tx - b_i \leq t \\ | a_i^Tx - b_i | \leq t −t≤aiTx−bi≤t∣aiTx−bi∣≤t
虽然 t ∈ R t\in R t∈R,但实际上我们可以看到 t ≥ 0 t \geq 0 t≥0,否则上面限制条件就不成立了。因此 t t t和 − t -t −t可以看成是 a i T x − b i a_i^Tx - b_i aiTx−bi的一个对称的上下界,我们最小化这个界,就是让值 a i T x a_i^Tx aiTx和 b i b_i bi尽可能接近,因此(1.6)和(1.7)是等价的。
第一章就是简单介绍,主要是一些概念,就讲到这里。下次是第二章。
[1] Convex Optimization, Stephen Boyd, Lieven Vandenberghe
[2] ECE236B - Convex Optimization (Winter Quarter 2019-20)
[3] ECE236C - Optimization Methods for Large-Scale Systems (Spring 2019)