梯度是什麼?
梯度下降又是什麼?
梯度下降是用來幹嘛的?
梯度下降算法學習
一、何爲梯度
說法一:
在微積分裏面,對多元函數參數求偏導數,把求的各參數的偏導數以向量的形式寫出來,就是梯度。 那麼這個梯度向量求出來有什麼意義呢?梯度向量從幾何意義(數學意義)上講,就是函數變化增加最快的地方,沿着梯度向量的方向更容易找到函數的最大值,沿着向量相反的方向,梯度減小最快,更容易找到函數最小值。
說法二:
梯度是函數在某點處的一個方向,並且沿着該方向變化最快,變化率最大。沿着梯度這個方向,使得值變大的方向是梯度上升的方向,沿着使值變小的方向便是下降的方向。綜上,梯度下降的方向就是在該點處使值變小最快的方向。
二、梯度下降的用處
【百度百科】梯度下降是迭代法的一種,可以用於求解最小二乘問題(線性和非線性都可以)。在求解機器學習算法的模型參數,即無約束優化問題時,梯度下降(Gradient Descent)是最常採用的方法之一,另一種常用的方法是最小二乘法。在求解損失函數的最小值時,可以通過梯度下降法來一步步的迭代求解,得到最小化的損失函數和模型參數值。反過來,如果我們需要求解損失函數的最大值,這時就需要用梯度上升法來迭代了。在機器學習中,基本的梯度下降法發展了兩種梯度下降方法,分別爲隨機梯度下降法和批量梯度下降法。
具體的梯度下降知識可參考:梯度下降算法
三、梯度下降算法分析學習
3.1 求梯度
在上篇文章中我們得出了最小二乘項的代價函數(不好理解的話,可以理解爲極大似然估計時,某個部分必須取得極小值,它被稱爲代價函數):
其中,代表樣本個數,表示第個樣本的標籤值(就是我們高中數學的因變量),的轉置表示各個特徵的權重參數的矩陣,表示各個特徵的取值(就是自變量)。
我們知道可以用數學方法直接求出代價函數的極小值,進而求出權重參數爲:
上式中的參數是特徵的權重參數向量,如果有5個特徵,它就對應着5個元素,如果它有100個特徵,對應着100個元素。
在用梯度求解時的代價函數與直接求法有一點小區別,代價函數要除以樣本個數,言外之意,我們的代價函數不會因爲樣本個數太多,而變得越大吧,應該不受樣本個數的影響吧,因此,微調後的代價函數爲:
如何用梯度下降來求權重參數的向量呢? 還是從概念入手,首先得求出梯度來吧,說白了就是求出代價函數的偏導數。爲什麼是偏導數呢?因爲就像上面說的,如果有100個特徵,那可是對應着100個權重參數的,自然要對每個求導數,也就是含有多個自變量的函數求導數,也就是求偏導。
其中表示第個特徵的權重參數,表示第個樣本的第個特徵的權重參數。
3.2 參數迭代公式
每次調整一點點,不能一次調整太多,調整的係數稱爲學習率,因此每次參數的調整迭代公式可以寫爲如下所示:
其中表示第個迭代時步的第個特徵的權重參數,爲第個迭代時步的第個特徵的權重參數。相減是因爲梯度下降,沿着導數求得的反方向。
3.3 應用技巧
觀察上式,權重參數的迭代公式,如果我們參與計算的所有樣本爲個,如果樣本個數爲10萬個,共有10個特徵,共需要迭代1萬步,可想而知這個計算量得多大呀?10萬 * 10 * 1萬 = 1e10。因此,在實際的應用中,往往選取10萬個樣本中的一小批來參與本時步的迭代計算,比如每次隨機選取20個樣本點,再乘以一個學習率,即下面的公式:
這樣的計算量就小很多了吧,因此在機器學習中,每個時步要想讓所有的樣本都參與計算,往往是不可取的,相對應的,是隨機選取一小批數據來參與當前時步的迭代計算,纔是上策。
四、總結
在最小二乘項中的兩種求解方法:直接發和梯度下降法,而在現實中,往往更復雜的模型是不可能直接求出權重參數的,更可能是通過梯度下降的方法求權重參數。當然!!!這兩種方法都相同的是:建立模型—>得到目標函數—>求解樣本的似然函數—>然後極大對數似然估計求參數—>獲取代價函數
除了梯度下降算法之外還有批量梯度下降(BGD)、隨機梯度下降(SGD),這裏就不一一介紹了,具體可參考此博文,敘述的比較詳細。