Algorithms for Optimization
第十二章 多目标优化
第12章详细介绍了多目标优化(Multiobjective Optimization)的概念、方法和应用。多目标优化问题与单目标优化问题不同,它涉及多个目标函数的同时优化,通常这些目标之间是相互冲突的,无法通过单一的优化过程找到全局最优解。因此,多目标优化的核心在于找到一组Pareto最优解,这些解代表了不同目标之间的最佳权衡。以下是本章的详细讲解:
1. Pareto最优性(Pareto Optimality)
Pareto最优性是多目标优化的核心概念。它描述了一种状态,即在不损害其他目标的情况下,无法进一步优化任何一个目标。
1.1 支配关系(Dominance)
- 在单目标优化中,两个设计点可以通过目标函数值直接比较优劣。例如,若 f ( x ′ ) < f ( x ) f(x') < f(x) f(x′)<f(x),则 x ′ x' x′ 优于 x x x。
- 在多目标优化中,目标函数返回的是一个向量 f ( x ) = [ f 1 ( x ) , f 2 ( x ) , … , f m ( x ) ] \mathbf{f}(x) = [f_1(x), f_2(x), \dots, f_m(x)] f(x)=[f1(x),f2(x),…,fm(x)],每个维度对应一个目标。
- 定义支配关系:设计点
x
x
x 支配设计点
x
′
x'
x′,当且仅当:
- 在所有目标上, f i ( x ) ≤ f i ( x ′ ) f_i(x) \leq f_i(x') fi(x)≤fi(x′)(即 x x x 在所有目标上不劣于 x ′ x' x′);
- 至少在一个目标上, f i ( x ) < f i ( x ′ ) f_i(x) < f_i(x') fi(x)<fi(x′)(即 x x x 至少在一个目标上优于 x ′ x' x′)。
- 如果两个设计点在部分目标上互相优于对方,则它们之间存在支配模糊性(Dominance Ambiguity),无法直接比较优劣。
1.2 Pareto前沿(Pareto Frontier)
- Pareto前沿是所有Pareto最优解在目标空间中的集合。它代表了不同目标之间的最佳权衡。
- 在目标空间中,Pareto前沿通常位于边界上。对于二维目标空间,Pareto前沿是一条曲线;对于更高维空间,它是一个超曲面。
- 弱Pareto最优点:如果一个设计点无法在所有目标上同时被改进,则称其为弱Pareto最优点。弱Pareto最优点不一定是Pareto最优点。
1.3 Pareto前沿生成
- 生成Pareto前沿的简单方法是随机采样设计点,然后筛选出非支配点。然而,这种方法效率低下且无法保证Pareto前沿的平滑性。
- 更有效的方法包括约束法、权重法和群体方法。
2. 约束方法(Constraint Methods)
约束方法通过将多目标优化问题转化为单目标优化问题来生成Pareto前沿。
2.1 约束法(Constraint Method)
-
约束法通过将所有目标(除了一个)作为约束条件,将多目标优化问题转化为单目标优化问题。
-
例如,假设有两个目标 f 1 ( x ) f_1(x) f1(x) 和 f 2 ( x ) f_2(x) f2(x),可以将 f 2 ( x ) f_2(x) f2(x) 作为约束条件,优化 f 1 ( x ) f_1(x) f1(x):
minimize f 1 ( x ) subject to f 2 ( x ) ≤ c 2 \text{minimize} \quad f_1(x) \\ \text{subject to} \quad f_2(x) \leq c_2 minimizef1(x)subject tof2(x)≤c2 -
通过调整约束条件 c 2 c_2 c2,可以生成Pareto前沿。
2.2 词典序法(Lexicographic Method)
- 词典序法根据目标的重要性顺序依次进行优化。每次优化时,保留之前优化目标的最优值作为约束条件。
- 例如,假设有三个目标
f
1
(
x
)
f_1(x)
f1(x),
f
2
(
x
)
f_2(x)
f2(x),
f
3
(
x
)
f_3(x)
f3(x),按重要性顺序依次优化:
- 首先优化 f 1 ( x ) f_1(x) f1(x),得到最优值 y 1 ∗ y_1^* y1∗;
- 然后优化 f 2 ( x ) f_2(x) f2(x),约束 f 1 ( x ) ≤ y 1 ∗ f_1(x) \leq y_1^* f1(x)≤y1∗;
- 最后优化 f 3 ( x ) f_3(x) f3(x),约束 f 1 ( x ) ≤ y 1 ∗ f_1(x) \leq y_1^* f1(x)≤y1∗ 且 f 2 ( x ) ≤ y 2 ∗ f_2(x) \leq y_2^* f2(x)≤y2∗。
3. 权重方法(Weight Methods)
权重方法通过为每个目标分配权重,将多目标优化问题转化为单目标优化问题。这是本章的重点内容。
3.1 加权求和法(Weighted Sum Method)
-
加权求和法通过为每个目标分配权重 w i w_i wi,将多目标函数转化为单目标函数:
f ( x ) = ∑ i = 1 m w i f i ( x ) f(x) = \sum_{i=1}^m w_i f_i(x) f(x)=i=1∑mwifi(x) -
权重 w i w_i wi 通常满足 w i ≥ 0 w_i \geq 0 wi≥0 且 ∑ i = 1 m w i = 1 \sum_{i=1}^m w_i = 1 ∑i=1mwi=1。
-
通过调整权重,可以生成Pareto前沿。然而,加权求和法无法处理非凸的Pareto前沿。
例子:
假设我们选择权重
w
1
=
0.5
w_1 = 0.5
w1=0.5 和
w
2
=
0.5
w_2 = 0.5
w2=0.5,则单目标函数为:
f
(
x
)
=
0.5
x
2
+
0.5
(
x
−
2
)
2
f(x) = 0.5 x^2 + 0.5 (x - 2)^2
f(x)=0.5x2+0.5(x−2)2
通过求解这个单目标优化问题,可以得到一个Pareto最优解。例如,对
f
(
x
)
f(x)
f(x) 求导并令导数为零:
d
f
d
x
=
x
+
(
x
−
2
)
=
2
x
−
2
=
0
⟹
x
=
1
\frac{df}{dx} = x + (x - 2) = 2x - 2 = 0 \implies x = 1
dxdf=x+(x−2)=2x−2=0⟹x=1
因此,
x
=
1
x = 1
x=1 是一个Pareto最优解。
3.2 目标规划(Goal Programming)
-
目标规划通过最小化目标函数值与目标点之间的 L p L_p Lp 范数来生成Pareto前沿:
minimize ∥ f ( x ) − y goal ∥ p \text{minimize} \quad \| \mathbf{f}(x) - \mathbf{y}^{\text{goal}} \|_p minimize∥f(x)−ygoal∥p -
目标点通常是理想点(utopia point),即每个目标的最优值。
-
p p p 是范数的阶数,用于衡量目标函数值与目标点之间的偏差。常见的取值包括:
- p = 1 p = 1 p=1:最小化总偏差(绝对值和);
- p = 2 p = 2 p=2:最小化几何距离(欧几里得距离);
- p → ∞ p \to \infty p→∞:最小化最大偏差。
例子:
假设目标点为
y
goal
=
[
0
,
0
]
\mathbf{y}^{\text{goal}} = [0, 0]
ygoal=[0,0],选择
p
=
2
p = 2
p=2,则目标规划问题为:
minimize
x
2
+
(
x
−
2
)
2
\text{minimize} \quad \sqrt{x^2 + (x - 2)^2}
minimizex2+(x−2)2
通过求解这个优化问题,可以得到一个Pareto最优解。
3.3 加权指数求和法(Weighted Exponential Sum)
-
加权指数求和法结合了目标规划和加权求和法,通过引入指数权重来生成Pareto前沿:
f ( x ) = ∑ i = 1 m w i ( f i ( x ) − y i goal ) p f(x) = \sum_{i=1}^m w_i \left( f_i(x) - y_i^{\text{goal}} \right)^p f(x)=i=1∑mwi(fi(x)−yigoal)p -
p p p 是指数权重的幂次,用于调整目标函数值与目标点之间偏差的惩罚强度。较大的 p p p 会更关注最大偏差。
例子:
假设目标点为
y
goal
=
[
0
,
0
]
\mathbf{y}^{\text{goal}} = [0, 0]
ygoal=[0,0],选择
p
=
2
p = 2
p=2,权重
w
1
=
0.5
w_1 = 0.5
w1=0.5 和
w
2
=
0.5
w_2 = 0.5
w2=0.5,则加权指数求和法为:
f
(
x
)
=
0.5
(
x
2
−
0
)
2
+
0.5
(
(
x
−
2
)
2
−
0
)
2
f(x) = 0.5 \left( x^2 - 0 \right)^2 + 0.5 \left( (x - 2)^2 - 0 \right)^2
f(x)=0.5(x2−0)2+0.5((x−2)2−0)2
简化后:
f
(
x
)
=
0.5
x
4
+
0.5
(
x
−
2
)
4
f(x) = 0.5 x^4 + 0.5 (x - 2)^4
f(x)=0.5x4+0.5(x−2)4
3.4 加权最小最大法(Weighted Min-Max Method)
-
加权最小最大法通过最小化目标函数值与目标点之间的最大偏差来生成Pareto前沿:
f ( x ) = max i [ w i ( f i ( x ) − y i goal ) ] f(x) = \max_i \left[ w_i \left( f_i(x) - y_i^{\text{goal}} \right) \right] f(x)=imax[wi(fi(x)−yigoal)] -
这种方法可以处理非凸的Pareto前沿。
例子:
假设目标点为
y
goal
=
[
0
,
0
]
\mathbf{y}^{\text{goal}} = [0, 0]
ygoal=[0,0],选择
w
1
=
0.5
w_1 = 0.5
w1=0.5 和
w
2
=
0.5
w_2 = 0.5
w2=0.5,则加权最小最大法为:
f
(
x
)
=
max
[
0.5
x
2
,
0.5
(
x
−
2
)
2
]
f(x) = \max \left[ 0.5 x^2, 0.5 (x - 2)^2 \right]
f(x)=max[0.5x2,0.5(x−2)2]
通过求解这个优化问题,可以得到一个Pareto最优解。
4. 多目标群体方法(Multiobjective Population Methods)
群体方法(如遗传算法)也可以用于多目标优化。通过调整群体方法,可以生成覆盖Pareto前沿的解集。
4.1 子群体(Subpopulations)
- 群体方法可以将群体划分为多个子群体,每个子群体针对不同的目标进行优化。通过子群体之间的交叉和变异,可以生成多样化的解集。
4.2 非支配排序(Nondomination Ranking)
- 非支配排序通过将群体中的个体按照非支配关系进行排序,生成Pareto前沿的近似解。
4.3 Pareto过滤器(Pareto Filters)
- Pareto过滤器用于在群体方法中维护一个近似Pareto前沿的解集。通过不断更新过滤器,可以确保群体方法生成的解集覆盖Pareto前沿。
4.4 小生境技术(Niche Techniques)
- 小生境技术通过惩罚目标空间中过于集中的个体,鼓励群体方法生成均匀分布的Pareto前沿解集。
5. 偏好引导(Preference Elicitation)
偏好引导通过专家的偏好信息,推断出合适的权重向量,从而将多目标优化问题转化为单目标优化问题。
5.1 模型识别(Model Identification)
- 通过专家的偏好信息,可以识别出合适的权重向量。常见的偏好引导方法包括二元偏好查询和排序查询。
5.2 配对查询选择(Paired Query Selection)
- 配对查询选择通过选择信息量最大的查询对,快速缩小权重向量的可行域。
5.3 设计选择(Design Selection)
- 设计选择通过最小化最坏情况下的目标值或最小化最大遗憾值,选择最终的设计方案。
6. 总结
- 多目标优化涉及多个目标之间的权衡,通常没有唯一的最优解。
- Pareto前沿代表了不同目标之间的最佳权衡。
- 通过约束法或权重法,可以将多目标优化问题转化为单目标优化问题。
- 群体方法可以生成覆盖Pareto前沿的解集。
- 通过专家的偏好信息,可以推断出合适的权重向量,从而选择最优设计方案。
第十四章 代理模型
1. 代理模型的拟合
核心思想:代理模型 f ^ \hat{f} f^ 通过参数 θ \theta θ 来模拟真实的目标函数 f f f。我们通过调整参数 θ \theta θ 来最小化模型预测值 y ^ \hat{\mathbf{y}} y^ 和真实值 y \mathbf{y} y 之间的差异,通常使用 L p L_p Lp 范数(如 L 2 L_2 L2 范数,即最小化均方误差)。
例子:
假设我们有 3 个设计点
X
=
{
x
(
1
)
,
x
(
2
)
,
x
(
3
)
}
X = \{\mathbf{x}^{(1)}, \mathbf{x}^{(2)}, \mathbf{x}^{(3)}\}
X={x(1),x(2),x(3)},对应的函数评估值为
y
=
{
y
(
1
)
,
y
(
2
)
,
y
(
3
)
}
\mathbf{y} = \{y^{(1)}, y^{(2)}, y^{(3)}\}
y={y(1),y(2),y(3)}。代理模型的目标是通过调整参数
θ
\theta
θ,使得模型的预测值
y
^
=
{
f
^
θ
(
x
(
1
)
)
,
f
^
θ
(
x
(
2
)
)
,
f
^
θ
(
x
(
3
)
)
}
\hat{\mathbf{y}} = \{\hat{f}_{\theta}(\mathbf{x}^{(1)}), \hat{f}_{\theta}(\mathbf{x}^{(2)}), \hat{f}_{\theta}(\mathbf{x}^{(3)})\}
y^={f^θ(x(1)),f^θ(x(2)),f^θ(x(3))} 尽可能接近真实值
y
\mathbf{y}
y。
2. 线性模型
核心思想:线性模型是最简单的代理模型,形式为 f ^ = w 0 + w ⊤ x \hat{f} = w_0 + \mathbf{w}^\top \mathbf{x} f^=w0+w⊤x。对于 n n n 维设计空间,线性模型有 n + 1 n+1 n+1 个参数,因此至少需要 n + 1 n+1 n+1 个样本来拟合。
例子:
假设我们有一个二维设计空间,设计点为
X
=
{
(
1
,
2
)
,
(
2
,
3
)
,
(
3
,
4
)
}
X = \{(1, 2), (2, 3), (3, 4)\}
X={(1,2),(2,3),(3,4)},对应的函数评估值为
y
=
{
3
,
5
,
7
}
\mathbf{y} = \{3, 5, 7\}
y={3,5,7}。我们可以构建设计矩阵
X
\mathbf{X}
X 并求解线性回归问题来找到最优参数
θ
\theta
θ。
设计矩阵:
X
=
[
1
1
2
1
2
3
1
3
4
]
\mathbf{X} = \begin{bmatrix} 1 & 1 & 2 \\ 1 & 2 & 3 \\ 1 & 3 & 4 \end{bmatrix}
X=
111123234
通过最小二乘法,我们可以求解
θ
=
(
X
⊤
X
)
−
1
X
⊤
y
\theta = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}
θ=(X⊤X)−1X⊤y,得到最优参数。
3. 基函数
核心思想:线性模型是基函数的一种特例。更一般的形式是线性组合基函数:
f
^
(
x
)
=
∑
i
=
1
q
θ
i
b
i
(
x
)
\hat{f}(x) = \sum_{i=1}^q \theta_i b_i(x)
f^(x)=i=1∑qθibi(x)
其中
b
i
(
x
)
b_i(x)
bi(x) 是基函数。常见的基函数包括多项式基函数、正弦基函数和径向基函数。
3.1 多项式基函数
核心思想:多项式基函数由设计向量的各分量幂次组成。通过泰勒级数展开,任何无限可微函数都可以用足够高阶的多项式近似。
例子:
在一维情况下,一个
k
k
k 次多项式模型的形式为:
f
^
(
x
)
=
θ
0
+
θ
1
x
+
θ
2
x
2
+
⋯
+
θ
k
x
k
\hat{f}(x) = \theta_0 + \theta_1 x + \theta_2 x^2 + \cdots + \theta_k x^k
f^(x)=θ0+θ1x+θ2x2+⋯+θkxk
假设我们有 4 个设计点
X
=
{
1
,
2
,
3
,
4
}
X = \{1, 2, 3, 4\}
X={1,2,3,4},对应的函数评估值为
y
=
{
0
,
5
,
4
,
6
}
\mathbf{y} = \{0, 5, 4, 6\}
y={0,5,4,6}。我们可以通过多项式基函数拟合这些数据。
3.2 正弦基函数
核心思想:任何有限域上的连续函数都可以用无限的正弦基函数表示。傅里叶级数可以用于构造这些基函数。
例子:
在一维情况下,傅里叶级数的基函数为:
b
0
(
x
)
=
1
/
2
,
b
i
(
sin
)
(
x
)
=
sin
(
2
π
i
x
b
−
a
)
,
b
i
(
cos
)
(
x
)
=
cos
(
2
π
i
x
b
−
a
)
b_0(x) = 1/2, \quad b_i^{(\text{sin})}(x) = \sin\left(\frac{2\pi i x}{b - a}\right), \quad b_i^{(\text{cos})}(x) = \cos\left(\frac{2\pi i x}{b - a}\right)
b0(x)=1/2,bi(sin)(x)=sin(b−a2πix),bi(cos)(x)=cos(b−a2πix)
假设我们有一个函数
f
(
x
)
=
sin
(
2
x
)
cos
(
10
x
)
f(x) = \sin(2x) \cos(10x)
f(x)=sin(2x)cos(10x),我们可以使用正弦基函数来拟合这个函数。
3.3 径向基函数
核心思想:径向基函数仅依赖于点与中心点的距离。常见的径向基函数包括线性、立方、薄板样条、高斯、多二次和逆多二次函数。
例子:
假设我们有设计点
X
=
{
(
1
,
2
)
,
(
2
,
3
)
,
(
3
,
4
)
}
X = \{(1, 2), (2, 3), (3, 4)\}
X={(1,2),(2,3),(3,4)},我们可以使用这些点作为中心点构建径向基函数
b
i
(
x
)
=
ψ
(
∥
x
−
x
(
i
)
∥
)
b_i(x) = \psi(\|x - x^{(i)}\|)
bi(x)=ψ(∥x−x(i)∥),其中
ψ
\psi
ψ 是径向基函数(如高斯函数
ψ
(
r
)
=
e
−
r
2
/
2
σ
2
\psi(r) = e^{-r^2/2\sigma^2}
ψ(r)=e−r2/2σ2)。
4. 拟合噪声目标函数
核心思想:当目标函数评估存在噪声时,复杂的模型可能会过度拟合噪声数据。为了获得更平滑的拟合,可以在回归问题中加入正则化项,如 L 2 L_2 L2 正则化,以偏好权重较低的解决方案。
例子:
假设我们有带噪声的目标函数评估值
y
\mathbf{y}
y,我们可以通过加入正则化项
λ
∥
θ
∥
2
2
\lambda \|\theta\|_2^2
λ∥θ∥22 来获得更平滑的拟合。最优参数向量可以通过
θ
=
(
B
⊤
B
+
λ
I
)
−
1
B
⊤
y
\theta = (\mathbf{B}^\top \mathbf{B} + \lambda \mathbf{I})^{-1} \mathbf{B}^\top \mathbf{y}
θ=(B⊤B+λI)−1B⊤y 计算。
5. 模型选择
核心思想:模型选择的目标是最小化泛化误差,即模型在整个设计空间上的预测误差。常见的估计泛化误差的方法包括留出法、交叉验证和自助法。
5.1 留出法
核心思想:将数据分为训练集和测试集,训练集用于拟合模型,测试集用于估计泛化误差。
例子:
假设我们有 10 个数据点,我们可以将其中 8 个点作为训练集,2 个点作为测试集。通过多次随机划分,我们可以获得泛化误差的估计。
5.2 交叉验证
核心思想:将数据分为 k k k 个子集,每次使用 k − 1 k-1 k−1 个子集训练模型,剩下的子集用于估计泛化误差。
例子:
假设我们有 10 个数据点,我们可以进行 5 折交叉验证,每次使用 8 个点训练模型,2 个点测试模型。通过 5 次不同的划分,我们可以获得泛化误差的估计。
5.3 自助法
核心思想:通过有放回地采样生成多个训练集,每个训练集用于拟合模型,并在原始数据集上评估泛化误差。
例子:
假设我们有 10 个数据点,我们可以生成 10 个自助样本,每个样本包含 10 个点(可能有重复)。通过在这些样本上训练模型并在原始数据上测试,我们可以获得泛化误差的估计。
6. 总结
- 代理模型:是目标函数的近似,可以替代真实的目标函数进行优化。
- 基函数:许多代理模型可以用基函数的线性组合表示。
- 模型选择:涉及偏差-方差权衡,低复杂度模型可能无法捕捉重要趋势,而高复杂度模型可能过度拟合噪声。
- 泛化误差:可以通过留出法、交叉验证和自助法等方法进行估计。
练习 :
1:推导线性回归问题的正规方程
问题:推导线性回归问题的最优解,即正规方程。
解答:
线性回归问题的目标是最小化均方误差:
m
i
n
i
m
i
z
e
θ
∥
y
−
X
θ
∥
2
2
minimize_{\theta} \|\mathbf{y} - \mathbf{X}\theta\|_2^2
minimizeθ∥y−Xθ∥22
其中,
X
\mathbf{X}
X 是设计矩阵,
y
\mathbf{y}
y 是目标值向量,
θ
\theta
θ 是参数向量。
将目标函数展开:
∥
y
−
X
θ
∥
2
2
=
(
y
−
X
θ
)
⊤
(
y
−
X
θ
)
\|\mathbf{y} - \mathbf{X}\theta\|_2^2 = (\mathbf{y} - \mathbf{X}\theta)^\top (\mathbf{y} - \mathbf{X}\theta)
∥y−Xθ∥22=(y−Xθ)⊤(y−Xθ)
对
θ
\theta
θ 求梯度并设为零:
∇
θ
(
y
−
X
θ
)
⊤
(
y
−
X
θ
)
=
−
2
X
⊤
(
y
−
X
θ
)
=
0
\nabla_\theta (\mathbf{y} - \mathbf{X}\theta)^\top (\mathbf{y} - \mathbf{X}\theta) = -2\mathbf{X}^\top (\mathbf{y} - \mathbf{X}\theta) = 0
∇θ(y−Xθ)⊤(y−Xθ)=−2X⊤(y−Xθ)=0
整理得到正规方程:
X
⊤
X
θ
=
X
⊤
y
\mathbf{X}^\top \mathbf{X} \theta = \mathbf{X}^\top \mathbf{y}
X⊤Xθ=X⊤y
如果
X
⊤
X
\mathbf{X}^\top \mathbf{X}
X⊤X 可逆,则最优解为:
θ
=
(
X
⊤
X
)
−
1
X
⊤
y
\theta = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}
θ=(X⊤X)−1X⊤y
2:何时使用多项式模型与线性回归模型
问题:讨论何时使用多项式模型与线性回归模型。
解答:
- 线性回归模型:适用于目标函数与输入变量之间存在线性关系的情况。线性模型简单且计算成本低,但无法捕捉非线性关系。
- 多项式模型:适用于目标函数与输入变量之间存在非线性关系的情况。通过引入高阶项,多项式模型可以拟合更复杂的函数,但容易过拟合,尤其是在数据量较少时。
选择依据:
- 数据量:如果数据量较少,优先选择线性模型,避免过拟合。
- 问题复杂度:如果目标函数明显是非线性的,可以使用多项式模型。
- 计算资源:多项式模型的计算成本较高,尤其是在高维情况下。
3:为什么线性回归问题有时需要使用优化技术而不是解析解
问题:解释为什么线性回归问题有时需要使用优化技术而不是解析解。
解答:
线性回归问题的解析解为:
θ
=
(
X
⊤
X
)
−
1
X
⊤
y
\theta = (\mathbf{X}^\top \mathbf{X})^{-1} \mathbf{X}^\top \mathbf{y}
θ=(X⊤X)−1X⊤y
但在以下情况下,解析解可能不适用:
- 矩阵不可逆:当 X ⊤ X \mathbf{X}^\top \mathbf{X} X⊤X 不可逆时,解析解无法计算。这种情况可能发生在数据点线性相关或数据量少于特征数时。
- 计算复杂度高:当设计矩阵 X \mathbf{X} X 非常大时,计算 ( X ⊤ X ) − 1 (\mathbf{X}^\top \mathbf{X})^{-1} (X⊤X)−1 的复杂度很高,甚至不可行。
- 数值稳定性:当 X ⊤ X \mathbf{X}^\top \mathbf{X} X⊤X 接近奇异矩阵时,解析解可能数值不稳定。
在这些情况下,可以使用优化技术(如梯度下降法)来求解线性回归问题,避免直接计算逆矩阵。
4:计算留一法交叉验证的均方误差
问题:假设我们在四个点 x = { 1 , 2 , 3 , 4 } x = \{1, 2, 3, 4\} x={1,2,3,4} 上评估目标函数,得到 y = { 0 , 5 , 4 , 6 } y = \{0, 5, 4, 6\} y={0,5,4,6}。我们拟合多项式模型 f ^ ( x ) = ∑ i = 0 k θ i x i \hat{f}(x) = \sum_{i=0}^k \theta_i x^i f^(x)=∑i=0kθixi,计算 k k k 从 0 到 4 时的留一法交叉验证均方误差,并选择最佳的 k k k 和 θ \theta θ。
解答:
留一法交叉验证的步骤如下:
- 对于每个 k k k,依次将每个数据点作为测试集,其余数据点作为训练集。
- 在训练集上拟合多项式模型,计算测试集上的预测误差。
- 对所有测试集的误差取平均,得到均方误差(MSE)。
计算过程:
以
k
=
1
k = 1
k=1 为例:
- 测试集为 x = 1 x = 1 x=1,训练集为 x = { 2 , 3 , 4 } x = \{2, 3, 4\} x={2,3,4}。
- 在训练集上拟合线性模型 f ^ ( x ) = θ 0 + θ 1 x \hat{f}(x) = \theta_0 + \theta_1 x f^(x)=θ0+θ1x。
- 计算测试集上的预测误差 ( y − f ^ ( x ) ) 2 (y - \hat{f}(x))^2 (y−f^(x))2。
重复上述过程,计算 k = 0 , 1 , 2 , 3 , 4 k = 0, 1, 2, 3, 4 k=0,1,2,3,4 时的 MSE。
结果:
通过计算,可以得到不同
k
k
k 值下的 MSE。选择 MSE 最小的
k
k
k 值作为最佳模型。
最佳
k
k
k 和
θ
\theta
θ:
假设
k
=
2
k = 2
k=2 时 MSE 最小,则最佳模型为:
f
^
(
x
)
=
θ
0
+
θ
1
x
+
θ
2
x
2
\hat{f}(x) = \theta_0 + \theta_1 x + \theta_2 x^2
f^(x)=θ0+θ1x+θ2x2
通过最小二乘法拟合训练数据,得到最优参数
θ
\theta
θ。
第十五章 概率代理模型
1. 高斯分布(Gaussian Distribution)
高斯分布是高斯过程的基础。多元高斯分布由均值向量 μ \mu μ 和协方差矩阵 Σ \Sigma Σ 参数化,其概率密度函数为:
N ( x ∣ μ , Σ ) = ( 2 π ) − n / 2 ∣ Σ ∣ − 1 / 2 exp ( − 1 2 ( x − μ ) ⊤ Σ − 1 ( x − μ ) ) \mathcal{N}({\bf x}\mid\mu,\Sigma)=(2\pi)^{-n/2}|\Sigma|^{-1/2}\exp\left(-\frac{1}{2}({\bf x}-\mu)^{\top}\Sigma^{-1}({\bf x}-\mu)\right) N(x∣μ,Σ)=(2π)−n/2∣Σ∣−1/2exp(−21(x−μ)⊤Σ−1(x−μ))
关键性质:
- 边际分布:多元高斯分布的边际分布仍然是高斯分布。
- 条件分布:给定部分变量的值,剩余变量的条件分布也是高斯分布。
例15.1:多元高斯的边际分布和条件分布
问题描述:
假设我们有一个二维高斯分布:
[
x
1
x
2
]
∼
N
(
[
0
1
]
,
[
3
1
1
2
]
)
\begin{bmatrix} x_1 \\ x_2 \end{bmatrix} \sim \mathcal{N}\left( \begin{bmatrix} 0 \\ 1 \end{bmatrix}, \begin{bmatrix} 3 & 1 \\ 1 & 2 \end{bmatrix} \right)
[x1x2]∼N([01],[3112])
计算:
- x 1 x_1 x1 和 x 2 x_2 x2 的边际分布。
- 在 x 2 = 2 x_2 = 2 x2=2 的条件下, x 1 x_1 x1 的条件分布。
解答:
-
边际分布:
-
x 1 x_1 x1 的边际分布为:
x 1 ∼ N ( 0 , 3 ) x_1 \sim \mathcal{N}(0, 3) x1∼N(0,3) -
x 2 x_2 x2 的边际分布为:
x 2 ∼ N ( 1 , 2 ) x_2 \sim \mathcal{N}(1, 2) x2∼N(1,2)
-
-
条件分布:
-
条件分布的均值和协方差通过公式计算:
μ x 1 ∣ x 2 = 2 = 0 + 1 ⋅ 2 − 1 ⋅ ( 2 − 1 ) = 0.5 \mu_{x_1|x_2=2} = 0 + 1 \cdot 2^{-1} \cdot (2 - 1) = 0.5 μx1∣x2=2=0+1⋅2−1⋅(2−1)=0.5Σ x 1 ∣ x 2 = 2 = 3 − 1 ⋅ 2 − 1 ⋅ 1 = 2.5 \Sigma_{x_1|x_2=2} = 3 - 1 \cdot 2^{-1} \cdot 1 = 2.5 Σx1∣x2=2=3−1⋅2−1⋅1=2.5
-
因此,条件分布为:
x 1 ∣ ( x 2 = 2 ) ∼ N ( 0.5 , 2.5 ) x_1 | (x_2 = 2) \sim \mathcal{N}(0.5, 2.5) x1∣(x2=2)∼N(0.5,2.5)
-
意义:
这个例子展示了如何从联合高斯分布中提取边际分布和条件分布,为后续高斯过程的预测奠定了基础。
2. 高斯过程(Gaussian Processes)
高斯过程是函数的概率分布。对于任何有限的设计点集合 { x ( 1 ) , … , x ( m ) } \{x^{(1)}, \dots, x^{(m)}\} {x(1),…,x(m)},其对应的函数值 { y 1 , … , y m } \{y_1, \dots, y_m\} {y1,…,ym} 服从多元高斯分布:
[ y 1 ⋮ y m ] ∼ N ( [ m ( x ( 1 ) ) ⋮ m ( x ( m ) ) ] , [ k ( x ( 1 ) , x ( 1 ) ) ⋯ k ( x ( 1 ) , x ( m ) ) ⋮ ⋱ ⋮ k ( x ( m ) , x ( 1 ) ) ⋯ k ( x ( m ) , x ( m ) ) ] ) \begin{bmatrix} y_1 \\ \vdots \\ y_m \end{bmatrix} \sim \mathcal{N}\left( \begin{bmatrix} m(x^{(1)}) \\ \vdots \\ m(x^{(m)}) \end{bmatrix}, \begin{bmatrix} k(x^{(1)}, x^{(1)}) & \cdots & k(x^{(1)}, x^{(m)}) \\ \vdots & \ddots & \vdots \\ k(x^{(m)}, x^{(1)}) & \cdots & k(x^{(m)}, x^{(m)}) \end{bmatrix} \right) y1⋮ym ∼N m(x(1))⋮m(x(m)) , k(x(1),x(1))⋮k(x(m),x(1))⋯⋱⋯k(x(1),x(m))⋮k(x(m),x(m))
其中:
- m ( x ) m(x) m(x) 是均值函数,通常假设为零均值。
- k ( x , x ′ ) k(x, x') k(x,x′) 是核函数(协方差函数),控制函数的平滑性。
常用核函数:
-
平方指数核(Squared Exponential Kernel):
k ( x , x ′ ) = exp ( − ( x − x ′ ) 2 2 ℓ 2 ) k(x, x') = \exp\left(-\frac{(x - x')^2}{2\ell^2}\right) k(x,x′)=exp(−2ℓ2(x−x′)2)
其中, ℓ \ell ℓ 是长度尺度参数,控制函数的平滑程度。 -
Matern核:适用于非平滑函数。
-
线性核、多项式核等。
例15.2:高斯过程的核函数推导
问题描述:
假设我们使用平方指数核:
k
f
f
(
x
,
x
′
)
=
exp
(
−
1
2
∥
x
−
x
′
∥
2
)
k_{ff}(x, x') = \exp\left(-\frac{1}{2}\|x - x'\|^2\right)
kff(x,x′)=exp(−21∥x−x′∥2)
推导其他核函数
k
f
∇
(
x
,
x
′
)
k_{f\nabla}(x, x')
kf∇(x,x′)、
k
∇
f
(
x
,
x
′
)
k_{\nabla f}(x, x')
k∇f(x,x′) 和
k
∇
∇
(
x
,
x
′
)
k_{\nabla\nabla}(x, x')
k∇∇(x,x′)。
解答:
-
k f ∇ ( x , x ′ ) k_{f\nabla}(x, x') kf∇(x,x′) 是函数值与梯度的协方差:
k f ∇ ( x , x ′ ) = ∂ ∂ x ′ k f f ( x , x ′ ) = − ( x − x ′ ) exp ( − 1 2 ∥ x − x ′ ∥ 2 ) k_{f\nabla}(x, x') = \frac{\partial}{\partial x'} k_{ff}(x, x') = -(x - x') \exp\left(-\frac{1}{2}\|x - x'\|^2\right) kf∇(x,x′)=∂x′∂kff(x,x′)=−(x−x′)exp(−21∥x−x′∥2) -
k ∇ ∇ ( x , x ′ ) k_{\nabla\nabla}(x, x') k∇∇(x,x′) 是梯度与梯度的协方差:
k ∇ ∇ ( x , x ′ ) = ∂ 2 ∂ x ∂ x ′ k f f ( x , x ′ ) = ( ( x − x ′ ) 2 − 1 ) exp ( − 1 2 ∥ x − x ′ ∥ 2 ) k_{\nabla\nabla}(x, x') = \frac{\partial^2}{\partial x \partial x'} k_{ff}(x, x') = \left((x - x')^2 - 1\right) \exp\left(-\frac{1}{2}\|x - x'\|^2\right) k∇∇(x,x′)=∂x∂x′∂2kff(x,x′)=((x−x′)2−1)exp(−21∥x−x′∥2)
意义:
这个例子展示了如何从基本核函数推导出高阶核函数,为引入梯度信息奠定了基础。
3. 梯度信息(Gradient Measurements)
高斯过程可以扩展到包含梯度信息的情况。假设我们有函数值 y y y 和梯度 ∇ y \nabla y ∇y,联合分布为:
[ y ∇ y ] ∼ N ( [ m f m ∇ ] , [ K f f K f ∇ K ∇ f K ∇ ∇ ] ) \begin{bmatrix} y \\ \nabla y \end{bmatrix} \sim \mathcal{N}\left( \begin{bmatrix} \mathbf{m}_f \\ \mathbf{m}_\nabla \end{bmatrix}, \begin{bmatrix} \mathbf{K}_{ff} & \mathbf{K}_{f\nabla} \\ \mathbf{K}_{\nabla f} & \mathbf{K}_{\nabla\nabla} \end{bmatrix} \right) [y∇y]∼N([mfm∇],[KffK∇fKf∇K∇∇])
例15.3:构建包含梯度信息的协方差矩阵
问题描述:
假设我们在两个点
x
(
1
)
x^{(1)}
x(1) 和
x
(
2
)
x^{(2)}
x(2) 处评估了函数值和梯度,现在需要预测新点
x
^
\hat{x}
x^ 处的函数值。
解答:
-
构建联合分布的协方差矩阵:
[ k f f ( x ^ , x ^ ) k f f ( x ^ , x ( 1 ) ) k f f ( x ^ , x ( 2 ) ) k f ∇ ( x ^ , x ( 1 ) ) k f ∇ ( x ^ , x ( 2 ) ) k f f ( x ( 1 ) , x ^ ) k f f ( x ( 1 ) , x ( 1 ) ) k f f ( x ( 1 ) , x ( 2 ) ) k f ∇ ( x ( 1 ) , x ( 1 ) ) k f ∇ ( x ( 1 ) , x ( 2 ) ) ⋮ ⋮ ⋮ ⋮ ⋮ ] \begin{bmatrix} k_{ff}(\hat{x}, \hat{x}) & k_{ff}(\hat{x}, x^{(1)}) & k_{ff}(\hat{x}, x^{(2)}) & k_{f\nabla}(\hat{x}, x^{(1)}) & k_{f\nabla}(\hat{x}, x^{(2)}) \\ k_{ff}(x^{(1)}, \hat{x}) & k_{ff}(x^{(1)}, x^{(1)}) & k_{ff}(x^{(1)}, x^{(2)}) & k_{f\nabla}(x^{(1)}, x^{(1)}) & k_{f\nabla}(x^{(1)}, x^{(2)}) \\ \vdots & \vdots & \vdots & \vdots & \vdots \end{bmatrix} kff(x^,x^)kff(x(1),x^)⋮kff(x^,x(1))kff(x(1),x(1))⋮kff(x^,x(2))kff(x(1),x(2))⋮kf∇(x^,x(1))kf∇(x(1),x(1))⋮kf∇(x^,x(2))kf∇(x(1),x(2))⋮ -
使用条件分布公式计算预测值。
意义:
这个例子展示了如何利用梯度信息构建更精确的高斯过程模型。
4. 噪声测量(Noisy Measurements)
在实际应用中,函数评估可能包含噪声。我们可以将噪声建模为 y = f ( x ) + z y = f(x) + z y=f(x)+z,其中 z z z 是零均值的高斯噪声。通过引入噪声方差 v v v,我们可以调整预测的不确定性。
噪声情况下的联合分布:
[ y ^ y ] ∼ N ( [ m ( X ∗ ) m ( X ) ] , [ K ( X ∗ , X ∗ ) K ( X ∗ , X ) K ( X , X ∗ ) K ( X , X ) + v I ] ) \begin{bmatrix} \hat{\mathbf{y}} \\ \mathbf{y} \end{bmatrix} \sim \mathcal{N}\left( \begin{bmatrix} \mathbf{m}(X^*) \\ \mathbf{m}(X) \end{bmatrix}, \begin{bmatrix} \mathbf{K}(X^*, X^*) & \mathbf{K}(X^*, X) \\ \mathbf{K}(X, X^*) & \mathbf{K}(X, X) + v\mathbf{I} \end{bmatrix} \right) [y^y]∼N([m(X∗)m(X)],[K(X∗,X∗)K(X,X∗)K(X∗,X)K(X,X)+vI])
5. 习题讲解
习题1:高斯过程的复杂性
问题:高斯过程在优化过程中如何随着样本的增加而增加复杂性?
解答:高斯过程的计算复杂度主要来自于协方差矩阵的求逆操作,其复杂度为
O
(
n
3
)
O(n^3)
O(n3),其中
n
n
n 是样本数量。随着样本的增加,计算量会显著增加。
习题2:计算复杂度
问题:高斯过程预测的计算复杂度如何随数据点的增加而变化?
解答:预测的计算复杂度为
O
(
n
2
)
O(n^2)
O(n2),其中
n
n
n 是数据点的数量。
习题3:高斯过程的预测
问题:考虑函数
f
(
x
)
=
sin
(
x
)
/
(
x
2
+
1
)
f(x) = \sin(x)/(x^2 + 1)
f(x)=sin(x)/(x2+1),使用高斯过程预测其值,并计算95%置信区间。
解答:通过高斯过程的预测公式,可以计算出预测值和置信区间。
6. 总结
- 高斯过程是函数的概率分布,能够量化预测的不确定性。
- 核函数的选择影响函数的平滑性。
- 通过引入梯度信息和噪声测量,可以进一步提高模型的预测精度。
- 例15.1、15.2和15.3分别展示了边际分布、核函数推导和梯度信息的应用。