深度学习教程(1) | 深度学习概论(吴恩达·完整版)
- 作者:韓信子@ShowMeAI
- 教程地址:https://www.showmeai.tech/tutorials/35
- 本文地址:https://www.showmeai.tech/article-detail/212
- 聲明:版權所有,轉載請聯系平臺與作者并注明出處
- 收藏ShowMeAI查看更多精彩內容
本系列為吳恩達老師《深度學習專項課程(Deep Learning Specialization)》學習與總結整理所得,對應的課程視頻可以在這里查看。
1.歡迎(Welcome)
深度學習改變了傳統互聯網業務,例如網絡搜索和廣告。但是深度學習同時也使得許多新產品和企業以很多方式幫助人們,從獲得更好的健康關注。
深度學習在醫療(讀取X光圖像)、個性化教育、精準化農業、自動駕駛等等方面表現都有著不錯的表現。
有很多人想要學習深度學習的這些工具,并應用它們來完成一些智能化應用,吳恩達老師的《深度學習專業課程》是一個非常好的資源和學習起點。
AI是新的生產力。大約在一百年前,我們社會的電氣化改變了每個主要行業,從交通運輸行業到制造業、醫療保健、通訊等方面,如今我們見到了AI明顯的令人驚訝的能量,帶來了同樣巨大的轉變。顯然,AI的各個分支中,發展的最為迅速的就是深度學習。因此現在,深度學習是在科技世界中廣受歡迎的一種技術。
以下為吳恩達老師深度學習系列課程,系列課程對應幾門課程,它們主要內容和收益如下:
1.1 第一門課要點
專項課程中第1門課是神經網絡和深度學習,內容主要是神經網絡的基礎知識,可以學習到:
- 如何建立神經網絡(包含一個深度神經網絡)
- 如何在數據上面訓練他們
- 一個小案例:用一個深度神經網絡進行辨認貓
對應的ShowMeAI總結文章為:
- 2.神經網絡基礎
- 3淺層神經網絡
- 4.深層神經網絡
1.2 第二門課要點
專項課程中第2門課是深度學習方面的實踐,學習嚴密地構建神經網絡,如何真正讓它表現良好,可以學習到:
- 超參數調整
- 正則化技術
- 診斷偏差和方差
- 高級優化算法(如Momentum和Adam優化算法)
對應的ShowMeAI總結文章為:
- 5.深度學習的實用層面
- 6.神經網絡優化算法
- 7.網絡優化:超參數調優、正則化、批歸一化和程序框架
1.3 第三門課要點
專項課程中第3門課是結構化機器學習工程,會涵蓋構建機器學習系統的策略。可以學習到:
- 切分數據的方式(訓練集、驗證集,測試集)
- 實驗與診斷方法
- 端對端深度學習
- 改善深度學習的一些方法
對應的ShowMeAI總結文章為:
- 8.AI應用實踐策略(上)
- 9.AI應用實踐策略(下)
1.4 第四門課要點
專項課程中第4門課是卷積神經網絡,涵蓋計算機視覺中最常用的神經網絡結構CNN(s),可以學習到:
- 卷積神經網絡結構
- 典型CNN模型
- 計算機視覺圖像分類
- 計算機視覺目標檢測
- 人臉識別
- 圖像風格轉換
對應的ShowMeAI總結文章為:
- 10.卷積神經網絡解讀
- 11.經典CNN網絡實例詳解
- 12.CNN應用:目標檢測
- 13.CNN應用:人臉識別和神經風格轉換
1.5 第五門課要點
專項課程中第5門課是序列建模,涵蓋RNN神經網絡及自然語言處理問題和解決方案。可以學習到:
- 序列建模
- RNN循環神經網絡
- 詞嵌入(word2vec、GloVe)
- 情感分析
- 注意力機制
- 機器翻譯
對應的ShowMeAI總結文章為:
- 14.序列模型與RNN網絡
- 15.自然語言處理與詞嵌入
- 16.Seq2seq序列模型和注意力機制
2.什么是神經網絡?(What is a Neural Network)
我們常常用深度學習這個術語來指訓練神經網絡的過程。有時它指的是特別大規模的神經網絡訓練。
2.1 房價預測案例
吳恩達老師的課程從一個房價預測的例子開始。
假設我們有一個數據集,它包含了六棟房子的信息(房屋面積和房屋價格)。我們想要擬合一個函數,根據房屋面積來預測房屋價格。
通過線性回歸簡單的實現方式是一條直線。因為價格永遠不會是負數,因此我們調整一下直線,讓它彎曲一點,最終在原點結束。這條粗的藍線就是最終的函數,可以根據房屋面積預測價格。可以看到,函數的一部分取值為0,而另一部分的直線對數據的擬合效果很好。
2.2 ReLU激活函數
我們把房屋面積(Size)作為輸入(xxx),通過一個節點(一個小圓圈)最終輸出了房屋價格(Price,yyy)。這個小圓圈實現了上面的折線表達式,視作一個單獨的神經元(neuron),這就是最簡單的神經網絡。
這個折線表達式就被稱作ReLU激活函數,全稱為Rectified Linear Unit(修正線性單元),其中rectify(修正)可以理解成f(x)=max(0,x)f(x) = max(0,x)f(x)=max(0,x)。在后續的神經網絡教程中,大家會頻繁地看到這個函數。
上圖所示為最簡單的神經網絡,更復雜的網絡可以通過這個結構堆疊得到。你可以把這些神經元想象成單獨的樂高積木,通過「搭積木」的方式可以完成一個更復雜的神經網絡。
2.3 房價預測案例 <更多特征>
假如問題更復雜一些,我們有房子的更多信息:
- 房屋面積(Size)
- 臥室數量(#Bedrooms)
- 郵政編碼(Zip Code)
- 周邊富裕程度(Wealth)
那么問題升級為下圖所示的情況:
圖上每一個小圓圈都可以是ReLU的一部分,也就是修正線性單元,或者其它非線性的函數。
- 基于房屋面積和臥室數量,可以估算家庭人口(Family Size)。
- 基于郵編,可以估測步行方便程度(Walkability)或者學校質量(School Quality)。
在這個情景里,家庭人口、步行方便程度以及學校質量都能幫助預測房屋價格。
我們把上圖的神經元疊加在一起,就有了一個稍微大一點的神經網絡。其中,xxx是4個特征輸入(房屋大小、臥室數量、郵政編碼和富裕程度), yyy是嘗試預測的價格。
2.4 隱藏單元(Hidden Units)
我們注意到,這個網絡中的隱藏單元(圖示橙色的小圓圈),每個都是從4個輸入特征來獲得自身的輸入。
網絡中第一個橙色結點代表家庭人口。注意,我們不會說這個結點取決于x1x_1x1?和x2x_2x2?,而是由神經網絡自己決定這個結點是什么,是由4個輸入進行計算得到的。
當我們給到足夠多的xxx和yyy數據(也就是足夠多的訓練樣本)時,神經網絡可以精準地學習從xxx到yyy的映射函數。
3.用神經網絡進行監督學習(Supervised Learning with Neural Networks)
上面的任務是典型的監督學習,我們的數據中包含特征xxx和標簽yyy(詳見 圖解機器學習 | 機器學習基礎知識)。房價預測的例子中,xxx是房屋特征,yyy是房屋價格。
同樣的監督學習方法,借助于神經網絡結構,已經被高效應用到很多場景,如下圖所示:
3.1 應用
(1) Online Advertising 在線廣告
如今應用深度學習獲利最多的一個領域,就是在線廣告。
神經網絡非常擅長預測你是否會點開推薦的網頁/視頻廣告,通過廣告與用戶信息建模,推薦最有可能點擊的廣告,進而給大型的在線廣告公司帶來豐厚的收入。
(2) Photo tagging 照片識別打標
得益于深度學習,計算機視覺在過去的幾年里也取得了長足的進步。目前大家的相冊照片,可以使用自動標注和智能識別的功能。
(3) Speech recognition 語音識別
深度學習最近在語音識別方面的進步也極其巨大,如今語音識別可以做到很好的一個效果程度,大家日常用的手機語音助手,都是它的典型應用。
(4) Machine translation 機器翻譯
得益于深度學習,機器翻譯也有很大的發展。如今大家可以輕松地借助于機器翻譯,閱讀不同語種的信息內容。
(5) Autonomous driving 無人駕駛
未來AI的一個極大應用場景就是自動駕駛技術,可以通過訓練一個神經網絡,來告訴汽車在馬路上面具體的位置,進而幫助自動駕駛系統來判斷和控制。
3.2 神經網絡的類型
實際神經網絡有著不同的結構,而這些典型的結構,也適用于不同的場景,例如:
(1) 對于房地產和在線廣告來說,可能是相對標準一些的神經網絡(比如全連接的前饋神經網絡,或者wide&deep這種組合網絡)。
(2) 對于圖像應用,我們經常在神經網絡上使用卷積(Convolutional Neural Network),通常縮寫為CNN。
(3) 對于序列數據(例如音頻和文本,含有時間成分),經常使用RNN,一種遞歸神經網絡(Recurrent Neural Network)。
- 音頻隨時間播放,所以音頻被表示為一維時間序列(one-dimensional time series,或稱one-dimensional temporal sequence)
- 語言(英語的字母或漢語的漢字)都是逐個出現的,所以語言最自然的表達方式也是序列數據,通常此類問題會使用更復雜的RNNs結構。
(4) 對于更復雜的應用(比如自動駕駛),其中的圖片任務可以使用CNN卷積神經網絡結構。但是雷達信息卻需要使用不同的網絡結構,這些結構可能是定制的、復雜的或混合的神經網絡結構。
3.3 結構圖示
上面提到的典型的幾類網絡,結構示意圖如下。
- 上圖左:一個標準的神經網絡
- 上圖右上:一個卷積神經網絡(CNN通常用于圖像數據)
- 上圖右下:循環神經網絡(RNN通常用于序列數據)
3.4 結構化數據與非結構化數據
AI算法的有效應用,依賴于數據,我們先對數據做一個了解。首先數據可以分為結構化數據和非結構化數據。
(詳見 機器學習實戰 | Python機器學習算法應用實踐 對于兩類數據的不同建模處理方式和 機器學習實戰 | 機器學習特征工程最全解讀 中對于結構化和非結構化數據的區分處理)
(1) 結構化數據
結構化數據通常指的是行列表格狀的數據,一般存儲在數據庫中。
- 例如在房價預測中,數據庫中存儲的數據集,有專門的幾列數據字段指代臥室的大小和數量,這就是結構化數據。
- 或預測用戶是否會點擊廣告,你可能會得到關于用戶的信息,比如年齡以及關于廣告的一些信息,然后對你的預測分類標注。
這就是結構化數據,意思是每個特征(比如說房屋大小臥室數量,或者是一個用戶的年齡)都有一個很好的定義。
(2) 非結構化數據
非結構化數據是指比如音頻、圖像或文本等數據內容。這里的原始特征可能是圖像中的像素值或文本中的單個單詞。
處理非結構化數據是相對較難的。傳統的機器學習模型處理起來效果有限,而深度學習神經網絡非常擅長做這個事情。計算機借助神經網絡能更好地理解和解釋非結構化數據。語音識別、圖像識別、自然語言文字處理,這些領域的應用都有翻天覆地的提升。
4.為什么深度學習會興起?(Why is Deep Learning taking off?)
推動深度學習變得如此熱門的主要因素包括數據規模、計算能力及算法模型的創新。
4.1 為什么深度學習能夠如此有效?
為什么深度學習能夠如此有效呢?要回答這個問題,可以從數據量說起。如下圖,橫軸畫一條直線,繪制出所有任務的數據量(Amount of Data);豎軸畫出機器學習算法的性能(Performance),例如垃圾郵件過濾、廣告點擊預測、自動駕駛時位置判斷等任務的準確率。
根據圖像可以發現,一個傳統機器學習算法的性能,作為數據量的函數,是一條曲線。如圖中所示,一開始,算法性能會隨著數據的增多而上升;但一段變化后,它的性能就會達到瓶頸而難以提升。過去十年,我們遇到的很多問題只有相對較少的數據量。但假設橫軸拉得很長很長,算法將不知道如何處理規模巨大的數據。
數字化社會帶來了巨大的數據量提升。相比于傳統機器學習模型,深度學習神經網絡更能在海量數據上發揮作用。下圖展示的是不同的算法在不同數據規模下的表現:
- 如果你訓練一個小型的神經網絡(Small NN),那么這個性能可能會像黃色曲線表示那樣。
- 如果你訓練一個稍微大一點的神經網絡,比如說一個中等規模的神經網絡(Medium NN),它在某些數據上面的性能也會更好一些,如藍色曲線。
- 如果你訓練一個非常大的神經網絡(Large NN),它就會變成綠色曲線那樣,并且保持變得越來越好。
因此,想獲得橙色點較好的性能體現,需要具備以下兩個條件:
- 需要訓練一個規模足夠大的神經網絡,以發揮數據規模巨大的優點
- 需要海量的數據支撐
我們經常說「規模驅動著深度學習的進步(Scale Drives Deep Learning Progress)」,這里的「規模」同時也指神經網絡的規模——我們需要一個帶有許多隱藏單元的神經網絡,以及許多的參數及關聯性。就如同需要大規模的數據一樣。
我們再回到上面這個圖,在這個圖形區域的左邊(Small Training Sets),各種算法之間的效果優劣并不完全確定,最終的效果很多時候取決于工程構建特征的能力以及算法處理方面的一些細節(詳見 機器學習實戰 | 機器學習特征工程最全解讀)。
而在上圖的右邊區域,我們可以看到隨著數據量的增加,很多時候有著龐大參數的大型神經網絡更能有優異的表現。
在深度學習萌芽的初期,數據的規模以及算力/計算量,局限在我們對于訓練一個特別大的神經網絡的能力,無論是在CPU還是GPU上面,那都使得我們取得了巨大的進步。但是漸漸地,尤其是在最近這幾年,我們也見證了算法方面的極大創新。許多算法方面的創新,一直是在嘗試著使得神經網絡運行的更快。
4.2 sigmoid → ReLU
講一個具體的例子,神經網絡方面的一個巨大突破是從Sigmoid函數轉換到ReLU函數。
我們在過往的深度學習神經網絡中,經常會使用Sigmoid函數,這個函數在左右兩側的位置梯度會接近零,所以學習的速度會變得非常緩慢,而通過改變這個被叫做激活函數的ReLU函數(修正線性單元)可以很大程度解決這個問題。
ReLU它的梯度對于所有輸入的負值都是零,因此梯度更加不會趨向逐漸減少到零。能夠使得我們訓練神經網絡的梯度下降(gradient descent)算法運行的更快。
這是一個簡單的算法創新例子。但是根本上算法創新所帶來的影響,實際上是對計算帶來的優化。所以有很多像這樣的例子,我們通過改變算法,使得代碼運行的更快,這也使得我們能夠訓練規模更大的神經網絡。
我們實際應用神經網絡的過程,和下圖比較一致:
- idea:憑借積累和直覺,對神經網絡架構有新的想法。
- code:嘗試寫代碼實現。
- experiment:在實驗環境下測試它的效果,通過參考這個結果再返回去修改你的神經網絡里面的一些細節。
我們不斷的重復上述操作,往復循環直到得到好的效果的模型網絡。
5.關于這門課(About this Course)
吳恩達老師的專項有五門課程,目前正處于第一門課,關于第一門課的一些細節如下:
- 第一周:關于深度學習的介紹。在每一周的結尾也會有十個多選題用來檢驗自己對材料的理解。
- 第二周:關于神經網絡的編程知識,了解神經網絡的結構,逐步完善算法并思考如何使得神經網絡高效地實現。從第二周開始做一些編程訓練(付費項目),自己實現算法。
- 第三周:在學習了神經網絡編程的框架之后,你將可以編寫一個隱藏層神經網絡,所以需要學習所有必須的關鍵概念來實現神經網絡的工作。
- 第四周:建立一個深層的神經網絡。
ShowMeAI系列教程推薦
- 大廠技術實現:推薦與廣告計算解決方案
- 大廠技術實現:計算機視覺解決方案
- 大廠技術實現:自然語言處理行業解決方案
- 圖解Python編程:從入門到精通系列教程
- 圖解數據分析:從入門到精通系列教程
- 圖解AI數學基礎:從入門到精通系列教程
- 圖解大數據技術:從入門到精通系列教程
- 圖解機器學習算法:從入門到精通系列教程
- 機器學習實戰:手把手教你玩轉機器學習系列
- 深度學習教程:吳恩達專項課程 · 全套筆記解讀
- 自然語言處理教程:斯坦福CS224n課程 · 課程帶學與全套筆記解讀
- 深度學習與計算機視覺教程:斯坦福CS231n · 全套筆記解讀
推薦文章
- ShowMeAI 深度學習教程(1) | 深度學習概論
- ShowMeAI 深度學習教程(2) | 神經網絡基礎
- ShowMeAI 深度學習教程(3) | 淺層神經網絡
- ShowMeAI 深度學習教程(4) | 深層神經網絡
- ShowMeAI 深度學習教程(5) | 深度學習的實用層面
- ShowMeAI 深度學習教程(6) | 神經網絡優化算法
- ShowMeAI 深度學習教程(7) | 網絡優化:超參數調優、正則化、批歸一化和程序框架
- ShowMeAI 深度學習教程(8) | AI應用實踐策略(上)
- ShowMeAI 深度學習教程(9) | AI應用實踐策略(下)
- ShowMeAI 深度學習教程(10) | 卷積神經網絡解讀
- ShowMeAI 深度學習教程(11) | 經典CNN網絡實例詳解
- ShowMeAI 深度學習教程(12) | CNN應用:目標檢測
- ShowMeAI 深度學習教程(13) | CNN應用:人臉識別和神經風格轉換
- ShowMeAI 深度學習教程(14) | 序列模型與RNN網絡
- ShowMeAI 深度學習教程(15) | 自然語言處理與詞嵌入
- ShowMeAI 深度學習教程(16) | Seq2seq序列模型和注意力機制
總結
以上是生活随笔為你收集整理的深度学习教程(1) | 深度学习概论(吴恩达·完整版)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jmeter面试题及答案(jmeter接
- 下一篇: 吴恩达深度学习课程