當前位置:
首頁 > 科技 > 這是一份「不正經」的深度學習簡述

這是一份「不正經」的深度學習簡述


選自

TowardsDataScience


作者:Favio Vazquez


機器之心編譯


參與:路雪、劉曉坤、李澤南




作為人工智慧領域裡最熱門的概念,深度學習會在未來對我們的生活產生顯著的影響,或許現在已經是了,從 AlphaGo 到 iPhone X 上的人臉識別(FaceID),背後都有它的身影。關於深度學習,我們能夠看到很多優秀的介紹、課程和博客,本文將列舉其中的精華部分,而且,你會發現這是一篇「不一樣」的文章。







不一樣在哪兒呢?可能是本文沒有按照「正常」的深度學習博客結構:從數學講起,然後介紹論文、實現,最後講應用。我希望用講故事的方式來介紹深度學習,這可能要比只介紹信息和公式要更加平易近人一些。



我為什麼要寫這篇深度學習簡介?







有時候,把自己的思考過程記錄下來非常重要。




目前,深度學習(Deep Learning)是數據科學、AI、技術和人類生活中重要的一部分,它值得我們去關注。你不能簡單地說:「深度學習就是往神經網路中添加一個層,哇,神奇!」。不,不是這樣。我希望讀完本文後,大家會對深度學習有不一樣的認識。




深度學習時間線







我根據多篇論文和其他文章的內容繪製了這份時間線,旨在使大家看到深度學習不只是神經網路。在它的發展過程中出現了真正的理論進步、軟體和硬體進展。



深度學習有何「奇怪」之處?







深度學習已經出現很久了,那麼為什麼它直到最近 5-7 年才聞名於世,並迅速發展起來呢?



如前所述,直到 21 世紀初,我們仍然缺乏訓練非常深層神經網路的可靠途徑。現在,隨著多個簡單卻重要的理論、演算法進步,硬體發展(大部分是 GPU,現在是 TPU)和數據的指數級增長和積累,深度學習快速發展,並改變我們做機器學習的方式。




深度學習也是非常活躍的研究領域,今天,眾多研究者們仍在尋找最好的模型、網路拓撲、最好的超參數優化方法等等。要想像其他活躍的科學領域一樣緊跟研究成果很難,但是並非不可能。




Hofer 等人在論文《Deep Learning with Topological Signatures》如此介紹拓撲和機器學習:





近期代數拓撲方法僅在機器學習社區出現,最顯著的是,它出現在術語「拓撲數據分析」(topological data analysis,TDA)下面。TDA 幫助我們從數據中推斷出相關拓撲和幾何信息,因此它提供了一種看待多種機器學習問題的新型、有益的視角。




對我們來說很幸運的是,有很多人在幫助我們理解和消化此類信息,比如吳恩達的課程、一些相關博客等等。




參考閱讀:






  • 機器之心專訪吳恩達,深度學習課程項目 Deeplearning.ai 正式發布



  • 吳恩達 Deeplearning.ai 課程學習全體驗:深度學習必備課程(已獲證書)



  • 入門 | 吳恩達 Deeplearning.ai 全部課程學習心得分享



  • 資源 | 吳恩達 deeplearning.ai 第四課學習心得:卷積神經網路與計算機視覺



  • 資源 | 吳恩達 deeplearning.ai 五項課程完整筆記了解一下?




這對我來說有些奇怪或者不尋常,因為正常情況下你必須花費一段時間(甚至好多年)才能消化論文或期刊中那麼多艱深、前沿的信息。當然,現在大部分科學領域從論文到一篇博客解讀的時間越來越快,雖然我認為深度學習還有一些不一樣的感覺。




深度學習和表徵學習的突破性成果







機器學習領域中的大多數人都認為,幾十年來深度學習論文中的每個最新思想(具體來說是指神經網路或演算法的新型拓撲結構和配置)都是機器學習中的最棒思想(要知道深度學習是機器學習的子領域)。




我在本文中用了很多次「學習」(learning)這個詞,那麼「學習」究竟是什麼意思呢?




在機器學習中,「學習」是指為你正在分析和研究的數據自動搜索更好的數據表徵的過程(記得,這並不是讓機器來學習)。




「表徵」(representation)一詞在這個領域中特別重要,那什麼是「表徵」呢?「表徵」就是觀察數據的方式。




舉個例子,如下圖所示,假設問題是畫出一條直線將圖中的藍色圓和綠色三角形分開:





Ian Goodfellow et al. (《深度學習》, 2016)




在《深度學習》這本書中,作者解釋道:我們使用笛卡爾坐標系來表徵數據,這時該問題不可解。




難道就沒辦法了嗎?當然不是。如果我們採用不同的方式來表徵數據,使得可以用直線分離不同的數據類型。這種方法在數學中已經出現了好幾百年。在這個例子中我們需要的僅僅是一次坐標變換。通過坐標變換,我們得到了問題的解:





Ian Goodfellow et al. (《深度學習》, 2016)




現在我們就可以畫出一條直線來分離數據:







因此在這個例子中,我們通過手動探索並選擇了能獲得更好的表徵方式的變換。但是,假如我們能開發一個系統或程序來自動搜索不同的表徵(在這個例子中是坐標變換),然後確定新方法的分類準確率的計算方式,這時候就變成了機器學習。




這一點很重要,深度學習是使用不同類型神經網路的表徵學習,通過優化網路的超參數來獲得對數據的更好表徵。




而沒有深度學習中的突破性研究,這一切也將不可能出現,這裡我列出幾個經典案例:




1:反向傳播




參考閱讀:






  • 被 Geoffrey Hinton 拋棄,反向傳播為何飽受質疑?(附 BP 推導)



  • A theoretical framework for Back-Propagation——Yann Lecun:http://yann.lecun.com/exdb/publis/pdf/lecun-88.pdf





2:更好的初始化網路參數。

需要記住的是:初始化策略需要根據所使用的激活函數來選擇。




參考閱讀:






  • 「深度學習的權重初始化」——Coursera:https://www.coursera.org/learn/deep-neural-network/lecture/RwqYe/weight-initialization-for-deep-networks



  • How to train your Deep Neural Network:http://rishy.github.io/ml/2017/01/05/how-to-train-your-dnn/




  • 斯坦福大學 CS231n Convolutional Neural Networks for Visual Recognition:http://cs231n.github.io/neural-networks-2/#init





3:更好的激活函數。

這意味著,可以更快地逼近函數,從而實現更快的訓練。




參考閱讀:






  • 一文概覽深度學習中的激活函數



  • 神經網路中激活函數的作用





4:Dropout:防止過擬合等問題。






  • Learning Less to Learn Better—Dropout in (Deep) Machine learning:https://medium.com/@amarbudhiraja/https-medium-com-amarbudhiraja-learning-less-to-learn-better-dropout-in-deep-machine-learning-74334da4bfc5



  • Geoffrey Hinton 等人的「Dropout: A Simple Way to Prevent Neural Networks from Overfitting」:http://www.jmlr.org/papers/volume15/srivastava14a/srivastava14a.pdf?utm_content=buffer79b43&utm_medium=social&utm_source=twitter.com&utm_campaign=buffer




5:卷積神經網路(CNN)




參考閱讀:






  • 一文看懂卷積神經網路



  • Yann LeCun 等人的「Gradient-Based Learning Applied to Document Recognition」:http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf





6:殘差網路(ResNet)




參考閱讀:






  • 孫劍等人的論文「Deep Residual Learning for Image Recognition」:https://arxiv.org/abs/1512.03385v1



  • 論文「Residual Networks of Residual Networks: Multilevel Residual Networks」:https://arxiv.org/abs/1608.02908




7:基於區域的 CNN

,可用於目標檢測等。




參考閱讀:






  • 論文「Rich feature hierarchies for accurate object detection and semantic segmentation」:https://arxiv.org/abs/1311.2524v5



  • 先理解 Mask R-CNN 的工作原理,然後構建顏色填充器應用



  • 從論文到測試:Facebook Detectron 開源項目初探




8:循環神經網路(RNN)與 LSTM




參考閱讀:






  • LSTM 入門必讀:從入門基礎到工作方式詳解



  • 在調用 API 之前,你需要理解的 LSTM 工作原理



  • 從 90 年代的 SRNN 開始,縱覽循環神經網路 27 年的研究進展 




9:生成對抗網路(GAN)




參考閱讀:






  • Ian Goodfellow 等人的 GAN 論文:https://arxiv.org/abs/1406.2661v1



  • 機器之心 GitHub 項目:GAN 完整理論推導與實現,Perfect!




10:Geoffrey Hinton 近期提出的 Capsule






  • 終於,Geoffrey Hinton 那篇備受關注的 Capsule 論文公開了



  • 淺析Geoffrey Hinton最近提出的Capsule計劃



  • Capsule 官方代碼開源之後,機器之心做了份核心代碼解讀




當然,還有很多其它的重要成果。我認為正是以上所列舉的研究給我們帶來了重要的理論和演算法上的突破,並改變了世界,推動了深度學習的革命。




如何入門深度學習?







深度學習的入門並不容易,但我會盡我所能指導你完成這一階段。參考以下學習資源,但記住,你需要的不僅僅是觀看視頻和閱讀論文,還需要不斷地理解、編程、寫代碼、經歷失敗,然後成功。




-1. 請先學習 Python 和 R 語言:)




0. 學習吳恩達的深度學習課程




Siraj Raval 的視頻

:Siraj Raval 非常 amazing,他可以用風趣易懂的方式來解釋複雜的概念。你可以在 YouTube 上關注他的個人頻道,其中這兩個視頻非常棒:




Fran?ois Chollet 的兩本書:






  • Deep Learning with Python



  • Deep Learning with R




分散式深度學習







深度學習是數據科學家應該學習的最重要的工具和理論之一。我們很幸運,有那麼多深度學習方向的研究、軟體、工具和硬體被開發出來。




深度學習的計算成本很昂貴,即使在理論、軟體和硬體有所進展的情況下,我們也需要大數據和分散式機器學習的發展來提升深度學習的性能和效率。為此,人們開發出了分散式框架(Spark)和深度學習庫(TensorFlow、PyTorch 和 Keras)。




參考閱讀:






  • 學習了!谷歌今日上線基於 TensorFlow 的機器學習速成課程(中文版)



  • 三天速成!香港科技大學 TensorFlow 課件分享



  • 四天速成!香港科技大學 PyTorch 課件分享



  • 分散式 TensorFlow 入坑指南:從實例到代碼帶你玩轉多機器深度學習



  • 分散式 Keras(Keras+Spark):https://github.com/cerndb/dist-keras



  • 在谷歌雲上運行 TensorFlow 和 Spark:https://cloud.google.com/blog/big-data/2017/11/using-apache-spark-with-tensorflow-on-google-cloud-platform




使用深度學習完成任務







正如之前所說的,深度學習領域最重要的里程碑之一就是 TensorFlow 的創建與開源。




TensorFlow 是一個使用數據流圖進行數學計算的開源軟體庫,圖中的節點表示數學運算,而圖的邊表示在節點之間通信的多維數據陣列(張量)。







上圖是廣義相對論黎曼張量中的張量運算。




張量,從數學定義上看,就是簡單的數或函數的陣列,根據坐標變換的特定規則進行變換。




但是在機器學習和深度學習領域中,張量是向量和矩陣在更高維度上的泛化形式。TensorFlow 將張量表示為基礎數據類型的 n 維數組。




我們在深度學習中廣泛使用張量,但是你不必成為這方面的專家,只需要稍微了解就足夠了。




參考閱讀:






  • 教程 | 深度學習初學者必讀:張量究竟是什麼?




現在你已經了解了我之前提到的突破和編程框架(如 TensorFlow 或 Keras),那麼你應該明白自己需要了解和使用深度學習的哪些方面了。




但是目前我們使用深度學習取得了什麼成就?下面我列舉了一些(來自 Fran?ois Chollet 的書):






  • 接近人類水平的圖像識別能力;



  • 接近人類水平的語音識別能力;



  • 接近人類水平的手寫體轉錄能力;



  • 機器翻譯水平提高;



  • 文本轉語音水平提高;



  • 數字助手,如 Google Now 或 Amazon Alexa;



  • 接近人類水平的自動駕駛能力;



  • 廣告定向投放水平提高;



  • 網頁搜索結果優化;



  • 自然語言問答能力提高;



  • 超越人類的圍棋水平。




參考閱讀:






  • 30 AMAZING APPLICATIONS OF DEEP LEARNING:http://www.yaronhadad.com/deep-learning-most-amazing-applications/




關於深度學習的未來,我認為 GUI 和 AutoML 是深度學習不久後能夠達到的。不要誤會,我喜歡寫代碼,但是我也認為以後我們寫的代碼數量會減少。我們不能重複浪費那麼多時間一遍一遍寫同樣的東西,因此我認為這兩個功能(GUI 和 AutoML)將幫助數據科學家提高生產力,解決更多問題。




參考閱讀:






  • 業界 | 李飛飛、李佳宣布發布 Cloud AutoML:AI 技術「飛入尋常百姓家」



  • 專欄 | 自動選模型+調參:谷歌 AutoML 背後的技術解析




在簡單的 GUI 中完成這些任務的最好免費平台之一是 Deep Cognition。其簡單的拖放界面可以幫助你輕鬆設計深度學習模型。Deep Learning Studio 具備先進的 AutoML 功能(幾乎可以一鍵完成),可以為你的自定義數據集設計深度學習模型。




該平台還是免費的~







我的意思是,這個領域的發展實在太迅速,現在我們已經可以使用簡單的 GUI 來學習本文中涉及的所有複雜和有趣的概念。




我喜歡這個平台的原因是,你不需要安裝任何東西就可以寫代碼,用命令行或 Notebook 來使用 TensorFlow、Keras、Caffe、MXNet 等。 




其它有趣的深度學習應用:






  • http://skejul.com/



  • https://www.microsoft.com/en-us/seeing-ai/



  • https://dialogflow.com/




原文鏈接:https://towardsdatascience.com/a-weird-introduction-to-deep-learning-7828803693b0






本文為機器之心編譯,

轉載請聯繫本公眾號獲得授權


?------------------------------------------------


加入機器之心(全職記者/實習生):hr@jiqizhixin.com


投稿或尋求報道:editor@jiqizhixin.com


廣告&商務合作:bd@jiqizhixin.com

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 機器之心 的精彩文章:

深度可逆網路i-RevNet:信息丟棄不是泛化的必要條件
演算法偏見:為女性推薦低薪工作,快遞服務繞過黑人區

TAG:機器之心 |