前言
欢迎阅读此书。首先,请允许我简单介绍一下这本书,并向那些帮助过我的人们致谢。
本书内容
如果你对深度学习(DL)和机器学习(ML)感兴趣,那么可以在本书里找到一些适合你阅读的内容。
之所以编写本书,是为了帮助你了解足够多的深度学习方面的技能,进而让你成为机器学习和深度学习的高效实践者。
读完本书,你可以:
● 设计和构建属于自己的深度学习网络体系;
● 使用上述网络体系来理解或生成数据;
● 针对文本、图像和其他类型的数据进行描述性分类;
● 预测数据序列的下一个值;
● 研究数据结构;
● 处理数据,以实现最高效率;
● 使用你喜欢的任何编程语言和DL库;
● 了解新论文和新理念,并将其付诸实践;
● 享受与他人进行深度学习讨论的过程。
本书会采用一种严肃而不失友好的讲解方式,并通过大量图示来帮助你加深理解。同时,我们不会在书中堆砌过多的代码,甚至不会使用任何比乘法更复杂的运算。
如果你觉得还不错,欢迎阅读此书!
为什么写这本书
本书的读者对象是那些渴望在工作中应用机器学习和深度学习的人们,包括程序员、艺术工作者、工程师、科学家、管理人员、音乐家、医生,以及任何希望通过处理大量信息来获得洞见或生成新数据的人。
你可以在许多开源库中找到许多机器学习工具(特别是深度学习)。每个人都可以立即下载和使用这些工具。
尽管这些免费工具安装简单,但是你仍然需要掌握大量的技术和知识才能正确使用这些工具。让计算机做一些无意义的事情很容易:它会严格照做,然后输出更多无意义的结果。
这种情况时有发生。虽然机器学习和深度学习库功能强大,但它们对用户来说并不友好。你不仅需要选择正确的算法,还要能够正确地应用这些算法。从技术角度讲,你仍然需要做出一系列明智的决策。当工作偏离预期时,你需要利用自己对系统内部的了解令其回归正轨。
学习和掌握这些基本信息的方法多种多样,这取决于你喜欢怎样的学习方式。有些人喜欢详细的硬核式算法分析,并辅以大量数学运算。如果这是你的学习方式,那么你可以阅读一些有关这方面的书籍,比如[Bishop06]和[Goodfellow17]。为此,你需要付出大量努力。不过,你获得的回报也会很丰厚,即全面了解机器学习的工作方式及原理。如果以这种方式学习,那么你必须额外投入大量的精力来将理论知识付诸实践。
另外一种截然不同的情形是:有些人只想知道完成某些特定任务的方法。有关这方面的速成图书也有很多,你可以从中找到各种机器学习库,比如 [Chollet17]、[Müller-Guido16]、[Raschka15]和[VanderPlas16]。与需要大量运算的方法相比,这种方法难度较低。但是,你会觉得自己缺少对结构信息的掌握——这些信息有助于你理解算法的工作原理。如果未能掌握这些信息及相关词汇,一些你原以为可行的算法可能变得不可行,或者某种算法的结果可能不如预期,而你很难对此找到问题的根源所在。另外,你将无法理解涵盖新理念和新研究成果的文献,因为这些研究往往假设读者拥有相同的知识储备,而只掌握一种库或语言的读者是不具备这种知识储备的。
鉴于上述情况,本书采取了一种折中的方式。我们的目的很实际:给你工具,让你有信心去实践深度学习。希望你在工作的时候不仅可以做出明智的选择,并且能够理解日新月异的新理念。
本书致力于介绍深度学习的基础知识,以帮助读者建立扎实的知识储备。随着深度学习实践的推进,你不仅需要对本书课题的背景有充分了解,还需要充分知悉可能需要查阅的资料。
这不是一本关于编程的书。编程很重要,但是会不可避免地涉及各个细节,而这些细节与本书的主旨并无关联。此外,编程会让你的思考局限于某一个库或者某种语言。尽管这些细节是构建最终学习网络体系的必要条件,但是当你想要专注于某一重要理念时,这些细节可能会让你分心。与其就循环和目录以及数据结构泛泛而谈,倒不如以一种独立的方式讨论某种语言和库相关的所有知识。只要扎实理解了对这些理念,阅读任何库文件都将变得轻而易举。
在第15章、第23章和第24章中,我们将详细讨论机器学习的scikit-learn库以及深度学习的Keras库。这两种库均基于Python语言。我们结合示例代码进行讲解,以期让你对Python库有深度的了解。即使你不喜欢Python,这些程序也会让你对典型的工作流和程序结构有所了解。这些章节中的代码可以在Python手册中找到,并且可用于基于浏览器的Jupyter编程环境[Jupyter16]。你也可以将其应用于更经典的Python开发环境,如PyCharm [JetBrains17]。
本书的其他大部分章节也有配套的可选Python手册。这些章节针对书中每个计算机生成的数字给出代码,而且通常使用其中所涉及的技术来生成代码。由于本书的焦点并非在于Python语言和编程(上述章节除外),因此这些手册仅作参考,不再赘述。
机器学习、深度学习和大数据正在世界范围内产生令人意想不到的、快速而深刻的影响。对人类以及人类文化而言,这是一个既复杂又重要的课题。与此相关的讨论也在一些有趣的图书和文章中得以体现,不过结论大多是喜忧参半。相关的图书和文章参见“参考资料”部分的[Agüera y Arcas 17]、[Barrat15]、[Domingos15]和[Kaplan16]。
本书几乎不涉及数学问题
很多人不喜欢复杂的方程式。如果你也是这样,那么本书非常适合你!
本书几乎不涉及复杂的数学运算。如果你不讨厌乘法,那么本书简直太适合你了,因为书中除了乘法,并无任何复杂的运算。
本书所讨论的许多算法都有丰富的理论依据,并且是经过仔细分析和研究得出的。如果你正打算变换一种算法以实现新目的,或者需要独立编写一个新程序,就必须了解这一点。不过,在实践中,大多数人会用由专家编写的程序。这些程序是经过高度优化的,并且可以从免费的开源库中获取。
我们希望能帮助你理解这些技术的原理,掌握其正确应用,并懂得如何解读结果,但无须深入了解技术背后的数学结构。
如果你喜欢数学或者想了解理论,那么请阅读每一章的“参考资料”部分给出的相关内容。大部分资料是简洁且能够激发灵感的,并且给出了作者在本书中刻意省略的细节。如果你不喜欢数学,可以略过此部分的内容。
本书分上下两册
本书涵盖的内容非常多,因此我们将其分成了上下两册。其中下册是上册内容的拓展和补充。本书内容是以循序渐进的模式组织的,因此建议你先读上册,再去学习下册的内容。如果你有信心,也可以直接从下册开始阅读。
致谢
如果没有众多朋友的支持,本书是无法写就的。这是千真万确的!
非常感谢Eric Braun、Eric Haines、Steven Drucker和Tom Reike对本项目始终如一的大力支持。谢谢你们!
非常感谢为本书提出诸多富有见地的评论的审稿人,他们是Adam Finkelstein、Alex Colburn、Alexander Keller、Alyn Rockwood、Angelo Pesce、Barbara Mones、Brian Wyvill、Craig Kaplan、Doug Roble、Eric Braun、Eric Haines、Greg Turk、Jeff Hultquist、Jessica Hodgins、Kristi Morton、Lesley Istead、Luis Avarado、Matt Pharr、Mike Tyka、Morgan McGuire、Paul Beardsley、Paul Strauss、Peter Shirley、Philipp Slusallek、Serban Porumbescu、Stefanus Du Toit、Steven Drucker、Wenhao Yu和Zackory Erickson。
特别感谢Alexander Keller、Eric Haines、Jessica Hodgins和Luis Avarado,他们阅读了本书所有或大部分手稿内容,并在内容呈现和内容结构方面提出了建设性意见。
感谢Morgan McGuire开发了Markdeep,让我能够专注于本书内容,而无须顾及格式。有了Markdeep的助力,本书的创作出奇地顺利和流畅。
感谢Todd Szymanski就本书内容、封面的设计和布局提出的深刻见解,同时感谢他指出了相关排版错误。
感谢以下读者在出版早期发现的拼写错误等问题:Christian Forfang、David Pol、Eric Haines、Gopi Meenakshisundaram、Kostya Smolenskiy、Mauricio Vives、Mike Wong和Mrinal Mohit。
参考资料
这部分内容在各章均有出现,其中列出了供参考阅读的所有文档。你还可以参阅正文涉及的其他有价值的论文、网站、文件、博客等资源。
[Agüera y Arcas 17] Blaise Agüera y Arcas, Margaret Mitchell and Alexander Todorov, Physiognomy’s New Clothes, Medium, 2017.
[Barrat15] James Barrat, Our Final Invention: Artificial Intelligence and the End of the Human Era, St. Martin’s Griffin, 2015.
[Bishop06] Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer- Verlag, pp. 149-152, 2006.
[Chollet17] François Chollet, Deep Learning with Python, Manning Publications, 2017.
[Domingos15] Pedro Domingos, The Master Algorithm, Basic Books,2015.
[Goodfellow17] Ian Goodfellow, Yoshua Bengio, Aaron Courville, Deep Learning, MIT Press, 2017.
[JetBrains17] JetBrains Pycharm Community Edition IDE, 2017.
[Jupyter16] The Jupyter team, Jupyter官方网站,2016.
[Kaplan16] Jerry Kaplan, Artifical Intelligence: What Everyone Needs to Know, Oxford University Press, 2016.
[Müller-Guido16] Andreas C. Müller and Sarah Guido, Introduction to Machine Leaming with Python, O’Reilly Press, 2016.
[Raschka15] Sebastian Raschka, Python Machine Learning, Packt Publishing, 2015.
[VanderPlas16] Jake VanderPlas, Python Data Science Handbook, O’Reilly Media, 2016.