1. 程式人生 > >100天搞定機器學習|day37 無公式理解反向傳播演算法之精髓

100天搞定機器學習|day37 無公式理解反向傳播演算法之精髓

 100天搞定機器學習(Day1-34)

100天搞定機器學習|Day35 深度學習之神經網路的結構

100天搞定機器學習|Day36 深度學習之梯度下降演算法

本篇為100天搞定機器學習之第37天,亦為3Blue1Brown《深度學習之反向傳播演算法》學習筆記。

上集提到我們要找到特定權重和偏置,從而使代價函式最小化,我們需要求得代價函式的負梯度,它告訴我們如何改變連線上的權重偏置,才能讓代價下降的最快。反向傳播演算法是用來求這個複雜到爆的梯度的。

上一集中提到一點,13000維的梯度向量是難以想象的。換個思路,梯度向量每一項的大小,是在說代價函式對每個引數有多敏感。如下圖,我們可以這樣裡理解,第一個權重對代價函式的影響是是第二個的32倍。

我們先不要管反向傳播演算法這一堆公式,當我們真正理解了這演算法,這裡的每一步就會無比清晰了。

我們來考慮一個還沒有被訓練好的網路。我們並不能直接改動這些啟用值,只能改變權重和偏置值。但記住,我們想要輸出層出現怎樣的變動,還是有用的。我們希望影象的最後分類結果是2,我們期望第3個輸出值變大,其餘輸出值變小,並且變動的大小應該與現在值和目標值之間的差成正比。舉個例子,增大數字2神經元的啟用值,就應該比減少數字8神經元的啟用值來得重要,因為後者已經很接近它的目標了。

進一步,就來關注數字2這個神經元,想讓它的啟用值變大,而這個啟用值是把前一層所有啟用值的加權和加上偏置值。要增加啟用值,我們有3條路可以走,一增加偏置,二增加權重,或者三改變上一層的啟用值。先來看如何調整權重,各個權重它們的影響力各不相同,連線前一層最亮的神經元的權重,影響力也最大,因為這些權重與大的啟用值相乘。增大這幾個權重,對最終代價函式造成的影響,就比增大連線黯淡神經元的權重所造成的影響,要大上好多倍。

請記住,說到梯度下降的時候,我們並不只看每個引數是增大還是變小,我們還看改變哪個引數的價效比最大。

第三個可以增加神經元啟用值的方法是改變前一層的啟用值,如果所有正權重連結的神經元更亮,所有負權重連結的神經元更暗的話,那麼數字2的神經元就會更強烈的激發。我們也要依據對應權重的大小,對啟用值做成比例的改變,我們並不能直接改變啟用值,僅對最後一層來說,記住我們期待的變化也是有幫助的。

不過別忘了,從全域性上看,只只不過是數字2的神經元所期待的變化,我們還需要最後一層其餘的每個輸出神經元,對於如何改變倒數第二層都有各自的想法。

我們會把數字2神經元的期待,和別的輸出神經元的期待全部加起來,作為如何改變倒數第二層的指示。這些期待變化不僅是對應的權重的倍數,也是每個神經元啟用值改變數的倍數。

這其實就是在實現反向傳播的理念了,我們把所有期待的改變加起來,得到一串對倒數第二層改動的變化量,然後重複這個過程,改變倒數第二層神經元啟用值的相關引數,一直迴圈到第一層。我們對其他的訓練樣本,同樣的過一遍反向傳播,記錄下每個樣本想怎樣修改權重和偏置,最後再去一個平均值。

這裡一系列的權重偏置的平均微調大小,不嚴格地說,就是代價函式的負梯度,至少是其標量的倍數。神奇吧?

如果梯度下降的每一步都用上每一個訓練樣本計算的話,那麼花費的時間就太長了。實際操作中,我們一般這樣做:首先把訓練樣本打亂,然後分成很多組minibatch,每個minibatch就當包含了100個訓練樣本好了。然後你算出這個minibatch下降的一步,這不是代價函式真正的梯度,然而每個minibatch會給一個不錯的近似,計算量會減輕不少。

可以這樣比喻:沿代價函式表面下山,minibatch方法就像醉漢漫無目的的溜下山,但是速度很快。而之前的方法就像細緻入微的人,事先準確的算好了下山的方向,然後謹小慎微的慢慢走。

這就是隨機梯度下降

總結一下:反向傳播演算法算的是單個訓練樣本怎樣改變權重和偏置,不僅說每個引數應該變大還是變小,還包括這些變化的比例是多大才能最快地降低cost。真正的梯度下降,對好幾萬個訓練範例都這樣操作,然後對這些變化取平均值,這樣計算太慢了,我們要把所有樣本分到各個minibatch中,計算每個minibatch梯度,調整引數,不斷迴圈,最終收斂到cost function的區域性最小值上。理解是一回事,如何表示出來又是另一回事,下一期,我們一起將反向傳播演算法用微積分的形式推匯出來,敬請期待!

相關推薦

100機器學習|day37 公式理解反向傳播演算法精髓

 100天搞定機器學習(Day1-34) 100天搞定機器學習|Day35 深度學習之神經網路的結構 100天搞定機器學習|Day36 深度學習之梯度下降演算法 本篇為100天搞定機器學習之第37天,亦為3Blue1Brown《深度學習之反向傳播演算法》學習筆記。 上集提到我們

100機器學習|Day3多元線性迴歸

前情回顧 第二天100天搞定機器學習|Day2簡單線性迴歸分析,我們學習了簡單線性迴歸分析,這個模型非常簡單,很容易理解。實現方

100機器學習|Day4-6 邏輯迴歸

邏輯迴歸avik-jain介紹的不是特別詳細,下面再嘮叨一遍這個演算法。 1.模型 在分類問題中,比如判斷郵件是否為垃圾郵件,判斷

100機器學習|Day15 樸素貝葉斯

Day15,開始學習樸素貝葉斯,先了解一下貝爺,以示敬意。 托馬斯·貝葉斯 (Thomas Bayes),英國神學家、數學家、數理統計學家和哲學家,1702年出生於英國倫敦,做過神甫;1742年成為英國皇家學會會員;1763年4月7日逝世。貝葉斯曾是對概率論與統計的早期發展有重大影響的兩位(貝葉斯和布萊斯·帕

100機器學習|Day17-18 神奇的邏輯迴歸

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day23-25 決策樹及Python實現

演算法部分不再細講,之前發過很多: 【算法系列】決策樹 決策樹(Decision Tree)ID3演算法 決策樹(Decision Tree)C4.5演算法 決策樹(Decision Tree)CART演算法 ID3、C4.5、CART三種決策樹的區別 實驗: 匯入需要用到的python庫 import

100機器學習|Day 30-32 微積分的本質

3blue1brown系列課程,精美的動畫,配上生動的講解,非常適合幫助建立數學的形象思維,非常值得反覆觀看: http://www.3blue1brown.com/ 嗶哩嗶哩: https://space.bilibili.com/88461692 作者還把製作視訊的用到的程式碼放到了 github

100機器學習|Day33-34 隨機森林

前情回顧 機器學習100天|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9

100機器學習|Day35 深度學習神經網路的結構

100天搞定機器學習|Day1資料預處理 100天搞定機器學習|Day2簡單線性迴歸分析 100天搞定機器學習|Day3多元線性迴歸 100天搞定機器學習|Day4-6 邏輯迴歸 100天搞定機器學習|Day7 K-NN 100天搞定機器學習|Day8 邏輯迴歸的數學原理 100天搞定機器學習|Day9-12

100機器學習|Day36用有趣的方式解釋梯度下降演算法

本文為3Blue1Brown神經網路課程講解第二部分《Gradient descent, how neural networks learn 》的學習筆記,觀看地址:www.bilibili.com/video/av16144388前文我們已經搭建了一個包含兩個隱藏層的神經網路,我們需要這樣一種演算法:網路得

100機器學習|day38 反向傳播演算法推導

往期回顧 100天搞定機器學習|(Day1-36) 100天搞定機器學習|Day37無公式理解反向傳播演算法之精髓 上集我們學習了反向傳播演算法的原理,今天我們深入講解其中的微積分理論,展示在機器學習中,怎麼理解鏈式法則。 我們從一個最簡單的網路講起,每層只有一個神經元,圖上這個網路就是由三個權重

100機器學習|day39 Tensorflow Keras手寫數字識別

提示:建議先看day36-38的內容 TensorFlow™ 是一個採用資料流圖(data flow graphs),用於數值計算的開源軟體庫。節點(Nodes)在圖中表示數學操作,圖中的線(edges)則表示在節點間相互聯絡的多維資料陣列,即張量(tensor)。它靈活的架構讓你可以在多種平臺上展開計算,

100機器學習|day40-42 Tensorflow Keras識別貓狗

100天搞定機器學習|1-38天 100天搞定機器學習|day39 Tensorflow Keras手寫數字識別 前文我們用keras的Sequential 模型實現mnist手寫數字識別,準確率0.9713。今天我們完成day40-42的課程,實現貓、狗的識別。 本文資料集下載地址 https://down

100機器學習|day43 幾張GIF理解K-均值聚類原理

前文推薦 如何正確使用「K均值聚類」? KMeans演算法是典型的基於距離的聚類演算法,採用距離作為相似性的評價指標,即認為兩個物件的距離越近,其相似度就越大。該演算法認為簇是由距離靠近的物件組成的,因此把得到緊湊且獨立的簇作為最終目標。 K個初始聚類中心點的選取對聚類結果具有較大的影響,因為在該演算法第一步

100機器學習|Day56 隨機森林工作原理及調參實戰(信用卡欺詐預測)

本文是對100天搞定機器學習|Day33-34 隨機森林的補充 前文對隨機森林的概念、工作原理、使用方法做了簡單介紹,並提供了分類和迴歸的例項。 本期我們重點講一下: 1、整合學習、Bagging和隨機森林概念及相互關係 2、隨機森林引數解釋及設定建議 3、隨機森林模型調參實戰 4、隨機森林模型優缺點總結 整

從0到1 | 0基礎/轉行如何用3個月機器學習

寫這篇文章的初衷是現在好多朋友都想了解如何入門/轉行機器學習,搭上人工智慧這列二十一世紀的快車。再加上這個問題每隔一陣子就會有人提及,因此想寫篇文章來個一勞永逸。 文章的宗旨: 指出學習中的一些誤區 提供客觀可行的學習表 給出進階學習的建議 目標讀者是: 零基礎,對人工智慧感興趣的讀者 有基

機器學習PPT筆記-1

Introduction of Deep Learning some introductions Machine Learning is close to Looking for a Function The model is a set of fun

機器學習筆記(1) 感知機演算法 實戰篇

我們在上篇筆記中介紹了感知機的理論知識,討論了感知機的由來、工作原理、求解策略、收斂性。這篇筆記中,我們親自動手寫程式碼,使用感知機演算法解決實際問題。 先從一個最簡單的問題開始,用感知機演算法解決OR邏輯的分類。 import numpy as np import matplotlib.pyplot as

編程學習第一步,讓你20Python編程

目標 如何解決 從零學習 人工 參考 每次 遇到的問題 批量上傳 智能 大家好,歡迎大家閱讀篇文章,Python是當前火爆的編程語言之一;從後臺開發到自動化,從數據分析到人工智能,都有Python的身影。我們掌握Python,就有了進入這些行業的可能。下面簡單介紹下老貓和這

懂“深度學習”之一:機器學習

一般來說,人工智慧、機器學習和深度學習是相互關聯的:“深度學習是一種機器學習,而機器學習是一種人工智慧。” 機器學習指的是人工智慧的特定領域,即,機器學習表示人工智慧的特定技術組成。機器學習是一種從“資料”中找出“模型”的技術。 深度學習是機器學習的一種技術。 深度學習近年來備受