梯度与梯度下降法详解
梯度與梯度下降法
- 1 前言
- 2 導數
- 3 導數與偏導數
- 4 導數與方向導數
- 5導數與梯度
- 6 導數與向量
- 7 梯度下降法
- 8 梯度下降法與機器學習
- 9 梯度下降法的缺點
- 10 補充:向量函數求導的問題
- 10.1對標量求導
- 10.2對向量求導
1 前言
?機器學習中的大部分問題都是優化的問題,而絕大部分問題都可以使用梯度下降法處理,那么搞懂什么是梯度,什么是梯度下降法就非常重要了,這是基礎中的基礎,也是必須掌握的概念.
2 導數
一張圖讀懂導數與微分
導數定義如下:
反映的是函數y=f(x)在某一點沿著x軸的正方向的變化率/變化趨勢.直觀地看,也就是在x軸上某一點處,如果f(x)>0,說明f(x)的函數值在x點沿著x軸(方向)正方向是趨于增加的,相應的f(x)<0,說明函數f(x)的值在x點沿著x軸(方向)正反向趨于減少.
3 導數與偏導數
偏導數的定義如下:
導數與偏導數的本質一致,都是當自變量的變化量趨于0時,函數值的變化量與自變量比值的極限,直觀地說,偏導數也就是函數在某個點沿著坐標軸(xi方向)正方向的變化率(如上面公式是沿著xj軸(方向)的變化率).同時如果一個函數有多個自變量(xi)時,某個點是有多個方向所對應的偏導數的.
4 導數與方向導數
方向導數的定義如下:
在前面導數與偏導數的定義中,均是沿著坐標軸正方向討論函數的變化率,那么當我們討論函數沿任意方向的變化率時,也就引出了方向導數的定義,即某一點在某個趨近方向上的導數值.
通俗的解釋:
?我們不僅要知道函數在坐標軸正方向上的變化率(即偏導數),而且還需要知道設法求得函數在其他特定方向上的變化率,而方向導數就是函數在其他特定方向上的變化率.
?特定方向:方向導數中畫黑線的就是一個方向,上圖定義的就是函數某點在l方向的方向導數.而
就是這個點沿著l方向,分別在x0軸,x1軸…xn軸方向的增量.
5導數與梯度
梯度的定義如下:
梯度的提出只為回答一個問題:
函數在變量空間的某一點處,沿著哪一方向有最大的變化率?
梯度的定義如下:
?函數在某一點的梯度是這樣一個向量,它的方向與其取得最大方向導數的方向一致,而它的模為這個點方向導數的最大值.
這里注意三個點:
?梯度是一個向量,即有方向有大小
?梯度的方向是最大方向導數的方向
?梯度的值是最大方向導數的值
知道了函數在這個點的梯度,就相當于知道函數在這個點方向導數最大值的方向,沿著這個方向的負方向最大化的減小函數.梯度下降法就是用的這個原理.
6 導數與向量
提問:導數,偏導數,方向導數是向量么?
向量的定義是有方向,有大小的量
從前面的定義可以這樣看出,偏導數與方向導數描述是函數在某一點沿著某個方向的變化率,也就是具有方向和大小的.因此從這個角度來理解,我們可以把偏導數與方向導數看成一個向量,向量的方向就是變化率的方向,向量的模,就是變化率的大小
沿著這一思路來理解梯度:
梯度即函數在某一點最大的方向導數,函數沿著梯度方向函數有最大的變化率
7 梯度下降法
既然在變量空間的某一點處,函數沿梯度方向有最大的變化率,那么在優化目標函數的時候,自然是沿著負梯度方向去減小函數值,以此達到我們的優化目的.
如何沿著負梯度方向減小函數值呢?
同時梯度與偏導數都是向量,那么參考向量運算法則,我們在每個變量軸上減小對應變量值即可,梯度下降法可以描述如下:
對這里的理解:
此時函數f(x)在某一點處確定它的梯度,此時函數如果沿著梯度方向的負方向下降,學習步長為α(通常為0.1或0.01),函數值的下降是最快的.而右邊α與各軸偏導數的乘積可以看做f(x)沿著梯度負方向下降時,對應各軸的增量(增量導致x0…xn的變化必然會導致損失函數取值的減小).當下降到另一點時,需要重新計算當前點的梯度與再次迭代此函數值的變化,所以需要一個repeat的過程.從而找到函數f(x)的最小值.
取函數在某一點的負梯度方向來降低函數值:如圖所示
8 梯度下降法與機器學習
?上文提到的函數就可以理解為機器學習中的損失函數/目標函數.自變量x1,x2…xn就可以理解為損失函數中需要優化的參數,通過不斷的優化參數(更新x1,x2…xn),找到損失函數最小的那個點.
?自變量xi有時候與特征相對應,有時候與別的對應,具體要看損失函數是怎么定義的.
9 梯度下降法的缺點
1 靠近極小值時收斂速度減慢
2 直線搜索時可能會產生一些問題
3 可能會”之字形”地下降
10 補充:向量函數求導的問題
首先,向量求導只是矩陣求導的一個特例而已.
10.1對標量求導
1.向量對標量求導,結果是個向量
事實上就是向量的每一個元素對標量求導,舉個例子對于y(x)=(y1,…,yn),其中x是個標量:
2.矩陣對標量求導,結果是個矩陣
事實上也就是矩陣的每一個元素對標量求導.對于矩陣Y(x)=(yij):
10.2對向量求導
1.標量對向量求導,結果是向量
事實上這就是所謂的Gradient,即對于一般標量函數f(x),其中x=(x1,…,xn):
,有時候也記為▽f
以上的向量同時指代行向量與列向量
2.向量對向量求導,結果是矩陣
行向量對列向量求導:
列向量對行向量求導:
行向量對行向量求導:
所以結果向量中的每一個元素都是一個向量對標簽求導
列向量對列向量求導:
相當于結果向量中的每一個元素都是一個梯度.
3.矩陣對向量求導,結果是個三維object,先來個gradient,然后其中每個元素都是個matrix.
總結
以上是生活随笔為你收集整理的梯度与梯度下降法详解的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AdBoost算法详解
- 下一篇: 线性代数相关知识点回顾