不畏浮云遮望眼,自緣身在最高層:最優(yōu)化方法

文末有福利哦

人生就像登山,多數(shù)情況下你看不到山頂,甚至看不到前方的路,但你不能否定的是,你每前進(jìn)一步,就離山頂近了一步。

0 前言

從本質(zhì)上,人工智能的目標(biāo)就是最優(yōu)化:在復(fù)雜環(huán)境與多體交互下作出最優(yōu)決策。
通常我們將目標(biāo)形式化表達(dá)為目標(biāo)函數(shù)或者評價(jià)函數(shù),將判定目標(biāo)函數(shù)是否存在最大值(最小值)并且找到令目標(biāo)函數(shù)取到最優(yōu)解的數(shù)值的過程,稱為最優(yōu)化過程,其對應(yīng)的方法就是最優(yōu)化方法

非凸函數(shù)中的最值

實(shí)際的最優(yōu)化方法,有可能會(huì)找到全局最小值,也可能會(huì)找到局部最小值,全局最小值就是在整個(gè)函數(shù)的定義域上取最小值,局部極小值就是在其鄰域中取最小值。

1 舉個(gè)栗子

如果把目標(biāo)函數(shù)比做為連綿不絕的山脈,那我們的目標(biāo)就是山脈中的頂峰,判斷頂峰的位置并且找到去往頂峰的路徑就是最優(yōu)化的過程。

爬山就是最優(yōu)化的過程

我們的最優(yōu)化方法不是上帝視角,不能一眼看穿最高峰在哪個(gè)方法,全都是站在山腳下的登山人,一步一個(gè)腳印的尋找最高峰。但受視野的限制,找到的峰值很可能只是方圓十里之內(nèi)的頂峰,也就是局部極小值。

2 再舉個(gè)栗子

小時(shí)候會(huì)玩過很多游戲,包括紅警或者帝國時(shí)代,大家很熟悉的就是下圖整個(gè)場景,有種“不識廬山真面目,只緣身在此山中”。


在黑暗中尋找“光明”

我們想要在一片黑暗之中尋找“光明”,向著最低洼的地方前進(jìn),于是環(huán)顧四周,看到右邊比較低,走兩步看看:


往右邊走一走

再往周圍比較低的地方走一走,發(fā)現(xiàn)新大陸了!這里比周圍都更加低!也許這就是整張地圖最低的地點(diǎn),也許也只是一個(gè)“局部極小值”。
找到“局部極小值”

通常情況下,當(dāng)目標(biāo)函數(shù)的輸入?yún)?shù)過多,解空間較大,絕大多數(shù)算法都不能滿足全局搜索對計(jì)算復(fù)雜度的要求,因而只能退而求其次,選取一個(gè)使得目標(biāo)函數(shù)相對比較小的值,把它當(dāng)作全局最小值,作為性能和復(fù)雜度的折中。

3 最優(yōu)化問題的分類

根據(jù)約束條件的不同,可以將最優(yōu)化問題分為:

  • 無約束優(yōu)化:對自變量x的取值沒有限制
  • 有約束優(yōu)化:將自變量x的取值限制在一定的集合中,也就是滿足一定的約束條件。

3.1 線性規(guī)劃——一種有約束的優(yōu)化

高中時(shí)的線性規(guī)劃題目

典型的約束優(yōu)化就是線性規(guī)劃,其解決的問題通常是在有限的成本約束下獲得最大利益,通過拉格朗日乘子的的引入可以將含有n 個(gè)變量和 k個(gè)約束條件的問題,轉(zhuǎn)換為含有(n+k)個(gè)變量的無約束優(yōu)化問題。其簡單的表達(dá)如下:
L(x,y,\lambda)=f(x,y)+\lambda \varphi(x,y)
式中f(x,y)是目標(biāo)函數(shù),\varphi(x,y)是約束條件,\lambda是拉格朗日乘子。
從數(shù)學(xué)意義上講,由原目標(biāo)函數(shù)和約束條件共同構(gòu)成的拉格朗日函數(shù)與原目標(biāo)函數(shù)具有共同的最優(yōu)點(diǎn)集和共同的最優(yōu)目標(biāo)函數(shù)值,從而保證最優(yōu)解的不變性。

3.2 無約束優(yōu)化解決——梯度下降法

梯度下降法,就是沿著目標(biāo)函數(shù)下降最快的方向?qū)ふ易顑?yōu)解,就像爬山找最陡峭的路上山頂。關(guān)于梯度下降法的理論依據(jù)我會(huì)在下一篇博文中介紹。

(1) 步長

梯度下降法中有一個(gè)關(guān)鍵超參數(shù),學(xué)習(xí)率(learning rate),也叫步長(step size)。
步長控制梯度往更新方向變化的大小。

  • 步長越小,每次更新的幅度就小,向最小值前進(jìn)的速度就越慢,對應(yīng)的就是收斂速度較慢。
  • 步長越大,尤其是快接近最小值點(diǎn)的時(shí)候,容易一次性步子邁的過大,錯(cuò)過最小值點(diǎn)。比如下圖中淺綠色和黃色的線,就是步長過大導(dǎo)致的結(jié)果。(PS:這讓我想到小時(shí)候在鐵路上走軌道,步子剛剛好的時(shí)候走的又快又舒服,現(xiàn)在長大了,走半步剛剛好,走起來像是穿了和服的日本藝妓,小心翼翼。走一步又跨度太大,怕扯著蛋蛋。)


    步長對優(yōu)化過程的影響

(2) 樣本使用的三種模式

  • 批梯度下降(batch gradient descent):利用所有樣本的梯度進(jìn)行更新,由于每次更新都要對所有樣本進(jìn)行遍歷,所以該模式計(jì)算量較大。
  • 隨機(jī)梯度下降(stochastic gradient descent):每次只選一個(gè)樣本的梯度作為更新參考,直到用完所有樣本。當(dāng)樣本量較大時(shí),往往比批梯度下降效果更好。
  • 最小批梯度下降(min-batch gradient descent):每次利用樣本中的一部分樣本的梯度進(jìn)行更新。

3.3 二階優(yōu)化算法

梯度下降法使用的是一階導(dǎo)數(shù)的信息,其描述的是目標(biāo)函數(shù)如何隨輸入變化的變化,而二階導(dǎo)數(shù)描述的是一階導(dǎo)數(shù)如何隨輸入的變化而變化。
因此,相較于梯度下降法只能看到目標(biāo)函數(shù)的局部信息,二階導(dǎo)數(shù)可以看到目標(biāo)函數(shù)的全局,使得梯度方向不會(huì)向錯(cuò)誤的方向走下去,使得收斂更快。

3.3.1 牛頓法

利用二階導(dǎo)數(shù)進(jìn)行優(yōu)化的典型方法就是牛頓法


將目標(biāo)函數(shù)進(jìn)行泰勒展開

在牛頓法中,目標(biāo)函數(shù)首先使用泰勒展開,寫為二階導(dǎo)數(shù)近似的形式(梯度下降法只保留了一階近似)。然后對上式求導(dǎo),并令其導(dǎo)數(shù)為0,得到:



求解:

得出迭代公式:



牛頓法的優(yōu)點(diǎn)在于能更快的收斂,迭代次數(shù)較少,但是由于引入了二階導(dǎo)數(shù),導(dǎo)致計(jì)算更加復(fù)雜。

4 線性搜索方法

無論是一階導(dǎo)數(shù)的梯度下降法,還是二階導(dǎo)數(shù)的牛頓法,都是先確定方向,再確定步長,稱為線性搜索方法

5 置信域方法

置信域方法尋找最小值點(diǎn)的基本思路是先確定步長,以步長為參數(shù)劃定一個(gè)區(qū)域,再在這個(gè)區(qū)域內(nèi)尋找最快下降的方向。
具體來說,置信域算法的運(yùn)行過程如下:設(shè)定一個(gè)置信域半徑 s,并在以當(dāng)前點(diǎn)為中心、以 s 為半徑的封閉球形區(qū)域作為置信域,在置信域內(nèi)尋找目標(biāo)函數(shù)的二次近似模型的最優(yōu)點(diǎn),最優(yōu)點(diǎn)和當(dāng)前點(diǎn)之間的距離就是計(jì)算出來的備選位移。
在備選位移上,如果目標(biāo)函數(shù)的二次近似產(chǎn)生了充分的下降,就將當(dāng)前點(diǎn)移動(dòng)到計(jì)算出的最優(yōu)點(diǎn),則繼續(xù)按此規(guī)則迭代計(jì)算下去,并可以適當(dāng)增加 s;如果目標(biāo)函數(shù)的近似下降不夠理想,則說明步子跨得太大,需要縮小 s 并計(jì)算出新的備選位移,直到滿足終止條件。

6 啟發(fā)式算法

例如模擬生物進(jìn)化的遺傳算法,模擬物理固體結(jié)晶過程的模擬退火算法等等。

7 總結(jié)

  • 通常情況下,最優(yōu)化問題是在無約束情況下求解給定目標(biāo)函數(shù)的最小值;
  • 在線性搜索中,確定最小值時(shí)的搜索方向需要使用目標(biāo)函數(shù)的一階導(dǎo)數(shù)和二階導(dǎo)數(shù);
  • 置信域方法的思想是先確定搜索步長,再確定搜索方向;
  • 以人工神經(jīng)網(wǎng)絡(luò)為代表的啟發(fā)式算法是另外一類重要的優(yōu)化方法。

最優(yōu)化推薦書籍資料

最優(yōu)化理論可以參考 Stephen Boyd 所著的 Convex Optimization,中譯本名為《凸優(yōu)化》。這本書雖然很厚,但是主要在于應(yīng)用而不是理論證明,因此可讀性很好。
英文版PDF獲取


參考資料:
[1] 人工智能基礎(chǔ)課 04 數(shù)學(xué)基礎(chǔ) | 不畏浮云遮望眼:最優(yōu)化方法(王天一)極客時(shí)間
[2] 李宏毅2017機(jī)器學(xué)習(xí)3-1 隨機(jī)梯度

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容