1.开篇
1.1 为什么我开始写这个系列博客
说五年前我还在某A云公司的时候,身在一个机器学习算法组,对机器学习怀有浓厚的兴趣。花了好多的时间来试图搞清楚各种流行的机器学习算法,经常周末也跟同事探讨公式的推倒和背后的意义。写博客的主要动力是让自己能够更好的理解机器学习。
后来坚持了没有太久的时间就换到大数据方向了,最主要的原因是觉得自己数学天赋太差,尤其是数学。当初学习的时候主要参考的PRML,Andrew Moore的PPT,Andrew Ng的公开课,plukids博客,另外加上淘宝斌强哥的各种悉心指导。但是学了好久,公式能大概看懂是怎么回事,不过自己徒手推出来实在是太艰难了。PRML的习题,甚至是具体数学的习题,都很难做得出来。
后面的发生的事情就理所当然了,既然很难在这个领域做到核心(我的理解是具有及其好的数学天赋作为后盾才能做到机器学习的核心),那么为什么不换一个更适合自己的方向呢?恩好吧,基础数据架构(Infra)看起来是个不错的方向,不需要理解太多的数学(除了真的需要去实现Paxos)。做Infra如果有架构设计的基础,另外加上勤奋,多多少少还是能做出一些东西的。
为什么我又要重新开始写机器学习相关的文章了?最主要的原因是现在的机器学习和五年前、十年前区别很大。最大的不同是,自从深度学习成为了机器学习舞台上最重要的一个角色起,机器学习变得更加真实了,利用深度学习可以做出很多很有意思的真实世界的应用,而这些东西在几年前的门槛要高得多。我在本文之后会更详细的展开此点。
此外这几年的工具发展神速,利用TensorFlow、MXNet或者其他类似的工具可以很容易的开始自己的pet project,也不用理解太多背后的细节。而在几年前能用的现成工具寥寥无几,而且十分的碎片化,比如说如果想要做分类器吧,需要用libsvm,需要搞跨语言调用。如果要换个算法的话,那可是要命的事情了。当然这些东西对于大公司来说都不是事儿,但是对于个人学习者来说需要投入的经历太多了,远不是业余时间可以承担的。
1.2 What to expect?
差不多关注了几个月的深度学习,虽然没有花太多时间来写代码,但是各种各样的博客、视频、公开课还是看了一些。这个系列和几个我看过的主要内容的差异:
- 首先这个不是一个科普杂文,现在已经有很多旁征博引丰富多彩老少皆宜的杂文,比如说王川的深度学习到底有多深系列,我准备少些一些历史和背景花絮,多写一些技术。
- 其次这个不是一个系统的深度学习教程,现在已经有非常多非常好的相关公开课,比如说Stanford的CS231N\CS224D,Hilton的,Udacity的等等。我不准备写得面面俱到。
- 另外我会尽量少的涉及数学,因为我不可能把数学推导过程写得比Ian Goodfellow的Deep Learning书写得更清楚。但是我会尽量把最重要的部分写出来。
所以我希望写出的是,当看过网上的博客、公开课和书后,什么地方是最难理解的。
2. 深度学习为什么是革命性的
啰里啰嗦了这么多,开始正文了。此篇博客严重参考了来自[1]第一章Introduction的内容,包括图片和内容。
2.1 前深度学习的世界
深度学习不是一个新概念,它已经存在好几十年了,具体可以参考[1]/[2],这里所说的深度学习世界大抵是在最近几年深度学习刷新各个机器学习领域之后了。
前深度学习世界的特征

