引數尋優 梯度下降 牛頓下降法 追根溯源

2021-07-04 13:10:27 字數 3930 閱讀 7020

引數尋優背景

引數尋優問題隨處可見,舉幾個例子。

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...