在學習梯度下降法之前,我們得先明確一件事情。那就是梯度下降法在機器學習領域中並不是乙個類似knn的機器學習演算法,
而是乙個基於搜尋的最優化方法。梯度下降法能夠使乙個損失函式最小化,而梯度上公升法則是使乙個效用函式最大化。
那什麼是梯度呢?從數學方面來說,梯度是乙個向量。我們在這裡就以乙個一元函式y=f(x) 為例,該一元函式在定義域中有可導。
我們知道對於乙個一元函式來說,導數dy/dx的幾何意義就是在某點切線的斜率。當切線的斜率大於0,則函式值沿x軸正方向增大,
反之若斜率小於0,則函式值沿x軸負方向增大。所以我們也可以說導數代表著方向,對應函式增大的方向。而在多元函式中,我們就
需要對多個『x』求偏導,如y=f(x1,x2,…xn),對其各個x求偏導所組成的向量[dy/dx1,dy/dx2,…dy/dxn]就是在某點的梯度。
在這裡,我們就知道了導數也就是我們所說的梯度。在多元函式中,梯度代表著方向,對應函式增大的方向。
為了方便視覺化,我們拿乙個二次函式當做例子來解釋梯度下降法。二次函式為y=(x-2.5)*2+3.0。
函式部分如圖1:
在這裡我們會隨機選取乙個起始點,然後求得該點所對應的梯度dy/dx。在上面已經說到,梯度的方向對應著函式增大的方向,那麼梯度的反方向就對應著函式減小的方向,即-dy/dx。當我們的x值向著梯度的反方向移動,函式逐漸減小,也就是說逐漸的逼近函式的最小值。為了控制x的每次減小的幅度,我們往往在梯度前面乘上乙個小於1的正數η,我們稱η為學習率。這就類似於乙個在二次函式曲線似的某乙個位置放下乙個小球,小球會一直往曲線最低處靠近,直至靜止於最低處。則我們就可以得出乙個式子。x=x-η(dy/dx),我們也 稱η(dy/dx)為步長 ,每次隨著梯度dy/dx值的不同,步長的值也有不同。我們就可以通過梯度的值來確定下乙個走到的x的值。另外,在二次函式中,或者是說在一元函式中,梯度的方向也可以說就是正負號,如果在某點的梯度》0,那y就沿該點x座標的正方向(右邊)增大,沿該點x座標的負方向(左邊)減小。梯度<0則相反。 比如,圖1中的二次函式。在x<2.5時,斜率<0,也就是說梯度<0,則y就沿著該點的x座標的負方向增加,正方向減小。那如果我們要得到函式的最小值,也就是要往該點的正方向走,即往右邊走。如圖2:
在圖2中,我們選取x座標為0的乙個點,圖中紅色的 * 號是結束一次梯度下降法後,所取得的每個經過的點的位置,回到這個式子「x=x-η(dy/dx)」,每次程式執行這乙個,都會找到乙個新的x,即會找到乙個新的點,再通過這個點進行新的梯度判斷,循壞往復直到到達最低點!我們需要注意的是這個η,當η的值過大,就會出現跳度過大的情況,即如圖3:
但是還會會根據判斷新的位置點梯度的方向,再次向最低點靠攏。對於梯度下降法就簡單的介紹到這裡了,下次部落格會具體從底層實現編寫利用梯度下降法求出二次函式的最小值!本人是第一次寫部落格,還希望大家多多包涵啊!
本文的素材來自於慕課網的liuyubobobo老師的課程!推薦大家去聽哦,簡單易學!
梯度下降法和隨機梯度下降法
批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...
梯度下降法
梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...
梯度下降法
回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...