優化學習率相關算法


優化學習率的相關算法

在使用優化算法的時候,常常會涉及到一些學習率的優化,那么我們應該怎么優化學習率呢?

調整學習率的策略:

1.在斜率(方向導數)大的地方,使用小的學習率

2.在斜率(方向導數)小的地方,使用大的學習率

下面我們通過梯度下降算法進行學習率的優化分析

在梯度下降中,設x[k]=a,那么沿着負梯度方向,移動到x[k+1]=b,則有:

 那么,從x[0]出發,每次沿着當前函數梯度反方向移動一定的距離ak,將得到下面的序列:

 則對應的個點的函數值序列的關系為:

 當n迭代到一定值的時候,這函數f(x)將收斂到局部的最小值。

我們將當前點記為x[k],當前的搜索方向為dk(如:負梯度方向),我們將學習率a看成自變量,因此,我們將函數f(x[k] + adk)看做是關於a的函數h(a),如下所示:

 對於上述函數,當a=0時,h(0)=f(x[k]),對於函數h(a),其導數為:

 在梯度下降中,梯度下降是為了尋找f(x)的最小值,那么,在x[k]和dk給定的前提下,即尋找函數f(x[k]+adk)的最小值, 即:

 如果函數h(a)可導,那么對於局部最小值處的a滿足:

 下面我們就來計算最優學習率:

1.當a=0時,我們帶入得到:

 2.對於下降方向,選擇負梯度方向(或者選擇與負梯度方向夾角小於90度的方向),即:

 可以得到h‘(a) < 0

 3.由此,我們總是能夠選擇足夠大的a,使得h'(a) > 0,這樣,就一定存在某a,使得h'(a) = 0,此時的a即為要尋找的a值。

接下來我們可以采用多種方法計算a值:

1.線性搜索

最簡單的方式就是采用二分線性搜索的方式,通過不斷的將區間[a1,a2]分成兩半,選擇端點異號的區間,當區間分的足夠小的時候,我們就能得到一個足夠好的最優學習率。

2.回溯線性搜索

 我們還可以采用基於Armijo准則計算搜索方向上的最大步長,其基本思想是沿着搜索方向移動一個較大的步長估計值,然后以迭代形式不斷縮減步長,直到該步長使得函數值f(xk+αdk)相對與當前函數值f(xk)的減小程度大於預設的期望值(即滿足Armijo准則)為止。

 

 兩種方法的異同:

二分線性搜索的目標是求得滿足h‘(α)≈0的最優步長近似值,而回溯線性搜索放松了對步長的約束,只要步長能使函數值有足夠大的變化即可。
二分線性搜索可以減少下降次數,但在計算最優步長上花費了不少代價;回溯線性搜索找到一個差不多的步長即可。

回溯線性搜索的思考:插值法

采用多項式插值法(Interpolation) 擬合簡單函數,然后根據該簡單函數估計函數的極值點,這樣選擇合適步長的效率會高很多。現在擁有的數據為: xk處的函數值f(xk)及其導數f’(xk) ,再加上第一次嘗試的步長α0。如果α0滿足條件,顯然算法退出;若α0不滿足條件,則根據上述信息可以構造一個二次近似函數:

 這樣,我們可以計算導數為0的最優值。

一般的說,回溯線性搜索和二次插值線性搜索能夠基本滿足實踐中的需要。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM