打包带走你的深度学习优秀“资源”,摆脱菜鸟称号!
互联网上充满了深度学习的教程。如果你是一个初学者,你可以选择去上斯坦福大学的CS221、CS224课程或人工智能课程等等。当然还有另外一种方法,你只需要一台性能良好的电脑(最好是使用Nvidia GPU),这样你就可以很好地开始深度学习。
然而,并没有绝对的初学者。一旦你对深度学习算法的工作原理有了一定的了解,你可能更多的是对方法的掌控。大多数工作需要使用深度学习,像Conv2d,在不同类型的优化策略(如ADAM)中改变超参数或使用batchnorm和其他技术,只需在Python写一行命令就能完成(多亏了可用的框架),但很多人可能会想知道框架背后是如何处理的。本文的资源列表可以帮助你了解在(例如)放置conv2d图层或在Theano中调用T.grad时发生的情况。
一般论文
书本是最好的老师,如果你还想要更多的推荐话,作者认为Charniak教授的课程和论文你一定不能错过。如果你想从特定的角度理解事情,你可能还需要其他资源。例如,本教程是从应用数学家的角度编写的,如果你只是想开始编码而不涉及任何理论,请阅读此处。(https://arxiv.org/abs/1703.05298)。
关于反向推广的问题
有很多时候,人们不确定"梯度下降和反向推广是一回事吗?"或者"链式法则和反向推广究竟是什么?"。为了理解基础知识,我们可以选择阅读Rumelhart,Hinton和Williams的论文。论文位于这里,是一个非常简单易懂的文档。(https://web.stanford.edu/class/psych209a/ReadingsByDate/02_06/PDPVolIChapter8.pdf)
线性代数和其他数学
任何人都会引导有意学习线性代数的人来开始学习Strang教授的课程。(https://ocw.mit.edu/courses/mathematics/18-06-linear-algebra-spring-2010/) 它可能是地球上线性代数的最佳资源。类似的例子还有Boyd教授的优化课程或者关于向量微积分的书籍。(http://web.stanford.edu/~boyd/cvxbook) 然而,一个人不需要深入研究这些资源的深度。 快速入门的方法是快速回顾所有深度学习的先决条件——微积分,可在此处找到。(https://arxiv.org/abs/1802.01528) 另一个很好的资源是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) 和视频(https://www.youtube.com/watch?v=Lo1rXJdAJ7w) 中找到。
卷积神经网络
在你完成一些课程后,你可能需要做的最有用的事情就是了解卷积如何作用于图像上的。 "在输入应用某种类型的卷积后,输出的形状是什么?","跨度如何影响卷积?","什么是批量标准化?"等等。作者在这些类型的应用问题中看到的两个最好的资源是这里的教程(https://arxiv.org/abs/1603.07285) 和Ian Goodfellow的谈话。(https://www.youtube.com/watch?v=Xogn6veSyxA) 如果你想了解的话,这里有一个关于Convnets的更全面的回顾。(https://arxiv.org/abs/1803.08834) 这篇关于对象检测的综述是本课题的一个很好的资源。(https://arxiv.org/abs/1803.08834)
NLP深度学习
作者之前指出斯坦福大学的CS224课程是一个非常好的起点,学习掌握它后你应该能够胜任几乎所有关于它的事情。 Graham Neubig(使用dynet)在YouTube上也有一门课程。(https://www.youtube.com/watch?v=Sss2EA4hhBQ) Yoav Goldberg还有一本你可能会喜欢的NLP书。(https://u.cs.biu.ac.il/~yogo/nnlp.pdf)关于是否在文本上使用转换网或RNN(LSTM / GRU)也有一个非常常见的问题。这里有一个很好的概述。(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)
蒙特卡罗树搜索(除深入增强学习技术之外,它是Deepmind的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)
其他一些好的评论/教程
关于GANs(生成敌对网络)和一般生成模型的一个很好的教程是Goodfellow在ICLR 2016中给出的。可以在这里找到。(https://www.youtube.com/watch?v=HGYYEUSm-0Q) 神经网络已被用于传输艺术(例如在Prisma应用程序中),详细的调查方法可以在这里找到。(https://arxiv.org/abs/1705.04058) Reuder的另一个关于多任务学习(通过同一个神经网络组合多个任务)的好的文章在这里。(https://arxiv.org/abs/1706.05098)
批评
尽管深度学习在很多问题上都表现得非常出色,但我们知道,总有一些地方它还尚未达成目标。一些很好的批评是Shalev-Shwartz等人基于梯度学习的失败提出的,(https://arxiv.org/abs/1703.07950) Hinton的这篇文章中也列举了一些对流方面的困难(https://www.youtube.com/watch?v=rTawFwUvnLE) 以及对流网络不能解释他们训练图像的负面影响。(https://arxiv.org/pdf/1703.06857.pdf) 。