機(jī)器學(xué)習(xí)之梯度下降算法

機(jī)器學(xué)習(xí)之梯度下降算法

原文地址:blog.csdn.net/tianse12/article/details/70172494

算法背景:

以房?jī)r(jià)問(wèn)題為由:

房?jī)r(jià)變化可能有多種因素比如說(shuō)房屋面積,房屋位置,房間數(shù)量等:

我們假設(shè)一個(gè)向量x表示輸入特征:x = [x0,x1.x2.......,xn],其中n為影響房?jī)r(jià)因素的數(shù)量

估計(jì)函數(shù):

其中Θ為特征參數(shù)或者學(xué)習(xí)參數(shù),該參數(shù)決定了特征變量Xi對(duì)估計(jì)的影響,用向量形式表示為:

為了使得估計(jì)值與實(shí)際的值差別最小:

我們建立一個(gè)函數(shù)去衡量輸出模型的擬合效果,一般稱為損失函數(shù)(loss functon)或者(cost function):

函數(shù)選擇了最小二乘法的原理,我們要做的便是最小化損失函數(shù),取得的Θ值便是我們需要的參數(shù)。

算法思想:

隨機(jī)找一個(gè)點(diǎn),沿著下降最快的方向走到一個(gè)局部最低點(diǎn),因此Gradient Descent存在局部最優(yōu)的缺點(diǎn)。

梯度的方向由J(Θ)對(duì)Θ的偏導(dǎo)數(shù)決定,可以得到參數(shù)的更新法則為:

此算法Θ 隨機(jī)生成初始值,再根據(jù)更新法則不斷迭代更新Θ的值,其中α是學(xué)習(xí)率,表征的是下降的速度,若太大則可能越過(guò)最低點(diǎn),太小則學(xué)習(xí)的速率太慢容易陷入局部最優(yōu)點(diǎn)。迭代實(shí)則是循環(huán),我們應(yīng)當(dāng)設(shè)置一定的條件終止循環(huán),比如說(shuō)循環(huán)達(dá)到一定的次數(shù),或者Θ更新的差分值低于某個(gè)值等。

另外,還需要提一點(diǎn)就是,當(dāng)樣本的數(shù)量達(dá)到一定的數(shù)量時(shí),更新參數(shù)的計(jì)算量以及時(shí)間變大,因此一般選擇隨機(jī)梯度下降算法來(lái)增加參數(shù)的更新速率和頻度,也即每次選取一定的訓(xùn)練樣本進(jìn)行更新計(jì)算,以便更快的收斂,隨機(jī)梯度下降算法下降速度快,但不能收斂到全局最優(yōu),一般在最小值邊緣徘徊。

代碼實(shí)現(xiàn)python:


結(jié)果演示:

結(jié)論:可以看出數(shù)據(jù)越來(lái)越接近。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容