吳恩達授課,斯坦福CS230深度學習課程資源開放

機器之心整理

參與:劉曉坤、雪、思源

近日由吳恩達與 Kian Katanforoosh 指導的 CS230(深度學習)課程已經結束並放出了課程資料。這一門課程結合 Coursera 課外教學與課內教學展示了深度學習的基本概念與完整結構,機器之心簡要介紹了該課程及基本內容。

課程地址:https://web.stanford.edu/class/cs230/

課程簡介:深度學習是 AI 領域中最受歡迎的技能之一。這門課程將幫助你學好深度學習。你將學到深度學習的基礎,理解如何構建神經網絡,並學習如何帶領成功的機器學習項目。你將學到卷積神經網絡(CNN)、循環神經網絡(RNN)、長短期記憶網絡(LSTM)、Adam 優化器、Dropout 方法、BatchNorm 方法、Xavier/He 初始化方法等。你將在醫療、自動駕駛、手語識別、音樂生成和自然語言處理等領域中進行案例研究。你不僅能掌握理論,還能看到深度學習如何應用到產業中。我們將需要使用 Python 和 TensorFlow 來實現所有的項目,課程中也會教這一部分。完成這門課程後,你將能以創新的方式將深度學習應用到你的工作中。該課程是以翻轉課堂的形式教學的。你將先在家裡觀看 Coursera 視頻、完成編程任務以及在線測驗,然後來到課堂上做進一步討論和完成項目。該課程將以開放式的最終項目結束,教學團隊會在過程中提供幫助。

CS230 採取課內和 Coursera 在線課程相結合的形式,其中每一個課程的模塊都需要在 Coursera 上觀看視頻、做測試並完成編程作業。一週的課程約需要在 Cousera 上在線學習兩個模塊再加上 80 分鐘的課內時間。

吴恩达授课,斯坦福CS230深度学习课程资源开放

這門課程要求學生有一些背景知識,首先學生需要了解計算機科學基本原理與技能,並且能寫合理、簡潔的計算機程序。其次學生需要熟悉概率論與線性代數等基本的數學知識。

目前 CS230 的結課項目報告與 Poster 展示都已經發布,包含多種主題,如音樂生成、情緒檢測、電影情感分類、癌症檢測等。課程報告和 Poster 前三名已經公佈:

吴恩达授课,斯坦福CS230深度学习课程资源开放

報告第一名:Image-to-Image Translation with Conditional-GAN (Weini Yu, Jason Hu, Yujo Zhouchangwan Yu)

該報告使用條件生成對抗網絡(C-GAN)研究航空圖圖像翻譯。參與者首先復現了 Isola 等人提出的 C-GAN 模型,然後探索了不同的網絡架構、損失函數和訓練策略。對不同模型進行了定性和定量評估,得出結論:基於殘差的模型在僅使用 1000 個訓練樣本的情況下得到了非常高質量的圖像。

吴恩达授课,斯坦福CS230深度学习课程资源开放

C-GAN 網絡架構

吴恩达授课,斯坦福CS230深度学习课程资源开放

生成器網絡架構

報告第二名:Deep Knowledge tracing and Engagement with MOOCs (Klint Kanopka, Kritphong Mongkhonvanit, David Lang)

該報告利用深度知識追蹤網絡以及 MOOC 課程互動協變量,計算學生的課程參與度,發現該方法能夠以超過 88% 的準確率預測學生的下一個項目反應。利用這些預測可以向學生提供針對性的干預,也可以對課程進行針對性的改進。

吴恩达授课,斯坦福CS230深度学习课程资源开放

模型結構

報告第三名:Deep Learning for Improving Power-Accuracy of Heart Rate Monitors (Albert Gural)

該報告利用深度學習方法解決從低採樣率 PPG 中確定心率以及如何確定運動偽影中的加速度計信號的問題。

Poster 第一名:Painting Outside the Box: Image Outpainting with GANs (Mark Sabini, Gili Rusak)

吴恩达授课,斯坦福CS230深度学习课程资源开放

Poster 第二名:LeafNet: A Deep Learning Solution to Tree Species Identification (Krishna Rao, Elena Herrero, Gabrielle Pacalin)

該 Poster 使用殘差網絡基於圖像對北美 185 個樹種進行分類。

吴恩达授课,斯坦福CS230深度学习课程资源开放

Poster 第三名:Earthquake warning system: Detecting earthquake precursor signals using deep neural networks (Mustafa Al Ibrahim, Jihoon Park, Noah Athens)

該 Poster 對 1D CNN、2D CNN、RNN 的地震預測性能進行了評估。

吴恩达授课,斯坦福CS230深度学习课程资源开放

課程主要內容

CS230 與吳恩達在 Coursera 上的深度學習專項課程一樣分 5 部分,即神經網絡與深度學習、提升深度神經網絡、機器學習項目的策略、卷積神經網絡及序列模型。

在第一課中介紹了神經網絡和深度學習的基礎。主要在課堂內介紹了深度學習的直觀概念,並藉助兩個模塊從頭開始學習神經網絡到底是什麼。

吴恩达授课,斯坦福CS230深度学习课程资源开放

其中第一課的第一個模塊 C1M1 主要從線性迴歸與房價預測引出神經網絡,並著重介紹了監督式深度學習的基本概念。如下 C1M1 展示了基本神經網絡的類別:

吴恩达授课,斯坦福CS230深度学习课程资源开放

其中標準神經網絡即我們常見的全連接網絡,它是最基礎也是最本質的「神經網絡式」層級表徵方法。標準神經網絡簡單而言即後一層的單個神經元接收前一層所有神經元激活值的加權和,並判斷本神經元是不是需要激活。而卷積網絡與全連接網絡最大的區別是後一層的神經元只與前一層神經元部分連接,且神經元之間存在權重共享,這樣的神經網絡減少了冗餘參數,並有利於建模如圖像那樣有局部結構的數據。最後的循環網絡又與前兩個前饋網絡不同,它在不同時間步上使用相同的神經網絡函數,並每一個時間步都利用前面時間步的必要信息,這樣的網絡能有效處理自然語言等序列問題。

隨後在 C1M2 中,該課程開始具體介紹神經網絡。當然理解神經網絡還是需要從 Logistic 迴歸與感知機算法開始,而最基礎的梯度下降與如何計算導數也是必須的。

吴恩达授课,斯坦福CS230深度学习课程资源开放

如上所示為 Logistic 迴歸的主要過程,我們先根據初始化的參數計算激活值 a,再根據預測值與標註值之間的差距計算損失函數,最後推導損失函數對各參數的梯度就能使用梯度下降更新參數。

第二課介紹深度學習模型的內部數學結構,從淺層網絡逐步過渡到深度網絡,理解「深度」的重要意義。掌握了這些概念之後,對於如何從零開始構建深度學習網絡,能有一個基本的思路。

然後是深度模型的優化或調參技巧,例如初始化、正則化、數據集劃分、Dropout、歸一化、梯度檢查等,和各種經典的學習率衰減方法,如動量算法、Adam 等。

吴恩达授课,斯坦福CS230深度学习课程资源开放

在 C1M3 中,吳恩達主要描述了感知機與神經網絡的表徵方法,這裡仍需要推導大量的表達式。但只要理解了多層感知機的表達方法,那麼深度全連接網絡與其它深度神經網絡的理解就會變得容易得多。如下所示為感知機向量化的表達式,其中主要是將前一層激活值的加權和 z 表示為矩陣運算。

吴恩达授课,斯坦福CS230深度学习课程资源开放

若理解的感知機或淺層網絡的計算過程與表達式,那麼深度前饋網絡的推斷過程就能輕鬆掌握。不過對於深度前饋網絡,另一個非常重要的過程是反向傳播。因為模型參數需要梯度才能更新,因此將根據損失函數計算出來的梯度反向傳遞到各個層級就非常有必要了。如下,C1M4 主要就介紹了這種反向傳播:

吴恩达授课,斯坦福CS230深度学习课程资源开放

如上所示,當我們根據損失函數 L(y hat, y) 計算出最後一層的梯度,我們需要根據求導的鏈式法則將梯度反向傳遞到前層。

此外,這一部分 C2M1 和 C2M2 分別介紹了深度學習的技巧與基本的最優化方法。其中雖優化方法從批量梯度下降和小批量梯度下降開始到 Adam 最優化方法介紹了基本的學習過程。如下是手推的小批量梯度下降,但我們更常見的稱呼是隨機梯度下降。

吴恩达授课,斯坦福CS230深度学习课程资源开放

小批量與批量的不同在於計算梯度的樣本比較少,一般是 32、64 等。這樣每一次迭代所需要的計算量就大大減少,且還能通過引入噪聲增加收斂結果的魯棒性。

第三課介紹結構化機器學習項目。基礎部分涉及超參數調整、批規一化方法等,以及深度學習框架(如 TensorFlow、PyTorch)的應用。然後是機器學習策略,包括垂直化調參、評估指標設置、數據集劃分等。

這一課會介紹如何在實際案例中應用深度學習,Pranav Rajpurkar 將教你構建醫療領域的深度學習應用,即吳恩達團隊開發的 Chest X-Rays 項目。

吴恩达授课,斯坦福CS230深度学习课程资源开放

在這個項目中,你將以 DenseNet 為骨幹網絡架構,實現對肺部 X 射線圖像的分類(是否有肺炎)。其中涉及了數據集構建、模型訓練和模型評估等,可以體驗深度學習產業化的完整過程。

吴恩达授课,斯坦福CS230深度学习课程资源开放

在這一課的幾個模塊中,C3M1 和 C3M2 都介紹了機器學習中的策略。機器學習中的策略主要關注於如何訓練模型,例如什麼時候需要調整樣本數、怎麼樣算過擬合以及度量方法等。這裡最經典的就是偏差與方差問題,我們常常需要根據偏差與方差確定我們的模型到底出現了什麼狀況,例如過擬合與欠擬合等。

吴恩达授课,斯坦福CS230深度学习课程资源开放

其中高偏差代表擬合數據集的函數集合並不包含真正的那個,即偏離正確答案有點遠。而高方差表示擬合數據集的函數集合確實包含了真正的那個,但這個函數集合太大了,以至於每次搜索的都不準。

第四課介紹卷積神經網絡,卷積神經網絡主要用於處理空間型數據,如圖像、視頻等,因此在計算機視覺中應用甚廣。在這一部分課程期間有一個期中測驗,可以幫助你重溫之前學習過的內容。

CNN 的基礎部分涉及卷積運算、步幅、池化等,然後進一步介紹了幾個經典的 CNN 架構,如 LeNet-5、AlexNet、VGG、ResNet、Inception 等。之後給出了幾個 CNN 開發過程中的建議,涉及遷移學習、數據增強等。最後介紹了 CNN 領域的當前研究現狀。

吴恩达授课,斯坦福CS230深度学习课程资源开放

這一部分以目標檢測應用為主,詳細介紹了目標檢測的整個工作流,並在最後以 YOLO 算法為例進行整合。之後還介紹了一些特殊的應用,例如人臉識別、神經風格遷移(畫風遷移)等,其中神經風格遷移有更為詳細的工作流介紹。

在 C4M1 中,吳恩達重點介紹了 CNN 及各個模塊,包括卷積層、池化層、卷積步幅和 Padding 等。其中卷積層試圖將神經網絡中的每一小塊進行更加深入的分析,從而得出抽象程度更高的特徵。一般來說通過卷積層處理的神經元結點矩陣會變得更深,即神經元的組織在第三個維度上會增加。

吴恩达授课,斯坦福CS230深度学习课程资源开放

以上展示了經典的 LeNet-5 架構,正如 LeCun 在 LeNet-5 原論文中所說,卷積網絡結合了三種關鍵性思想來確保模型對圖像的平移、縮放和扭曲具有一定程度的不變性,這三種關鍵思想即局部感受野、權重共享和空間/時間子採樣。其中局部感受野表示卷積核只關注圖像的局部特徵,而權重共享表示一個卷積核在整張圖像上都使用相同的權值,最後的子採樣即我們常用的池化操作,它可以精煉抽取的特徵。

吴恩达授课,斯坦福CS230深度学习课程资源开放

第五課介紹序列模型。序列模型主要用於處理序列型數據,如音樂、語音、文本等。序列模型主要以循環神經網絡為代表,本課將介紹 RNN 的基礎結構、類型、計算過程等,並以語言建模作為典型案例進行分析。之後是一些著名的 RNN 變體,例如 GRU、LSTM、雙向 RNN、深度 RNN 等。

吴恩达授课,斯坦福CS230深度学习课程资源开放

這一部分先簡單概述深度強化學習,然後開始以自然語言處理和詞嵌入為主題,進一步講解 RNN 的進階應用。詞嵌入是很多自然語言處理模型的基礎,這一部分以詞嵌入為主,強調了詞嵌入技術的遷移學習作用,然後介紹幾個經典的詞嵌入模型,例如 Word2Vec、GloVe word vectors 等,最後以情感分類作為應用案例。

在 C5M1 中,吳恩達重點解釋了循環神經網絡,循環神經網絡是一類用於處理序列問題的神經網絡,它可以擴展到更長的序列。循環網絡相比經典的全連接網絡有非常大的提升,例如參數共享和構建長期依賴關係等。對於語句的序列建模,全連接網絡會給每個輸入特徵分配一個單獨的參數,所以它需要分別學習句子每個位置的所有語言規則。而循環神經網絡會在多個時間步內共享相同的參數,因此不必學習句子每個位置的所有語言規則。此外,循環網絡會有一個記憶機制為當前時間步的預測提供前面時間步的信息。

吴恩达授课,斯坦福CS230深度学习课程资源开放

如上展示了循環網絡的基本結構,它只使用前一個時間步的隱藏單元信息和當前時間步的輸入信息,並利用相同的函數計算下一個隱藏單元的值。

吴恩达授课,斯坦福CS230深度学习课程资源开放

完成這些課程後,就可以開始準備最終項目了。吳恩達授課,斯坦福CS230深度學習課程資源開放

✄------------------------------------------------

廣告 & 商務合作:[email protected]


分享到:


相關文章: