前言
写作本书的想法已经有很多年了,但是直到最近机器学习(Machine learning,ML)(特别是TensorFlow)的兴起,这件事才真正变得可行。本书的目标是帮你在使用机器学习的众多场景中做好准备,并成为一名ML和AI开发者!希望本书为你开启一段美好且收获丰富的旅程。
读者对象
如果你对AI和ML感兴趣,想快速上手并通过学习数据来创建模型,则本书就是为你所写的。如果你想学习通用的AI和ML概念(计算机视觉、自然语言处理、序列建模等),并且想了解如何在这些领域通过训练神经网络来解决问题,我想你能从本书中找到答案。如果你有训练好的模型,并且想把它们应用到移动客户端、浏览器或云端的用户手中,那么本书同样适合你!
本书采用的是代码为先的策略,为你展示了使用Python和TensorFlow进入机器学习和AI的世界是多么简单,无须你具备很深的微积分知识。
为什么写作本书
我第一次认真接触AI是在1992年的春天。作为一名毕业不久的物理专业的本科生,我住在处于经济大萧条的伦敦,已经失业6个月了。英国政府开展了一个项目,准备在AI技术领域训练20个人,并发布了招聘信息。我是第一个被选中的申请者。3个月之后,这个项目凄惨地失败了,由于当时还有众多AI理论问题需要解决,没有简单的办法在实际中应用它。人们可以用Prolog语言编写简单的推理,用Lisp语言来执行列表处理,但是没有明确的方法来把它们应用到工业界。著名的“AI寒冬”接踵而至。
2016年我在Google参与开发Firebase产品,公司向所有工程师提供了机器学习培训。我们一起坐在一个房间里听着有关微积分和梯度下降的讲座。我无法将这些与实际的ML应用相关联,这让我仿佛回到了1992年。我把从这里学到的关于如何进行ML教学的反馈带到了TensorFlow团队—他们在2017年雇佣了我。随着2018年TensorFlow 2.0的发布,尤其是强调帮助开发者快速上手的高级API,因此我意识到需要写一本书,以让ML的受众不再局限于数学家和博士。
我相信更多的人使用这项技术并把它应用到实际用户中,会引爆AI和ML的潮流,从而避免另一个AI寒冬,并让世界变得更好。我已经看到了这件事的影响力,从Google在糖尿病视网膜病变上的研究到宾夕法尼亚州立大学和PlantVillage创建ML模型来帮助农民诊断木薯疾病,以及无国界医生组织使用TensorFlow模型来帮助诊断抗生素的耐药性,不胜枚举!
本书导航
本书主要包括两大部分。第一部分(第1~11章)讲解了如何使用TensorFlow来创建不同应用场景的机器学习模型。该部分介绍了一些基本原则—使用计算机视觉、自然语言处理和序列建模创建一个只包含一个神经元的神经网络。第二部分(第12~20章)详细地指导你将模型应用于不同场景下的用户,包括Android和iOS、在带有JavaScript的浏览器中以及通过云来提供服务。大部分章节是独立的,因此你可以随便选择一章来学习新知识,你也可以从头到尾阅读本书。
需要理解的技术
本书前半部分的目标是帮助你学习如何使用TensorFlow来创建各种不同架构的模型。唯一需要的是理解Python,特别是Python中对于数据和矩阵处理的符号。你或许也想探索Numpy,这是一个用于数值计算的Python库。如果你对这些都不熟悉,你可以在看书的过程中随时学习所需的知识(它们非常容易学习,虽然有些矩阵的符号可能会有点难以理解)。
对于本书的后半部分,我通常不会再教授已经展示过的语言,而是展示如何在语言中使用TensorFlow模型。例如,在第13章中你会学习使用Kotlin语言在Android studio中创建应用程序,在第14章中你会学习使用Swift语言在Xcode中创建应用程序。我不会教授这些语言的语法,如果你对它们不熟悉,可以参阅Jonathan Manning、Paris Buttfeild-Addison和Tim Nugent合著的Learning Swift(https://oreil.ly/MnEVD)(O'Reilly)。
在线资源
本书使用并提供了大量的在线资源。我推荐你关注TensorFlow(https://www.tensorflow.org)及其相关的YouTube频道(https://www.youtube.com/tensorflow),以便查阅本书中所提及技术的任何更新和突破性进展。
本书的代码可以访问https://github.com/lmoroney/tfbook找到,我会根据平台的进展持续更新。
排版约定
本书中使用以下排版约定:
斜体(Italic)
表示新的术语、URL、电子邮件地址、文件名和文件扩展名。
等宽字体(Constant width
)
用于程序清单,以及段落中的程序元素,例如变量名、函数名、数据库、数据类型、环境变量、语句以及关键字。
等宽粗体(Constant width bold
)
表示应由用户直接输入的命令或其他文本。
该图示表示一般性说明。
示例代码
这里的代码是为了帮助你更好地理解本书的内容。通常,可以在程序或文档中使用本书中的代码,而不需要联系O'Reilly获得许可,除非需要大段地复制代码。例如,使用本书中所提供的几个代码片段来编写一个程序不需要得到我们的许可,但销售或发布O'Reilly的示例代码则需要获得许可。引用本书的示例代码来回答问题也不需要许可,将本书中的很大一部分示例代码放到自己的产品文档中则需要获得许可。
非常欢迎读者使用本书中的代码,希望(但不强制)注明出处。注明出处时包含书名、作者、出版社和ISBN,例如:
AI and Machine Learning for Coders,作者Laurence Moroney,由O'Reilly出版,书号978-1-492-07819-7
如果读者觉得对示例代码的使用超出了上面所给出的许可范围,欢迎通过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)
奥莱利技术咨询(北京)有限公司
要询问技术问题或对本书提出建议,请发送电子邮件至errata@oreilly.com.cn。
本书配套网站https://oreil.ly/ai-ml上列出了勘误表、示例以及其他信息。
关于书籍、课程、会议和新闻的更多信息,请访问我们的网站http://oreilly.com。
我们在Facebook上的地址:http://facebook.com/oreilly
我们在Twitter上的地址:http://twitter.com/oreillymedia
我们在YouTube上的地址:http://www.youtube.com/oreillymedia
致谢
我向所有为本书写作提供帮助的人表示感谢。
Jeff Dean为我提供了在TensorFlow团队工作的机会,让我开始了AI旅途的第二个阶段。也感谢团队的其他成员,人数太多就不一一点名了。特别感谢Sarah Sirajuddin、Megan Kacholia、Martin Wicke以及Francois Chollet卓越的领导力和工程能力。
由Kemal El Moujahid、Magnus Hyttsten和Wolff Dobson领导的TensorFlow开发者关系团队,为人们创建了使用TensorFlow来学习AI和ML的平台。
Andrew Ng帮我写了本书的序,他相信我教授TensorFlow的方式,与我一起在Coursera上创建了三个专栏,教授成千上万的人如何通过ML和AI获得成功。Andrew在deeplearning.ai(https://www.deeplearning.ai)也领导了一个杰出的团队,他们帮助我成为一个更好的机器学习者,团队成员包括Ortal Arel、Eddy Shu和 Ryan Keenan。
O'Reilly的团队使本书的出版成为可能:Rebecca Novack和Angela Rufino帮助我完成了本书。
感谢技术审查团队:Jialin Huang、Laura Uzcátegui、Lucy Wong、Margaret Maynard-Reid、Su Fu、Darren Richardson、Dominic Monn和Pin-Yu。
最后,感谢我的家人:我的妻子Rebecca Moroney、我的女儿Claudia Moroney和我的儿子Christopher Moroney。谢谢你们让我的人生更加精彩。