一分鐘看完梯度下降法

2021-02-21 梓峰的算法筆記

今天,我想講一下梯度下降法(Gradient Descent),基於線性回歸損失函數的梯度下降法。

題圖已經非常清晰地表示什麼是梯度下降法。首先,橫軸是 weight(參數),豎軸是 Cost(損失值)。初始一個參數的開始位置,也就是圖右邊的一個大黑點,然後一步一步地往下移動,直到到達曲線底部的一個點,一般叫全局最優解,或者全局最小損失值。

下面,我來說明一下,那個大黑點是如何移動的。

圖一:

看圖一(1),還記得線性回歸方程(線性回歸模型)麼,簡單來說就是熟悉的 「y=kx+b」。只是「k」變成了「w」,指代「weight」;「b」還是自己,指代「bias」,偏差。

看圖一(2),要計算線性回歸方程與實際的(x,y)點是否吻合貼近,就要計算方程的「y」值與實際點「y」值的差值。所以,才有了損失函數(Loss Function)。而且為了求出方程與所有實際點的整體差距,於是把所有的差值開平方求和。因此,才有了對Loss Function求和匯總的損失函數(Cost Function)。

光求出損失函數值是不行的,還需要想辦法把損失函數值儘可能減少。只有不斷減少損失函數值,才能夠提高線性回歸模型「y=kx+b」的預測準確度。

看圖一(3),因此,需要每當求出損失函數後,對其進行求導數。大家都知道,求導數就是求斜率,知道了斜率就知道了函數值的變化方向。

因為,線性回歸模型中的每個參數都需要知道各自的「變化方向」,所以,需要求偏導數。如果不熟悉導數的概念,也沒關係。只需要知道這麼個理就行了,越複雜的模型越難求導,而且很多現有的材料已經給出正確的答案。

看圖一(4),求出導數值後就需要一個「學習率」(Learning Rate)推動損失函數值往下走。學習率一般用「α」來表示。線性回歸模型中的每個參數都會根據學習率與導數值的乘積進行「自我更新」。

圖二:

圖二類似吳恩達機器學習課程版本的梯度下降法表示。大家可以看出,梯度下降法的數學表達式寫法有很多種,但思路都一樣,只是數學符號不同而已。

圖三:

梯度下降法讓所有參數都得以更新,損失函數值朝著全局最優解的方向一步一步移動。在梯度下降的過程中,最經典的就是採用「Batch Gradient Descent」方法更新所有參數,這種方法雖然效率最低,但容易入門。

「Batch Gradient Descent」具體做法:

後面有機會會介紹在實際操作中,「Batch Gradient Descent」用得很少。例如,Sci-kit Learn (sklearn)開發框架默認就不是用它做梯度下降。

圖四:

有時候,不是每個模型都可以到達全局最優解(Global Minimum),也許會到達局部最優解(Local Minimum),例如神經網絡模型。所以,有時候面對這種「人工智障」的場景就需要多次隨機初始化參數值,做多次訓練,觀察損失函數值是否真的人為覺得「足夠小」。

圖五:

學習率設置太大會容易讓損失函數值「逃逸」,模型越學越不像話。但設置太小會讓訓練的過程很漫長,白白浪費計算機運算資源。

至此,三個概念都已經分別說明完畢了,其實機器學習無論怎麼變化都離不開這些基本的概念,就連深度學習也不例外。隨著機器學習的光速發展,模型越來越複雜,人工智慧可以解決的問題越來越多,而且解決得越來越好。我也會緊跟時代的步伐,不斷學習和分享學習成果。

Reference

一分鐘看完假設函數

三分鐘看完損失函數vs損失函數

相關焦點

  • 最清晰的講解各種梯度下降法原理與Dropout
    一、梯度法思想梯度法思想的三要素:出發點、下降方向、下降步長。機器學習中常用的權重更新表達式為:,這裡的λ就是學習率,本文從這個式子出發來把機器學習中的各種「梯度」下降法闡釋清楚。第四、Momentum梯度下降法SGD、BSGD兩種改進方法都存在不同程度的震蕩,如何避免震蕩?或者說震蕩是怎麼產生的?震蕩,從可視圖表現來看,就是頻繁更改方向,所以,如果能夠把之前下降的方向考量進來,那麼將會減少振蕩。上邊第二個圖是帶動量的梯度下降法。
  • 今日面試題分享:牛頓法和梯度下降法有什麼不同?
    關於牛頓法和梯度下降法的效率對比: a)從收斂速度上看 ,牛頓法是二階收斂,梯度下降是一階收斂,前者牛頓法收斂速度更快。但牛頓法仍然是局部算法,只是在局部上看的更細緻,梯度法僅考慮方向,牛頓法不但考慮了方向還兼顧了步子的大小,其對步長的估計使用的是二階逼近。 b)根據wiki上的解釋,從幾何上說,牛頓法就是用一個二次曲面去擬合你當前所處位置的局部曲面,而梯度下降法是用一個平面去擬合當前的局部曲面,通常情況下,二次曲面的擬合會比平面更好,所以牛頓法選擇的下降路徑會更符合真實的最優下降路徑。
  • 梯度下降—Python實現
    梯度下降是數據科學的基礎,無論是深度學習還是機器學習。深入了解梯度下降原理一定會對你今後的工作有所幫助。你將真正了解這些超參數的作用以及處理使用此算法可能遇到的問題。然而,梯度下降並不局限於一種算法。另外兩種流行的梯度下降(隨機和小批量梯度下降)建立在主要算法的基礎上,你可能會看到比普通批量梯度下降更多的算法。
  • 隨機梯度下降法介紹及其參數講解
    算法介紹簡單來說,梯度下降就是從山頂找一條最短的路走到山腳最低的地方。
  • 詳解梯度下降算法 正確訓練模型利刃!
    【IT168 資訊】梯度下降是目前最流行的優化策略,目前用於機器學習和深度學習。它在訓練模型時使用,可以與每種算法結合使用,易於理解和實施。因此,每個使用機器學習的人都應該理解它的概念。閱讀完這篇文章後,你將了解梯度下降是如何工作的,它今天使用了哪些類型,以及它們的優點和權衡。
  • 梯度下降背後的數學原理幾何?
    雷鋒網 AI 科技評論按:對於諸位「機器學習兒」而言,梯度下降這個概念一定不陌生,然而從直觀上來看,梯度下降的複雜性無疑也會讓人「敬而遠之」。本文作者 Suraj Bansal 通過對梯度下降背後的數學原理進行拆解,並配之以簡單的現實案例,以輕鬆而有趣的口吻帶大家深入了解梯度下降這一在機器學習領域至關重要的方法。
  • 技術| 深度解讀最流行的優化算法:梯度下降
    本文旨在讓你對不同的優化梯度下降法的算法有一個直觀認識,以幫助你使用這些算法。我們首先會考察梯度下降法的各種變體,然後會簡要地總結在訓練(神經網絡或是機器學習算法)的過程中可能遇到的挑戰。如果你希望自己寫代碼求出梯度值,那麼「梯度檢查」會是一個不錯的注意。(你可以參考這裡,了解關於如何檢查梯度的相關建議。) 然後,我們對參數減去梯度值乘學習率的值,也就是在反梯度方向,更新我們參數。當目標函數 J(θ) 是一凸函數時,則批量梯度下降法必然會在全局最小值處收斂;否則,目標函數則可能會局部極小值處收斂。
  • 機器學習:隨機梯度下降和批量梯度下降算法介紹
    機器學習:隨機梯度下降和批量梯度下降算法介紹 佚名 發表於 2017-11-28 04:00:28 隨機梯度下降(Stochastic gradient descent)
  • 10個梯度下降優化算法+備忘單
    ∂L/∂w3、或二者兼有且看如下方程1:方程1:隨機梯度下降中的各種量Fig.3 自上而下展示了這些優化算法如何從最簡單的純梯度下降(SGD)演化成Adam的各類變種的。SGD一開始分別往兩個方向演變,一類是AdaGrad,主要是調整學習率(learning rate)。另一類是Momentum,主要調整梯度(gradient)的構成要素(譯註:原文此處寫反了)。
  • 從梯度下降到擬牛頓法:詳解訓練神經網絡的五大學習算法
    梯度下降梯度下降,又稱為最速下降法是一種非常簡單和直觀的訓練算法。該算法從梯度向量中獲取優化信息,因此其為一階算法(通過一階偏導求最優權重)。如果我們指定 f(wi)= fi、f(wi)= gi,那麼該優化方法由點 w0 開始迭代,在滿足終止條件之前,就在訓練方向 di=-gi 上將 wi 移向 wi+1。因此,梯度下降法就是如下方程式進行迭代。
  • 梯度下降算法詳解
    神經網絡中的後向傳播算法其實就是在進行梯度下降,GDBT(梯度提升樹)每增加一個弱學習器(CART回歸樹),近似於進行一次梯度下降,因為每一棵回歸樹的目的都是去擬合此時損失函數的負梯度,這也可以說明為什麼GDBT往往沒XGBoost的效率高,因為它沒辦法擬合真正的負梯度,而Xgboost 的每增加的一個弱學習器是使得損失函數下降最快的解析解。
  • 一文讀懂線性回歸和梯度下降
    這又牽扯到一個概念:梯度下降(Radient Descent)最小均方算法(Least mean square,LMS算法)(對的朋友,你沒有看錯,不是梯度下降,是LMS算法。我們又兩種方式將只有一個樣本的數學表達轉化為樣本為多個的情況:梯度下降(gradient descent)和正則方程(The normal equations)。這裡我們重點講梯度下降。
  • 線性回歸和梯度下降的初學者教程
    這就是為什麼我們需要使用梯度下降。梯度下降是一種找到最佳擬合線的工具。在深入研究梯度下降之前,先看看另一種計算最佳擬合線的方法。最佳擬合線的統計計算方法:直線可以用公式表示:y=mx+b。回歸線斜率m的公式為:m = r * (SD of y / SD of x)。
  • 機器學習 101:一文帶你讀懂梯度下降
    另外,想要培養對複雜項目的直覺,理解基本的概念也是十分關鍵的。  為了理解梯度下降的核心,讓我們來看一個運行的例子。這項任務是這個領域的一項老任務——使用一些歷史數據作為先驗知識來預測房價。 我們的目標是討論梯度下降。所以我們讓這個例子簡單一點,以便我們可以專注於重要的部分。
  • Batch、Mini-batch和隨機梯度下降的區別和Python示例
    在研究機器學習和深度學習時出現的主要問題之一是梯度下降的幾種類型。在梯度下降的三種類型(Batch梯度下降、Mini-batch梯度下降和隨機梯度下降)中,我應該使用哪一種呢?在這篇文章中,我們將了解這些概念之間的區別,並從梯度下降的代碼實現來闡明這些方法。
  • 一文看懂各種神經網絡優化算法:從梯度下降到Adam方法
    原標題:一文看懂各種神經網絡優化算法:從梯度下降到Adam方法 王小新 編譯自 Medium 量子位 出品 | 公眾號 QbitAI 在調整模型更新權重和偏差參數的方式時,你是否考慮過哪種優化算法能使模型產生更好且更快的效果?
  • 機器學習之多元線性回歸模型梯度下降公式與代碼實現(篇二)
    ,我們確定用梯度下降法來計算多元線性模型,當然還有更多計算方式。梯度下降法又稱最速下降法,是求解無約束最優化問題的一種最常用的方法,在對損失函數最小化時經常使用。梯度下降法是一種迭代算法。選取適當的初值x(0),不斷迭代,更新x的值,進行目標函數的極小化,直到收斂。
  • 吳恩達機器學習筆記 - 線性回歸、代價函數與梯度下降
    可以把上面的漁網從下往上看,像個小山頭,下面右圖就相當於山頭的等高線,每個等高線上函數的代價都相同。漁網圖像中(theta_0,theta_1)在漁網的最底部取得,使得代價函數達到最小值;h_theta(x) 圖像中預測的函數曲線對訓練數據的擬合效果達到最優;四、梯度下降算法如何在程序中求代價函數的最小值呢?
  • 吳恩達深度學習筆記(12)-計算圖計算梯度下降
    邏輯回歸中的梯度下降(Logistic Regression Gradient Descent)本節我們討論怎樣通過計算偏導數來實現邏輯回歸的梯度下降算法。它的關鍵點是幾個重要公式,其作用是用來實現邏輯回歸中梯度下降算法。但是在本節中,將使用計算圖對梯度下降算法進行計算。
  • 機器學習 梯度到底是什麼
    梯度,到底是什麼?很容易混淆。站在山底,哪個方向爬坡最快,這個容易想像,但問題是,如果所在的高度是我們優化的目標的話,這個爬坡的方向並不是梯度的方向,這個是我們的目標值(函數值)的變化趨勢。我們先看一下定義:即:梯度是一個向量,而向量就有方向,該方向是方向導數取得最大值的方向,那方向導數是什麼?可見:方向導數是一個數方向指的是函數定義域的內點變化的方向 綜上,自變量沿著該方向變化,使函數值變化最大,機器學習中,函數值就是我們的優化目標。當函數值是損失函數值的時候,我們期望的是最小值,這個時候取梯度的反方向,即梯度下降即可。