梯度下降法

2022-09-15 20:21:14 字數 1589 閱讀 1176

在上篇部落格中提到,神經網路可以使用梯度下降法求解。因此,在這裡對梯度下降法的具體過程進行一些介紹。

首先我們從乙個簡單的問題出發。假設有乙個二元目標函式c(v),其有兩個變數v1和v2,其函式影象如下圖所示,那麼我們如何求解使得目標函式最小時的v1和v2值呢?

當然一種簡單的方法,就是利用微積分的知識,對目標函式求導數,然後使導數為零,得到極值點。但是當目標函式的變數很多,例如神經網路模型,這種方法則很難求解。因此梯度下降法就發揮作用。

梯度下降法求解

首先,我們直觀的表述一下梯度下降法求解的過程。即可以將上述二次函式想像成乙個山谷。而二次函式的值就是乙個小球。那麼我們怎麼樣讓小球滾到山谷,即目標函式的最小值呢。我們可以先隨機的給小球選擇乙個出發的位置,然後給每次給它選擇乙個朝向山谷的方向,讓它一步步的滾向山谷。如下圖所示,經過若干步以後最終肯定能到山谷。

接下來,我們更加形式化的來描述這個問題。假設我們讓球分別在v1和v2的方向上移動了很小的量,即δv1和δv2,那麼球體移動的距離是多少呢?根據微積分的知識,我們可以得到:

因此,任務就變成了尋找到一種選擇δv1和δv2的方法,使得δc始終為負,即目標函式始終在減小的方法。接下來,我們使用向量的形式來表達上式:

其中,,

通過向量表達的式子,我們很容易發現,只要取

,,其中η為正數,代表學習率。我們就可以始終保證δc為負。也就達到了我們的目標,即目標函式不斷的變小。

因此,我們利用

來定義球體在梯度下降演算法下的運動規律。,也就是利用其計算δv,求得球體下一次移動到的位置。

總結一下,梯度下降演算法的過程就是不聽的計算

,然後沿著相反的方向移動,最終得到目標函式的近似最優解。

上面我們給出了簡單的二元函式的梯度下降演算法的求解方法。這種方法很容易的能夠推廣到求解神經網路中,其變數的更新規則和上述相同。如下式所示。

隨機梯度下降法

在利用梯度下降法求解神經網路等問題時,我們可以發現在每次更新變數,計算梯度時,我們需要對整個資料集中的每個樣本計算梯度,然後在求和。這對於資料量很小的資料集來說還可以接受,一旦資料規模很大時,學習將變得非常緩慢。因此,隨機梯度下降法應運而生。

其主要思想是隨機選取小量的詢量輸入樣本來計算

,進而估計

,通過計算商量樣本的平均值我們可以快速得到乙個對於實際梯度

很好的估計,這樣有加速學習過程。因此,我們可以得到隨機梯度下降法的計算公式如下所示:

其中,m表示隨機選取樣本的數量。

梯度下降法和隨機梯度下降法

批量梯度下降法 batch gradient descent 在更新引數時使用所有的樣本來進行更新 隨機梯度下降法 stochastic gradient descent 求梯度時沒有用所有的m個樣本的資料,而是僅僅選取乙個樣本j來求梯度。小批量梯度下降法 mini batch gradient d...

梯度下降法

梯度下降法 是乙個一階 最優化演算法 通常也稱為 最速下降法 我之前也沒有關注過這類演算法。最近,聽史丹福大學的機器學習課程時,碰到了用梯度下降演算法求解線性回歸問題,於是看了看這類演算法的思想。今天只寫了一些入門級的知識。我們知道,函式的曲線如下 程式設計實現 c code cpp view pl...

梯度下降法

回歸 regression 梯度下降 gradient descent 發表於332 天前 技術,科研 被圍觀 1152 次 前言 這個系列主要想能夠用數學去描述機器學習,想要學好機器學習,首先得去理解其中的數學意義,不一定要到能夠輕鬆自如的推導中間的公式,不過至少得認識這些 式子吧,不然看一些相關...