1、梯度下降法
梯度下降法是最早最簡單的,也是最為常用的最優化算法。梯度下降法實現簡單,當目標函數是凸函數時,梯度下降法的解是全局解。一般情況下,其解不保證是全局最優解,梯度下降法的速度未必是最快的。梯度下降法的優化思想是用當前位置負梯度方向作為搜索方向,因為該方向為當前位置的最快下降方向,所以也被稱為“最速下降法”。最速下降法越接近目標值,步長越小,前進越慢。
在機器學習中,基於基本的梯度下降法發展了兩種梯度下降方法,分別為隨即梯度下降法和批量梯度下降法。
批量梯度下降:最小化所有訓練樣本的損失函數,使得最終求解的是全局的最優解,即求解的參數是使得風險函數最小,但是對於大規模樣本問題效率低下。
隨機梯度下降法:最小化每條樣本的損失函數,雖然不是每次迭代得到的損失函數都向着全局最優方向,但是大的整體的方向是向着全局最優解,最終的結果往往是在全局最優解附近,使用於大規模訓練樣本情況。
2、牛頓和擬牛頓法
從本質上去看,牛頓法是二階收斂,梯度下降是一階收斂,所以牛頓法更快。如果更通俗得到說的話,比如你想找一條最短的路徑走到一個盆地的最底部,梯度下降法每次只從你當前的位置選一個坡度最大的方向走一步,牛牛頓法在選擇方向時,不僅會考慮坡度是否足夠大,還會考慮你走了一步之后,坡度是否會變得更大。所以,可以說是牛頓法比梯度下降法看的更遠一點,能更快地走到最底部。
優點:二階收斂,收斂速度更快;
缺點:牛頓法是一種迭代算法,每一步都需要求解目標函數的hessian矩陣的逆矩陣,計算比較復雜。
擬牛頓法
擬牛頓法的基本思想是改善牛頓法每次需要求解復雜的Hessian矩陣的逆矩陣的缺點,它使用正定矩陣來近似Hessian矩陣的逆,從而簡化了運算的復雜度。擬牛頓法和最速下降法一樣只要每一步迭代時知道目標函數的梯度。通過測量梯度的變化,構造一個目標函數的模型使之足以產生超線性收斂性。這類方法大大優與最速下降法,尤其對於困難的問題,另外,因為擬牛頓法不需要二階倒數的信息,所以有時比牛頓法更為有效。如今,優化軟件中包含了大量的擬牛頓算法用來解決無約束,約束,和大規模的優化問題。
3、共軛梯度法
共軛梯度法是介於最速下降法與牛頓法之間的一個方法,它僅需利用一階導數信息,但克服了最速下降法收斂慢的缺點,又避免了牛頓法需要存儲和計算Hesse矩陣並求逆的缺點,共軛梯度法不僅是解決大型線性方程組最有用的方法之一,也是解決大型非線性最優化最有效的算法之一。在各種優化算法中,共軛梯度法是非常重要的一種。其優點是所需存儲量小,具有步收斂性,穩定性高,而且不需要任何外來參數。
4、啟發式優化方法
啟發式方法是指人在解決優化問題時所采取的一種根據經驗規則進行發現的方法。其特點是在解決問題時,利用過去的經驗,選擇已經行之有效的方法,而不是系統地、以確定的步驟去尋求答案。啟發式優化方法種類繁多,包括經典的模擬退火方法,遺傳算法、蟻群算法以及粒子群算法等等。
還有一種特殊的優化算法被稱之多目標優化算法,它主要針對同時優化多個目標(兩個及兩個以上)的優化問題,這方面比較經典的算法有NSGAII算法、MOEA/D算法以及人工免疫算法等。
5、EM算法
EM算法是一類算法的總稱。EM算法分為E-step和M-step兩步。EM算法的應用范圍很廣,基本機器學習需要迭代優化參數的模型在優化時都可以使用EM算法。
EM算法的思想和過程
E-step:E的全稱是Exception,即期望的意思。E-step也是獲取期望的過程。根據現有的模型,計算各個觀測數據輸入到模型中的結果。這個過程稱為期望值計算過程,即E過程。
M-step:M的全稱是Maximization,即最大化的意思。M-step也是期望最大化的過程。得到一輪期望值以后,重新計算模型參數,以最大化期望值。這個過程為最大化過程,即M過程。
最大化的意思是我們在使用這個模型時希望我們定義的函數能使得到的結果最大化,而結果越大越接近我們希望得到的結果。我們優化的目標也就是這些能得到最大值的函數。
常見的EM算法有:隱含馬爾科夫模型的訓練方法Baum-Welch算法;最大熵模型的訓練方法GIS算法等。
EM算法結果
EM算法不一定能保證獲得全局最優解,但如果我們優化的目標函數是一個凸函數,那么一定能保證得到全局最優解。否則可能獲得局部最優解。因為如果優化的目標函數有多個峰值點,則如果優化到某個不是最高的峰值點處,則會無法再繼續下去,這樣獲得的是局部最優解。
總結
EM算法只需要輸入一些訓練數據,同時定義一個最大化函數,接下來經過若干次迭代,就可以蓄念出我們需要的模型了
