1. 程式人生 > >傑哥的《深度學習》讀書筆記

傑哥的《深度學習》讀書筆記

最近開始學深度學習(Deep Learning,DL),主要是讀Ian Goodfellow, Yoshua Bengio和Aaron Courville合著的《深度學習》一書(http://www.deeplearningbook.org/)。我打算邊讀邊寫讀書筆記,一方面是鞏固知識,一方面也是分享給同路中人,並希望得到大家的反饋。

為什麼要學深度學習?

最近幾年深度學習無疑是機器學習(Machine Learning,ML)領域最火熱的技術。尤其是業界的大量參與,使得DL成為許多企業和個人的核心競爭力,這已經成為一種不可抵擋的趨勢。在學術界,深度學習的研究已經深入到方方面面,每年發表了大量的相關論文。而在產業界,從Google、Facebook、微軟到百度、阿里、騰訊,深度學習無一不是戰略發展重點。由於深度學習的廣泛應用,這些年許多技術領域取得了顯著的進步。比如就在不久前主流觀點還認為機器要想打敗人類圍棋高手還需要10-20年,結果就在2016年,Google公司的AlphaGo程式以4比1戰勝李世石九段,震驚了世界,而AlphaGo的背後就用到了深度學習技術。在深度學習最為擅長的領域,比如影象識別和語音識別,準確度的提高也極為驚人。與傳統的機器學習不同,深度學習對於資料是“韓信點兵,多多益善”,就如下圖所示。


機器學習發展了幾十年,已經有了許多成熟的工具,並且每過幾年就會有一個突破性的技術引領潮流。比如從早期的線性迴歸(Linear Regression和Logistic Regression),神經網路(Neural Networks),決策樹(Decision Tree),到支援向量機(SVM)和核化方法(Kernel),條件隨機域(CRF),矩陣分解(Matrix Factorization),主題模型(Topic Model,如LDA),等等。每個技術都有其特點和適用領域,深度學習才出現幾年,也並非可以解決一切問題,但為什麼突然間它幾乎統治了整個學術界和工業界呢?

我個人覺得有幾個原因:

  1. 隨著雲端計算的普及,儲存和計算成本大幅降低,企業可以儲存更多的資料以期獲得更多的知識回報。資料的增加可能會導致兩個後果:計算時間延長,提取特徵(feature)的工作量加大。DL誕生的時候剛趕上雲端計算的大潮,所以天生就是針對大資料的,資料越多效果越好,並且它能夠自動學習特徵。也可以說,相對於傳統的機器學習演算法,DL是一種更為現代的技術,更加適應這個時代的需要。
  2. 在理論上它能引起學術圈足夠的興趣,深度學習是對傳統機器學習演算法一個巨大的突破。於是大學和研究所能獲得足夠的經費支援,並培養了大量這方面的人才。
  3. 在應用上DL的表現也非常突出。它的應用面很廣,對許多問題的精度提高很明顯,尤其是機器視覺和文字分析。於是很多公司提供這方面的工作機會,並推動這項技術繼續發展。

正是由於學術界和工業界雙管齊下,相互促進,深度學習得以迅速發展,前景風光無限。無論是企業還是國家,雲端計算和智慧化都是未來的核心戰略,所以對於個人來說,順應潮流,掌握以深度神經網路為代表的現代機器學習技術,不管是對找工作還是職業發展來說,都是大有幫助甚至至關重要的。

為什麼選這本書?

深度學習方興未艾,各種學習資料層出不窮,但我現在能找到的教程裡,系統而全面的目前並不多見。本書的作者之一,Yoshua Bengio教授,是DL三位祖師爺之一(Yann LeCun, Yoshua Bengio, Geoffrey Hinton),他們三人聯合發表在《自然》雜誌的論文,是深度學習的里程碑。如果說三位大神開創了DL這麼學科,那麼由斯坦福Andrew Ng教授(Coursera創始人之一)和Jeff Dean(雲端計算之父,MapReduce的創始人之一)建立的Google Brain專案則是將DL發揚光大的重要力量,後來的TensorFlow也誕生與這個專案,並且得以開源。而這本書的第一作者是Bengio的學生,曾經在Google Brain專案組工作過。他之前的老闆是Brain的負責人之一,他後來的老闆Samy Bengio,是Yoshua的親兄弟。

由此可以看出,本書的作者既有紮實的理論功底也有豐富的實踐經驗,是全面介紹深度學習的最佳人選。從我目前讀過的幾章來看,的確也寫的很好,邏輯嚴密,由淺入深,層次分明,值得下功夫去學透。

本書的內容 全書分為以下三個部分:
  1. Applied Math and Machine Learning Basics,主要介紹機器學習的數學基礎,包括線性代數、概率統計、數值計算和優化,以及機器學習的基礎概念和一些經典模型。
  2. Deep Networks: Modern Practices,是全書的重點,從淺到深逐步覆蓋了深度學習的核心內容,如Deep Feedforward Networks, Convolutional Networks, Recurrent and Recursive Networks,也用兩個章節詳細介紹了Regularization和Optimization著兩個重要概念。最後是實踐環節,包括如何評估,如何Debug,模型選擇等等,以及一些經典的應用領域。
  3. Deep Learning Research,介紹了DL領域一些熱門的研究領域。正如前面介紹的那樣,DL還是一門很新的學科,還有許多疆土需要去開拓,這一部分可以幫我們開拓眼界,也可以提升理論素養。
每個人的背景和動機都不一樣,所以可以根據實際情況調整學習內容和速度。比如我打算快速掠過第一部分,重點學習第二部分,選擇性看看第三部分。對於理論的部分我會先只看個大概而不過分去演算細節,當遇到具體問題的時候,再回到書中尋找答案。畢竟我的出發點是把DL用到工作中,而不是從事這方面的學術研究。但如果有需要,我也會仔細去推演演算法和模型細節。

如何學習深度學習?

讀到這裡,也許你也躍躍欲試了吧。歡迎你加入深度學習的陣營!你可以去http://www.deeplearningbook.org/線上閱讀本書,或者到網上找到它到PDF版本,列印下來讀,當然最好是去購買本書。

也許本書的中文版很快就會出版,不過能讀原著是對自身能力的很好鍛鍊,我也希望這個讀書筆記能幫到你。

要說明的一點是,我假定讀者跟我一樣,已經有了一定的機器學習背景,至少了解它的主要概念(如統計模型的概念,訓練資料集,過擬合overfitting等等),最好用過一些工具(如R,Scikit-learn,或Weka)。本書中一些非常基礎或者非常理論的內容我可能會有選擇的跳過或從簡,一切以便於實踐為前提,以加深理解為目標。

為了方便大家搜尋相關的英文關鍵字,也為了避免翻譯上的歧義,許多名詞術語都是直接用其英文原文或縮寫。

同其他機器學習的技術一樣,深度學習分理論和實踐兩方面。我希望儘量兩方面都有覆蓋,但這個系列並不是教程而是讀書筆記,所以還是以書的內容為主,根據我自身的經驗挑選記錄的內容,並附上我自己的理解。如果有不對或有爭議的地方,還請各位多多指正和賜教。

同時,大家也可以根據自己的情況參考其他的教程,比如:

當然,網上也有大量的學習資料,我覺得主要問題是不夠系統和全面,或者只是針對某個具體領域。我在開發者頭條有個深度學習的獨家號,會經常收集一些最新的文章和網站,歡迎大家訂閱(需要下載開發者頭條的app)。

最後,歡迎大家積極留言和討論,讓我們一起開展一段愉快而充實的學習之旅。