這個階段一直在做和梯度一類算法相關的東西,索性在這兒做個匯總,
一、算法論述
梯度下降法(gradient descent)別名最速下降法(曾經我以為這是兩個不同的算法-.-),是用來求解無約束最優化問題的一種常用算法。下面以求解線性回歸為題來敘述:
設:一般的線性回歸方程(擬合函數)為:(其中的值為1)
則這一組向量參數選擇的好與壞就需要一個機制來評估,據此我們提出了其損失函數為(選擇均方誤差):
我們現在的目的就是使得損失函數取得最小值,即目標函數為:
如果的值取到了0,意味著我們構造出了極好的擬合函數,也即選擇出了最好的
值,但這基本是達不到的,我們只能使得其無限的接近于0,當滿足一定精度時停止迭代。
那么問題來了如何調整使得
取得的值越來越小呢?方法很多,此處以梯度下降法為例:
分為兩步:(1)初始化的值。
(2)改變的值,使得
按梯度下降的方向減少。
值的更新使用如下的方式來完成:
其中為步長因子,這里我們取定值,但注意如果
取得過小會導致收斂速度過慢,
過大則損失函數可能不會收斂,甚至逐漸變大,可以在下述的代碼中修改
的值來進行驗證。后面我會再寫一篇關于隨機梯度下降法的文章,其實與梯度下降法最大的不同就在于一個求和符號。
新聞熱點
疑難解答