最優化問題是機器學習算法中非常重要的一部分,幾乎每一個機器學習算法的核心都是在處理最優化問題。
本文中我講介紹一些機器學習領域中常用的且非常掌握的最優化算法,看完本篇文章后你將會明白:
* 什么是梯度下降法?
* 如何將梯度下降法運用到線性回歸模型中?
* 如何利用梯度下降法處理大規模的數據?
* 梯度下降法的一些技巧
梯度下降法
梯度下降法是一個用于尋找最小化成本函數的參數值的最優化算法。當我們無法通過分析計算(比如線性代數運算)求得函數的最優解時,我們可以利用梯度下降法來求解該問題。
梯度下降法的直覺體驗
想象一個你經常用來吃谷物或儲存受過的大碗,成本函數的形狀類似于這個碗的造型。
碗表面上的任一隨機位置表示當前系數對應的成本值,碗的底部則表示最優解集對應的成本函數值。梯度下降法的目標就是不斷地嘗試不同的系數值,然后評估成本函數并選擇能夠降低成本函數的參數值。重復迭代計算上述步驟直到收斂,我們就能獲得最小成本函數值對應的最優解
梯度下降法的過程
梯度下降法首先需要設定一個初始參數值,通常情況下我們將初值設為零(coefficient=0coefficient=0),接下來需要計算成本函數 cost=f(coefficient)cost=f(coefficient) 或者cost=evaluate(f(coefficient))cost=evaluate(f(coefficient))。然后我們需要計算函數的導數(導數是微積分的一個概念,它是指函數中某個點處的斜率值),并設定學習效率參數(alpha)的值。
coefficient=coefficient?(alpha?delta) coefficient=coefficient?(alpha?delta) 重復執行上述過程,直到參數值收斂,這樣我們就能獲得函數的最優解。
你可以看出梯度下降法的思路多么簡單,你只需知道成本函數的梯度值或者需要優化的函數情況即可。接下來我將介紹如何將梯度下降法運用到機器學習領域中。
批量梯度下降法
所有的有監督機器學習算法的目標都是利用已知的自變量(X)數據來預測因變量(Y)的值。所有的分類和回歸模型都是在處理這個問題。
機器學習算法會利用某個統計量來刻畫目標函數的擬合情況。雖然不同的算法擁有不同的目標函數表示方法和不同的系數值,但是它們擁有一個共同的目標——即通過最優化目標函數來獲取最佳參數值。
線性回歸模型和邏輯斯蒂回歸模型是利用梯度下降法來尋找最佳參數值的經典案例。
我們可以利用多種衡量方法來評估機器學習模型對目標函數的擬合情況。成本函數法是通過計算每個訓練集的預測值和真實值之間的差異程度(比如殘差平方和)來度量模型的擬合情況。
我們可以計算成本函數中每個參數所對應的導數值,然后通過上述的更新方程進行迭代計算。
在梯度下降法的每一步迭代計算后,我們都需要計算成本函數及其導數的情況。每一次的迭代計算過程就被稱為一批次,因此這個形式的梯度下降法也被稱為批量梯度下降法。
批量梯度下降法是機器學習領域中常見的一種梯度下降方法。
隨機梯度下降法
處理大規模的數據時,梯度下降法的運算效率非常低。
因為梯度下降法在每次迭代過程中都需要計算訓練集的預測情況,所以當數據量非常大時需要耗費較長的時間。
當你處理大規模的數據時,你可以利用隨機梯度下降法來提高計算效率。
該算法與上述梯度下降法的不同之處在于它對每個隨機訓練樣本都執行系數更新過程,而不是在每批樣本運算完后才執行系數更新過程。
隨機梯度下降法的第一個步驟要求訓練集的樣本是隨機排序的,這是為了打亂系數的更新過程。因為我們將在每次訓練實例結束后更新系數值,所以系數值和成本函數值將會出現隨機跳躍的情況。通過打亂系數更新過程的順序,我們可以利用這個隨機游走的性質來避免模型不收斂的問題。
除了成本函數的計算方式不一致外,隨機梯度下降法的系數更新過程和上述的梯度下降法一模一樣。
對于大規模數據來說,隨機梯度下降法的收斂速度明顯高于其他算法,通常情況下你只需要一個小的迭代次數就能得到一個相對較優的擬合參數。
梯度下降法的一些建議
本節列出了幾個可以幫助你更好地掌握機器學習中梯度下降算法的技巧:
繪制成本函數隨時間變化的曲線:收集并繪制每次迭代過程中所得到的成本函數值。對于梯度下降法來說,每次迭代計算都能降低成本函數值。如果無法降低成本函數值,那么可以嘗試減少學習效率值。
學習效率:梯度下降算法中的學習效率值通常為0.1,0.001或者0.0001。你可以嘗試不同的值然后選出最佳學習效率值。
標準化處理:如果成本函數不是偏態形式的話,那么梯度下降法很快就能收斂。隱蔽你可以事先對輸入變量進行標準化處理。
繪制成本均值趨勢圖:隨機梯度下降法的更新過程通常會帶來一些隨機噪聲,所以我們可以考慮觀察10次、100次或1000次更新過程誤差均值變化情況來度量算法的收斂趨勢。
總結
本文主要介紹了機器學習中的梯度下降法,通過閱讀本文,你了解到:
最優化理論是機器學習中非常重要的一部分。
梯度下降法是一個簡單的最優化算法,你可以將它運用到許多機器學習算法中。
批量梯度下降法先計算所有參數的導數值,然后再執行參數更新過程。
隨機梯度下降法是指從每個訓練實例中計算出導數并執行參數更新過程。
責任編輯:ct
評論
查看更多