0. 前言
斯坦福大学的 Stephen Boyd 教授课程: Convex Optimization 凸优化
- 课程网站: https://web.stanford.edu/class/ee364a/index.html
- Textbook: https://stanford.edu/~boyd/cvxbook/
- Slides (课件): https://web.stanford.edu/class/ee364a/lectures.html
- 录播视频: Bilibili [凸优化-中文字幕]Boyd斯坦福公开课
- 本系列笔记(更新中): https://blog.youkuaiyun.com/qq_21149391/category_11891398.html
1. Introduction
1.1 Mathematical optimization problems 最优化问题
最优化问题的形式为:
minimize
f
0
(
x
)
subject to
f
i
(
x
)
≤
b
i
,
i
=
1
,
.
.
.
,
m
\begin{align} &\text{minimize }\;\;\; f_0(x) \\ &\text{subject to } \;\;f_i(x) \leq b_i, i=1,...,m \end{align}
minimize f0(x)subject to fi(x)≤bi,i=1,...,m
- x = ( x 1 , . . . , x n ) x=(x_1,...,x_n) x=(x1,...,xn): optimization variables.
- f 0 : R n → R f_0: \mathbb{R}^n\rightarrow \mathbb{R} f0:Rn→R 为 objective function (目标函数).
- f i : R n → R f_i: \mathbb{R}^n\rightarrow \mathbb{R} fi:Rn→R 为 constraint functions (约束函数).
- 最优解 x ∗ x^* x∗: 满足约束条件且 f 0 ( x ∗ ) ≤ f 0 ( x ) f_0(x^*)\leq f_0(x) f0(x∗)≤f0(x), 其中 x x x 为任意满足约束的向量.
最优化问题可以应用于很多场景, 比如投资, 设计电子元件等, 对于学计算机的学生来说, 最熟悉的应用就是模型的优化或数据的拟合, 比如
- x x x 是模型的参数.
- f i f_i fi 为参数的限制条件.
- f 0 f_0 f0为模型预测的错误率/ 损失函数等.
优化问题往往都很难解, 但也有一些例外, 比如 least squares problems (最小二乘), linear programs (线性规划) 和 convex optimization (凸优化). 其中, 最小二乘问题和线性规划问题可以视为凸优化的特殊形式. 在分别介绍它们之前, 让我们了解下 linear 和 convex 两个概念:
1.1.1 Linear function 线性函数
如果函数
f
(
x
)
f(x)
f(x) 满足以下等式, 则称为线性函数:
f
(
α
x
1
+
β
x
2
)
=
α
f
(
x
1
)
+
β
f
(
x
2
)
f(\alpha x_1+\beta x_2) = \alpha f(x_1) + \beta f(x_2)
f(αx1+βx2)=αf(x1)+βf(x2)
其中
α
,
β
\alpha, \beta
α,β 为标量.
如果目标函数和约束函数均为线性函数, 此时的优化问题称为 linear program.
1.1.2 Convex function 凸函数
如果函数
f
(
x
)
f(x)
f(x) 满足以下不等式, 则称为 convex function:
f
(
a
x
1
+
b
x
2
)
≤
a
f
(
x
1
)
+
b
f
(
x
2
)
f(a x_1+b x_2) \leq a f(x_1) + b f(x_2)
f(ax1+bx2)≤af(x1)+bf(x2)
其中
a
,
b
∈
[
0
,
1
]
a, b \in [0,1]
a,b∈[0,1]. 相反, 若不等号为大于等于, 则函数称为 concave function
(convex 例子:
x
2
,
∣
x
∣
x^2, |x|
x2,∣x∣; concave 例子:
log
x
,
x
\log x, \sqrt{x}
logx,x).
如果目标函数和约束函数均为凸函数, 此时的优化问题称为 convex optimization.
1.2 Least-square problems 最小二乘问题
minimize
f
0
(
x
)
=
∣
∣
A
x
−
b
∣
∣
2
2
\text{minimize } f_0(x)=||Ax-b||_2^2
minimize f0(x)=∣∣Ax−b∣∣22
没有约束且目标函数是向量
A
x
−
b
Ax-b
Ax−b 的
ℓ
2
\ell_2
ℓ2 norm 的平方, 即每个元素的平方之和.
- 这类问题能够推出 analytical solution (解析解): x ∗ = ( A T A ) − 1 A T b x^*=(A^T A)^{-1}A^T b x∗=(ATA)−1ATb.
- 已有高效且可靠的算法和软件能够解决这类问题.
- 计算的时间复杂度为 n 2 k n^2 k n2k ( k k k 为矩阵 A A A 的另一维度), 技术成熟
初学机器学习时大家应该都见过这个形式, i.e. 在 regression 中, A A A 为数据点组成的矩阵, b b b 为数据点对应的值, 选择 square loss function 则可以得到这个解析解; 在 maximum likelihood estimation (最大似然估计) 中, 若选择 Gaussian noise 和 square loss function, 同样得到以上形式. 可见 least square problems 的应用性.
1.3 Linear programming 线性规划
minimize
c
T
x
subject to
a
i
T
x
≤
b
i
,
i
=
1
,
.
.
.
,
m
\begin{align} &\text{minimize }\;\;\; c^T x \\ &\text{subject to }\;\; a_i^T x \leq b_i, i=1,...,m \end{align}
minimize cTxsubject to aiTx≤bi,i=1,...,m
其中,
c
,
a
i
,
x
c, a_i, x
c,ai,x 都是 n 维向量,
b
i
b_i
bi 是标量. 显然, 目标函数和约束都是线性的.
- 这类问题没有解析解, 但同样地, 已有高效且可靠的算法和软件能够解决这类问题.
- 计算的时间复杂度为 n 2 m n^2 m n2m, 技术成熟
1.4 Convex optimization 凸优化
minimize
f
0
(
x
)
subject to
f
i
(
x
)
≤
b
i
,
i
=
1
,
.
.
.
,
m
\begin{align} &\text{minimize }\;\;\; f_0(x) \\ &\text{subject to } \;\;f_i(x) \leq b_i, i=1,...,m \end{align}
minimize f0(x)subject to fi(x)≤bi,i=1,...,m
其中目标函数和约束均为凸函数, 即满足前面1.1.2 中的不等式.
- 这类问题没有解析解, 已有高效且可靠的算法能够解决这类问题.
- 计算的时间复杂度为 max { n 3 , n 2 m , F } \max\{n^3, n^2 m, F\} max{n3,n2m,F} ( F F F 为计算目标函数和约束一阶二阶导的消耗)
可以发现, 当给定了目标函数和约束函数, 这些问题都有相对成熟的解决技术. 但在应用中, 如何用数学将问题表达成(5)(6)这样的凸优化形式并不容易. 所以这本书的主要目的就是教会大家如何使用一些技术将问题转化为 convex 形式, 并用凸优化技术解决问题.
1.5 Nonlinear optimization
又称为 nonlinear programming, 非线性规划, 这类问题中的目标函数和约束是非线性的且未知是否为 convex.
- Local optimization methods
即寻找函数局部的最优解, 这种方式的计算很快(i.e. 函数求导), 能处理大规模问题, 且应用广泛.
但解决这类问题需要有优化参数的初始假设, 得到的结果与这个初始值有很大关系. 且算出的局部最优解对寻找全局最优解没什么帮助. - Global optimization methods
即寻找函数整个定义域上的最优解, 计算复杂度高, 难度大.