當前位置:
首頁 > 新聞 > 302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

吳恩達的 DeepLearning.ai 已經於 1 月 31 日發布了最後一門課程。近日,來自重慶大學的 Wan Zhen 製作了一份深度學習專項課程筆記,該筆記從神經網路與深度學習基礎、提升深度神經網路性能和卷積神經網路三門課程出發詳細解釋了關鍵概念與作業代碼。本文概括性地介紹了這三課的主要內容,並選擇每個課程主題比較有意思的知識點進行介紹。

  • 資源鏈接:https://pan.baidu.com/s/1oAqpmUe 提取密碼(已失效)

在這份筆記中,Wan Zhen 不僅介紹了每個課程的關鍵知識點,同時還詳細解釋了各課程的編程作業。在第一門課程《神經網路與深度學習基礎》中,該課程筆記不僅提供了最基礎的 Python 和 NumPy 操作筆記,同時還從最基礎的 Logistic 回歸推導到最一般的深度全連接網路。當然,還介紹了必要的損失函數與反向傳播方法。而在第二門課程中,該筆記詳細記錄了提升深度網路性能所需要的技巧與基礎,例如初始化、正則化和梯度檢驗等在實踐上大大提升模型性能的方法,以及一般 SGD、動量法和適應性學習率方法等常見的最優化方法。最後,第二門課程重點介紹了 TensorFlow,包括該框架的常用函數和實際構建網路的過程等。最後一章節主要記錄了卷積神經網路,包括基本的卷積運算、殘差網路和目標檢測框架等。

以下是該課程筆記的簡要框架與一些詳細的知識點。

1. 神經網路與深度學習

這一部分對應的是吳恩達深度學習課程的第一課,主要介紹必要的編程語言和編程工具,並逐步進階介紹線性網路、非線性網路、隱藏層網路到深度網路的實現方法,細節詳盡,附有完整的代碼。通過這一部分的學習,你將理解神經網路的結構和數據流(前向傳播和反向傳播),非線性激活函數和隱藏層對學習複雜函數的作用,並知道如何一步步構建完整的(任意結構的、自定義的)神經網路,體會向量化和模塊化編程思想的妙處。

1.1 Python 基礎和 Numpy

本章第一節介紹了如何使用 Python 的 Numpy 工具包、iPython Notebook 等基本的編程工具。然後介紹如何用這些工具構建神經網路,特別是理解神經網路計算的向量化思想和 Python 廣播的使用。

1.2 logistic 回歸

第 2 節介紹如何構建一個準確率為 70% 的 logistic 回歸神經網路分類器(圖像識別網路)來識別貓,並介紹如何進一步將準確率提高的方法,以及損失函數的偏導數更新參數的過程。其中特彆強調了盡量用向量化結構而不要用循環結構,除非有必要(比如 epoch 的迭代就必須使用循環結構)。

1.2.1 介紹必要的 Python 工具包;1.2.2 介紹數據集的結構;1.2.3 介紹整個學習演算法的宏觀架構;1.2.4 介紹構建演算法的基本步驟;1.2.5 和 1.2.6 總結前述內容進行代碼實現,並進行了可視化分析;1.2.7 介紹如何用自己的數據集訓練該神經網路;1.2.8 展示了 logistic 回歸神經網路的完整代碼。

其中 1.2.4 介紹的構建演算法的基本步驟為:

  • 定義模型結構;

  • 初始化模型參數;

  • 循環迭代結構:

  • 計算當前損失函數值(前向傳播)

  • 計算當前梯度值(反向傳播)

  • 更新參數(梯度下降)

通常 1—3 部分是分開構建的,然後整合到一個函數 model() 中。

1.2.5 對 model() 進行了代碼實現,並畫出了損失函數和梯度的圖像。

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.2.3:損失函數

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.2.4:三種不同學習率的學習曲線對比

1.3 用隱藏層分類平面數據點

第 3 節介紹如何在神經網路中添加隱藏層以對平面數據點進行分類,本節將教你理解反向傳播的工作過程、隱藏層對捕捉非線性關係的作用,以及構建輔助函數的方法。

重點內容包括:用單個隱藏層實現二分類器;使用非線性激活函數;計算交叉熵損失;實現前向和反向傳播。

1.3.1 介紹必要的工具包;1.3.2 介紹數據集的構成(平面上的紅點和藍點);1.3.3 介紹無隱藏層的 logistic 回歸對該數據集的分類結果;1.3.4 介紹添加了隱藏層的完整模型的實現過程和對該數據集的分類;1.3.5 展示了完整代碼。

其中 1.3.3 的分類結果如下圖所示:

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.3.3:logistic 回歸

1.3.4 中使用的神經網路的架構:

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.3.4:神經網路模型

1.3.4 構建神經網路的方法和 1.2.4 基本相同,重點強調了如何定義隱藏層結構和非線性激活函數的使用,實現代碼後,得到的運行結果為:

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.3.6:有隱藏層分類器的決策邊界

其中,添加了隱藏層之後,必須使用非線性激活函數,因為不使用非線性激活函數的線性層堆疊是無意義的,無法增大模型的複雜度和容量。

1.4 一步步構建完整的深度神經網路

第 4 節介紹深度神經網路的完整架構,以及如何構建自定義的模型。完成這部分後,你將學會:使用 ReLU 激活函數提升模型的性能、構建更深的模型(隱藏層數大於 1),以及實現易用的神經網路(模塊化思想)。

1.4.1 介紹必要的工具包;1.4.2 介紹任務概述;1.4.3 介紹從 2 層網路到 L 層網路的初始化過程;1.4.4 介紹前向傳播模塊的構建,從線性前向傳播、線性+非線性激活前向傳播,再到 L 層網路的前向傳播;1.4.5 介紹損失函數;1.4.6 介紹反向傳播模塊的構建,從線性反向傳播、線性+非線性激活反向傳播,再到 L 層網路的反向傳播;1.4.7 展示了深度神經網路的完整代碼。

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.4.1:任務概述

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.4.3:前向傳播和反向傳播的線性—ReLU—線性—sigmoid 的過程圖示。上方表示前向傳播,下方表示反向傳播。

1.5 深度神經網路的圖像分類應用

通過前面四節的學習,你已學會如何一步一步構建完整的深度神經網路。第 5 節介紹如何用深度神經網路構建貓識別分類器。此前在 logistic 回歸網路中,識別準確率只能達到 68%,而在完整的深度網路中,識別準確率能達到 80%!

完成本節後,你將學會:用前面介紹的所有輔助函數構建任意結構的神經網路;試驗不同結構的神經網路,並進行分析;理解構建輔助函數對構建網路的好處(對比從零開始)。

1.5.1 介紹必要的工具包;1.5.2 介紹數據集(貓 vs. 非貓);1.5.3 介紹模型架構,其中分別構建了 2 層和 L 層的神經網路;1.5.4 介紹 2 層神經網路的訓練和測試結果;1.5.5 介紹 2 層神經網路的訓練和測試結果;1.5.6 對結果進行分析;1.5.7 介紹如何用你自己的圖像訓練分類模型;1.5.8 展示了完整代碼。

其中,2 層神經網路的運行結果:

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.5.4:2 層神經網路的損失函數

運行結果:

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

圖 1.5.5:L 層神經網路的損失函數

運行結果:

302頁吳恩達Deeplearning.ai課程筆記,詳記基礎知識與作業代碼

通過比較可知,更深的網路有助於提高識別準確率(0.72 vs. 0.8;2 層 vs. 5 層)。

1.5.6 簡單總結了影響識別錯誤的因素:

  • 貓出現在非常規的位置;

  • 貓的顏色和背景相似;

  • 非常規的貓毛色和品種;

  • 拍攝角度;

  • 照片的亮度;

  • 貓的占圖比例太小或太大。

這些識別錯誤可能跟全連接網路自身的局限性有關,包括參數共享、過擬合傾向(參數數量)和層級特徵方面,而這些問題將在卷積神經網路里得到改善。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

Yann LeCun卸任FAIR實驗室主任,改任首席AI科學家
如何解決90%的自然語言處理問題:分步指南奉上

TAG:機器之心 |