和 Gradient Descent 的过程感觉非常相似……令 x(q) 是当前点,s(q) 是搜索方向,q 是 Iteration 次数,我们就是希望找一个步长 α
x(q+1)=x(q)+Δx(q)=x(q)+αs(q),α≥0并且我们把 g(α)=f(x+αs) 看作是关于 α 的函数,我们希望找到的步长 α∗ 可以最小化这个 g(α)
假设 g(α) 的最小值点存在,并且在 α 的定义域内是 唯一 (unimodal) 的
不过,很有可能 g(α) 存在其他极小值点。在数值优化方法里,通常分为两个步骤:
- 确定最小值点所在的大概范围 [αl,αr]
- 通过数值迭代对 α∗ 进行近似
Initial Bracketing of Minimum Point
给定单变量函数 f(x),我们可以希望 bracket the interval containing the minimum point,一种方式是通过搜索
Equal Interval Search
我们钦定 δ>0,然后对 x=iδ,i∈N 分别计算 f(x). 然后,我们可以通过 f(x) 的变化情况判断出 x∗ 所在的范围。即找到 s∈N 使得
f((s−1)δ)≥f(sδ) and f(sδ)≤f((s+1)δ)于是我们可以判断出 x∗ 的范围:
(s−1)δ≤x∗≤(s+1)δ Variable Interval Search
和 Equal Interval Search 类似,我们固定下 δ 后,我们让后续的 interval 长度以 a 的比例增长,即
x(s+1)=x(s)+asδ,s∈N=δ⋅i=0∑sai最小值所在区间的确定和 Equal Interval Search 也是一样的,即找到 s 使得
f(x(s−1))≥f(x(s)) and f(x(s))≤f(x(s+1))⟹x(s−1)≤x∗≤x(s+1)那么这个 a 怎么取呢?一种是黄金分割搜索,即 a=21+5.
Approximation of Minimum Point
这一块的任务是在单谷函数里找最小值(和算法竞赛里的三分很像)
Golden Section Method
我们不断在 [xl,xr] 的区间里选取两个点
x1=φ⋅xl+(1−φ)⋅xrx2=(1−φ)⋅xl+φ⋅xr其中 φ=25−1.
所以我们接着比较 f(xl),f(x1),f(x2),f(xr),并且不断收紧 [xl,xr]. 每次收紧,可以舍弃 φ 的部分,时间复杂度 O(logV).
我们之所以使用 φ 作为分割比例,是因为下一次的迭代可以复用计算出来的函数值。例如,第一次迭代中 [xl,xr] 收窄为了 [xl,x2],在第二次迭代里,第一次迭代中的 x1 就是下一次迭代里的 x2′.
我们考虑三分搜索的终止条件,我们可以设立一个 error tolerance ϵlr,只要上下界的绝对误差或者相对误差小于 ϵlr 即可停止
xr(0)−xl(0)xr−xl≤ϵlr or xr−xl≤ϵlr此时我们令最小值点为其中点
x∗=2xl+xr Polynomial Approximation
Polynomial Approximation 的核心思想是用一个多项式去拟合原函数 f(x),当拟合程度比较高的时候,我们可以认为我们选择的这个多项式的最小值点比较 approximate f(x) 的最小值点了。
Quadric Approximation
我们先来考察多项式为二次的时候。对于二次多项式 g(x)=a0+a1x+a2x2,我们需要三个点来计算其系数,我们取 xl,xmid,xr. 其中 xmid=2xl+xr
于是我们可以计算出多项式的最低点
x∗=−2a2a1,a2>0所以我们可以计算出四个点的取值 xl,x∗,xmid,xr,然后和 Golden Section Method 类似,我们可以不断收紧区间 [xl,xr]
当连续两次的 x∗ 足够接近的时候,我们就可以停止了,即
∣x∗(r+1)−x∗(r)∣≤ϵx其中 ϵx 是事先约定好的误差,r∈N 是迭代次数。