前言
当人工智能的热潮席卷全世界的时候,当我们一次又一次为各种人工智能新作而惊叹的时候,我们不约而同地将目光投向了深度学习领域。我们对这个既新鲜又传统的领域有一种憧憬,甚至我们之中的许多人会在某一刻认为这可能是未来机器觉醒前的萌芽。
说深度学习新鲜,是因为它在近几年的发展确实获得了令人瞩目的成果,不论是在计算机视觉(Computer Vision, CV)领域,还是在自动语音识别(Automatic Speech Recognition, ASR)领域,抑或推荐系统应用领域,都迈上了一个前所未有的新台阶。这当然得益于计算机硬件处理能力的提升,包括CPU的速度、内存的大小、磁盘的容量;得益于新型并行计算框架的逐步成熟,例如CUDA(Compute Unified Device Architecture);得益于广大热衷于贡献高质量开源软件系统的大厂的扛鼎力作,例如TensorFlow、PyTorch、MXNet等优秀框架的不断涌现。这些无一例外,都成为推动一个行业在全国乃至全世界发展的重要因素。
说深度学习传统,是因为它最为基本的理论部分,是在数十年前就逐步有人提出并进行完善的一套理论体系。一位朋友曾告诉我,在他研究生毕业的时候(应该是在21世纪初),有不少同学的研究方向是人工智能和神经网络,而其中的大多数人,不是进了国有研究所,开始了日复一日“读Paper、写Paper”的过程,就是进了保险公司、证券交易所等企业——做什么呢?也不是做自己的老本行,而是做报表、做数据分析、写报告。
当然,这些同学算是比较“幸运”的,还有相当一部分干脆改了行,去往一些企业的开发岗位,做Java开发或者数据库架构之类的工作。我完全没有轻视这些岗位和企业的意思,我只是单纯地觉得,在大学中花了那么多年走出来的一条路,没办法再走下去,是一件非常可惜的事情。而在导致这一现象的众多客观因素中,前面提到的计算能力、框架成熟度、软件包可用性等起着决定性的作用。
不过,我们赶上好时候了。除落地应用外的大部分基础问题,都已经由那些世界一流的数据科学家帮我们解决,并封装成了一个个开源或非开源的软/硬件产品。
其实,除了深度神经网络在CV、ASR、NLP等领域的应用,近几年,深度学习在另外一个领域有着炫目的成绩,那就是深度强化学习领域。别的不说,大名鼎鼎的AlphaGo和AlphaGo Zero就是典型的深度强化学习应用。从感性的角度看,深度强化学习似乎是由“深度学习”和“强化学习”两个领域结合而成的——这个说法应该不算错。
所谓深度学习,一般是指基于深度神经网络的一系列应用,而这个领域应用的丰富程度也是非常高的。因为深度神经网络有着超高的VC维,所以理论上它几乎可以用来实现任何从x到f(x) 的映射关系。
强化学习所研究的事情就更有意思了。强化学习研究的主要是如何让机器人在一个预先定义好的环境中,通过自己学习来逐步形成或学会一套成熟的、高质量的自动化行为策略,这也是一直以来世界一流高校的人工智能专业设立并努力研究的一个神秘而又让人充满幻想的领域。
为了让广大读者能够近距离接触强化学习和深度学习结合应用的案例,让这样一个有趣且有着光明前景的领域以更加平易近人的姿态出现,在这本书中,我将用具有高中数学水平的读者朋友能够理解的语言,和大家好好分享一下如何用深度学习的利器PyTorch来完成人工智能机器人自我进化的落地过程。