老司机发车:深度学习干货速取!
点击上方关注,All in AI中国
作为一名人工智能领域方面的新手,上网课是一个不错的选择。你可以选择上斯坦福大学的cs221(http://cs231n.stanford.edu/)或cs224(http://cs224d.stanford.edu/ )课程,以及AI快速入门课程(https://www.deeplearning.ai/ )或者深度学习课程。除了深度学习课程,其他都是免费的,并且由于是网课,你可以选择在家里学习。所有你唯一需要准备的可能就是一台性能不错的电脑。
然而,世界上没有绝对的初学者。当你对深度学习算法的工作方式有了一定的理解后,你可能会想要了解深度学习算法的背后是怎样的一套工作原理。人们对深度学习的应用无非是添加诸如Conv2d层,在不同类型的优化策略中(如ADAM)更改超参数,或者仅仅通过用Python编写一行命令来改变超参数(多亏了我们有那么多可用的框架),许多人对此表示惊异的同时也可能会非常想知道这一系列惊人的成果背后究竟发生了什么。这也是作者写本文的目的所在。阅读本文,你会知道在Theano中放置一个conv2d层或调用T.grad时,“引擎盖”内部发生了什么。
常用书目
《Deep Learning》是每一个深度学习爱好者/工作者都不能错过的书目(http://www.deeplearningbook.org/ )。Charniak教授的课程和论文也很不错,它们大多是对深入学习技术方面的介绍(https://cs.brown.edu/courses/csci1460/assets/files/deep-learning.pdf )。如果你的脑海中对深度学习已经有了一个基本的框架,想从一个特定的角度来了解深度学习。那么下面的推荐,一定可以满足你的需要。《深度学习与应用数学》是从数学的角度编写的。又或者你只想进行编码,不想深究理论的话,请点击: https://arxiv.org/abs/1703.05298。另一个推荐的资源是PyTorch的深度学习课程。阅读它,你能获得更大的视野(https://documents.epfl.ch/users/f/fl/fleuret/www/dlc/ )。
关于误差反向传播
很多人对这两处都存在误区,即“梯度下降和误差反向传播有什么关系”,“链式法则和反向传播的实质是什么?”。在这里,作者给出的建议是阅读Rumelhart、Hinton和Williams 这三位的论文。论文链接: https://web.stanford.edu/class/psych209a/ReadingsByDate/02_06/PDPVolIChapter8.pdf 其他一些非常有用的资源,你可以阅读Karpathy的博客(链接:https://medium.com/@karpathy/yes-you-should-understand-backprop-e2f06eab496b https://www.youtube.com/watch?v=gl3lfL-g5mA )。
线性代数等数学方法
任何一个老手都会对那些渴望学习线性代数的人说,Strang教授的课程你一定不能错过。这可能是地球上最好的线性代数资源(https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/ )。Boyd教授所讲的流行上的微积分也是线性代数学习者不容错过的课程(你可以在谷歌上搜索“Calculus on Manifolds”,你将搜索到Boyd讲述内容的PDF版。)然而,如果你只是想有所涉猎的话,你不必对他们的内容投入过多的精力。你可以点击这里,进行快速的了解:https://arxiv.org/abs/1802.01528
关于凸优化在深度学习上的应用,你可以点击这里:http://people.eecs.berkeley.edu/~elghaoui/Teaching/EE227BT/lectures.html 。其中佼佼者Sebastian Reuder的论文请点击:https://arxiv.org/abs/1609.04747
如果你对张量感兴趣,点击:https://github.com/mtomassoli/tensor-differential-calculus/blob/master/tensor_diff_calc.pdf
自动微分与深度学习库
当你做深度学习时,你不需要知道自动微分。大多数框架,如Torch、Theano或TensorFlow,都是自动为你完成的。在大多数情况下,你甚至不需要知道它们之间有没有区别。也就是说,如果你决心了解深度学习框架是如何工作的,你可能需要了解自动微分是如何工作的。如果你对这些真的感兴趣,请点击:https://arxiv.org/abs/1502.05767
http://blog.christianperone.com/2018/03/pytorch-internal-architecture-tour
卷积神经网络
当你对深度学习有了一定的了解后,你可能会发现弄清楚卷积神经网络的工作原理是非常重要的。作者在这里会帮你弄清楚,“输入中使用了某种卷积后,输出会是怎样的?”“跨步(stride)是如何影响卷积的?”“什么是Batch Normalization?”现在,附上与此相关的链接:https://arxiv.org/abs/1603.07285 https://www.youtube.com/watch?v=Xogn6veSyxA https://arxiv.org/abs/1803.08834 https://towardsdatascience.com/deep-learning-for-object-detection-a-comprehensive-review-73930816d8d9
NPL中的深度学习
前文提到,作者认为斯坦福CS 224课程对初学者而言是一个非常好的起点。而关于NPL,作者认为,YouTube上Graham Neubig(使用dynet)的课程非常不错(链接:https://www.youtube.com/watch?v=Sss2EA4hhBQ)
关于NPL的书目推荐:https://u.cs.biu.ac.il/~yogo/nnlp.pdf
以及是否在文本上使用convnets或RNNs (LSTMs/GRUs)的一些概述,点击这里:https://arxiv.org/pdf/1803.01271.pdf
强化学习
对于每个学习强化学习的人而言,这几本书不能错过。链接:http://incompleteideas.net/book/the-book-2nd.html
有关强化学习的一些方法指南:https://arxiv.org/abs/1708.05866 。这是一个关于强化学习非常有趣的教程:https://hackernoon.com/intuitive-rl-intro-to-advantage-actor-critic-a2c-4ff545978752。
蒙特卡洛树搜索(Monte Carlo Tree Search )作为AlphaGo算法的一部分,了解它请点击 http://mcts.ai/pubs/mcts-survey-master.pdf。如果你时间有限,你可以点击http://jeffbradberry.com/posts/2015/09/intro-to-monte-carlo-tree-search/?utm_source=top.caibaojian.com/19271
其他一些好的教程
关于生成对抗性网络和相关模型教程:https://www.youtube.com/watch?v=HGYYEUSm-0Q
神经网络在风格转换方面的应用:https://arxiv.org/abs/1705.04058
相关补充:https://arxiv.org/abs/1706.05098
批评
俗话说,好的批评能让人更快的进步。放到深度学习中也不例外。尽管深度学习在各个领域扮演着越来越重要的角色,但它的问题也是不容忽视的。
相关链接:
https://arxiv.org/abs/1703.07950 https://www.youtube.com/watch?v=rTawFwUvnLE https://arxiv.org/pdf/1703.06857.pdf
关于深度学习被恶意使用的报道:https://arxiv.org/abs/1802.07228