前言
我们正在经历人工智能的复兴,每一位及其身边的人都想成为这个运动中的一分子,这很可能就是你浏览本书的原因。现在已经有了很多关于深度学习的书,所以你可能会问我们一个非常合理的问题:为什么还编写这本书?我们马上就会谈论这个问题。
自2013 年以来,在深度学习之旅中(在微软、英伟达、亚马逊和Square 等公司开发产品时),我们目睹了这一领域的巨大变化。不断发展的研究成果是既定的事实,缺乏成熟的工具也是存在的现实情况。
在不断成长并向社区学习的过程中,我们注意到在如何将研究转化为面向日常用户的最终产品的问题上缺乏明确的指导,毕竟,最终用户是面向网络浏览器、智能手机或边缘设备的。这通常需要经历无数个小时的操作和实验,广泛搜索博客、GitHub 问题线程和堆栈溢出的解决答案,给提供应用程序包的作者发送电子邮件以获取深奥的知识,以及偶尔的“啊哈!”瞬间。就连市面上的书都倾向于更多地关注理论或如何使用特定的工具。我们能从现有的书中学习到的最好的东西就是建立一个虚构的示例。
为了填补理论和实践之间的空白,我们开始讨论如何将人工智能从研究领域带到最终用户,并特别关注实际应用。讨论的目的是展示激动人心的例子,以及基于不同层次的技能水平(从业余爱好者到Google 工程师)的复杂性,以及在生产实际中部署深度学习需要付出的努力。我们发现初学者和专家在这些讨论中都发现了有用的价值。
随着时间的推移,这个场景对初学者来说变得容易访问,更多的工具也变得可用。像Fast.ai 和DeepLearning.ai 这样优秀的在线材料使得学习如何训练人工智能模型比以往任何时候都要容易。利用TensorFlow 和PyTorch 等深度学习框架教授基础知识的书籍也垄断了市场。但即便如此,理论与生产实际之间的巨大鸿沟仍然没有得到很大程度的解决。我们想缩小这个差距。因此,便有了你现在正在读的这本书。
本书使用可用的语言以及能运行的计算机视觉有趣项目,假设读者没有机器学习和AI 的知识,从简单的分类器开始,逐步拓展,包括如何增加复杂性、提高准确性和速度,如何扩展到数以百万计的用户,如何部署在各种各样的硬件和软件上,最终介绍了如何使用强化学习来构建一个微型自动驾驶汽车。
几乎每一章都从一个激动人心的例子开始,通过建立一个解决方案的过程来建立前面提出的问题,并讨论解决问题的多种方法,每个方法都有不同程度的复杂性和对应的努力。如果你正在寻找一个快速的解决方案,你可能最终只是读了一章中的几页就完成了。如果有人想对主题有更深入的了解,就应该通读整章。当然,每个人都应该仔细阅读这些章节中包含的案例研究,原因有两个,一是它们很有趣,二是它们展示了业内人士是如何使用本章中讨论的概念来构建真正的产品。
我们还讨论了深度学习从业者和行业专业人士在使用云、浏览器、移动设备和边缘设备构建真实应用程序时面临的许多实际问题。我们在这本书中汇编了一些实用的“技巧和诀窍”和生活课程,以鼓励读者构建可以使某人生活稍微好一点的应用程序。
致后端/ 前端/ 移动软件开发人员
你很可能已经是一个熟练的程序员了。即使Python 对你来说是一种陌生的语言,我们也希望你能够很容易地掌握它,并很快开始使用它。最重要的是,我们不期望你有任何机器学习和人工智能的背景,这就是我们这本书的目的!我们相信,你将从本书关注的以下领域中获得知识:
• 如何构建面向用户的人工智能产品。
• 如何快速训练模型。
• 如何最小化原型设计所需的代码和工作量。
• 如何提高模型的性能和能效。
• 如何操作和扩展,以及估计所涉及的成本。
• 通过40 多个案例研究和现实世界的例子,发现人工智能在行业中是如何应用的。
• 开发深度学习的广谱知识。
• 开发可应用于新的框架(如PyTorch)、新领域(例如,医疗保健、机器人)、新的输入模式(例如,视频,音频、文本)和新的任务(例如,图像分割、一次性学习)的通用技能集。
致数据科学家
你可能已经精通机器学习,并且可能知道如何训练深度学习模型。那么你可以进一步丰富你的技能并加深你在这个领域的知识,以便建立真正的产品。本书将有助于你的日常工作及更多,包括如何:
• 加快你的训练,包括在多节点集群上训练。
• 建立开发和调试模型的直觉,包括超参数调整,从而显著提高模型准确度。
• 了解模型的工作原理,发现数据中的偏差,并使用AutoML 自动确定最佳超参数和模型结构。
• 学习其他数据科学家使用的技巧和诀窍,包括快速收集数据、有组织地跟踪实验、与全世界共享模型,为你的任务提供最新的可用模型。
• 使用工具将最佳模型部署并扩展到实际用户,甚至自动完成(不涉及一个DevOps 团队)。
致学生
现在正是考虑从事人工智能事业的大好时机,事实证明,这将是继互联网和智能手机之后的下一次技术革命。已经取得了许多进展,还有许多有待发现。我们希望本书能成为你培养人工智能事业兴趣的第一步,甚至得到更深入的理论知识。最棒的是你不必花很多钱去买昂贵的硬件,事实上,你可以通过你的网络浏览器(谢谢你,Google Colab !)在强大的硬件上完全免费训练。有了这本书,我们希望你能:
• 通过开发有趣的项目组合,渴望在人工智能领域工作。
• 通过行业实践的学习帮助准备实习和得到工作机会。
• 通过构建像自动驾驶汽车一样有趣的应用,释放你的创造力。
• 利用你的创造力解决人类面临的最紧迫问题,成为一名AI for Good 冠军。
致老师
我们相信这本书可以很好地为你的课程补充有趣的、可用于现实世界的项目。我们已经详细介绍了深度学习流程的每一步,以及如何有效地执行每一步的技术。我们在书中提出的每一个项目都有助于学生在整个学期的课堂上进行良好的合作或个人工作。最后,我们将在http://PracticalDeepLearning.ai 上发布PowerPoint 演示幻灯片,可以与课程作业结合。
致机器人爱好者
机器人技术令人兴奋。如果你是一个机器人爱好者,我们确实不需要让你相信给机器人增加智能是一条必经之路。越来越强大的硬件平台,如Raspberry Pi、NVIDIA Jetson Nano、Google Coral、Intel Movidius、PYNQ-Z2 等,正在帮助推动机器人领域的创新。随着我们向工业4.0 发展,其中一些平台将变得越来越相关和普遍。有了这本书,你将:
• 学习如何构建和训练人工智能,然后将其带到边缘设备。
• 在性能、尺寸、功率、电池和成本方面对边缘设备进行基准测试和比较。
• 了解如何为给定的场景选择最佳人工智能算法和设备。
• 了解其他创客如何制造具有创造性的机器人和机器。
• 学习如何在这一领域取得进一步进展,以及如何展示你的工作成果。
如果你遇到技术问题或在使用代码示例时遇到问题,请发送电子邮件至PracticalDLBook@gmail.com。
本书可帮你完成工作。一般来说,你可以在你的程序和文档中使用本书提供的示例代码。你不需要联系我们获得许可,除非你正在重新编制该代码的重要部分。例如,使用本书中的几个代码块编写程序不需要获得许可,销售或发行O’Reilly 图书中的示例则需要获得许可,通过引用本书和书中的示例代码来回答问题不需要许可,将本书中的大量示例代码用到你的产品文档中则需要获得许可。
我们欣赏但不强求加上对本书的引用。引用信息通常包括题目、作者、出版商和ISBN。例如:“Practical Deep Learning for Cloud, Mobile, and Edge by Anirudh Koul, Siddha Ganju, and Meher Kasam (O’Reilly). 版权所有:2020 Anirudh Koul,Siddha Ganju, Meher Kasam, 978-1-492-03486-5。”
如果你认为在使用本书的代码示例过程中超出了合理的使用范围或上述许可范围,请通过permissions@oreilly.com 发邮件与我们联系。
O’Reilly 在线学习平台(O’Reilly Online Learning)
近40 年来,O’Reilly Media 致力于提供技术和商业培训、知识和卓越见解,来帮助众多公司取得成功。
我们有一群独家专家和创新者,他们通过图书、文章、会议和在线学习平台分享知识和技术。O’Reilly 的在线学习平台提供按需访问的直播培训课程、详细的学习路径、交互式编程环境,以及由O’Reilly 和其他200 多家出版社出版的书籍和视频。详情请访问http://oreilly.com。
联系我们
任何有关本书的意见或疑问,请按照以下地址联系出版社。
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2 号成铭大厦C 座807 室(100035)
奥莱利技术咨询(北京)有限公司
O’Reilly 在本书的网页中列出了勘误表、示例和任何附加信息。你可以在https://oreil.ly/practical-deep-learning 网站访问此页面。本书作者也提供了有关本书的一个网址:http://PracticalDeepLearning.ai。
发表评论或咨询有关本书的技术问题,请发送电子邮件至bookquestions@oreilly.
com 邮箱。联系本书的作者请发送电子邮件至PracticalDLBook@gmail.com。
关于我们的书籍、课程、会议和新闻的更多信息, 请参阅http://www.oreilly.com 网站。
我们的Facebook:http://facebook.com/oreilly。
我们的Twitter:http://twitter.com/oreillymedia。
我们的YouTube:http://www.youtube.com/oreillymedia。
致谢
群体致谢
我们要感谢以下人员在我们写这本书的整个过程中给予的巨大帮助。没有他们,这本书不可能顺利出版。
开发编辑Nicole Taché 的努力使这本书变得更加生动。她在我们编写的旅程中为我们扎根,并在每一段进程中提供重要的指导。她帮助我们优先选择合适的材料(信不信由你,这本书原本会更冗长!)确保我们走上正轨。她是我们写的每一个草稿的第一读者,所以我们的首要目标是确保她能够跟踪内容,尽管她是人工智能方面的新手。我们非常感谢她的支持。
我们还要感谢O’Reilly 团队的其他成员, 包括我们的制作编辑ChristopherFaucher,他在紧凑的日程安排下孜孜不倦地工作,以确保这本书能按时送去印刷。我们也感谢我们的文字编辑Bob Russell,他以闪电般的速度编辑和对细节的关注给我们留下了深刻的印象。他让我们认识到在学校学习时就应注意英语语法的重要性(尽管恐怕晚了几年)。我们还想感谢Rachel Roumeliotis(内容方面的副总裁)和Olivia MacDonald(开发总编辑)对该项目的信任以及他们持续的支持。
非常感谢我们的客座作者带来了他们的技术专长,与我们的读者分享他们对这个领域的热情。Aditya Sharma 和Mitchell Spryn(来自微软)向我们展示了如何将我们对视频赛车游戏的热爱用于训练自动驾驶汽车,这可通过在模拟环境(有AirSim)中实现。Sunil Mallya(来自亚马逊)通过演示一个小时就可以组装一辆微型自动汽车(AWS DeepRacer),并使用强化学习在赛道上导航,从而将这一知识带到了现实世界中。Sam Sterckval(来自Edgise)总结了市场上各种各样的嵌入式人工智能硬件,因此我们可以在下一个机器人项目上取得进展。最后,Zaid Alyafeai(来自King Fahd University)展示了浏览器同样能够运行严肃的交互式人工智能模型(借助TensorFlow.js 和ml5.js)。
这本书之所以成为现在的状态,是因为我们优秀的技术评论员及时提供了反馈,他们不辞辛劳地检查我们的草稿,指出了他们遇到的所有技术错误,并就如何更好地传达我们的想法给了建议。由于他们的反馈(以及不断变化的TensorFlow 的API),我们在最初的预发布版本上重写了本书的大部分内容。我们感谢MargaretMaynard Reid(谷歌机器学习开发专家,你可能在阅读TensorFlow 文档时阅读了她的工作)、Paco Nathan(Derwin Inc.35 岁以上的行业资深人士,他将Anirudh 介绍给了公众演讲界),Andy Petrella(Kensu 的首席执行官和创始人,SparkNotebook的创建者,他的技术见解与他的声誉相符)和Nikhita Koul(Adobe 的高级数据科学家,在每次更新后都会阅读并提出改进建议,有效地阅读了几千页,从而使内容更易懂),感谢他们详细评阅了每章内容。此外,我们还得到了很多专家的帮助,他们在特定的主题上有专长,如浏览器中的人工智能、移动端开发或自动驾驶汽车。
按章节顺序排列的评阅人员名单如下:
• 第1 章:Dharini Chandrasekaran,Sherin Thomas。
• 第2 章:Anuj Sharma,Charles Kozierok,Manoj Parihar,Pankesh Bamotra,Pranav Kant。
• 第3 章:Anuj Sharma,Charles Kozierok,Manoj Parihar,Pankesh Bamotra,Pranav Kant。
• 第4 章:Anuj Sharma,Manoj Parihar,Pankesh Bamotra,Pranav Kant。
• 第6 章:Gabriel Ibagon,Jiri Simsa,Max Katz,Pankesh Bamotra。
• 第7 章:Pankesh Bamotra。
• 第8 章:Deepesh Aggarwal。
• 第9 章:Pankesh Bamotra。
• 第10 章:Brett Burley,Laurent Denoue,Manraj Singh。
• 第11 章:David Apgar,James Webb。
• 第12 章:David Apgar。
• 第13 章:Jesse Wilson,Salman Gadit。
• 第14 章:Akshit Arora,Pranav Kant,Rohit Taneja,Ronay Ak。
• 第15 章:Geertrui Van Lommel,Joke Decubber,Jolien De Cock,Marianne VanLommel,Sam Hendrickx。
• 第16 章:Dario Salischiker,Kurt Niebuhr,Matthew Chan,Praveen Palanisamy。
• 第17 章:Kirtesh Garg,Larry Pizette,Pierre Dumas,Ricardo Sueiras,
Segolene Dessertine-panhard,Sri Elaprolu,Tatsuya Arai。
我们在整本书中都有一些简短的节选,这些节选来自创作者,他们让我们窥视了一下他们的世界,以及他们是如何以及为什么构建他们最为知名项目的。我们感谢Francois Chollet, Jeremy Howard, Pete Warden, Anima Anandkumar, Chris Anderson,Shanqing Cai, Daniel Smilkov, Cristobal Valenzuela,Daniel Shiffman, Hart Woolery,Dan Abdinoor, Chitoku Yato, John Welsh 以及Danny Atsmon。
个人致谢
“我要感谢我的家人Arbind,Saroj 和Nikhita,他们给了我支持、资源、时间和自由让我去追求我的激情。在把想法转化为产品原型的过程中,对于与我站在一起的微软、Aira 和Yahoo 的所有技术人员和研究人员来说,在我们一起的旅程中,让我们收获最多的不是成功,而是一些小问题。我们经历的考验和磨难为这本书提供了值得称赞的素材,足足超过我们最初估计的250 页!对于我在卡内基梅隆大学、达尔豪西大学和塔帕大学的学术家庭来说,你们教给我的不仅仅是学术(不像我的GPA 可能建议的那样)。对于盲人和弱视力群体,你们每天都激励我在人工智能领域工作,并证明只要有正确的工具,人类能力确实是无限的。”
—— Anirudh
“我的祖父,是一位作家,他曾经告诉我,‘写一本书比我想象的要难,比我想象的要有回报。’ 我永远感谢我的祖父和家人,妈妈,爸爸,还有Shriya,他们支持我求知,帮助我成为今天的我。感谢来自卡内基梅隆大学、欧洲核子研究中心、美国宇航局FDL、Deep Vision、NITH 和NVIDIA 的优秀合作者和导师,他们在我的整个写作旅程中一直陪伴着我,感谢他们的教导和帮助培养了我的科学气质。对于我的朋友们,我希望他们还记得我,因为我最近一直很隐形,我非常感谢他们的耐心。我希望到处都能见到你们。对于无私翻阅了本书章节并充当了决策咨询人的我的朋友们,非常感谢!如果没有你们,这本书将不会成形。”
—— Siddha
“我感谢我的父母Rajagopal 和Lakshmi,感谢他们从一开始就给予我无尽的爱和支持,感谢他们为我提供美好生活和教育的坚强意志。我很感谢UF和VNIT 的教授,他们教授给我很多,让我很高兴主修了计算机科学。我很感谢我的合作伙伴Julia Tanner,令我难以置信地支持我!她在近两年的时间里,不得不忍受晚上和周末我与合著者没完没了的Skype 通话,以及我的几个可怕的笑话(其中一些不幸地登上了这本书)。我还要感谢我出色的经理Joel Kustka 在本书写作过程中对我的支持。我公开表示感谢我的朋友们,当我不能像他们希望的那样经常和他们在一起时,他们非常理解我。”
—— Meher
最后但同样重要的是,感谢Grammarly 的创造者们,他们让英语成绩平平的人成为出版作者!