在求解算法的模型函數時,常用到梯度下降(Gradient Descent)和最小二乘法,下面討論梯度下降的線性模型(linear model)。
1.問題引入
給定一組訓練集合(training set)yi,i = 1,2,...,m,引入學習算法參數(parameters of learning algorithm)θ1,θ2,.....,θn,構造假設函數(hypothesis function)h(x)如下:
定義x0 = 1,則假設函數h(x)也可以記為以下形式:
這里xi(i = 1,2,...,n)稱為輸入特征(input feature),n為特征數。
對於訓練集合yi,要使假設函數h(x)擬合程度最好,就要使損失函數(loss function)J(θ)達到最小,J(θ)表達式如下:
2.問題推導
目標是使J(θ)達到最小,此時的θ值即為所求參數,首先來看梯度下降的幾何形式。
(1)梯度下降的幾何形式
上圖圈內點為初始設置的參考點,想象這是一座山的地形圖,你站在參考點上准備下山,要從哪里走,下山的速度最快?選擇一個方向,每次移動一小點步伐,直到移動到圖正下方的藍色區域,找到了局部最優解。顯然,對於此圖來說,設置的初始參考點不同,找到的局部最優解也不同。其實,真正的J(θ)大部分是如下圖的形狀,只有一個全局最優解:
(2)批量梯度下降(Batch Gradient Descent)法
方法是對θi進行多次迭代,迭代減去速率因子α(learning rate)乘以J(θ)對θi的偏導數。
下面推導過程取m = 1的特殊情況,即只有一個訓練樣本,並逐步推導至一般過程。
划線部分只有θixi與θi有關,得到的θi迭代表達式為:
推廣至m個訓練樣本,則迭代表達式為:
但批量梯度下降的每一次迭代都要遍歷所有訓練樣本,不適用於訓練樣本數量極多的情況,於是提出了隨機梯度下降(Stochastic Gradient Descent)法
(3)隨機梯度下降(Stochastic Gradient Descent)法
每次都只使用第j個樣本,速度比批量梯度下降快了很多。
(4)兩種梯度下降方法比較
下面是兩種梯度下降算法的迭代等高圖
批量梯度下降:
隨機梯度下降(紫色線所示):
隨機梯度下降的每次迭代,有可能變大或變小,但總體趨勢接近全局最優解,通常參數值會十分接近最小值。
3.注意事項
(1)α的取值不宜太大或太小。
if α is too small then will take very tiny steps and take long time to converge;
if α is too large then the steepest descent may end up overshooting the minimum.
(2)由於向最優解收斂過程中偏導數會逐漸變小,收斂至最小值時偏導為0,則θi會逐漸變小,因此不需要改變α使其越來越小。
(3)α的取值需要不斷測試更改,直至達到效果最好的α。
(4)當梯度下降到一定數值后,每次迭代的變化很小,這時可以設定一個閾值,只要變化小於該閾值,就停止迭代,而得到的結果也近似於最優解。
圖片來源:百度
參考博客:http://www.cnblogs.com/ooon/p/4947688.html