2020年我自己希望多看一些基础的理论知识,包括优化理论、微分方程等,重点先从Convex optimization开始看吧。另外,还会多写一些应用算法的基本知识,比如一些经典计算机视觉知识,以及一些新的NLP网络的概念知识。平时时间有限,加油吧!
引言
本系列是学习入门级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:这个是一个优化的大牛写的经典材料,对我现在还用不上。推荐有理论功底的同学啃这本书。
在每一个章节开头,我会给出主要的参考资料来源。我写的顺序按我自己看的顺序写,不一定按照书来。
第1章 Introduction
本章节主要参考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是构造了一个凸优化问题,有了这个形式以后就可以用一些成熟的凸优化方法来求解,本章节不介绍。
非作者注:很多问题如何构造成一个凸优化问题往往是最难的,如果能构造出来,那么基本上就是认为可以比较容易求解了。
Chebyshev逼近问题,转化成线性规划
再给一个例子:
其实和上面点灯的例子很像,但又不完全一样。原始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)