機器學習中所謂的訓練其實就是損失函式的優化過程,求損失函式的最優化解,主要是得靠一些常規套路,去一點一點地接近最優化目標。
常用的有梯度下降法、牛頓法和擬牛頓法、共軛梯度法、啟發式優化方法、拉格朗日乘數法等。
一、梯度下降法(gradient descent)
梯度下降法實現的原理簡單,是最常用最簡單的最優化方法。當目標函式是凸函式時(如線性規劃),得到的是全域性最優解。但是在一般情況下,並不能保證得到全域性最優解,下降速度也不一定是最快的。
梯度下降法的原理是從當前點θ開始,在梯度下降的方向前進一步,前進的幅度由梯度決(即求導)決定,一步一步探索到達最低點。
以線性回歸為例,要擬合的函式和損失函式分別為
對目標函式求導得到
每個θ向梯度下降的方向前進一步,更新得到下乙個θ
按照λ和m的取值不同,梯度下降分為三種:
(1)批量梯度下降法(batch gradient descent,bgd),是梯度下降法最原始的形式,它的具體思路是在更新每一引數時都使用所有的樣本資料來進行更新。λ值取1,更新的公式為
從它的構建思路可以知道批量梯度下降法,
優點:全域性最優解;易於並行實現;
缺點:當樣本數目(m值)很多時,訓練過程會很慢。
針對它的缺點就有了以下的改進。
(2)隨機梯度下降(random gradient descent,rgd),其具體思路是在更新每一引數時都使用乙個樣本來進行更新,也就是m值取為1,更新的公式如下。
每一次更新引數都用乙個樣本,更新很多次。如果樣本量很大的情況(例如幾十萬),那麼可能只用其中幾萬條或者幾千條的樣本,就已經將θ迭代到最優解了。但是,sgd伴隨的乙個問題是噪音會增多,這樣每次迭代並不一定是向著整體最優化方向的。兩者的關係可以這樣理解:隨機梯度下降方法以損失很小的一部分精確度和增加一定數量的迭代次數為代價,換取了總體的優化效率的提公升,當然增加的迭代次數是遠遠小於樣本數量的(不過會使sgd在解空間的搜尋過程看起來很盲目)。
優點:訓練速度快;
缺點:準確度下降,並不是全域性最優;不易於並行實現。
(3)小批量梯度下降(mini-batch gradient descent,簡稱mbgd),它的具體思路是在更新每一引數時都使用一部分樣本來進行更新,也就是m的值取乙個大於1且小於所有樣本的數量(假設為10),則更新公式為
學習率(learning rate),即步長。學習率對演算法效能產生巨大的影響。學習率決定了引數移動到最優值的速度快慢(可以參見下圖的示意):如果學習率過大,很可能會越過最優值;如果學習率過小,優化的效率可能過低,演算法長時間無法收斂。所以為了能夠使梯度下降法有較好的效能(當然也需要考慮實際記憶體和效率),我們需要把學習率的值設定在合適的範圍內。
二、牛頓法和擬牛頓法(newton's method & quasi-newton methods)
三、共軛梯度法(conjugate gradient)
四、啟發式優化方法
啟發式方法指人在解決問題時所採取的一種根據經驗規則進行發現的方法。其特點是在解決問題時,利用過去的經驗,選擇已經行之有效的方法,而不是系統地、以確定的步驟去尋求答案。啟發式優化方法種類繁多,包括經典的模擬退火方法、遺傳演算法、蟻群演算法以及粒子群演算法等等。(沒有深入研究,先進行部分引用放在這吧)
五、拉格朗日乘數法(lagrange multiplier method)
拉格朗日乘數法主要用於解決帶受約束條件的最優化問題。
最優化方法總結
1.座標下降法 coordinate descent method 對於乙個最優化問題 min x f x 1,x 2,x n 其求解過程如下 loop until convergence for i 1 n x i arg min x i f x 1,x 2,x i 1,x i,x i 1,x n...
最優化方法與機器學習工具集
摘要 1.最小二乘法 2.梯度下降法 3.最大 對數 似然估計 mle 4.最大後驗估計 map 5.期望最大化演算法 em 6.牛頓法 7.擬牛頓迭代 bfgs 8.限制記憶體 擬牛頓迭代 l bfgs 9.深度學習中的梯度優化演算法 adam,adagrad,rmsprop,bp,bptt 10...
最優化理論 機器學習基礎
目錄常見演算法 演算法分類 比喻說明 最優化理論研究的問題是判定給定目標函式的最大值 最小值 是否存在,並找到令目標函式取到最大值 最小值 的數值。人工智慧問題最後都會歸結為乙個優化問題的求解 在複雜環境與多體互動中做出最優決策。最優化演算法可能找到全域性最小值,也可能找到區域性最小值,理想情況下,...