轉載自 | PaperWeekly
©PaperWeekly 原創 · 作者|孫裕道
學校|北京郵電大學博士生
研究方向|GAN圖像生成、情緒對抗樣本生成
背景介紹
BP(反向傳播)是有 Geffrey Hinton 在 1988 年發表的論文《Learningrepresentations by back-propagating errors》中首次被提出來。
該論文從題目到內容到參考文獻一共 2 頁半,Hinton 也藉此工作榮獲 2018 年的圖領獎。在深度學習領域,BP 的重要程度在怎麼強調也不為過,本文會從矩陣的視角對 BP 進行詳細推導,為了更好地理解 BP 的工作原理,本文也畫了大量的示意圖幫助理解。
本文的公式經過自己很多次的推導打磨,盡力做到準確無誤,每一張圖也是反覆的捉摸力求精準表達。本文的閱讀難度確實很大,但是因為其重要,我覺得反覆抄寫下面的推導,也會有很多收穫。
引言
在吳恩達的斯坦福機器學習的講義中關於 BP 原理的介紹只給出了最後的 BP 矩陣的推導結果,略去了中間的推導過程。本文會對略去的推導過程進行補全。為了減少閱讀阻礙,BP 矩陣證明過程會從預備知識開始慢慢鋪展開來,其中最難啃的部分就是矩陣形式的鏈式法則。本文文章結構和的各個章節的內容如下:
section 3 是一些預備知識介紹了矩陣求導的細節,如果想要看懂之後的 BP 矩陣推導這部分的兩個小節一定要看明白
section 4 是關於 4 層無激活函數的 BP 推導細節section 5 是關於 L 層無激活函數的 BP 推導細節section 6 是關於 4 層含激活函數的 BP 推導細節section 7 是關於 L 層含激活函數的 BP 推導細節section 8 是對吳恩達機器學習講義中關於 BP 章節結果的驗證
預備知識
3.1 推導形式1
已知,
是標量即 , , , , , 表示向量的 2 範數,將矩陣中各個維度帶入到公式(1)有如下形式:
3.2 推導形式2
是激活函數, 是標量即 , , , , , 表示向量的2範數,將矩陣的各個維度帶入到公式(5)中有如下形式:
▲ 圖1:4層無激活函數的前向傳播過程
圖 1 表示的是 4 層無激活函數神經網絡的前向傳播過程,其中損失函數如下所示:
令 ,根據 section 3 預備知識的推導形式 1 的公式(3),(4)可求得:
令 , , 。又因為 , , ,將公式(10),(11),(12)整理為如下所示:
根據公式(13),(14),(15)將 4 層無激活函數的 BP 原理可以形象地表示為圖 2,其中圖中虛線框表示為各個層權重參數的梯度,可以發現各層的權重參數梯度由前一層網絡的前饋計算值與後一層網絡傳播的誤差信息整合而來。▲ 圖2:4層無激活函數的BP原理圖
L層無激活函數的神經網絡
圖 3 表示的是 L 層無激活函數神經網絡的前向傳播過程,其中損失函數如下所示:根據公式(20)將 L 層無激活函數的 BP 原理可以形象地表示為圖 4 所示:
圖 5 表示的是 4 層含激活函數神經網絡的前向傳播過程,其中損失函數如下所示:令 ,根據 section 3 預備知識的推導形式 2 的公式(7),(8)可求得:
根據公式(25),(26),(27)將 4 層含激活函數的 BP 原理可以形象地表示為圖 6,跟 section4 中的 4 層無激活函數 BP 原理示意圖的差異在於後向傳播的誤差信息需要多乘一個對角矩陣 。
圖 7 表示的是 L 層含激活函數神經網絡的前向傳播過程,其中損失函數如下所示:根據公式(32)將 L 層含激活函數的 BP 原理可以形象地表示為圖8所示:驗證BP矩陣推導
本節主要是對吳恩達機器學習講義中(ML-AndrewNg-Notes: Coursera)關於 BP 原理結論部分的驗證,所以本文的主要目的是驗證吳中的關於 BP 結論與本文的 section 4 之間的結論是否一致。由於符號和表示形式的差異,將吳中關於 BP 原理部分的描述用藍色字體表示(該部分在),將驗證過程用紅色字體表示。
▲ 圖9:吳恩達機器學習講義中的網絡結構
從最後一層的誤差開始計算,誤差是激活單元的預測 與實際值 之間的誤差。用 來表示誤差,則:
其中 是 導數, 是經權重 而導致的誤差。第二層的誤差為:
因為第一層是輸入變量,不存在誤差,有了所有的誤差表達式之後,便可以計算各個層權重的偏導數為:
代表目前所計算的第幾層, 代表目前計算層中的激活單元的下標,也是下一層的第 個輸入變量的下標。 代表下一層中誤差單元的下標,是受到權重矩陣中的第 行影響的下一層中的誤差單元的下標。吳恩達的這個講義中關於 BP 推導中只展示出矩陣推導出的結果,略出了中間證明的部分,其中的證明過程可以類比本文中的 section 6 中證明過程,為了能夠讓驗證 BP 推導過程更清楚,我將吳恩達機器學習講義中的推導符號與本文 section 6 中 4 層含激活函數的神經網絡的符號進行類比如下表所示:
其中, ,對比公式(34)和公式(37)可以很容易的發現這兩個公式是等價的,具體的證明如下:
證明 過程跟證明 方法一致,在此不過多贅述,證畢。綜上所述,我們可以發現講義中的結論與本文中有如下等價關係:
其中, 。對於權重矩陣 的第 i 行和第 j 列元素的偏導數即為:此公式就是講義中最後給出的結果,這也就完美的驗證了我之前的推導是正確的。
下載1:四件套
在機器學習算法與自然語言處理公眾號後臺回復 「四件套」 ,
即可獲取學習TensorFlow,Pytorch,機器學習,深度學習四件套!
下載2:倉庫地址共享
在機器學習算法與自然語言處理公眾號後臺回復 「代碼」 ,
即可獲取195篇NAACL+295篇ACL2019有代碼開源的論文。開源地址如下: https://github.com/yizhen20133868/NLP-Conferences-Code
重磅! 機器學習算法與自然語言處理 交流群 已正式成立 !
群內有大量資源,歡迎大家進群學習!
額外贈送福利資源!深度學習與神經網絡,pytorch官方中文教程,利用Python進行數據分析,機器學習學習筆記,pandas官方文檔中文版,effective java(中文版)等20項福利資源
獲取方式:進入群後 點開群公告即可領取下載連結
注意: 請大家添加時修改備註為 [學校/公司 + 姓名 + 方向]
例如 —— 哈工大+張三+對話系統。
號主,微商請自覺繞道。謝謝!
推薦閱讀:
Tensorflow 的 NCE-Loss 的實現和 word2vec
多模態深度學習綜述:網絡結構設計和模態融合方法匯總
awesome-adversarial-machine-learning資源列表