本系列笔记参考:
# 课程介绍
- 本课程需要的先修条件:
- 线性代数或类似课程(第一节课会对相关知识进行回顾)
- CS70(离散数学)相关课程(作为逻辑推理的基础)
- 微积分相关课程(会涉及到梯度等计算)
- 本课程使用python语言进行编程,所以也需要一定的python基础(CS61A水平即可)。
- 本课程核心围绕最优化理论展开,在回顾完线性代数内容后,首先会介绍梯度下降(gradient descent)等优化模型,接着会讲解函数的凸性(Convexity),然后会讲解对偶性(duality),最后会介绍最优化理论的应用(控制论、机器学习算法等)
# 关于优化
- 优化渗透于生活中方方面面。无论是生产还是生活,一旦选择了目标(使其最大化/最小化等),那么就不可避免地会涉及到目标的优化。
- 优化的核心在于目标及损失函数的选择,它们会决定最终优化的结果。比如,在一些回归问题中,会使用L1/L2损失函数,而在一些分类问题中,则会使用分类错误率作为损失函数……有时,我们还会涉及到多个目标的优化(比如航班调度),或者队列优化等等有点运筹学的感觉
- 一个标准的优化问题包括一个需要最小化的目标函数(如果是最大化那就取负值)以及可行解的集合(一般由约束条件决定)。
# 优化问题示例
- 假设有一家天然气公司需要精炼105桶原油。现在有两家炼油厂:一家加工为航空燃油,另一家则加工为汽油。航空燃油售价0.10美元/桶,汽油售价0.20美元/桶。优化目标为最大化利润。
- 其他限制如下:
- 政府要求公司至少生产1000桶航空燃油与500桶汽油。
- 原油储存点距离航空燃油厂10英里,距离汽油厂30英里,而总运输不超过2×106桶英里(即运输里程与运输桶数乘积之和不超过2×106)
- 假设生产航空燃油的桶数为x1,生产汽油的桶数为x2,那么我们就能构建以下优化模型:
x1,x2max101x1+51x2s.t.⎩⎨⎧x1≥1000x2≥50010x1+30x2≤2⋅106x1+x2=105
这个模型是一个典型的线性规划模型,其求解方法会在之后讨论。
# 标准的优化问题
- 下面给出更一般的优化问题形式:
x∈Rnminf0(x)s.t.{fi(x)≤0,∀i∈{1,…,m}hj(x)=0,∀j∈{1,…,p}.
其中:
- x为优化向量(包括所有优化参数)
- fi与hj均为定义在Rn→R上的函数
- f0为目标函数
- fi(x)≤0为不等式约束,而hj(x)=0为等式约束
- 我们可以将满足约束条件的可行解记为集合Ω,即:
Ω≐{x∈Rnfi(x)≤0,∀i∈{1,…,m}hj(x)=0,∀j∈{1,…,p}}.
而优化问题就可以记为x∈Ωminf0(x)
- 这一优化问题的解记为x∗∈Ω,其在Ω中的所有优化向量x中能使f0(x)取到最小值(即f0(x)在Ω上的极小值点),也可以用argmin表示:
x∈Ωargminf0(x)={x∈Ω∣f0(x)=u∈Ωminf0(u)}
解的数量可以不止一个(甚至可以有无穷多个),但一般可以用x∗代表。
- 上面的约束条件中可以没有不等式约束/等式约束(如果没有任何约束那么Ω=Rn,也称为无约束问题)
# 讨论:当最小值/最大值不存在
- 在上面的优化问题中,我们默认f0(x)在Ω上的最小值能取到,但在一些特殊情况下,可能无法取到最小值(如开区间端点)。
- 此时我们就要用到分析学中的上/下确界(supremum and infimum)的概念。实际上,我们只需要将上面问题中的min改为inf即可。(由确界定理,只要下界存在,下确界一定存在)
- 在后续的讨论中,我们不会特别考虑最小值能否取到的问题(即默认为min)
# 最小二乘法(Least Squares)
- 我们可以从最简单(也是最通用)的最优化问题开始:
- 给定一个数据矩阵A∈Rm×n与一个参考向量y∈Rm,目标是找到参数向量x∈Rn,使得∥Ax−y∥22最小。其中,∥⋅∥2表示向量的L2范数(即欧几里得范数):
∥z∥2≐z⊤z=i=1∑nzi2.
- 对于这一问题的求解,有以下定理:设A∈Rm×n列满秩,则
x∈Rnmin∥Ax−y∥22
的解唯一且表示为x∗=(A⊤A)−1A⊤y
注:这里默认m>n。m≤n时最小值一定为0(m<n时x有无穷解(A行满秩),m=n时x有唯一解)
- 证明:
- 最后我们介绍最小二乘法用在最基本的应用——线性回归(拟合)。假设给定数据点(x1,y1),⋯,(xn,yn),我们尝试用一条直线y=mx+b拟合这些数据点。理想情况下,
mx1+bmx2+bmxn+b=y1=y2⋮=yn.
用矩阵的形式表示:x1x2⋮xn11⋮1[mb]=y1y2⋮yn.
当方程组有解时,拟合的直线就能精确覆盖所有数据点;而当方程组无解时,就可以用最小二乘法得到最佳拟合直线。
- 最后补充:最小二乘问题的求解之所以简单,是因为它属于“凸”问题(convex problem),其性质为任意局部最优解都是全局最优解。当然现实中也有不少优化问题是非凸的,其求解(包括凸性理论)会在后续讨论。