看了coursea的機器學(xué)習(xí)課,知道了梯度下降法。一開始只是對其做了下簡單的了解。隨著內(nèi)容的深入,發(fā)現(xiàn)梯度下降法在很多算法中都用的到,除了之前看到的用來處理線性模型,還有BP神經(jīng)網(wǎng)絡(luò)等。于是就有了這篇文章。

本文主要講了梯度下降法的兩種迭代思路,隨機梯度下降(Stochastic gradient descent)和批量梯度下降(Batch gradient descent)。以及他們在python中的實現(xiàn)。

梯度下降法

梯度下降是一個最優(yōu)化算法,通俗的來講也就是沿著梯度下降的方向來求出一個函數(shù)的極小值。那么我們在高等數(shù)學(xué)中學(xué)過,對于一些我們了解的函數(shù)方程,我們可以對其求一階導(dǎo)和二階導(dǎo),比如說二次函數(shù)??墒俏覀冊谔幚韱栴}的時候遇到的并不都是我們熟悉的函數(shù),并且既然是機器學(xué)習(xí)就應(yīng)該讓機器自己去學(xué)習(xí)如何對其進行求解,顯然我們需要換一個思路。因此我們采用梯度下降,不斷迭代,沿著梯度下降的方向來移動,求出極小值。

此處我們還是用coursea的機器學(xué)習(xí)課中的案例,假設(shè)我們從中介那里拿到了一個地區(qū)的房屋售價表,那么在已知房子面積的情況下,如何得知房子的銷售價格。顯然,這是一個線性模型,房子面積是自變量x,銷售價格是因變量y。我們可以用給出的數(shù)據(jù)畫一張圖。然后,給出房子的面積,就可以從圖中得知房子的售價了。

平面設(shè)計培訓(xùn),網(wǎng)頁設(shè)計培訓(xùn),美工培訓(xùn),游戲開發(fā),動畫培訓(xùn)

現(xiàn)在我們的問題就是,針對給出的數(shù)據(jù),如何得到一條最擬合的直線。

對于線性模型,如下。