最優化 - 信賴域和直接搜尋
Trust Region Methods 信賴域方法
- Problem Description 問題描述
- Optimality Conditions 最優化條件
- Line Search Methods 線搜尋方法
- Trust Region Methods 信賴域方法
- Direct Search Methods 直接搜尋法
- Nonlinear Least Squares(NLS) 非線性最小二乘法 – LMA
文章目錄
信賴域演算法介紹
最優化的目標是找到極小值點,在這個過程中,我們需要從一個初始點
信賴域演算法與一維搜尋演算法的區別、聯絡
在Jorge Nocedal和Stephen J. Wright的《Numerical Optimization》一書的第2.2節介紹瞭解優化問題的兩種策略-line search和trust region。本質上它們的作用都是在優化迭代過程中從當前點找尋下一點。它們的最大區別是先確定步長還是先確定方向。
-
信賴域方法與線搜尋演算法不同之處其一在於, 後者先產生搜尋方向 p ‾ ( k ) \underline p^{(k)}
-
θ ‾ ( k + 1 ) = θ ‾ ( k ) + α ( k ) p ‾ ( k ) \underline\theta^{(k+1)} =\underline\theta^{(k)}+\alpha^{(k)} \underline p^{(k)} θ(k+1)=θ(k)+α(k)p(k)
-
而trust region方法則先把搜尋範圍縮小到一個小的範圍,小到能夠用另一個函式(Model function)去近似目標函式(Objective function),然後通過優化這個model function來得到引數更新的方向及步長。
同時選取搜尋方向與步長 (或者說, 先劃定步長的範圍, 再選取搜尋方向) . 迭代的方式為 $\underline\theta^{(k+1)} =\underline\theta^{(k)}+ \underline p^{(k)} $ (可以認為此時步長融於 p ‾ ( k ) \underline p^{(k)} p(k) 中)
線搜尋方法用得比信賴域方法廣泛,是不是說明信賴域方法沒有優點呢?
舉個簡單的例子,求解:
如果直接用線搜尋,初始點在 0 處無法進行下一步的搜尋,因為梯度為0. 而使用TR:,顯然可以往最優方向進行搜尋。
https://blog.csdn.net/purgle/article/details/73800186
信賴域演算法的基本思想
下面是線搜尋演算法與信賴域演算法的一個圖例.
- 圖中, 橢圓虛線為建立的模型(model function) m ( k ) m^{(k)} m(k) 的等高線, 而圓形虛線為信賴域的邊界.
- 從圖中可以看到, 線搜尋得到的函式值下降並不客觀 (當然這可能與 m ( k ) m^{(k)} m(k) 對目標函式的近似程度有關) ,
- 而信賴域方法得到的下一迭代點被牢牢地鎖在信賴域中, 反而帶來了較大的下降.
trust region方法則先把搜尋範圍縮小到一個小的範圍,小到能夠用另一個函式(Model function)去近似目標函式(Objective function),然後通過優化這個model function來得到引數更新的方向及步長。
由上面的表述我們可以得到信賴域方法的幾個要素
- 近似模型函式 m ( k ) ( p ‾ ) m^{(k)}(\underline p) m(k)(p)
- 可信賴域 region of trust T Δ \mathcal T_\Delta TΔ
- 迭代增量 p ‾ \underline p p (包括步長和方向)
-
近似目標函式的 model fuction 為:
J ( θ ‾ ( k ) ) ≈ m ( k ) ( 0 ‾ ) J(\underline\theta^{(k)}) \approx m^{(k)}(\underline 0) J(θ(k))≈m(k)(0) -
代替最小化目標函式,TR 方法最小化 model function
min p ‾ ( J ( θ ‾ ( k ) + p ‾ ) ) ≈ min p ‾ ( m ( k ) ( 0 ‾ + p ‾ ) ) \min_{\underline p}\left(J(\underline\theta^{(k)}+\underline p)\right) \approx \min_{\underline p}\left(m^{(k)}(\underline 0 + \underline p)\right) pmin(J(θ(k)+p))≈pmin(m(k)(0+p)) -
信任域(TR)方法還計算當前迭代 的 region of trust T Δ \mathcal T_\Delta TΔ 。 如果下一個迭代點 θ ‾ ( k + 1 ) = θ ‾ ( k ) + p ‾ \underline\theta ^{(k + 1)} = \underline\theta ^{(k)} + \underline p θ(k+1)=θ(k)+p 還在這個信任域內,則該 model function 將很好地近似於原始目標函式。
-
很可能,這個近似在信任域之外不成立
-
近似模型的quality計算指標:(分子表示函式實際減小的值;分母表示近似模型減少的值)
ρ ( k ) = J ( θ ‾ ( k ) ) − J ( θ ‾ ( k ) + p ‾ ) m ( k ) ( 0 ‾ ) − m ( k ) ( p ‾ ) \rho^{(k)} = \frac{J(\underline\theta ^{(k)})-J(\underline\theta ^{(k)}+\underline p)}{m^{(k)}(\underline 0)-m^{(k)}(\underline p)} ρ(k)=m(k)(0)−m(k)(p)J(θ(k))−J(θ(k)+p)- ρ ( k ) < 1 \rho ^{(k)} < 1 ρ(k)<1 表示模型函式下降速度快於原始函式
- ρ ( k ) = 1 \rho ^{(k)} = 1 ρ(k)=1 表示完美契合
- ρ ( k ) > 1 \rho ^{(k)} > 1 ρ(k)>1 表示原始函式的下降速度比模型函式的下降速度快
因此,近似模型函式
m
(
k
)
(
p
‾
)
m^{(k)}(\underline p)
m(k)(p) 進行了優化 w.r.t 迭代增量
p
‾
\underline p
p ,且該解限制其在信賴域範圍內
min
p
‾
{
m
(
k
)
(
p
‾
)
}
w
.
r
.
t
p
‾
∈
T
Δ
\min_{\underline p}\left\{m^{(k)}(\underline p)\right\}\quad w.r.t \quad\underline p\in\mathcal T_{\Delta}
pmin{m(k)(p)}w.r.tp∈TΔ
-
信賴域演算法同時優化步長和搜尋方向,而線搜尋演算法有一個順序的方法
Trust region methods optimize the step length and the search direction simultaneously ;Line search algorithms have a sequential approach
數學模型
基本形式
-
信賴域演算法:通常選取二次函式(quadratic model function)逼近真實模型的
J ( θ ‾ ( k ) + p ‾ ) = J ( θ ‾ ( k ) ) + [ d J ( θ ‾ ) d θ ‾ ∣ θ ‾ ( k ) ] T p ‾ + 1 2 p ‾ T B ‾ ( k ) p ‾ ⏟ m ( k ) ( p ‾ ) J(\underline \theta^{(k)} + \underline p) = \underbrace{J(\underline\theta^{(k)}) +\left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right]^T\underline p + \frac12\underline p^T\underline B^{(k)}\underline p }_{m^{(k)}(\underline p)} J(θ(k)+p)=m(k)(p) J(θ(k))+⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤Tp+21pTB(k)p和擬牛頓法法的近似“損失函式”一樣
如果 B ‾ ( k ) \underline B^{(k)} B(k) 選擇為Hessian,則為TR的牛頓方法。一般情況下會(比如 Hessian非正定的時候)用對稱非奇異矩陣 B ‾ ( k ) \underline B^{(k)} B(k) 去近似Hessian矩陣;
-
在每次迭代中半徑為 Δ ( k ) \Delta^{(k)} Δ(k) 的球用來定義信賴域的範圍 T Δ \mathcal T_\Delta TΔ
-
因此,我們必須解決下面的優化子問題:關於 $p $ 的帶約束的最優化問題,
min p ‾ { m ( k ) ( p ‾ ) } = min p ‾ { J ( θ ‾ ( k ) ) + [ d J ( θ ‾ ) d θ ‾ ∣ θ ‾ ( k ) ] T p ‾ + 1 2 p ‾ T B ‾ ( k ) p ‾ } \min_{\underline p}\left\{m^{(k)}(\underline p)\right\} =\min_{\underline p} \left\{ J(\underline\theta^{(k)}) +\left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right]^T\underline p + \frac12\underline p^T\underline B^{(k)}\underline p \right\} pmin{m(k)(p)}=pmin⎩⎪⎨⎪⎧J(θ(k))+⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤Tp+21pTB(k)p⎭⎪⎬⎪⎫
要求:引數 p p p 被限制在一個球形區域內
∣ ∣ p ‾ ∣ ∣ 2 ≤ Δ ( k ) \left|\left| \underline p\right| \right|_2 \le \Delta^{(k)} ∣∣∣∣p∣∣∣∣2≤Δ(k)
Δ ( k ) \Delta^{(k)} Δ(k) 的選擇
近似模型的quality計算指標:
ρ
(
k
)
=
J
(
θ
‾
(
k
)
)
−
J
(
θ
‾
(
k
)
+
p
‾
)
m
(
k
)
(
0
‾
)
−
m
(
k
)
(
p
‾
)
\rho^{(k)} = \frac{J(\underline\theta ^{(k)})-J(\underline\theta ^{(k)}+\underline p)}{m^{(k)}(\underline 0)-m^{(k)}(\underline p)}
ρ(k)=m(k)(0)−m(k)(p)J(θ(k))−J(θ(k)+p)
其中分子表示函式實際減小的值;分母表示近似模型減少的值。
- 如果 ρ ( k ) < 0 \rho ^{(k)} < 0 ρ(k)<0,一般情況下分母不可能小於0,因為目標函式求解的是最小值;此時說明分子小於0,即下一個目標點比上一步大,此時需要捨棄。
- 如果 0 < ρ ( k ) ≈ 0 0<\rho ^{(k)} \approx 0 0<ρ(k)≈0 大於0,但是接近0,說明模型(分母)變化範圍比較大,但是實際(分子)改變比較小,此時應該減少信賴域範圍Δk
- 0 < ρ ( k ) < 1 0< \rho ^{(k)} < 1 0<ρ(k)<1 大於0但是明顯小於1,表示模型函式下降速度快於原始函式,此時可以不用調整
- 0 < ρ ( k ) ≈ 1 0< \rho ^{(k)} \approx 1 0<ρ(k)≈1 大於0並且接近1,表明近似效果好,可以適當增加信賴域半徑Δk
- ρ ( k ) > 1 \rho ^{(k)} > 1 ρ(k)>1 表示原始函式的下降速度比模型函式的下降速度快
信賴域的大小對於每步的效果直觀重要. 若信賴域過小, 則演算法可能就會錯過充分下降的機會; 若過大, 信賴域中模型m**k的極小點可能就與目標函式f的極小點相距甚遠, 從而又得增大信賴域.
而信賴域演算法是根據一定的原則,直接確定位移 sk ,同時,與一維搜尋不同的是,它並沒有先確定搜尋方向 dk 。如果根據“某種原則”確定的位移能使目標函式值充分下降,則擴大信賴域;若不能使目標函式值充分下降,則縮小信賴域。如此迭代下去,直到收斂
信賴域演算法流程
由此我們得到信賴域演算法的步驟
-
給出初始點 θ ‾ ( 0 ) \underline\theta^{(0)} θ(0) 和初始信賴域半徑 Δ ( 0 ) \Delta^{(0)} Δ(0),開始迭代 k
-
計算模型在第k步的近似 m ( k ) m^{{(k)}} m(k):求解最優化子問題,得到試探步長 p ‾ \underline p p。
-
求解 model accurancy ρ \rho ρ at p ‾ \underline p p
-
若 ρ ( k ) ≤ 1 4 \rho^{(k)}≤\frac14 ρ(k)≤41,縮小(shrink)信賴域半徑,令
Δ ( k + 1 ) = 1 4 Δ ( k ) \Delta^{(k+1)} = \frac14 \Delta^{(k)} Δ(k+1)=41Δ(k)
k = k + 1 返回第一步 -
else:
- 若 ρ ( k ) > 0.75 \rho^{(k)}>0.75 ρ(k)>0.75,擴大信賴域半徑,使得 Δk+1=2Δ\Delta_{k+1}=2\DeltaΔk+1=2Δ。
- 若0.25<rk≤0.750.25<r_k\le 0.750.25<r**k≤0.75。維持當前信賴域半徑。
- 若rk<0r_k<0r**k<0,縮小信賴域重新計算當前試探步長。
[關於子問題的最優解]
https://blog.csdn.net/fangqingan_java/article/details/46956643
信賴域問題的子問題表示為:
min
p
‾
{
m
(
k
)
(
p
‾
)
}
=
min
p
‾
{
J
(
θ
‾
(
k
)
)
+
[
d
J
(
θ
‾
)
d
θ
‾
∣
θ
‾
(
k
)
]
T
p
‾
+
1
2
p
‾
T
B
‾
(
k
)
p
‾
}
\min_{\underline p}\left\{m^{(k)}(\underline p)\right\} =\min_{\underline p} \left\{ J(\underline\theta^{(k)}) +\left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right]^T\underline p + \frac12\underline p^T\underline B^{(k)}\underline p \right\}
pmin{m(k)(p)}=pmin⎩⎪⎨⎪⎧J(θ(k))+⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤Tp+21pTB(k)p⎭⎪⎬⎪⎫
該問題為標準的帶不等式約束的二次優化問題,可以根據KKT條件(後面會深入介紹)得到該問題的最優解
定理 1
向量
p
‾
∗
\underline p^*
p∗ 為信賴域子問題的最優解,僅當
p
‾
∗
\underline p^*
p∗ 是可行解,且存在標量
λ
≥
0
\lambda \ge 0
λ≥0 使得下面的三個條件成立:
其中第二個條件又稱為互補條件. 此定理揭示了信賴域方法的優勢: 就算B**k是不定的, 我們仍然有子問題達到全域性極小的充要條件. 相比之下, 其他方法往往至多有充分條件.
從下圖中可以看出最優解 p ‾ ∗ \underline p^* p∗ 和引數 λ \lambda λ 的關係
-
當半徑引數 Δ = Δ 1 \Delta = \Delta _1 Δ=Δ1 時,最優解為 p 3 p^3 p3 此時相當於沒有約束,此時 λ = 0 \lambda= 0 λ=0
-
當半徑引數 Δ = Δ 2 \Delta = \Delta _2 Δ=Δ2 時,最優解被球形約束限制,此時滿足 Δ = ∣ ∣ p ∗ ∣ ∣ Δ=||p^∗|| Δ=∣∣p∗∣∣,根據上面條件(a)有
λ p ∗ = − B p ∗ − g \lambda p^* = -Bp^*-g λp∗=−Bp∗−g
如果能夠找到這樣的p滿足這些條件就能找到最優解。
⭕折線演算法 Dog-Leg Method
目的:找到最小化問題的近似解
折線演算法可用於 B ‾ ( k ) \underline B^{(k)} B(k)為正定的情形
定義完全步(Full Step)
我們線上搜尋牛頓法時有:
對於TR子優化問題
min
p
‾
{
m
(
k
)
(
p
‾
)
}
=
min
p
‾
{
J
(
θ
‾
(
k
)
)
+
[
d
J
(
θ
‾
)
d
θ
‾
∣
θ
‾
(
k
)
]
T
p
‾
+
1
2
p
‾
T
B
‾
(
k
)
p
‾
}
\min_{\underline p}\left\{m^{(k)}(\underline p)\right\} =\min_{\underline p} \left\{ J(\underline\theta^{(k)}) +\left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right]^T\underline p + \frac12\underline p^T\underline B^{(k)}\underline p \right\}
pmin{m(k)(p)}=pmin⎩⎪⎨⎪⎧J(θ(k))+⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤Tp+21pTB(k)p⎭⎪⎬⎪⎫
求TR中的位移
p
‾
\underline p
p
折線演算法
折線演算法可用於 B ‾ ( k ) \underline B^{(k)} B(k) 為正定的情形。尋找信賴域半徑 Δ ( k ) \Delta^{(k)} Δ(k) 和最優解 p ‾ ∗ ( k ) ( Δ ) \underline p^{*(k)}(\Delta) p∗(k)(Δ) 之間的關係。
以下省去上標k, 並以 p ‾ ( Δ ) \underline p (\Delta) p(Δ) 表示解以強調其對 $\Delta $ 的依賴性.
-
使用高斯牛頓法得到迭代步長:當 p ‾ ( k ) ≤ Δ ( k ) \underline p^{(k)}\le \Delta^{(k)} p(k)≤Δ(k)時 (信賴域非常大), 顯然應當有 p ‾ ∗ ( k ) ( Δ ) \underline p^{*(k)}(\Delta) p∗(k)(Δ)
若計算出 p ‾ N D < Δ \underline p_{ND}<\Delta pND<Δ 已經不用繼續計算下去 – case 1
-
【 p ‾ t \underline p_{t} pt】當 p ‾ ( k ) > > Δ ( k ) \underline p^{(k)} >> \Delta^{(k)} p(k)>>Δ(k) 時(信賴域非常小), 可認為 m ( k ) ( p ‾ ) m^{(k)}(\underline p) m(k)(p) 問題中的中的二次項(梯度)對子問題的求解影響較小, 從而忽略二次項,即:
m ( k ) ( p ‾ ) = J ( θ ‾ ( k ) ) + [ d J ( θ ‾ ) d θ ‾ ∣ θ ‾ ( k ) ] T ⏟ g T p ‾ t m^{(k)}(\underline p) =J(\underline\theta^{(k)}) +\underbrace{\left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}}\right]^T}_{g^T}\underline p_{t} m(k)(p)=J(θ(k))+gT ⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤Tpt
calculate the exact minimum of quadratic function along the stepest descent function is equal to 求二次函式的精確最小值沿最小步下降函式等於 -
ps【 p ‾ s \underline p_s ps】
p ‾ s = p ‾ N D − p ‾ t = − [ B ‾ ( k ) ] − 1 [ d J ( θ ‾ ) d θ ‾ ∣ θ ‾ ( k ) ] + [ d J ( θ ‾ ) d θ ‾ ∣ θ ‾ ( k ) ] = [ I − [ B ‾ ( k ) ] − 1 ] [ d J ( θ ‾ ) d θ ‾ ∣ θ ‾ ( k ) ] \underline p_s =\underline p_{ND} -\underline p_t =- [\underline B^{(k)}]^{-1} \left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right] + \left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right]=\left[I-[\underline B^{(k)}]^{-1}\right]\left[\frac{dJ(\underline\theta)}{d\underline\theta}\Bigg|_{\underline\theta^{(k)}} \right] ps=pND−pt=−[B(k)]−1⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤+⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤=[I−[B(k)]−1]⎣⎡dθdJ(θ)∣∣∣∣∣θ(k)⎦⎤
我們用
p
‾
(
τ
)
;
τ
∈
[
0
,
2
]
\underline p(\tau);\tau\in[0,2]
p(τ);τ∈[0,2] 表示折線軌跡, 其嚴格的數學表達為
KaTeX parse error: No such environment: equation at position 30: …\tau) = \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \left\{ \begin…
根據折線演算法得到的就是折線軌跡與信賴域邊界的交點
對半徑為
Δ
\Delta
Δ 的信賴域使用DogLeg方法計算出來的步長為
KaTeX parse error: No such environment: equation at position 30: …\tau) = \begin{̲e̲q̲u̲a̲t̲i̲o̲n̲}̲ \left\{ \begin…
可以看到,DogLeg方法實際上使用瞭如下策略:
-
如果高斯牛頓法的步長小於信賴域半徑,則等同於高斯牛頓法
-
如果高斯牛頓法和梯度下降法步長都大於信賴域半徑,則將梯度下降法的步長縮放到信賴域半徑。
求$\tau $ 歸一法
-
如果不滿足以上條件,則以連線二條軌跡,與信賴域邊界相交於某一點d,從原點指向d的向量即為本次迭代的步長。
Direct Search Methods 直接搜尋法
- Box Search
- Section 座標搜尋演算法
- Nelder Mead 單純形
有時候目標函式的梯度不可用
介紹
- 首先,直接搜尋方法在實踐中效果很好
- 不需要梯度資訊
- 一些方法只使用目標函式 J J J在特定搜尋點的排名資訊, 比當 J J J 不存在數值分析性
缺點:
- 有時直接搜尋方法不收斂,不幸的是,收斂性很難證明。
- 在許多情況下,它們在收斂速度方面表現不佳
型別介紹:
https://blog.csdn.net/m0_37854871/article/details/84969300
1. Box Search
- 將搜尋空間分割成等距的box
- 計算box邊緣的所有目標函式值並取最小值
- 缺點:存在維度災難
- 因此,有一些方法可以使用生物原理(遺傳演算法)來生成一個boxes子集。
2. Section 座標搜尋演算法 (屬於線搜尋演算法)
座標搜尋和模式搜尋方法並不從函式值中顯式地構建目標函式的模型, 而是從當前迭代點出發沿著特定的方向尋找具有更小函式值的點. 若找到了這樣的點, 它們就步進並重復之前的過程, 當然此前可能會對之前的搜尋方向做一些改動. 當沒有滿意的點存在時, 演算法就可能會調整沿著當前搜尋方向前進的步長, 或直接產生新的搜尋方向.
The process of finding a solution might be inefficient or will be even impossible if there are valleys or ridges
座標搜尋方法(也稱為座標下降法或交替變數法) 迴圈遍歷 n 個座標方向 e 1 , e 2 , … , e n e_1,e_2,\ldots,e_n e1,e2,…,en, 在每個方向上均以線搜尋獲取新的迭代點.
一定是先從 θ ‾ 1 \underline\theta_1 θ1 方向開始的
具體說來, 第一次迭代中, 我們僅改變xxx的第一個分量x1x_1x1並尋找極小(或至少減小)目標函式的這一分量的新值. 下一步迭代中, 則對第二個分量 x2x_2x2進行同樣的操作. 在nnn步迭代後, 我們又回到第一個變數重複遍歷.
儘管簡單直觀, 但此法在實際操作中卻可能十分低效, 就比如下圖中表示的, 我們將座標搜尋方法應用於帶兩個變數的二次函式上.圖中顯示, 經幾步迭代後, x1,x2x_1,x_2x1,x2向解的行進都明顯變慢.
就算座標搜尋收斂於一解, 一般來說它也要比最速下降法慢得多, 並且這一差距隨著變數數的增加而越變越大. 不過由於座標搜尋不需要計算梯度∇fk\nabla f_k∇f**k, 且它在變數耦合程度不高時的效果還不錯, 因此它仍是優化目標函式的有效方法.
a sectioning algorithm would never reach the real minimum at [ ] * 0 0 T θ = exactly. (Or it would need an infinite number of iterations).
https://blog.csdn.net/m0_37854871/article/details/84969300#3__114
3. ⭕Nelder Mead
-
目的:使用更復雜的方法確定搜尋方向
-
記住:沒有可用的梯度資訊
-
想法:評估幾個點,對它們進行排名,試圖通過把最壞的點向最好的點移動來改善結果
Idea: Evaluate several points, rank them, try to improve the result by shifting the worst point in the direction of the best point(s)
定義:Simplex 單純形
3 個越是 4個頂點
Nelder-Mead單純形反射方法自其1965年被髮明以來一直是廣受歡迎的DFO演算法。其名稱來源於在演算法的任意階段, 我們都保持對單純形
S
S
S 的空間
R
l
\R^l
Rl 中的
l
+
1
l+1
l+1 個頂點(vertices)追索,它們形成的凸腔構成單純形. (這一方法與線性規劃中的單純形法沒有任何關聯)。 給定有頂點 的單純
θ
‾
(
0
)
,
.
.
.
,
θ
‾
(
l
)
\underline\theta^{(0)},...,\underline\theta^{(l)}
θ(0),...,θ(l) 的單純形
S
S
S , 我們可定義關聯矩陣
演算法
Nelder-Mead演算法中的單次迭代中, 我們移除具有最差函式值的頂點並代之以具更好值的點. 而新點則是通過沿著連線最差頂點與剩餘頂點中心的線反射、擴張或收縮單純形得到。若以這種方式我們無法找到更好的點, 我們就僅保持具最好函式值的點不動,,而令其他的頂點向該值移動以收縮單純形.
下面我們來詳細描述演算法的一次迭代過程.
-
該方法生成初始工作單純形。
-
先定義一些符號: 當前單純形的 l + 1 l+1 l+1 個頂點 θ ‾ ( 0 ) , . . . , θ ‾ ( l ) ∈ R l \underline\theta_{(0)},...,\underline\theta_{(l)}\in\R^l θ(0),...,θ(l)∈Rl,計算每個點的目標函式值,並對他們進行排序,滿足目標函式值從小到大:
J ( θ ‾ ( 1 ) ) ≤ J ( θ ‾ ( 2 ) ) ≤ ⋯ ≤ J ( θ ‾ ( l + 1 ) ) J(\underline\theta_{(1)})\le J(\underline\theta_{(2)})\le\cdots \le J(\underline\theta_{(l+1)}) J(θ(1))≤J(θ(2))≤⋯≤J(θ(l+1))
另外對這些點進行命名:- “best vertex” θ ‾ ( 1 ) = θ ‾ ( b ) \underline \theta{(1)} = \underline\theta^{(b)} θ(1)=θ(b)
- “second best vertex” θ ‾ ( 2 ) = θ ‾ ( s b ) \underline\theta_{(2)} = \underline\theta^{(sb)} θ(2)=θ(sb)
- “second worst vertex” θ ‾ ( l ) = θ ‾ ( s w ) \underline\theta_{(l)} = \underline\theta^{(sw)} θ(l)=θ(sw)
- “worst vertex” θ ‾ ( l + 1 ) = θ ‾ ( w ) \underline\theta_{(l+1)} = \underline\theta^{(w)} θ(l+1)=θ(w)
Remark
in R 2 \R^2 R2 we denote θ ‾ ( s b ) = θ ‾ ( s w ) = θ ‾ ( m ) \underline\theta^{(sb)} = \underline\theta^{(sw)} = \underline\theta^{(m)} θ(sb)=θ(sw)=θ(m) as “middle vertex”
-
通過執行一系列由基本轉換組成的轉換(transformation),嘗試沿著頂點的方向移動(shift)最壞的頂點
- Reflection 反射
- Expansion 擴張
- (inner/outer) Contraction
- Shrinking
1. reflection
每個轉換的performance取決於目標函式的區域性屬性/形狀。例如在如下區域進行reflection反射
-
將 the worst vertex θ ‾ ( w ) \underline\theta ^{(w)} θ(w) 繞 centroid c ‾ \underline c c reflect 轉換:
-
計算新點的座標:
θ ‾ ( r ) = c ‾ + α ( c ‾ − θ ‾ ( w ) ) α ∈ R \underline\theta^{(r)} = \underline c + \alpha\left(\underline c - \underline\theta^{(w)}\right)\quad \alpha\in \R θ(r)=c+α(c−θ(w))α∈R
記個點的目標函式值為:
J ( θ ‾ ( r ) ) = J ( r ) J(\underline\theta^{(r)}) = J^{(r)} J(θ(r))=J(r)中心點 c ‾ \underline c c 怎麼計算的?
c c c is the centroid of all vertices other than the worst, the centroid of n arbitrary points is given by
c ‾ = 1 n ∑ i = 1 n θ ‾ ( i ) \underline c = \frac1n\sum_{i=1}^ n\underline\theta_{(i)} c=n1i=1∑nθ(i)
-
反射變換的結果:如果新的點的函式值小於倒數第二差的點,則將最差的點捨棄,將此新點加入
2. Explansion
例如在如下區域進行 explansion
-
假設經過 reflection 得到的新點 θ ‾ ( r ) \underline\theta^{(r)} θ(r) 的目標函式值比最優點還低: J ( r ) < J ( b ) J^{(r)}<J^{(b)} J(r)<J(b),嘗試進一步改進解決方案並擴充套件單純形
-
計算擴充套件的新點 θ ‾ ( e ) \underline\theta^{(e)} θ(e)的新座標
θ ‾ ( e ) = c ‾ + γ ( c ‾ − θ ‾ ( w ) ) γ ∈ R \underline\theta^{(e)} = \underline c + \gamma(\underline c - \underline\theta^{(w)}) \quad \gamma \in\R θ(e)=c+γ(c−θ(w))γ∈R -
擴張變換的結果:如果新的點的函式值小於被擴張的點,將此新點加入替換被擴張的點
3. outer contraction
例如在如下區域進行 outer contraction
嘗試對 reflect 後的點進行 outer contraction
-
由 θ ‾ ( r ) \underline\theta^{(r)} θ(r) outer contraction 到點 θ ‾ ( o c ) \underline\theta^{(oc)} θ(oc)
θ ‾ ( o c ) = c ‾ + β ( θ ‾ ( r ) − c ‾ ) β ∈ R \underline\theta^{(oc)} = \underline c + \beta(\underline\theta^{(r)} - \underline c) \quad \beta \in \R θ(oc)=c+β(θ(r)−c)β∈R -
outer contraction 變換的結果:如果新的點的函式值小於 θ ‾ ( r ) \underline\theta^{(r)} θ(r) 的目標函式值,將此新點加入替換原來的點
4. inner contraction
例如在如下區域進行 inner contraction
嘗試對 the original simplex 進行 inner contraction,即不將 最差的點先進行 反射操作,再 contraction,而直接對最差的點進行 contraction
-
由 θ ‾ ( w ) \underline\theta^{(w)} θ(w) outer contraction 到點 θ ‾ ( i c ) \underline\theta^{(ic)} θ(ic)
θ ‾ ( i c ) = c ‾ + β ( θ ‾ ( w ) − c ‾ ) β ∈ R \underline\theta^{(ic)} = \underline c + \beta(\underline\theta^{(w)} - \underline c) \quad \beta \in \R θ(ic)=c+β(θ(w)−c)β∈R -
inner contraction 變換的結果:如果新的點的函式值小於 θ ‾ ( w ) \underline\theta^{(w)} θ(w) 的目標函式值,將此新點加入替換原來的點
5. shinking
例如在如下區域進行 shinking
保留最憂點不動,其它點按比例縮放
shrinking的結果為:
總結 Nelder Mead 演算法流程:
Final remarks:
- 儘管在1998年已經推匯出了一組目標函式和初始simplexe且具有可證明的收斂性,但對該演算法的嚴格分析仍是困難的。然而,即使在簡單的情況下,演算法也可能失敗。
- 單純形演算法(Nelder Mead)與數值數學和以前的ODS術語中涉及的線性規劃的數值單純形演算法無關。
Nonlinear Least Squares(NLS) 非線性最小二乘法 – LMA
一
二:問題定義
【非線性最小二乘法】
-
目的:找到適合給定輸入(