一份帮助你更好地理解深度学习的资源清单
摘要:?深度學習朝著可解釋的方向發展,理解背后的基本原理顯得更加重要。本文是一份幫助讀者更好地理解深度學習基本過程的清單,便于初學者和部分起步者針對性地補充自己的知識體系。
?
? ? ? ?人工智能和深度學習太火了,火得一塌糊涂,有很多人想從事這個行業。網絡上也有很多教程可供大家開始深度學習。如果你完全是一個小白,那么你可以在入行時選擇使用極好的斯坦福課程CS221或[CS224](),Fast AI課程或深度學習AI課程。除了深度學習AI之外的課程,其它的課程都可以在家中舒適地免費學習。此外,你只需要一臺好的計算機(最好使用Nvidia GPU),就可以正式地邁出深度學習的第一步。
? ? ? ?然而,本文內容并沒有解決絕對的初學者問題,一旦你對深度學習算法的工作方式有了一些感覺,你可能會想要進一步地了解整個過程是如何運作的。雖然深度學習中的大多數工作是添加像卷積層(Conv2d)這樣的層、在ADAM等不同類型的優化策略中更改超參數或者通過編寫一行命令來改變使用Batchnorm。深度學習方法一直被人稱為是一個“黑匣子”,很多人可能會想知道背后發生的事情。本文是一個資源列表,可能會幫助你了解背后的過程,比方說放置卷積層或在Theano中調用T.grad時發生的過程。
論文|General Treatise
? ? ? ?深度學習花書(Deep Learning Book)是最知名的資源,一直占據各大電商相關書籍排行榜的第一位。其他很好的資源是Charniak教授的課程和論文,主要是關于深度學習技術的介紹。如果還想從特定的角度理解事物,還有其他的一些資源可能需要學習。例如,本教程是從應用數學家的角度編寫的,如果你只是想在沒有任何理論基礎的情況下開始編程實踐,那么請閱讀這個資源。另外推薦的一個資源是關于PyTorch的深度學習課程,該課程將自下而上地對內容進行討論,幫助你開闊視角。
關于反向傳播的問題|Backpropogation
? ? ? ?在很多時候,進入深度學習領域前,需要掌握的第一個算法就是反向傳播(Backpropogation)算法,這是因為神經網絡中的參數更新方法過程大多數是反向傳播算法。當你不知道“梯度下降和反向傳播有什么關聯?”或“鏈式法則和反向傳播究竟是什么?”時,為了理解基礎知識,我們可以選擇去閱讀Rumelhart、Hinton和Williams的原始論文,這篇論文是一篇非常簡單易懂的文章。
? ? ? ?其他一些非常有用的資源可以在此閱讀完原始論文的基礎上,進一步閱讀Karpathy關于反向推導的博客和解釋反向推導的視頻。
線性代數和其他數學|Linear Algebra & other Maths
? ? ? ?任何有志于學習線性代數的人都會人轉向學習Strang教授的課程,這個課程可能是市面上學習線性代數的最佳資源。類似于Boyd教授的優化課程或矢量微積分的微積分書(可以在網絡上找到pdf電子版)。? ? ? ?然而,人們并不需要完全地學會這些資源,深度學習所需要的數學知識深度沒有那么的深。一個非常好的快速入門方法就是快速地復習一遍所有必備的微積分深度學習課程。還有一套非常好的講義,該講義只關注深度學習中使用的凸優化理論。另外一個很好的資源是Sebastian Reuder的論文。
自動微分和深度學習框架|Automatic Differentiation & Deep Learning Libraries
? ? ? ?進行深度學習時,自動微分法(Automatic Differentiation)并不是你必須知道的知識。對于大大多數框架而言,比如Torch、Theano或tensorflow都會自動地為你完成這個算法。在大多數情況下,你甚至不必知道如何進行微分,也就是說,如果你決定進一步深入了解深度學習框架的工作原理,那么你可能需要了解自動微分法是如何工作的。了解深度學框架庫功能其它的好資源可以在這個博客和視頻中找到。
卷積神經網絡|Convolutional Neural Networks
? ? ? ?當你完成一些使逆能夠使用基本神經網絡的課程后,你可能需要的最有用的知識是了解卷積處理圖像的過程。 “在輸入上應用某種類型的卷積后,輸出形狀是什么?”、“步幅(stride)如何影響卷積?”,“什么是批量標準化(Batch Normalization)?”等類似的內容。我在遇到這些類型的應用問題時,找到的兩個最好的資源是該教程和Ian Goodfellow的討論。如果你有其它的想法,可以在這里對卷積網絡進行更全面的評論。這篇關于對象檢測的綜述性文章是關于卷積神經網絡這一主題非常好的資源。
深度學習中的自然語言處理|NLP
? ? ? ?之前指出,斯坦福大學C224課程是學習NLP的一個非常好的起點,在學習完該課程之后,應該能夠對所有的事情處理得很好。此外,還有Graham Neubig(使用dynet工具包)在youtube上的課程以及Yoav Goldberg的NLP書,還有一份關于NLP進展的綜述性文章在此。關于是否在文本上使用CNN或RNN(LSTM / GRU)還有一個公開討論的問題,這里有一個很好的概述。
強化學習|Reinforcement Learning
?
? ? ? ?sutton和Barto(1998)可以說是強化學習領域的一本圣經,這本書是免費的,可以在這里獲取。這個資源提供了一份對最近的深度強化學習方法非常好的回顧,這個資源有關于強化學習的非常有趣的教程。
? ? ? ?蒙特卡洛樹搜索(Monte Carlo Tree Search)(這是Deepmind除了深度強化學習技術之外的AlphaGo算法的一部分)的詳細介紹在此,但我使用一個快速教程來理解它。
其他一些好的綜述/教程|reviews & tutorials
? ? ? ?關于GAN(生成性對抗網絡)和生成模型的一個很好的教程是Goodfellow在ICLR 2016中給出,可以在這里找到。神經網絡已被用于遷移藝術(例如在Prisma應用程序中),可以在此處找到有關方法的詳細介紹。 Reuder對多任務學習(由同一神經網絡組合多個任務)的另外一個很好的調查研究可以在此查看。
評論|Criticisms
? ? ? ?盡管深度學習在多個任務上的表現十分出色,但我們自己心里清楚,還有一些地方尚未明確或效果不好。一些好的評論是Shalev-Shwartz等人關于基于梯度學習算法的失敗,還有在Hinton大牛的演講中列舉出的一些關于卷積神經網絡的問題,以及卷積神經網絡如何解讀它們所訓練的圖像的負面影響。此處的一個評論在幾天之后就變成了病毒性/爭議性的話題,還有關于惡意使用深度學習的廣泛報道。
對抗性樣本|Adversarial Examples
? ? ? ?對抗樣本是一個制造人工/真實數據點的巨大領域,制作出的樣本可以欺騙卷積神經網絡。我本可以把這部分放在評論部分,但由于以下原因沒有進行這樣的處理:
- 它們不是所有應用程序的技術挑戰
- 我對其的了解并不是很好。一個非常酷的生成“對抗對象”來欺騙神經網絡案例在此,感興趣的讀者可以研究下。
? ? ? ?你還可以閱讀有關你應該了解的機器學習算法,以便成為數據科學家。
數十款阿里云產品限時折扣中,趕緊點擊領劵開始云上實踐吧!
原文鏈接?
本文為云棲社區原創內容,未經允許不得轉載。?
總結
以上是生活随笔為你收集整理的一份帮助你更好地理解深度学习的资源清单的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MaxCompute Console 实
- 下一篇: 理解卷积神经网络的利器:9篇重要的深度学