機器學習中的數學 梯度和梯度下降

2021-09-25 22:00:23 字數 2643 閱讀 3489

機器學習中的大部分問題都是優化問題,而絕大部分優化問題都可以使用梯度下降法處理,那麼搞懂什麼是梯度,什麼是梯度下降法就非常重要!這是基礎中的基礎,也是必須掌握的概念!

提到梯度,就必須從導數(derivative)、偏導數(partial derivative)和方向導數(directional derivative)講起,弄清楚這些概念,才能夠正確理解為什麼在優化問題中使用梯度下降法來優化目標函式,並熟練掌握梯度下降法(gradient descent)。

本文主要記錄我在學習機器學習過程中對梯度概念複習的筆記,主要參考《高等數學》《簡明微積分》以及維基百科上的資料為主,文章小節安排如下:

1)導數

2)導數和偏導數

3)導數與方向導數

4)導數與梯度

5)梯度下降法

6)參考資料

一張圖讀懂導數與微分:

這是高數中的一張經典圖,如果忘記了導數微分的概念,基本看著這張圖就能全部想起來。

導數定義如下:

反映的是函式y=f(x)在某一點處沿x軸正方向的變化率。再強調一遍,是函式f(x)在x軸上某一點處沿著x軸正方向的變化率/變化趨勢。直觀地看,也就是在x軸上某一點處,如果f』(x)>0,說明f(x)的函式值在x點沿x軸正方向是趨於增加的;如果f』(x)<0,說明f(x)的函式值在x點沿x軸正方向是趨於減少的。

這裡補充上圖中的δy、dy等符號的意義及關係如下:

δx:x的變化量;

dx:x的變化量δx趨於0時,則記作微元dx;

δy:δy=f(x0+δx)-f(x0),是函式的增量;

dy:dy=f』(x0)dx,是切線的增量;

當δx→0時,dy與δy都是無窮小,dy是δy的主部,即δy=dy+o(δx).

偏導數的定義如下:

可以看到,導數與偏導數本質是一致的,都是當自變數的變化量趨於0時,函式值的變化量與自變數變化量比值的極限。直觀地說,偏導數也就是函式在某一點上沿座標軸正方向的的變化率。

區別在於:

導數,指的是一元函式中,函式y=f(x)在某一點處沿x軸正方向的變化率;

偏導數,指的是多元函式中,函式y=f(x1,x2,…,xn)在某一點處沿某一座標軸(x1,x2,…,xn)正方向的變化率。

向導數的定義如下:

在前面導數和偏導數的定義中,均是沿座標軸正方向討論函式的變化率。那麼當我們討論函式沿任意方向的變化率時,也就引出了方向導數的定義,即:某一點在某一趨近方向上的導數值。

通俗的解釋是: 我們不僅要知道函式在座標軸正方向上的變化率(即偏導數),而且還要設法求得函式在其他特定方向上的變化率。而方向導數就是函式在其他特定方向上的變化率。

梯度的定義如下:

梯度的提出只為回答乙個問題: 函式在變數空間的某一點處,沿著哪乙個方向有最大的變化率?

梯度定義如下: 函式在某一點的梯度是這樣乙個向量,它的方向與取得最大方向導數的方向一致,而它的模為方向導數的最大值。

這裡注意三點:

1)梯度是乙個向量,即有方向有大小;

2)梯度的方向是最大方向導數的方向;

3)梯度的值是最大方向導數的值。

所以梯度是函式增加最快的方向。

提問:導數與偏導數與方向導數是向量麼?
向量的定義是有方向(direction)有大小(magnitude)的量。

從前面的定義可以這樣看出,偏導數和方向導數表達的是函式在某一點沿某一方向的變化率,也是具有方向和大小的。因此從這個角度來理解,我們也可以把偏導數和方向導數看作是乙個向量,向量的方向就是變化率的方向,向量的模,就是變化率的大小。

那麼沿著這樣一種思路,就可以如下理解梯度: ==梯度即函式在某一點最大的方向導數,函式沿梯度方向函式有最大的變化率。 ==

既然在變數空間的某一點處,函式沿梯度方向具有最大的變化率,那麼在優化目標函式的時候,自然是沿著負梯度方向去減小函式值,以此達到我們的優化目標。

如何沿著負梯度方向減小函式值呢?既然梯度是偏導數的集合,如下:

同時梯度和偏導數都是向量,那麼參考向量運算法則,我們在每個變數軸上減小對應變數值即可,梯度下降法可以描述如下:

以上就是梯度下降法的由來,大部分的機器學習任務,都可以利用gradient descent來進行優化。

《高等數學》

《簡明微積分》

梯度 偏導數

方向導數和梯度

維基百科的可用hosts檔案

機器學習 梯度下降

參照 機器學習 這本書的第4.4.3節。一.解決目標及情景假設 當給定一些資料,輸入x向量已知,輸出y也已知,設計乙個線性函式y h x 去擬合這些資料。既然是線性函式,在此不妨設為h x w0 x0 w1 x1。此時我們遇到的問題就是如何確定w0和w1這兩個引數,即w w0,w1 這個向量。既然是...

機器學習 梯度下降

梯度下降法 如果讀者對方向導數和梯度的定義不太了解,請先閱讀上篇文章 方向導數與梯度 前些時間接觸了機器學習,發現梯度下降法是機器學習裡比較基礎又比較重要的乙個求最小值的演算法。梯度下降演算法過程如下 1 隨機初始值 2 迭代 在這裡,簡單談一下自己對梯度下降法的理解。首先,要明確梯度是乙個向量,是...

機器學習 梯度下降

1.引數要同時更新 2.初始化不同,獲得的最小值也不同,即得到的引數也不同,演算法收斂到不同的區域性最優解。凸函式只有全域性最優解,無論如何初始化,不必擔心陷入區域性最優解 3.越接近最小值時,收斂的速度最逐漸減慢,在學習率不變的情況下,越接近最小值 最優解 偏導數的絕對值會越來越小,所以演算法收斂...