吳恩達深度學習課補充教程:交互式demo助你理解神經網絡初始化

2020-12-16 機器之心Pro

初始化對深度神經網絡的收斂有重要影響。優秀的初始化模式可以加速訓練,但是需要小心操作以避免常見的陷阱。deeplearning.ai 最新上線了 AI Notes 欄目,以長文的形式作為《深度學習專項課程》的補充。其具備交互式的 demo,有助於讀者輕鬆掌握深度學習基礎概念。AI Notes 的第一篇教程就是「初始化神經網絡」。

這篇教程共包括四部分:有效初始化的重要性、梯度爆炸或消失問題、什麼是恰當的初始化,以及 Xavier 初始化的數學證明。

1. 有效初始化的重要性

要想構建一個機器學習算法,通常你需要定義一個架構(如 Logistic 回歸、支持向量機、神經網絡),然後訓練它學習參數。以下是訓練神經網絡的常見過程:

初始化參數選擇優化算法重複以下步驟:將輸入向前傳播計算成本函數使用反向傳播傳遞成本對參數的梯度根據優化算法,基於梯度更新每個參數之後,給出一個新的數據點,你就可以使用該模型預測其類別了。

初始化步驟對模型的最終性能至關重要,它需要正確的方法。下面給出了一個交互式 demo,你可以嘗試使用不同的方法初始化網絡,觀察不同的初始化對網絡學習的影響。

在此 demo 中,可以任意選擇輸入數據集、選擇初始化方法,並實時查看訓練效果。

你注意到當初始化方法為 zero 時,梯度和權重的變化嗎?

用零初始化所有權重,會使得神經元在訓練過程中學習同樣的特徵。

事實上,任意常數初始化方法性能都不好。例如一個具備兩個隱藏單元的神經網絡,假設我們將所有偏置初始化為 0,將所有權重初始化為常量 α。如果我們在網絡中前向傳播輸入 (x_1,x_2),則兩個隱藏單元的輸出均為 relu(α x_1+α x_2)。因此,兩個神經元在訓練過程中的演化是對稱的,也就阻止了不同的神經元學習不同的特徵。

當使用太小或太大的值初始化權重時,成本函數曲線有什麼變化呢?

儘管打破了對稱性,但使用太小或太大的值初始化權重會分別導致學習緩慢或發散。

因此,選擇恰當的初始化值對於高效訓練而言是必要的。

2. 梯度爆炸或消失問題

考慮以下這個 9 層神經網絡:

在優化的每一次迭代中,我們觀察到隨著梯度從輸出層向輸入層傳遞,反向傳播的梯度要麼太大要麼太小。這一結果是合理的,大家不妨考慮以下例子。

假設所有激活函數都是線性(恆等函數),那麼輸出激活如下:

其中,L=10,W^[L] 及其它 W 是 2×2 的矩陣,層 [1] 到 [L-1] 都只有兩個神經元。如果我們假設 W^[1] 到 W^[L-1] 都等於 W,則輸出預測為

(其中 W^L-1 是矩陣 W 的 L-1 次方,W^[L] 表示第 L 個矩陣)。

那麼當初始化值過小、過大或合適時,結果會如何呢?

案例 1:過大初始化值導致梯度爆炸

考慮當每個權重的初始化值都比恆等矩陣略大的情況。

上式可以簡化為

,a^[l] 的值隨著 l 呈指數倍增長。當這些激活值被用於反向傳播時,就會導致梯度爆炸問題。即,成本對參數的梯度過大,導致成本值在其極小值周圍振蕩。

案例 2:過小初始化值導致梯度消失類似地,考慮每個權重的初始化值略小於恆等矩陣的情況。

上式可簡化為

,激活值 a^[l] 隨著 l 呈指數倍下降。當這些激活被用於反向傳播時,會導致梯度消失問題。成本關於參數的梯度過小,導致成本在到達極小值之前已經收斂。

總之,用不合適的值進行權重初始化會導致神經網絡訓練發散或速度緩慢。雖然我們用簡單的對稱權重矩陣說明梯度爆炸和梯度消失問題,但這一觀察也適用於任意過大或過小的初始化值。

3. 如何找到合適的初始化值

為了阻止梯度爆炸或消失,我們需要堅持以下規則:

激活值的均值應為零。每一層激活值的方差應該保持一致。在這兩個假設下,反向傳播的梯度信號就不會在任意層中被過小或過大的值相乘,從而在不出現梯度爆炸或消失等問題。

具體來說,想像一個層 l,其前向傳播是:

我們需要遵循下式:

確保零均值,保持每一層的輸入方差值不變,從而確保不會出現梯度爆炸和消失問題。該方法適用於前向傳播和反向傳播。推薦使用 Xavier 初始化方法(或其變體),對於每一個層 l:

也就是說,層 l 的所有權重是從正態分布中隨機選取的,該分布的均值 μ=0,方差

,其中 n^[l-1] 是層 l-1 中的神經元數量。偏置被初始化為 0。

下面的交互式圖展示了 Xavier 初始化對每一層激活的影響,下圖展示的是一個五層的全連接神經網絡。

在此交互式圖中,你可以加載 MNIST 數據集,選擇初始化方法,執行訓練並觀察不同初始化方法的效果。

Xavier 初始化的數學證明

Xavier 初始化保持每一層的方差不變。我們假設每一層的激活值是圍繞 0 的正態分布。有時理解數學證明有助於掌握概念,但沒有數學也可以理解基礎理念。我們使用第 3 部分介紹的層 l,假設其激活函數為 tanh。其前向傳播如下所示:

我們目標是推導出 Var(a^[l-1]) 和 Var(a^[l]) 之間的關係。然後我們將理解如何初始化權重,使得 Var(a^[l-1]) = Var(a^[l])。

假設我們使用合適的值初始化網絡,且輸入是經過歸一化的。在訓練的早期,我們處於 tanh 的線性模式。值足夠小,使 tanh(z^[l]) ≈ z^[l],這意味著:

此外,

,其中

。出於簡潔性考慮,我們假設 b^[l] = 0。因此,逐元素查看前面的公式 Var(a^[l-1]) = Var(a^[l]) 可以得到:

一個常見的數學 trick 是在方差之外求和。為此,我們必須遵循以下三個假設:

權重獨立,且同分布;輸入獨立,且同分布;權重和輸入互相獨立。從而得到:

另一個常見的數學 trick 是將積的方差轉化為方差的積,公式如下:

使用該公式,以及

,得到:

快完成了!第一個假設引出

,第二個假設引出

,因為權重是使用零均值進行初始化的,輸入是經過歸一化的。從而得到:

第一個假設表明:

第二個假設引出:

它們都具備同樣的思想:

組合起來,得到:

完成了!如果我們想要各個層的方差保持一致

,我們需要

。這證明了 Xavier 初始化的方差選擇。

注意,在之前的步驟裡,我們沒有選擇特定層 l。因此,我們證明了該公式適用於所有層。假設 L 是輸出層。在每一層使用該公式,則我們可以將輸出層的方差推導至輸入層的方差:

根據我們的權重初始化方式,輸出和輸入層方差之間的關係將會變化巨大。注意以下三種情況:

因此,為了避免前向傳播信號的消失或爆炸,我們必須通過初始化

,使 n^[l1]Var(W^[l])=1。

通過以上證明,我們研究了在前向傳播過程中計算的激活值。同樣的結果也適用於反向傳播梯度。同理,為了避免梯度爆炸或消失,我們必須通過初始化

,使 n^[l]Var(W^[l])=1。

結論

在實踐中,機器學習工程師使用 Xavier 初始化時,要麼將權重初始化為

。後一個分布的方差項是

的均值。

以上是 Xavier 初始化的理論證明。Xavier 初始化使用的是 tanh 激活函數。此外還有大量初始化方法。如果你使用 ReLU 激活函數,那麼常用的初始化方法是 He 初始化。He 初始化的理論證明要更複雜一些,但它遵循同樣的思維過程。

原文連結:http://www.deeplearning.ai/ai-notes/initialization/

相關焦點

  • 吳恩達深度學習課最新補充教程:交互式demo助你輕鬆理解神經網絡初始化
    初始化對深度神經網絡的收斂有重要影響。優秀的初始化模式可以加速訓練,但是需要小心操作以避免常見的陷阱。
  • 吳恩達深度學習課程:神經網絡和深度學習[中英文字幕+ppt課件]
    此課程廣受好評,通過視頻講解、作業與測驗等讓更多的人對人工智慧有了了解與啟蒙,國外媒體報導稱:吳恩達這次深度學習課程是迄今為止,最全面、系統和容易獲取的深度學習課程,堪稱普通人的人工智慧第一課。第一周  深度學習概論:學習驅動神經網絡興起的主要技術趨勢,了解現今深度學習在哪裡應用、如何應用。
  • 深度學習入門必看---吳恩達深度學習課程
    吳恩達課程簡介:課程總共分為5個部分:卷積網絡和深度學習,改善深層神經網絡,結構化機器學習項目,卷積神經網絡,序列模型。在五門課程中,將學習深度學習的基礎知識,了解如何構建神經網絡,並學習如何實踐機器學習項目,學習卷積網絡,RNN,LSTM,Adam,Dropout,BatchNorm,Xavier/He初始化等等。同時可以了解醫療,自動駕駛,手語閱讀,音樂創作和自然語言處理的案例研究,掌握深度學習的基礎理論,還會看到它在工業中的應用。課程的內容都將在Python和TensorFlow的練習中所實現。
  • 吳恩達斯坦福CS230深度學習課程補充資料放出
    大數據文摘出品還記的吳恩達在斯坦福最新的深度學習課程麼?那是繼deeplearning.ai深度學習專項課程之後吳恩達的又一神作。課程助教課程涉及深度學習的基礎知識、神經網絡構建,以及如何完成一個成功的機器學習項目。
  • 資源 | 吳恩達斯坦福CS230深度學習課程補充資料放出
    那是繼deeplearning.ai深度學習專項課程之後吳恩達的又一神作。課程助教課程涉及深度學習的基礎知識、神經網絡構建,以及如何完成一個成功的機器學習項目。具體將涉及卷積網絡,RNNs,LSTM,Adam,Dropout,BatchNorm,Xavier / He初始化等,還提供醫療,自動駕駛,手語閱讀,音樂創作和自然語言處理等多領域的案例研究。
  • 吳恩達深度學習筆記(37)-神經網絡的權重初始化再解析
    神經網絡的權重初始化(Weight Initialization for Deep NetworksVanishing / Exploding gradients)上節課,我們學習了深度神經網絡如何產生梯度消失和梯度爆炸問題,最終針對該問題,我們想出了一個不完整的解決方案,雖然不能徹底解決問題,卻很有用,有助於我們為神經網絡更謹慎地選擇隨機初始化參數
  • 資源連結|深度學習教程資源整理(伯克利、斯坦福、MIT、阿里、吳恩達)
    近日,麻省理工學院(MIT)正式開源了在線介紹性課程「MIT 6.S191:深度學習入門」。該課程包括一系列有關神經網絡及其在序列建模、計算機視覺、生成模型和強化學習等方面的基本應用知識。 阿里發布免費深度學習課程:從感知機開始說起課程地址:https://tianchi.aliyun.com/markets/tianchi/aiacademy在今天的 2018 雲棲大會·上海峰會上,阿里巴巴發布了免費的天池深度學習課程,涵蓋了神經網絡基礎、CNN、RNN、遞歸網絡、強化學習以及
  • 學完吳恩達全部深度學習課程,這有一份課程解讀
    目前 Coursera 上可用的課程中,有三門課非常值得關注:1. 神經網絡與深度學習(Neural Networks and Deep Learning)2.學習這些課程的基礎知識要求不多,只要求你事先掌握一些線性代數,以及 Python 基礎編程知識。在我看來,你也需要了解向量計算來理解優化過程的內在知識。但如果你不關心內部運作方式,並只希望了解高級層面上的內容,那就儘管跳過微積分的部分。第 1 課:為什麼深度學習如此熱門?
  • 被吳恩達新開的深度學習課程刷屏?我們幫你做測評
    「深度學習的基礎,明白如何建立神經網絡,學習如何做一項成功的機器學習項目。你會學到關於卷積網絡、循環神經網絡、長短時記憶網絡、Adam、Dropout、BatchNorm、Xavier/He 初始化等知識。
  • 票圈被吳恩達新開的深度學習課程刷屏?到底如何,我們幫你做了個測評
    你會學到關於卷積網絡、循環神經網絡、長短時記憶網絡、Adam、Dropout、BatchNorm、Xavier/He 初始化等知識。你會做有關醫療、自動駕駛汽車、閱讀手語、生成音樂和自然語言處理等的案例,你不僅能掌握理論知識,還能夠學到如何在Python和TensorFlow上將它們應用到各個行業當中。你也可以聽到很多頂尖深度學習專家講的課程,他們會分享個人經歷,並給你一些職業建議。」
  • 資源 | 吳恩達斯坦福CS230深度學習課程全套資料放出(附下載)
    上次整理了關於吳恩達新書,教你構建機器學習項目:《Machine Learning Yearning》,大家想獲取的可以直接在公眾號後臺回複數字「22」查看獲取方式!最近吳恩達在斯坦福又開了一門學分課,這門課涉及到深度學習的基礎知識、神經網絡構建,以及如何完成一個成功的機器學習項目。
  • 吳恩達深度學習又開新課啦!
    最近,吳恩達在史丹福大學又開設了高質量的深度學習課程 CS230。這門課的主頁是:https://web.stanford.edu/class/cs230/關於這門課的描述為:深度學習是 AI 領域最受歡迎的技能之一。我們將幫助你學好深度學習。
  • 吳恩達更新了!深度學習系列課程第5課放出,全劇終
    至此,吳恩達的深度學習系列課程完整發布,各位同學可以放心開始上課了。圖:Coursera的練習平臺有了第五課「Sequence Models」裡面關於NLP的內容,吳恩達終於把深度學習系列的內容拼全了。
  • 吳恩達授課,斯坦福CS230深度學習課程資源開放
    你將學到深度學習的基礎,理解如何構建神經網絡,並學習如何帶領成功的機器學習項目。你將學到卷積神經網絡(CNN)、循環神經網絡(RNN)、長短期記憶網絡(LSTM)、Adam 優化器、Dropout 方法、BatchNorm 方法、Xavier/He 初始化方法等。你將在醫療、自動駕駛、手語識別、音樂生成和自然語言處理等領域中進行案例研究。你不僅能掌握理論,還能看到深度學習如何應用到產業中。
  • 吳恩達深度學習課程上線網易雲課堂
    人工智慧 IT&網際網路這門課將為你介紹深度學習的基礎知識。學完這門課,你將能夠:理解驅動深度學習的主要技術趨勢。能夠搭建、訓練並且運用全連接的深層神經網絡。了解如何實現高效的(向量化)的神經網絡。理解神經網絡架構中的關鍵參數。
  • 把吳恩達深度學習系列課程畫出來是這個樣子
    你會聽到很多深度學習領域頂級領導者的分享,他們會講述自己的故事,向你提供職業建議。以下是本次吳恩達即將開啟的在線深度學習專項課程的詳細介紹(選自AI科技大本營)。學習完本課程,您將:·        理解推動深度學習的主要技術趨勢·        能夠構建、訓練和應用全連接深度神經網絡·        知道如何實現高效(矢量化)神經網絡·        了解神經網絡架構中的關鍵參數本課程還會帶你了解深度學習事實上的運作機制,而非僅提供粗略或表層的描述。
  • 下載量過百萬的吳恩達機器學習和深度學習筆記更新了!(附PDF下載)
    (作者:黃海廣)0.導語我和同學將吳恩達老師機器學習和深度學習課程筆記做成了列印版,放在github上,下載後可以列印。筆記基於課程視頻和字幕製作。感謝吳恩達老師為廣大愛好者提供如此實用的教程!2018-4-28 公布了深度學習筆記的word和markdown文件!目前僅在github渠道,累計下載超過了100萬次!
  • 在等吳恩達深度學習第5課的時候,你可以先看看第4課的筆記
    大數據文摘作品編譯:黨曉芊、元元、龍牧雪等待吳恩達放出深度學習第5課的時候,你還能做什麼?今天,大數據文摘給大家帶來了加拿大銀行首席分析師Ryan Shrott的吳恩達深度學習第4課學習筆記,一共11個要點。在等待第5門課推出的同時,趕緊學起來吧!
  • 吳恩達談百度深度學習:為什麼要建中文神經網絡
    Medium作者Caleb Garling在吳恩達結束了舊金山的深度學習峰會後,與進行了一次訪談。在大會上吳恩達受到了一大群仰慕他的計算機科學家的訪問。他他們的想法是,如果你反饋給一臺電腦很多圖像,比方說一隻狗的圖像,計算機最終將學會如何識別犬類。如果我們可以教會機器這麼做,機器將很快能真正的擁有人的感觀——理解語言和圖像。吳恩達和Caleb Garling談論了他帶領百度在深度學習中面臨的挑戰,他強調,百度只對可以影響 1 億用戶的技術有興趣。其本人十分友好溫和,是那種說起話來你不好意思打斷他的人。
  • 入門 | 吳恩達Deeplearning.ai 全部課程學習心得分享
    目前 Coursera 上可用的課程中,有三門課非常值得關注:1. 神經網絡與深度學習(Neural Networks and Deep Learning)2.學習這些課程的基礎知識要求不多,只要求你事先掌握一些線性代數,以及 Python 基礎編程知識。在我看來,你也需要了解向量計算來理解優化過程的內在知識。但如果你不關心內部運作方式,並只希望了解高級層面上的內容,儘管跳過微積分的部分。第 1 課:為什麼深度學習如此熱門?現在人類產生的 90% 數據是在最近 2 年內被收集的。