一文帶你了解什么是梯度下降
梯度下降是機器學(xué)習(xí)的動力之源
經(jīng)過前面兩節(jié)內(nèi)容的鋪墊,我們可以開始講一講機器學(xué)習(xí)的動力之源:梯度下降。
梯度下降并不是一個很復(fù)雜的數(shù)學(xué)工具,其歷史已經(jīng)有200多年了,但是人們可能不曾料到,這樣一個相對簡單的數(shù)學(xué)工具會成為諸多機器學(xué)習(xí)算法的基礎(chǔ),而且還配合著神經(jīng)網(wǎng)絡(luò)點燃了深度學(xué)習(xí)革命。
1、什么是梯度
對多元函數(shù)的各參數(shù)求偏導(dǎo)數(shù),然后把所求得的各個參數(shù)的偏導(dǎo)數(shù)以向量的形式寫出來,就是梯度。
具體來說,兩個自變量的函數(shù)f(x1,x2),對應(yīng)著機器學(xué)習(xí)數(shù)據(jù)集中的兩個特征,如果分別對x1,x2求偏導(dǎo)數(shù),那么求得的梯度向量就是(?f/?x1,?f/?x2)T,在數(shù)學(xué)上可以表示成Δf(x1,x2)。那么計算梯度向量的意義何在呢?其幾何意義,就是函數(shù)變化的方向,而且是變化最快的方向。對于函數(shù)f(x),在點(x0,y0),梯度向量的方向也就是y值增加最快的方向。也就是說,沿著梯度向量的方向Δf(x0),能找到函數(shù)的最大值。反過來說,沿著梯度向量相反的方向,也就是 -Δf(x0)的方向,梯度減少最快,能找到函數(shù)的最小值。如果某一個點的梯度向量的值為0,那么也就是來到了導(dǎo)數(shù)為0的函數(shù)最低點(或局部最低點)了。
2、梯度下降:下山的隱喻
在機器學(xué)習(xí)中用下山來比喻梯度下降是很常見的。想象你們站在一座大山上某個地方,看著遠處的地形,一望無際,只知道遠處的位置比此處低很多。你們想知道如何下山,但是只能一步一步往下走,那也就是在每走到一個位置的時候,求解當(dāng)前位置的梯度。然后,沿著梯度的負方向,也就是往最陡峭的地方向下走一步,繼續(xù)求解新位置的梯度,并在新位置繼續(xù)沿著最陡峭的地方向下走一步。就這樣一步步地走,直到山腳,如下圖所示。
從上面的解釋中,就不難理解為何剛才我們要提到函數(shù)的凹凸性了。因為,在非凸函數(shù)中,有可能還沒走到山腳,而是到了某一個山谷就停住了。也就是說,對應(yīng)非凸函數(shù)梯度下降不一定總能夠找到全局最優(yōu)解,有可能得到的只是一個局部最優(yōu)解。然而,如果函數(shù)是凸函數(shù),那么梯度下降法理論上就能得到全局最優(yōu)解。
3、梯度下降有什么用
梯度下降在機器學(xué)習(xí)中非常有用。簡單地說,可以注意以下幾點。
機器學(xué)習(xí)的本質(zhì)是找到最優(yōu)的函數(shù)。
如何衡量函數(shù)是否最優(yōu)?其方法是盡量減小預(yù)測值和真值間的誤差(在機器學(xué)習(xí)中也叫損失值)。
可以建立誤差和模型參數(shù)之間的函數(shù)(最好是凸函數(shù))。
梯度下降能夠引導(dǎo)我們走到凸函數(shù)的全局最低點,也就是找到誤差最小時的參數(shù)。