做者 | Ryan Shrott
編譯 | Sambodhi
編輯 | Vincent
AI前線出品| ID:ai-front
AI 前線導語:最近,加拿大國家銀行首席分析師 Ryan Shrott 在分享吳恩達在 Coursera 上發佈的深度學習課程的前三門課的學習心得後,日前再次分享了他完成的第四門課的學習心得。算法
吳恩達的機器學習課程在 Coursera 平臺上已上線 5 年左右,該門課程是國內,乃至全球許多機器學習愛好者、專家學者的入門課程。整門課程深刻淺出、簡潔易懂。數據庫
8 月 9 日,吳恩達又宣佈 deeplearning.ai 在 Coursera 平臺上開設系列全新深度學習課程,包括神經網絡和深度學習概述、神經網絡參數調整及優化、如何搭建機器學習項目、卷積神經網絡、神經網絡序列模型。從課程設置上來看,涵蓋了深度學習的基礎理論和簡單實操。這也是 deeplearning.ai 三大項目的第一個項目。微信
截止目前(2017 年 11 月 22 日),Coursera 上可用的課程是:網絡
第四門課的內容是教授如何構建卷積神經網絡並用它來處理圖像數據。架構
Ryan Shrott 目前完成了第四門課,他表示,吳恩達在解釋不少優化計算機視覺任務所需瞭解的複雜概念上有抽絲剝繭講得通俗易懂的能力。他很喜歡這門課程中的如何用風格轉換器創造藝術圖像這一部份內容,好比將 Claud Monet(19 世紀法國印象派畫家)的繪畫風格和任何圖像結合起來進行藝術創做,以下圖所示:app
下面是 Ryan Shrott 學習以後,用 Leonid Afremov(1955-,白俄羅斯現代印象派畫家)的做品《雨中的女人》(Rain Princess )的風格創做的藝術做品,你徹底能夠嘗試:less
在本文中,Ryan Shott 爲咱們解讀了第四門課的 12 堂重要的課程。AI 前線在本文的基礎上亦作了一些批註,方便讀者理解並掌握一些概念,在深度學習少走彎路。機器學習
第 1 課:爲何計算機視覺迅速崛起?函數
大數據和算法的發展促使智能系統的測試偏差收斂到貝葉斯最優偏差,這就使得人工智能在全部領域中表現,超越了人類的水平,包括天然感知任務。開源軟件 TensorFlow 使你可以使用遷移學習(teansfer learning)實現可以快速檢測任何物體的目標檢測系統。經過遷移學習,你只需 100~500 個樣本就可讓系統運行良好。手動標記 100 個樣本也並不是很大的工做量,所以你能夠快速獲得最簡可行產品。佈局
第 2 課:卷積如何工做?
吳恩達解釋瞭如何實現卷積操做,並展現如何對圖像進行邊緣檢測。還介紹了其餘濾波器,如索貝爾(Sobel)濾波器,它將更多的權重賦予邊緣的中心像素。吳恩達還提到:濾波器的權重不該手工設計,而應該用登山算法來習得,如梯度降低(gradient descent)。
第 3 課:爲何要使用卷積網絡?
卷積網絡在圖像識別任務中爲什麼如此有效,吳恩達給出了幾個哲學緣由。他介紹了兩個具體緣由。第一個緣由是參數共享(parameter sharing)。這是基於圖像某一部分有效的特徵探測器在圖像中另外一部分可能也有用的想法。例如,邊緣檢測器對圖像中多個部分可能有用。參數共享所需的參數數量不多,以及穩健的平移不變性( translation invariance)。平移不變性是照片中的貓進行移位、旋轉後仍然識別爲貓的關鍵因素。
第二個緣由是鏈接的稀疏性。這個概念是指每一個輸出層只是少許輸入的函數(特別是濾波器尺寸的平方)。這就大大減小了網絡中的參數數量,從而加快訓練速度。
第 4 課:爲何使用填充?
填充(padding)一般用於卷積過程當中,保持輸出數據的尺寸與輸入數據一致。它也用來使圖像邊緣附近的幀對輸出的貢獻同圖像中心附近的幀同樣多。
第 5 課:爲何使用最大池化?
實證研究代表,最大池化(max pooling)在 CNN 中很是有效。經過對圖像進行下采樣,咱們減小了參數的數量,縮放或者方向變化(如平移、旋轉)時,可以保持特徵不變。
第 6 課:經典網絡結構
吳恩達展現了三種經典網絡架構,包括 LeNet-五、AlexNet 和 VGG-16。他的大意是,高效的網絡一般具備這樣的層:不斷擴大的通道規模和不斷降低的寬度、高度。
第 7 課:殘差網絡爲何有效?
對普通網絡而言,因爲梯度降低和爆炸,訓練偏差並不會隨着層數增長而單調遞減。這些網絡具備前饋跳過鏈接,使你訓練極其龐大的網絡而不會出現性能降低的狀況。
第 8 課:使用遷移學習
在 GPU 上開始訓練像 inception 的大型網絡可能須要花上幾個禮拜,咱們應該須要下載與訓練網絡的權重,並從新訓練最後的 softmax 層(或最後幾層),這將大幅縮短訓練時間。緣由是靠前的層傾向於全部圖像中的概念相關,例如邊緣和曲線。
第 9 課:如何在計算機視覺競賽獲勝
吳恩達說,你應該獨立的訓練幾個網絡,平均它們的輸出結果來得到更好的性能。數據加強技術(data augmentation),如隨機裁剪圖像、水平翻轉、垂直翻轉,也有助於提高性能。最後,你應該使用開源的實現和與訓練的模型來啓動項目,而後針對你的應用的參數進行微調。
第 10 課:如何實現目標檢測
吳恩達解釋了圖像中特徵點檢測(landmark detection)的概念。總的說來,這些特徵點是你訓練輸出樣本的一部分。經過一些巧妙的卷積操做,你能夠獲得一個輸出值,告訴你這個目標在某些區域的機率及目標的位置。他還解釋瞭如何使用交除並(intersection over union,IoU)公式評估目標檢測算法的有效性。最後,吳恩達將全部這些內容整合在一塊兒,講解了著名的 YOLO 算法。
第 11 課:如何實現人臉識別
人臉識別(face recognition)是一次性的學習問題,由於您可能只有一個樣本圖像來識別該人。解決的辦法是學習一個類似性函數,給出兩個圖像之間的差別程度。因此若是圖像是同一我的的話,函數將輸出一個較小的數值,若是是不一樣的人則輸出較大的數值。
人臉識別包括圖像攝取、人臉定位、圖像預處理、以及人臉識別(身份確認或者身份查找)。系統輸入通常是一張或者一系列含有未肯定身份的人臉圖像,以及人臉數據庫中的若干已知身份的人臉圖象或者相應的編碼,而其輸出則是一系列類似度得分,代表待識別的人臉的身份。
目前人臉識別的算法能夠分類爲:
吳恩達給出的第一個解決方案,叫暹羅網絡(siamese network),該方案是在同一個網絡中,分別輸入兩我的的圖像,而後比較它們的輸出。若是輸出類似,則代表這兩我的的圖像可能來自同一我的。基於這種想法來訓練網絡:若是輸入圖像是同一我的的,那麼編碼距離相對較小。
吳恩達給出的第二個解決方案是三重損失法(triplet loss method)。這個想法是,你的圖像有三個維度:Anchor(A)、Positive(P) 和 Negative(N),訓練網絡以後,A 和 P 的輸出距離遠小於 A 和 N 的輸出距離。
第 12 課:如何使用神經風格遷移創做藝術做品
吳恩達講解了如何將內容和風格相結合生成一個圖像。示例以下圖所示:
神經風格遷移的關鍵是要理解卷積網絡中每一層學習的視覺表徵。原來就是靠前的層學習簡單的特徵,如邊緣;靠後的層則學習複雜的目標,如面孔、足部和汽車等。
要構建一個神經風格遷移圖像,你只需定義一個成本函數(cost function),這是一個內容和風格類似點的凸組合(convex combination)。詳細地說,這個成本函數這樣表示:
凸組合是一類特殊的線性組合,是若干個點的某種特定意義下的非負線性組合。
其中,G 是生成的圖像,C 是內容圖像,S 是風格圖像。這個學習算法簡單地使用梯度降低,使與生成圖像 G 相關的成本函數最小化。
步驟以下:
結論
學完這門課程以後,你將會對大量計算機視覺文獻有直覺理解。課後做業讓你動手將這些方法付諸實踐。儘管學完這門課你並不能成爲計算機視覺領域的專家,但這門課卻有可能會讓你在計算機視覺領域中開啓潛在的思路或者事業。
參考資料
[1] Deep Learning Specialization
https://www.coursera.org/specializations/deep-learning
[2] Deep Learning Specialization by Andrew Ng — 21 Lessons Learned
[3] Computer Vision by Andrew Ng — 11 Lessons Learned
towardsdatascience.com/computer-vi…
引導語:更多的乾貨內容請關注微信AI前線:ID:ai-front