吳恩達深度學習筆記(12)-計算圖計算梯度下降

2021-01-08 百家號

邏輯回歸中的梯度下降(Logistic Regression Gradient Descent)

本節我們討論怎樣通過計算偏導數來實現邏輯回歸的梯度下降算法。

它的關鍵點是幾個重要公式,其作用是用來實現邏輯回歸中梯度下降算法。

但是在本節中,將使用計算圖對梯度下降算法進行計算。必須要承認的是,使用計算圖來計算邏輯回歸的梯度下降算法有點大材小用了。但是,以這個例子作為開始來講解,可以使你更好的理解背後的思想。從而在討論神經網絡時,你可以更深刻而全面地理解神經網絡。

接下來讓我們開始學習邏輯回歸的梯度下降算法。

假設樣本只有兩個特徵x_1和x_2,為了計算z,我們需要輸入參數w_1、w_2 和b,除此之外還有特徵值x_1和x_2。因此z的計算公式為: z=w_1 x_1+w_2 x_2+b

回想一下邏輯回歸的公式定義如下:

^y=a=σ(z) 其中z=w^T x+b , σ(z)=1/(1+e^(-z) )

損失函數:

代價函數:

假設現在只考慮單個樣本的情況,單個樣本的代價函數定義如下:

其中a是邏輯回歸的輸出,y是樣本的標籤值。

現在讓我們畫出表示這個計算的計算圖。 這裡先複習下梯度下降法,w和b的修正量可以表達如下:

如圖:在這個公式的外側畫上長方形。

然後計算: ^y=a=σ(z) 也就是計算圖的下一步。最後計算損失函數L(a,y)。

有了計算圖,我就不需要再寫出公式了。

因此,為了使得邏輯回歸中最小化代價函數L(a,y),我們需要做的僅僅是修改參數w和b的值。前面我們已經講解了如何在單個訓練樣本上計算代價函數的前向步驟。

現在讓我們來討論通過反向計算出導數。 因為我們想要計算出的代價函數L(a,y)的導數,首先我們需要反向計算出代價函數L(a,y)關於a的導數,在編寫代碼時,你只需要用da 來表示(dL(a,y))/da 。

通過微積分得到:

如果你不熟悉微積分,也不必太擔心,我會列出本課程涉及的所有求導公式。那麼如果你非常熟悉微積分,我們鼓勵你主動推導前面介紹的代價函數的求導公式,使用微積分直接求出L(a,y)關於變量a的導數。如果你不太了解微積分,也不用太擔心。現在我們已經計算出da,也就是最終輸出結果的導數。 現在可以再反向一步,在編寫Python代碼時,你只需要用dz來表示代價函數L關於z 的導數dL/dz,也可以寫成(dL(a,y))/dz,這兩種寫法都是正確的。 dL/dz=a-y 。

因為

並且da/dz=a(1-a), 而

因此將這兩項相乘

為了簡化推導過程,假設n_x這個推導的過程就是我之前提到過的鏈式法則。

如果你對微積分熟悉,放心地去推導整個求導過程,如果不熟悉微積分,你只需要知道dz=(a-y)已經計算好了。

現在進行最後一步反向推導,也就是計算w和b變化對代價函數L的影響,特別地,可以用:

視頻中, dw_1 表示L/(w_1 )=x_1dz, dw_2 表示L/(w_2 )=x_2dz, db=dz。

因此,關於單個樣本的梯度下降算法,你所需要做的就是如下的事情:

使用公式dz=(a-y)計算dz,

使用

dw_1=x_1dz 計算dw_1,

dw_2=x_2dz計算dw_2,

db=dz 來計算db,

然後:

更新w_1=w_1-adw_1,

更新w_2=w_2-adw_2,

更新b=b-αdb。

這就是關於單個樣本實例的梯度下降算法中參數更新一次的步驟。

現在你已經知道了怎樣計算導數,並且實現針對單個訓練樣本的邏輯回歸的梯度下降算法。但是,訓練邏輯回歸模型不僅僅只有一個訓練樣本,而是有m個訓練樣本的整個訓練集。

因此在下一個筆記中,我們將這些思想應用到整個訓練樣本集中,而不僅僅只是單個樣本上。

相關焦點

  • 吳恩達深度學習筆記(13)-多樣本梯度下降和向量化處理多批次數據
    m 個樣本的梯度下降(Gradient Descent on m Examples)在之前的筆記中,已經講述了如何計算導數,以及應用梯度下降在邏輯回歸的一個訓練樣本上。現在我們想要把它應用在m個訓練樣本上。首先,讓我們時刻記住有關於損失函數就J(w,b) 的定義。
  • 302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼
    近日,來自重慶大學的 Wan Zhen 製作了一份深度學習專項課程筆記,該筆記從神經網絡與深度學習基礎、提升深度神經網絡性能和卷積神經網絡三門課程出發詳細解釋了關鍵概念與作業代碼。本文概括性地介紹了這三課的主要內容,並選擇每個課程主題比較有意思的知識點進行介紹。
  • 吳恩達授課,斯坦福CS230深度學習課程資源開放
    機器之心整理參與:劉曉坤、雪、思源近日由吳恩達與 Kian Katanforoosh 指導的 CS230(深度學習)課程已經結束並放出了課程資料。這一門課程結合 Coursera 課外教學與課內教學展示了深度學習的基本概念與完整結構,機器之心簡要介紹了該課程及基本內容。
  • 吳恩達機器學習筆記 - 線性回歸、代價函數與梯度下降
    這時代價函數就派上用場了,我們可以用代價函數來計算不同參數所對應的誤差,取誤差最小的那組參數作為訓練的最終結果。代價函數有挺多種形式,線性回歸常用誤差的平方和計算代價:上面的代價函數 Cost Function 的求和公式其實就是高中學習的最小二乘法的平方誤差的計算。
  • 吳恩達deeplearning.ai五項課程完整筆記了解一下?
    自吳恩達發布 deeplearning.ai 課程以來,很多學習者陸續完成了所有專項課程並精心製作了課程筆記,在此過程中機器之心也一直在為讀者推薦優質的筆記。上個月,deep learning.ai 第五課發布,該系列課程最終結課。Mahmoud Badry 在 GitHub 上開源了五項課程的完整筆記,介紹了包括序列模型在內的詳細知識點。
  • 華為深度學習框架MindSpore正式開源:自動微分不止計算圖
    自動微分:不止計算圖自動微分是深度學習框架的靈魂,有了它我們寫模型就只需要關注前向傳播,將所有複雜的求導、反傳過程都留給框架。一般而言,自動微分指一種自動求某個函數其導數的方法。在機器學習中,這些導數可以更新權重。在更廣泛的自然科學中,這些導數也能用於各種後續計算。
  • 深度學習筆記8:利用Tensorflow搭建神經網絡
    作者:魯偉 一個數據科學踐行者的學習日記。
  • 吳恩達深度學習筆記(11)-燒腦神經網絡前向傳播和後向傳播計算
    這篇筆記有點內容多,但是分開講又有點脫節,所以放在一起,希望耐心看!計算圖(Computation Graph)可以說,一個神經網絡的計算,都是按照前向或反向傳播過程組織的。首先我們計算出一個新的網絡的輸出(前向過程),緊接著進行一個反向傳輸操作。後者我們用來計算出對應的梯度或導數。
  • 高效「煉丹」必備技能:一文實現深度學習數學原理入門,還有吳恩達...
    尤其是深度學習算法開發人員,追求模型結構優化和提高編程效率是永遠的目標。但是,如果只做代碼「搬運工」,不了解神經網絡背後的數學原理,很難對項目有深刻全面的理解,debug反而會更難、耗時更長。下面的深度學習數學基礎詳解,以DLP為例,你讀完後會對它的數學基礎有全面的了解,並且熟悉用數學解釋算法的基本思路。除了DLP,文末還一併為你準備了RNN、CNN數學原理,以及吳恩達老師的AI數學基礎課程。一文實現AI數學基礎入門,還在等什麼?
  • 技術| 深度解讀最流行的優化算法:梯度下降
    與此同時,最新的深度學習程序庫都包含了各種優化梯度下降的算法(可以參見如 lasagne、caffe 及 Kera 等程序庫的說明文檔)。但它們的算法則不被公開,都作為黑箱優化器被使用,這也就是為什麼它們的優勢和劣勢往往難以被實際地解釋。 本文旨在讓你對不同的優化梯度下降法的算法有一個直觀認識,以幫助你使用這些算法。
  • 吳恩達深度學習(20)-激活函數的導數和神經網絡的梯度下降
    3)Rectified Linear Unit (ReLU)g(z)=max(0,z)註:通常在z= 0的時候給定其導數1,0;當然z=0的情況很少4)Leaky linear unit (Leaky ReLU)與ReLU類似註:通常在z=0的時候給定其導數1,0.01;當然z=0的情況很少神經網絡的梯度下降
  • 一分鐘看完梯度下降法
    今天,我想講一下梯度下降法(Gradient Descent),基於線性回歸損失函數的梯度下降法。
  • 吳恩達深度學習筆記(34)-你不知道的其他正則化方法
    二.early stopping還有另外一種常用的方法叫作early stopping,運行梯度下降時,我們可以繪製訓練誤差,或只繪製代價函數J的優化過程,在訓練集上用0-1記錄分類誤差次數。呈單調下降趨勢,如圖。
  • 使用Python從頭開始實現深度學習庫
    理解深度學習平臺基本構建基礎的初學者指南。深度學習已在短時間內從簡單的神經網絡演變為非常複雜的架構。為了支持這種快速擴展,在此過程中開發了許多不同的深度學習平臺和庫。這些庫的主要目標之一是提供用於構建和訓練深度學習模型的易於使用的界面,使用戶可以將更多的精力放在手頭的任務上。
  • 深度學習專項課程精煉圖筆記!必備收藏|原力計劃
    作者 | DL&CV_study9責編 | Elle出品 | CSDN 博客本文為人工智慧學習筆記記錄。右下:深度學習能發展起來主要是由於大數據的出現,神經網絡的訓練需要大量的數據;而大數據本身也反過來促進了更大型網絡的出現。深度學習研究的一大突破是新型激活函數的出現,用 ReLU 函數替換sigmoid 函數可以在反向傳播中保持快速的梯度下降過程,sigmoid 函數在正無窮處和負無窮處會出現趨於零的導數,這正是梯度消失導致訓練緩慢甚至失敗的主要原因。
  • 把梯度下降算法變成酷炫遊戲,這有一份深度學習通俗講義
    如果代碼和公式讓你感到枯燥,那麼不妨從這段酷炫的SGD視頻入手,再讀一讀這篇文章,它會幫你更直觀地理解深度學習。梯度下降算法的可視化到底什麼是梯度?深度學習的架構和最新發展,包括CNN、RNN、造出無數假臉的GAN,都離不開梯度下降算法。梯度可以理解成山坡上某一點上升最快的方向,它的反方向就是下降最快的方向。
  • 谷歌剛發布的深度學習動態計算圖工具TensorFlow Fold是什麼?
    可以幫助深度學習開發者根據不同結構的輸入數據建立動態的計算圖(Dynamic Computation Graphs),簡化了模型訓練階段對輸入數據的預處理過程,提升了系統的運行效率。一般而言,大部分的深度學習項目都需要對模型的訓練數據進行一定程度的預處理。在這個過程中,各種不同規模和結構的輸入數據(例如不同解析度的圖片數據)將被裁剪成相同的維度和尺寸,然後被壓入棧,等待模型訓練階段的批處理流程。
  • 深度學習框架太抽象?其實不外乎這五大核心組件
    為了更好地認識深度學習框架,也為了給一些想要自己親手搭建深度學習框架的朋友提供一些基礎性的指導,日前來自蘇黎世聯邦理工學院計算機科學系的碩士研究生Gokula Krishnan Santhanam在博客上撰文,概括了大部分深度學習框架都會包含的五大核心組件,為我們詳細剖析了深度學習框架一般性的內部組織結構。以下由雷鋒網編譯。
  • 清華自研深度學習框架「計圖」開源!多項任務性能超過PyTorch
    剛剛,清華自研的深度學習框架,正式對外開源。「貴系」計算機系的圖形實驗室出品,取名Jittor,中文名計圖。值得一提的是,這也是首個來自中國高校科研機構的開源深度學習框架,之前,業內來自「高校」的還有加拿大蒙特婁大學的Theano,UC伯克利的Caffe。
  • 梯度下降—Python實現
    梯度下降是數據科學的基礎,無論是深度學習還是機器學習。深入了解梯度下降原理一定會對你今後的工作有所幫助。你將真正了解這些超參數的作用以及處理使用此算法可能遇到的問題。然而,梯度下降並不局限於一種算法。另外兩種流行的梯度下降(隨機和小批量梯度下降)建立在主要算法的基礎上,你可能會看到比普通批量梯度下降更多的算法。