前言
为何写作本书自2012年以来,随着深度学习(Deep Learning,DL)的快速发展,人工智能(Artificial Intelligence,AI)取得了长足的进展。\从语音助手、人脸识别、照片美化,到自动驾驶、医疗诊断、机器翻译,基于深度神经网络(Deep Neural Network,DNN)的新一代人工智能,已在各个领域进入我们的日常生活。许多学者认为,人工智能将开启第四次工业革命,并对人类的未来产生深远影响。
例如,通过Mask R-CNN深度神经网络,电脑可快速自动识别出图像中的各个物体,用色彩和方框标记。这对于自动驾驶和机器人技术有重要意义,也是传统AI方法难以实现的。
值此变革之际,我们理应跟上时代的步伐,增进对DL与AI的了解。本书的目标是:
如果读者没有编程和数学基础,也能在阅读后体会到深度神经网络的奥妙。
如果读者有一定基础,就可学会用DL的方法解决实际问题,为从事相关的工作和研究做好准备。
具体而言,本书选取深度卷积网络(Deep Convolutional Neural Network,DCNN)作为切入点,这是目前最流行的深度神经网络架构,其构造直观易懂,效果引人入胜,在图像、视频、语音、语言领域都有广泛应用。
我们还将结合多个实例进行讲述,让读者更深入理解深度神经网络的运作。说起深度神经网络的实例,广为人知的莫过于由Google DeepMind研发的AlphaGo(https://deepmind.com/research/alphago/):
在2016年3月,AlphaGo以4:1战胜韩国顶尖棋手李世乭,让AI成为了目前最热门的话题之一。
在2017年5月,新版AlphaGo以3:0战胜当今世界围棋第一人—中国的柯洁。所有棋手都认同它已全面胜过人类,但它仍需要人类棋谱作为训练的前期输入。
在2017年10月,名为AlphaGo Zero的最新版AlphaGo已能完全脱离人类棋谱,从零开始,纯粹依靠自我探索,自我对弈,就能实现超越此前所有版本的棋力。
如下图所示,蓝色的20-blocks版AlphaGo Zero,最初的棋力还不如人类的初学者,但它在24小时内就能赶上红色的学习人类棋谱的AlphaGo,并在40小时内超越与李世乭对战的AlphaGo。
在2017年12月,DeepMind还将AlphaGo Zero的方法用于国际象棋、日本将棋,称为AlphaZero。它仅需几个小时的训练,就打败了此前世界最强的程序,这证明AlphaGo方法的通用性极强。
AlphaGo的核心是深度卷积网络。深度神经网络的强大,关键在于能模拟人类的直觉。AlphaGo的强大,关键在于通过深度卷积网络,成功模拟了人类的棋感。
那么,深度卷积网络是如何学会下围棋的?AlphaGo真的理解围棋吗?AlphaGo与人类下棋的思维有怎样的相同和不同之处?我们将在第6章阐述AlphaGo的运作,并在第7章亲手训练AlphaGo的策略网络(policy network)。如下图所示,棋盘中的标记1到9,代表此时策略网络对于下一手的前9位推荐。
深度神经网络的威力,还不仅止于此。近年来,深度学习中热门的话题是一种新的深度神经网络范式:生成式对抗网络(Generative Adversarial Networks,GAN)。它同样基于深度卷积网络,我们会在第8章讲述。
GAN试图模拟人类的更神秘之处:创造力和想象力,如自动作画、自动作曲,甚至自动发现治疗癌症的药物结构。例如,通过StackGAN网络,电脑可根据人提供的文字描述,自动绘制出无穷无尽的符合描述的图像。
目前GAN的结果还不完美,但已有许多业界人士开始思考:离AI在所有领域超越人类还有多远?AI会造福于人类,抑或会取代甚至毁灭人类?本书的第9章将讨论这一话题,并介绍当前AI方法的强项与缺陷,展望未来的发展。
总而言之,本书以AlphaGo与GAN为主例,再配合大量其他实例,为读者揭开深度卷积网络的面纱,让我们深入逐层认识AI的“思考过程”,包括与人类思维的相同和不同之处,体验AI眼中的世界。这会是一段奇妙的旅途,希望本书能成为读者探索深度学习世界的助手。
憾于篇幅所限,本书的重点会是深度卷积网络,尤其是它在图像的应用。对于深度学习涉及的其他领域,如循环神经网络(Recurrent Neural Network,RNN)、深度强化学习(Deep Reinforcement Learning,DRL)等等,希望能在未来再为读者讲述。
深度学习的发展日新月异,笔者只是略知皮毛,书中难免有错漏之处,恳请读者不吝指正。
本书的特点市面已有不少介绍深度学习与深度神经网络的书籍,但多为编著或译文。本书的特点是:
叙述与代码范例皆会结合笔者的实际经验,如调参经验和网络架构经验,让读者掌握真正具有实用性的技巧。
包括深度卷积网络和AI的重要最新发展,如DenseNet、XCeption、各种GAN变种、预测学习(predictive learning)、Capsule等。书中的许多例子都来自于2017年的最新研究。
对于重要的理论知识,如反向传播(Back Propagation,BP)的推导,本书不会回避,会仔细说明。这里的细节是常见的面试题,如果读者还没有理解清楚,阅读本书就对了。
本书的行文力求通俗易懂,不会过于抽象。如果读者不熟悉数学,可跳过书中数学推导的部分,因为目前的深度学习框架已很完善,即使不了解数学,同样可以成功训练和使用。
本书读者对象对AI、深度学习感兴趣的开发者。
希望通过深度学习方法,解决实际问题的工程师。
希望从事AI、深度学习相关工作的求职者。
对AI、深度学习感兴趣的院校师生。
对AI感兴趣,希望了解深度学习技术的爱好者。
如何阅读本书本书正文逻辑上可分为3部分,共9章:
综述篇(第1、6、9章)。这三章不需要编程和数学基础,如果读者尚不熟悉相关技术,推荐优先阅读。它们分别介绍了深度学习的基本概念、AlphaGo的架构、深度学习的问题和未来展望。
深度卷积网络篇(第2~5章)。这四章结合理论与实际代码,由浅入深,从神经网络,到卷积网络,再到深度卷积网络,让读者掌握深度卷积网络的基础知识、实践技巧和最新发展,是本书的关键所在,值得仔细阅读。
对于会编程的读者,在阅读后可写出完整的采用现代架构的深度卷积网络程序,以及学会在自己的数据集上进行训练,解决实际问题。
对于不会编程的读者,我们也会讲述如何用Excel实现简单的神经网络模型。
实战篇(第7和8章)。这两章分别讲述AlphaGo和GAN的训练和应用细节,包括详细的代码分析。其中第8章还包括大量GAN的精彩实例,无须技术基础也能体会。
本书附录部分包括深度学习的网络资源列表。
本书内容的一些选择:
市面上有许多深度学习编程框架,如TensorFlow、Caffe等。本书选择MXNet,因其训练速度快、占用资源少,且使用方便、架构清晰、易于二次开发。
在编程语言方面,目前深度学习最流行的语言是Python,本书也会选用Python。
有时我们需要讨论理论,这就离不开数学。本书数学符号的细节如下:
log都代表自然对数,即以e=2.71828…为底的对数。有的书籍会将此写成ln。
MSE损失采用(X-Y)2定义。有的书籍会采用(X-Y)2定义。如果读者还不知道MSE损失,可阅读第2章。
资源和勘误本书的所有代码均存放于 https://github.com/BlinkDL,其中也会有本书的勘误与问题解答(例如,如果Python对中文UTF-8报错,解决方法在其中),以及读者的交流方式。如您发现书中的错漏之处,或遇到不清楚的地方,或有其他宝贵意见,请在此处告知笔者,笔者不胜感激。
目前知乎(https://www.zhihu.com)是中文网络上较为专业的交流平台,读者可在其中找到深度学习和AI的介绍和综述、对于最新论文的分析及相关问题的解答。读者可关笔者的知乎主页(https://www.zhihu.com/people/bopengbopeng),笔者会在知乎主页定期更新与AI相关的内容。
致谢感谢出版社杨福川编辑和小艺编辑对本书写作和审校的大力支持。感谢设计师PiPi对本书插画的绘制。感谢家人和朋友对书稿的校对和建议。感谢知乎网友五柳希安、王佑、Simon对本书内容的建议。