第1章
开启机器学习之旅
本章内容
- 机器学习基本原理
- 数据表示、特征和向量范数
- 为什么是TensorFlow
你是否想过计算机程序所能解决的问题是有限度的?如今,计算机的应用已经远远不止于求解数学方程。在过去的半个世纪里,编程已经成为完成自动化任务和节省时间的终极方法。但我们能在多大程度上实现自动化,又该如何实现呢?
计算机能否看到一张照片并说“啊,我看到坠入爱河的情侣在雨中漫步,他们打着伞走过一座小桥”?软件能否像训练有素的专业人士一样准确地做出医疗决定?软件能否比人类更好地预测股市表现?过去十年的成就表明,所有这些问题的答案都是响亮的“是”,并且实现的方式表现出共同的策略。
最近的理论进展以及新的技术,使任何有机会使用计算机的人都能够尝试用自己的方法来解决这些难以置信的难题。(好吧,不是所有人,但这正是你读这本书的原因,对吗?)
程序员在解决一个问题时不再需要知道它的复杂细节。考虑将语音转换为文本,传统的方法可能包括理解人类声带的生物结构,通过使用许多手工设计的、特定领域的、不可泛化的代码来解码语言。现在,只要有足够的时间和样本,就可以编写代码通过学习大量的样本找出解决问题的方法。
再举一个例子:识别一本书或一条推文的文本情感是积极还是消极的。或者你可能想要更精确地识别文本,比如揭示作者的喜好或喜欢的东西,以及他们感到厌恶、愤怒或悲伤的东西。过去的检测方法仅限于扫描问题中的文本,寻找诸如丑陋、愚蠢和痛苦等刺耳的词来表示愤怒或悲伤;或者寻找诸如感叹号之类的标点符号,它们可能表示高兴或者愤怒这两者中的一个。
算法从数据中学习,就像人类从经验中学习一样。人类通过阅读书籍、观察情境、在学校学习、互相对话和浏览网站等方式进行学习。机器如何才能开发出能够学习的大脑呢?目前还没有明确的答案,但世界一流的研究人员已经从不同的角度开发出了智能程序。在这些实践中,学者们注意到在解决这些问题时反复出现的模式,这些模式通往一个标准的领域,即我们今天所称的机器学习(ML)。
随着ML研究的成熟,执行机器学习的工具变得更加标准化、鲁棒、高性能和可扩展。这就是TensorFlow的用武之地。这个软件库有一个直观的界面,可以让程序员投入其中实现一些复杂的ML想法。
使用版本:TensorFlow 2及以上
本书以TensorFlow 1.x系列以上的两个版本为标准。1.15版本是1.x系列发布的最新版本,它与Python 3兼容良好。在第7章和第19章,你会遇到一些Python 2的示例,这时需要TensorFlow的1.14版本。
此外,在本书编写期间,一个完整的基于TensorFlow 2的清单和代码已经发布(详见附录)。你将注意到,在清单中的TensorFlow 2代码有85%~90%是相同的。主要原因是数据的清洗、收集、准备和评估代码是完全可重用的,因为它使用了附带的ML库,如Scikit和Matplotlib。
TensorFlow 2版本的代码清单包含了新的特性,包括默认即刻执行(always eager execution)以及新的优化器和训练的程序包名。新版本代码在Python 3中运行良好,如果你尝试运行了它们,我希望得到你的反馈!你可以在https://github.com/chrismattmann/MLwithTensorFlow2ed/tree/master/TFv2获取TensorFlow 2版本的代码清单。
第2章将介绍这个库的输入和输出,之后的每一章都会解释如何在各种ML应用程序中使用TensorFlow。