以前,吳恩達的機器學習課程和深度學習課程會介紹很多概念與知識,雖然也會有動手實驗,但它們主要是為了幫助理解。在這一份 Coursera 新課中,吳恩達與谷歌大腦的 Laurence Moroney 從實踐出發介紹了使用 TensorFlow 的正確姿態。
這一個專項課程目前主要包含兩門課,即 TensorFlow 簡介與 TensorFlow 中的卷積神經網路。第一課目前已經有很多 Coursera 學員留言,他們表示 TensorFlow 簡介是一份極好的入門課程(TensorFlow/Keras),除了程式設計,它還會介紹機器學習與深度學習的基本概念。
課程一:https://www.coursera.org/learn/introduction-tensorflow
課程二:https://www.coursera.org/learn/convolutional-neural-networks-tensorflow
但可能也是因為比較簡單,很多學員希望在高階課程中瞭解更多的 TensorFlow 特性,尤其是 TensorFlow 2.0 的一些開發教程。此外,TensorFlow 中的卷積神經網路課程也今日已經開放註冊,它是 TensorFlow 的提升課程。
可能讀者最關心的一點是,它到底教的是 TF 1.x 還是 2.0?機器之心在免費註冊旁聽後發現一些比較吸引人的特點,例如所有練習都是在 Colab 上完成的、程式碼在 TF 1.x 和 2.0 之間是通用的等。如下圖所示為課程練習題頁面,程式碼放在賊好用的 Colab 上都不需要本地計算力。
注意上圖是直接匯入 TensorFlow,因此當前版本為 1.13.1。不過該課程表示程式碼足夠通用,因此 TF 2.0 alpha 也可以直接使用,只要在匯入前先要用 pip 安裝 2.0 alpha 就行了。所以說,這個課程介紹的是 TF 1.x 與 2.0。
專項課程簡介
如果你是軟體開發者,想要試一試深度學習 APP,那麼你可以上這門課;如果你是機器學習入門者,除了眾多的理論公開課外還想學一學怎樣搭個模型,那麼這門課可以補足你的動手能力。
這一系列專項課程旨在提供最好的 TensorFlow 實現,我們可以逐步學會如何搭建深度學習模型,並將其應用於實際應用和真實問題中。目前 TensorFlow 仍然是最流行的框架,如果學會了用它做 DL 模型與應用,那麼學其它框架就簡單多了。
如果你準備搞一搞該系列專項課程,那麼你將學習到:
如何用 TensorFlow 構建機器學習模型
如何用全連線網路和卷積神經網路構建影象識別演算法
理解如何將模型部署到移動端或網頁端
瞭解影象識別和文字識別外的其他 DL 任務
擴充套件 TF 基本 API,並用於定製化的學習或訓練
總體而言,在第一項課程中,我們將學習到如何用 TensorFlow 構建基本的神經網路,並將其應用到計算機視覺任務中,同時我們也會了解如何用卷積神經網路提升基本網路的效能。在第二項課程中,我們可以學到更多的高階技巧,例如怎樣做資料增強、Dropout 及正則化、遷移學習等等。這些模組或技巧能提升標準模型的效能,並打造實用的新應用。
目前這兩個課程在 Coursera 上分別都需要花四周完成,每一週大概 4-5 的學時左右。它們都屬於 deeplearning.ai 的專項課程,該系列的其它高階主題暫時還沒有放出,可能需要過幾月才會放出來。
如下所示為第二項課程的前兩週課時,我們可以在 Coursera 上免費註冊「旁聽」,也就是完全獲取課程材料,只不過拿不到成績證明。當然如果想要認真學一學的話,註冊每一門課程需要 194 人民幣。
背景知識
學習這個專項課程並不要求對 DL 理論有多瞭解,相反我們需要知道 Python 程式設計與高中水平的數學基礎。因為整個課程主要是面向開發者與初學者,所以 Python 基礎還是要好好打的。
學習 Python 程式設計有很多路徑,例如早一段時間的 Python 官方中文文件 ,這裡提供幾篇 Python(+NumPy)入門文章:
至於其它理論基礎,有的話更好,沒有的話也沒關係。不過從機器學習到深度學習,吳恩達已經為你準備好了全套學習資料。最經典的機器學習課程不必說,肯定是最為優質的入門課程。雖然我們可能會感覺這門課介紹的很多模型在教程或文獻中見得比較少,但很多知識點都是 DL 的基本概念。
機器學習:https://www.coursera.org/learn/machine-learning
對於深度學習,吳恩達近來也推出了深度學習專項課程,我們可以在 Coursera 或網易公開課上了解到相關資源。這個月,史丹佛也開放了 CS230 2018 秋季課程的視訊,它會和 Coursera 上的深度學習專項課程有一些重疊。不過 CS230 2018 還是有更多的新知識,包括對抗樣本或聊天機器人等等。
視訊列表:https://www.youtube.com/playlist?list=PLoROMvodv4rOABXSygHTsbvUz4G_YQhOb
講師
整個 TensorFlow 系列課程的講師是吳恩達與谷歌大腦的 Laurence Moroney,前面兩課的主講都是 Laurence Moroney。
吳恩達老師我們都比較熟悉,就不做過多介紹了。另一位講師 Laurence Moroney 是谷歌的 Developer Advocate,致力於使用 TensorFlow 來開發並構建人工智慧相關的應用。他發表了很多程式設計書籍,現在在視訊培訓領域與 deeplearning.ai 和 Coursera 展開合作。
此外,Laurence 還是美國科幻作家協會成員,創作了一些科幻小說、劇本和漫畫書,包括克里斯蒂安·貝爾主演電影《撕裂的末日》(Equilibrium)的前傳。
嗯,確實是很有才了~
專項課程一:TensorFlow 簡介
第一個專項課程是關於 TensorFlow 的簡介。你會學到如何構建計算機視覺的基礎神經網路以及使用卷積改進神經網路。如下是每週的學習主題:
第一週簡要介紹機器學習和深度學習,瞭解它們提供了什麼樣的新程式設計正規化,為什麼又提供一個可以開啟新開發場景的工具集。學習這一部分,你只需要瞭解一些基礎的程式設計技巧。
第二週開始學習使用幾行程式碼來解決計算機視覺問題,並搭建一個簡單的視覺模型。
前面搭建的樸素模型確實非常簡單,那麼在第三週裡,我們將學會使用卷積網路處理視覺問題。
如果影象變大了或者特徵總是不在同一個地方,怎麼辦?這個問題的討論為第四周的學習內容做好準備:處理複雜影象。
專項課程二:TensorFlow 中的卷積神經網路
第二個專項課程主要講如何改進你在第一個課程中搭建的計算機視覺模型,其中包含一些高階技巧。你將學習如何應對真實世界中形狀、大小各異的影象、視覺化對影象進行卷積操作的過程,以理解計算機如何「看見」資訊、計算損失函式和準確率、探索避免過擬合的策略等。最後,該課程還將介紹遷移學習以及如何從模型中提取學習到的資訊。
第一週的課程將從探索一個更大的資料集——貓狗資料集開始,這也是 Kaggle 影象分類挑戰賽的賽題之一。
第二週課程的主題是影象增強。增加訓練資料可以提高模型的泛化能力,雖然這雖然這並不總是有效的,但我們還是可以選擇資料增強來提升模型潛力。在這周的課程中,你將會學到如何調整訓練集,以增加其多樣性。
第三週的主題是遷移學習。自己構建模型固然很好,但有時會受到手頭資料和計算力的限制。並非所有人都掌握著大量的資料和足夠的算力,因此我們需要遷移學習。利用遷移學習,你可以直接把別人在大型資料集上訓練的模型拿來用,或者只用他們學到的特徵。
第四周的主題是多類別分類。之前的課程只講了二分類,即如何區分馬和人、貓和狗等。本週的課程將介紹如何進行多類別分類以及其中涉及的程式設計知識。
最後,學 TensorFlow 這種實戰框架肯定需要大量練習,即便查閱已有的模型程式碼,我們最好不直接複製貼上,手寫程式碼也是一種很好的思考過程。