吳恩達授課,史丹佛CS230深度學習課程資源開放

機器之心發表於2018-06-21

近日由吳恩達與 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深度學習課程資源開放

完成這些課程後,就可以開始準備最終專案了。

相關文章