序言
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
当今世界的 Deep Learning
大家好,欢迎阅读本书!本书将通过Facebook 于 2017 年发布的开源库 PyTorch 向你介绍深度学习。除非你在过去几年里一直把头埋在土里,模仿鸵鸟的样子,否则你一定会注意到,如今神经网络无处不在。神经网络已经从人们了解后却无从下手的计算机科学冷门,变成了我们每天随身携带的手机,用来改善我们的照片或聆听我们的语音指令。我们的电子邮件软件会读取我们的电子邮件并根据上下文进行回复,我们的扬声器会为我们倾听,汽车会自动驾驶,计算机终于在围棋方面超越了人类。在专制国家,神经网络支持的哨兵可以从人群中识别人脸,并决定是否应该逮捕他们。
然而,尽管人们觉得这一切发生得太快,神经网络和 Deep Learning 的概念却可以追溯到很久以前。早在 1989 年,人们就证明了这种网络可以作为一种近似方式替代任何数学函数,这也是神经网络可以针对许多不同任务进行训练的思想基础、1卷积神经网络在 90 年代末就被用于识别支票上的数字。神经网络一直以来都有坚实的基础,那为什么感觉就像在过去 10 年中发生了爆炸呢?
原因有很多,但最主要的还是图形处理器(GPU)性能的激增和价格的日益低廉。GPU 最初是为游戏而设计的,每秒需要执行数百万次矩阵运算,才能渲染您在游戏机或 PC 上玩的驾驶或射击游戏中的所有多边形,而这些运算是标准 CPU 无法优化的。Rajat Raina 等人在 2009 年发表的论文《使用图形处理器的大规模无监督深度学习》中指出,训练神经网络也是基于执行大量的矩阵运算,因此可以使用这些附加显卡来加快训练速度,并首次使更大规模、更深层次的神经网络架构变得可行。其他重要技术,如 Dropout(我们将在第 3 章中介绍),也是在过去十年中引入的,这些技术不仅能加快训练速度,还能使训练更具有通用性(这样网络就不会只学会识别训练数据,我们将在下一章中遇到一个称为过拟合的问题)。在过去几年中,各家公司将这种基于 GPU 的方法提升到了一个新的水平,谷歌创建了它所描述的 张量处理单元(TPU),这是一种为尽可能快地执行深度学习而定制的设备,甚至作为其 Google Cloud 生态系统的一部分向公众开放。
另一种记录深度学习过去十年进展的方式是通过 ImageNet 竞赛。ImageNet 是一个由超过 1400 万张图片组成的大型数据库,这些图片被人工标注为 2 万个类别,是用于机器学习的标注数据宝库。自2010年以来,每年一度的ImageNet大型视觉识别挑战赛都会针对数据库中的1000个类别子集对所有参赛者进行测试,直到2012年,应对挑战的错误率一直保持在25%左右。然而,就在那一年,一个深度卷积神经网络以 16% 的错误率赢得了比赛,大大超过了其他所有参赛者。在随后的几年里,误差率越来越低,到 2015 年,ResNet 架构取得了 3.6% 的成绩,超过了人类在 ImageNet 上的平均成绩(5%)。我们被超越了。
但究竟什么是深度学习,我需要博士学位才能理解它吗?
Deep Learning 的定义往往迷惑性大于启发性。一种定义方法是,深度学习是一种机器学习技术,它使用多层、无数层的非线性变换从原始输入中逐步提取特征。这没错,但并没有什么实际帮助,不是吗?我更愿意把它描述为一种解决问题的技术,通过提供输入和所需输出,让计算机找到解决方案,通常使用神经网络。
Deep Learning ...