在等吳恩達深度學習第5課的時候,你可以先看看第4課的筆記
大數據文摘作品
編譯:黨曉芊、元元、龍牧雪
等待吳恩達放出深度學習第5課的時候,你還能做什麼?今天,大數據文摘給大家帶來了加拿大銀行首席分析師Ryan Shrott的吳恩達深度學習第4課學習筆記,一共11個要點。在等待第5門課推出的同時,趕緊學起來吧!
這兩天,聽說大家都被一款叫做「旅行青蛙」的遊戲刷屏了,還有許多人在票圈喊著「養男人不如養蛙」。
在這個「雲養蛙」的佛系遊戲里,只有兩種狀態:蛙兒子在家和不在家。蛙兒子在家的時候,你只能一心盼他出門,啥也幹不了。蛙兒子出門了,你也不知道他要多久才能回家,只能等著他回來——還是啥也幹不了。
當然,青蛙出門在外的日子裡,他偶爾會給等待中的你寄張明信片回來。
還有什麼等待比等青蛙旅行回家還漫長嗎?
有的。那就是等吳恩達的deeplearning.ai放出第5門課。
在漫長的等待過程中,已經有不少童鞋學完了這一系列的前4門課,大數據文摘也發布過前3課的學習筆記《我從吳恩達深度學習課程中學到的21個心得:加拿大銀行首席分析師「學霸「筆記分享》。
今天,我們再次給大家帶來了這位國際友人的吳恩達深度學習第4課學習筆記,一共11個要點。邊學習邊等待的過程,又何嘗不是一種幸福呢。同時,課程筆記里還有狗糧放出,請大家注意接收!
***
我最近學完了吳恩達在Coursera上關於計算機視覺的課程。吳恩達的課程非常精彩,他詳細解釋了很多用來優化計算機視覺的複雜的概念。我最喜歡的是關於神經風格遷移的部分(見第十二課),這個方法可以讓你用任意內容的繪畫創造出莫奈風格的藝術作品。請看下面的例子:
這篇文章中,我將會討論我在課程中學到的12個關鍵點。請注意,這個課程是deeplearning.ai所發布的深度學習系列課程的第四部分。
第一課:為什麼計算機視覺能夠發展迅速
大數據以及演算法開發將會使智能系統的測試誤差逐漸趨近於貝葉斯最優誤差。這個結果將會導致人工智慧的表現全方位超越人類,其中包括自然識別方面的工作。像TensorFlow這樣的開源軟體,就可以幫助你用遷移學習的方法迅速實現其任何物體的探測器。用遷移學習的方法你只需要大約100-500個訓練實例就可以得到很好的結果。手動標記100個實例的工作量並不太,所以你可以很快得到一個最小化可用模型。
第二課:卷積是如何工作的?
吳恩達解釋了如何實現卷積算符並展示了如何用它檢測物體邊緣。他同時還解釋了其他的過濾器,比如說索貝爾過濾器(Sobel filter),這種過濾器在圖像邊緣中部採用更大的比重。然後,吳恩達解釋了這些過濾器的比重並不是靠人為設計的,而是依靠類似於梯度下降的這樣的爬山演算法由計算機自行訓練出來的。
第三課:為什麼要用卷積?
吳恩達透徹的解釋了卷積適用於圖像識別的原因。其中有兩個具體的原因。第一個是參數共享。大體的想法是如果一個特徵探測器對於圖像的某一部分很有效,這個探測器很可能對圖像的其他部分也有效。比如說,一個邊緣探測器可能對圖像的很多部分都有用。特徵分享的方法能夠降低系統參數的數量,同時能夠帶來穩健的平移不變性(translation invariance)。平移不變性是一個概念,意思是比如說有一張貓的圖片,即使是經過了移動和旋轉,依舊是一隻貓的圖片。
第二個原因被稱作稀疏連結性,即每個輸出層僅僅由很小一部分輸入結點計算得到(更具體一些,輸入的數量是過濾器數量的平方)。用這個方法可以極大的減少網路中參數的數量,提高訓練速度。
第四課:為什麼使用填充(Padding)?
填充通常用來保持輸入的數量(也就是說,使得輸入輸出的維度相同)。用這個方法也可以保證在進行訓練時,來自圖片邊緣的貢獻和來自中心的貢獻相當。
第五課:為什麼使用最大池化層(Max Pooling)?
實證研究證明,最大池化層對於CNN非常有效。通過對圖像向下取樣,我們減少了參數數量,同時也確保圖像特徵在圖像尺度變化或者方向變化時保持不變。
第六課:經典網路架構
吳恩達展示了3種經典的神經網路架構,包括LeNet-5, AlexNet 和VGG-16。他所展示的主要觀點是一個有效的神經網路通常是通道的數目不斷上升,寬度和高度不斷下降。
第七課:為什麼ResNets 有效?
對於一般的神經網路,由於梯度的消失和爆炸,訓練誤差並不會隨著網路層數的增加而單調遞減。然而對於ResNets而言,可以通過向前跳躍性連接,讓你在訓練一個很大的神經網路時,誤差單調下降,性能單調遞增。
第八課:使用遷移學習!
如果從頭開始訓練一個像inception這種結構巨大的神經網路,即使在GPU上訓練也可能需要好幾周的時間。你可以下載經過預訓練得到的權重,然後只重新訓練最後的softmax層(或者最後幾個層)。這個會極大縮短訓練時間。這種方法有效的原因是前幾層所訓練的特徵很可能是諸如邊界或者彎曲線條之類的所有圖像的共同特徵。
第九課:如何在計算機視覺競賽中獲勝
吳恩達解釋說,你需要獨立的訓練多個神經網路然後取結果的平均值,來獲得更好的結果。一些數據增強的技術,比如說隨機裁剪圖片,沿水平垂直軸翻轉圖像可以幫助提升模型表現。總之,你一開始應該使用開源軟體庫和預訓練模型,然後根據自己要解決的問題不斷細化模型,調整參數。
第十課:如何實現對象檢測
首先,吳恩達解釋了從圖片中檢測標誌性物體的思路。基本上來說,這些標誌性物體將成為最終輸出結果的一部分。通過一些有效的卷積操作,你會得到一個輸出值,表示一個物體出現在某個區域的概率和區域的位置。同時,他解釋了如何通過交集並集商評估對象檢測器的有效性。最後,吳恩達結合所有構成要素,解釋了著名的YOLO演算法。
第十一課:如何實現面部識別
面部識別是一個單樣本學習(one-shot learning)問題,因為你有可能只能根據一張示例圖片來辨別一個人。解決問題的方法是使用相似性函數,這個函數可以給出兩個圖像之間的相似程度。所以,如果兩張圖像是同一個人,你希望這個函數輸出一個較小的數值;不同人的兩張圖像則輸出較大的數值。
吳恩達給出的第一個解決方案被稱作siamese網路。它的基本思路是將兩張不同的圖片輸入到同一個神經網路然後比較結果。如果輸出相似性很高,那麼很有可能是同一個人。神經網路訓練的目標就是如果兩個輸入的圖片是同一個人,那麼輸出的結果距離相對很小。
對於第二種解決方案,他給出了一個三元損失方法(triplet loss method)。這個方法是,從三張圖片(Anchor (A), Positive (P) and Negative (N))訓練得到一個神經網路,使得 A與P 的結果相似程度遠遠高於A與N的結果相似程度。
注意,此圖中有狗糧!(為什麼說這是狗糧?請看大數據文摘此前報道《吳恩達CNN新課上線!deeplearning.ai 4/5解鎖,6日開課》)
第十二課:如何用神經風格遷移(Neural Style Transfer)的方法創造藝術作品
吳恩達解釋了如何結合風格和內容創造新的圖畫。示例如下。神經風格遷移方法的核心在於充分理解神經網路中每一個卷積層對應的具體的視覺表徵。實際表明,網路當中前幾層通常學習簡單的特徵,比如圖像邊緣。後幾層通常學習一些複雜的對象,比如臉,腳,汽車等。
為了創建一個神經風格轉移圖畫,你只需要定義一個結合風格和內容相似性的凸函數作為損失函數。具體而言,這個函數可以寫成:
在這個方程中,G是被創造出的圖像,C是圖像內容,S是圖像風格。簡單的採用梯度下降法來對損失函數就生成圖像求最小值。
基本步驟如下:
1.隨機生成G。
2.使用梯度下降方法最小化J(G),通過這個等式: G:=G-dG(J(G))
3.重複第二步。
結論:
完成這門課程之後,你會對大量計算機視覺方面的文獻有一個直觀的認識。同時課後作業讓你有機會自己實現部分演算法。完成這門課程後,你不會很快成為一個計算機視覺方面的專家,但是它可能會開啟你計算機視覺相關的想法和事業。
你也學完了吳恩達深度學習系列課的前4門課嗎?還是仍停留在第一課第一講?歡迎留言和我們分享。
https://www.kdnuggets.com/2017/12/ng-computer-vision-11-lessons-learnied.html
【今日機器學習概念】
Have a Great Defination
線下課程推薦|機器學習和人工智慧方向
新年新目標,稀牛喊你找工作啦!
高頻面試考點
行業項目經驗
簡歷修改完善
面試注意事項


※史上最全!27種神經網路簡明圖解:模型那麼多,我該怎麼選?
TAG:大數據文摘 |