前言
自从2012年AlexNet在ImageNet大赛中成功击败传统方法,深度学习兴起,掀起了人工智能的第三次高潮!仅仅在几年之内,深度学习便令全世界大吃一惊。它非常有力地挑战了很多领域的传统方法,例如计算机视觉、自然语言处理、语音识别、强化学习和统计建模等,这些领域都因深度学习实现了跨越式发展。人脸识别、自动驾驶、工业机器人、智能推荐、智能客服,都是深度学习成功落地的现实应用。这些由深度学习带来的人工智能新方法、新工具也正产生着广泛的影响: 它们改变了电影制作和疾病诊断的方式,从天体物理学到生物学等各个基础科学中扮演着越来越重要的角色。事实上,我们已经进入了人工智能时代,尽管人工智能才刚刚起步。
于是,各行各业学习并研究深度学习的热情空前高涨,然而,深度学习涉及了很多数学知识,以及从其他学科(如生物学)借鉴的各种原理,并且随着神经网络深度的不断加大,网络架构越来越复杂,其学习曲线异常陡峭。
本书的写成源于AI火箭营的初心,我们希望在人工智能时代来临之际,能够帮助更多的人进入人工智能技术的殿堂,使更多的人利用人工智能解决现实中的实际问题,让更多的人在各行各业中用人工智能升级改造传统产业或技术体系。配套本书,笔者精心设计了“深度学习入门系列讲解”这一深度学习课程,学习人数累计超过20万人次,内容通俗易懂、代入有方、深入浅出、抽丝剥茧。
以简驭繁
网络上讲解深度学习的资料很多,我们曾经作过横向对比,这些资料与我们的理念相距甚远。
首先是原理讲解方面。好多书或技术博客,或者就原理讲原理,没有深挖原理背后的思想; 或者泛泛而谈,没有深入浅出,只是知识的堆叠; 或者逻辑不紧密,没有形成环环相扣的整体。
其次是实践代码方面。博客和GitHub上有大量的演示特定深度学习框架或实现特定模型(例如Resnet等)的代码。这些代码的目的是复现论文或者原理,让我们真正理解算法,并且提供应用算法的工程方式。所以原理是根,代码是叶。然而很多学习者拿来代码,调试出结果后就以为完成了学习过程,将这些代码束之高阁。这其实什么也没学到,实际上只充当了一个“调包侠”而已。本书的实战案例重在与原理的呼应,重在算法设计的探究及实现细节的解释。
尽管现在随着互联网的便捷,网上资料繁多,然而对于初学者,往往不得不参考来源不同的多种资料,所获甚微,而且没有感觉到学习深度学习真正的乐趣。如果你正亲身经历这一过程,那么本书正是你所需要的。
本书理念
本书有以下几大理念:
(1) 学习思路,理论先行。深度学习理论点比较多,知识体系庞大,学习深度学习一定要先把理论吃透,深度学习理论蕴含着丰富的思维、方法和技巧,如果没把理论吃透就开始用代码实践,则不能系统化地学习,知识体系会比较乱,不利于创新思维体系的构建。本书构建了非常系统化的理论知识体系,助力读者透彻理解深度学习的基础知识。
(2) 学习原理,思维先行。学习一种新的方法、新的算法,一定要先从本质上剖析其来源,分析提出这种新方法的思维是什么。不能仅仅从原理上、技术上搞懂,更重要的应该是明白这种方法的来龙去脉,即其思维根源。
(3) 抽丝剥茧、深挖本质。深度学习涉及非常多的网络架构和技巧,如批归一化、串接、丢弃、残余连接等。学习一种新的网络架构时,需要透过其繁杂的表面,深挖其本质。
(4) 纵向学习、横向比较。深度学习技术发展非常迅速,同一种技术也会不断改进、创新。例如注意力机制作为语言模型中很有用的一种技巧,在很多方法中被借鉴和使用,如Transformer、Bert等。Transformer中用到的自注意力,是对注意力的一个纵向借鉴和创新改进,Bert当然不能抛弃这种有效的方法。
(5) 实践有章可循,拒绝举轻若重。本书将实践分为原理实践和应用实践。原理实践注重案例与原理的呼应,增强对于原理的理解和认识; 代码实践增强不同场景下的实践技能,提高Python实践水平。除此之外,本书注重重点、次重点的合理分配,例如在DCGAN的代码实践中,首先要学会的是生成器的实现,其次是损失函数,再次是判别器的实现。
本书坚持培养读者阐述剖析问题所需的批判性思维、解决问题所需的数学知识,以及实现解决方案所需的工程技能。本书对所有涉及的技术点进行了背景介绍,写作风格严谨。书中所有的代码执行结果都是自动生成的,任何改动都会触发对书中每一段代码的测试,以保证读者在动手实践时能复现结果。
感谢对本书的编写提出宝贵修改意见的贡献者,他们查阅资料、字斟句酌; 感谢孙玉龙、袁海滨、陆澍旸等学员对书中的一些内容提供了很有价值的反馈。
我们的初衷是让更多人更轻松地使用深度学习!由于笔者水平有限,书中难免存在疏漏,敬请原谅,并恳请读者批评指正。
附上苏轼的一段词,希望各位读者像欣赏美景一样开启深度学习之旅:
“一叶舟轻,双桨鸿惊。水天清、影湛波平。鱼翻藻鉴,鹭点烟汀。过沙溪急,霜溪冷,月溪明。”
翟中华孟翔宇
2021年7月