引數尋優背景
引數尋優問題隨處可見,舉幾個例子。
1. 小明假期結束回校,可以坐火車,可以坐汽車,可以坐飛機,還可以走著,小明從哪條路去學校更好呢?
2. 簡單的數學,一元二次方程求根。
3. 高深的數學,七橋問題,怎麼才能通過所有的橋各自一次走回七點所在的岸邊。
4. 機器學習中,求代價函式在約束條件下的最優解問題。
其上四個問題,均是引數尋優問題。問題1中,小明可以通過試探法將所有的方式計算一下時間成本,經濟成本,舒適程度,來選擇乙個價效比最合適的返校方式。問題2中,可以通過一元二次方程的求根公式直接求出解來。問題3中,七橋問題則是典型的圖論問題,通過抽象為圖,推理得出該題無解。問題4中,機器學習則是數值分析中方程的迭代解法。
本文目標
本文主要講清楚梯度下降法、牛頓下降法是如何想到並引入引數尋優中的,以及他們為什麼有效。
圖1 一維的二階代價函式展示
圖2 二維的二階代價函式展示
通過代價函式的形狀,我們很自然地想到,如果我們從任意乙個引數點出發,是否可以找到剛好是讓代價下降的方向,沿著這個方向,一定能找到當前的極值點。
於是,迭代法引數尋優的基本原理有了:沿著(代價)函式下降的方向尋找引數,能夠找到極值點。
在我們已經學過的數學知識中,導數和方向導數是能找到函式變化方向的。導數表示了曲線的斜率(傾斜度),方向導數表示了曲面沿著任意方向的斜率(傾斜度)。一維時,導數就足夠了。但多維時,就需要借助方向導數了,而我們更希望能找到變化率最大的方向。因此,多維下借用方向導數變化最大的情況:梯度,梯度的方向是函式某點增長最快的方向,梯度的大小是該點的最大變化率。
三維下,推導方向導數與梯度的關係
方向導數: ∂f
∂l=∂
f∂x∗
cos(
α)+∂
f∂y∗
cos(
β)+∂
f∂z∗
cos(
γ)方向:l=
(cos
(α),
cos(
β),c
os(γ
))梯度:gr
ad=(
∂f∂x
,∂f∂
x,∂f
∂x)
∂f∂l
=gra
d∗l
∂f∂l
=|gr
ad|∗
1∗co
s(gr
ad,l
) 當兩者方向相同時,co
s(gr
ad,l
)=1,
∂f∂l
取得最大值|g
rad|
。因此,梯度表示了函式增長最快的方向,和最大的增長率。
牛頓法求解f(x)=0
在講牛頓下降法之前,先講一下f(
x)=0
的求解。將f(
x)在x0
處進行一階泰勒展開:
圖 3,牛頓法求解 f
(x)=
0 f(
x)=f
(x0)
+f′(
x0)1
!(x−
x0)
則得到f(x
0)+f
′(x0
)(x−
x0)=
0 解得x
=x0−
f(x0
)f′(
x0)=
x1從圖中可以看出,x1
比x0 更靠近真實解。如果接下來在x1
處一階泰勒展開,會得到更靠近真實解的x2
,以此類推: xn
+1=x
n−f(
xn)f
′(xn
)牛頓法具有天然的迭代性,可以不斷逼近真實解。
牛頓下降法
那麼牛頓下降法是如何引入的呢?求解最優解mi
nx[c
ost(
x)] ,等價於找到
x 滿足f′
(x)=
0。對於f′
(x)=
0 的求解,就可以用上面的牛頓法來不斷逼近真實解了。 對f
′(x)
在x0 處一階泰勒展開。 f′
(x)=
f′(x
0)+(
x−x0
)∗f′′
(x0)
令f′(x)=
0 得x
=x0−
f′(x
0)f′′
(x0)
=x1
xn+1
=xn−
f′(x
n)f′′
(xn)
牛頓下降法的幾何意義
一階導數決定的函式當前是否增減,二階則決定這當時是否凹凸。牛頓下降法用二次曲面去擬合當前所處位置的區域性曲面,下降方向上的選擇不僅考慮了坡度是否足夠大,而且考慮了走了這一步之後,坡度是否會變得更大。所以,牛頓下降法比梯度下降法看得更遠,能更快地走到區域性的最底部。
牛頓下降法的侷限性
(1)收斂性對初始點的選取依賴性很大;
(2)每次迭代都要計算hessian矩陣(二階導數),計算量大;
(3)要求二階可微分,計算dk時,方程組有時非正定或者病態,無法求解dk或者dk不是下降方向。
對牛頓法侷限性的不同改進,導致阻尼牛頓法和擬牛頓法的出現。
針對牛頓法,有時得到的牛頓方向不是下降的情況,提出了阻尼牛頓法。上公升的情況,比如f′
(x)<0,
f′′(x
)<
0 。
解決方法是:在新的迭代之前,找到下降方向,且是下降最大的方向。
(1)先確定最優解的所在區間[a, b]。
(2)一維搜尋。在解區間[a, b]內搜尋使得目標函式下降最大的點。
其中(1)可以用進退法,找到三個點,使得f(
a−h)
,f(a
),f(
a+h)
滿足大小大的規律即可。
一維搜尋方法主要分為試探法和插值法,試探法有**分割法、fibonacci法、平分法、格點法等;插值法有牛頓法、拋物線法等。判斷解兩邊值的大小關係或者求導為0。
剩下的部分就是跟牛頓下降法一樣了。(具體實現看前面的部落格)
針對牛頓下降法hessian矩陣計算量大,需要正定矩陣的侷限性,提出了擬牛頓法,擬牛頓法的核心是對hessian矩陣的逆的估計。
根據不同的估計方法,分為dfp和bfgs。
圖 4 dfp
圖 5 bfgs
這裡不對擬牛頓法展開了,看得更清楚了再說吧。
引數尋優的核心:迭代方向和步幅控制。
梯度下降法和牛頓下降法
泰勒公式可以表示為 f boldsymbol boldsymbol f boldsymbol boldsymbol boldsymbol frac boldsymbol boldsymbol boldsymbol o boldsymbol tag 在 2 中 boldsymbol x 1,x n b...
梯度下降法與牛頓法
梯度下降法,是迭代演算法。在求最值時,常常用到。bp網路中,最小化 誤差cost function,求解對應網路中的weights,即可用梯度下降法來更新weights.梯度下降法基本思想 給定乙個函式 f 假設求 f 最大值 最小值 初始化函式上的乙個點,對該點求導,該點往導數的方向 反方向 移動...
梯度下降法與牛頓法
梯度 f 在 0 處的梯度表示f 在點 0 處函式值變化最快的方向。對於凸函式f 來說,沿著負梯度方向尋找可以找到函式的極小值 k 1 k f k k 表示第 k步迭代,表示修正因子 步長 因為梯度方向變化最快,只在區域性有效 如果對於多維情形,表示為 k 1 k f k 其中 k k1,k2,kn...