1.3 从编程到学习
回顾一下我们用来展示传统编程的图(见图1-8)。这里我们有处理数据返回答案的规则。在运动检测场景中,数据是人移动的速度,通过速度我们可以编写一些规则来检测他们的运动,可以是走路、骑行或者跑步。当遇到高尔夫球时,我们碰壁了,因为我们无法编写规则来判断这项运动看起来是什么样的。
图1-8:传统编程流程图
但是,如果翻转图中的坐标轴会发生什么呢?如果不再是我们来编写规则,而是我们来提供答案和对应的数据,是否有一种方法可以搞清楚规则是什么样的呢?
图1-9展示了这种方法的样子。我们可以把这当作定义机器学习的高级视图。
图1-9:改变坐标轴来得到机器学习
那么这意味着什么呢?好吧,现在我们不再试图去搞清楚规则,我们有许多与场景有关的数据,我们标注这些数据,然后计算机可以搞清楚什么样的规则可以将数据匹配给特定的标签。
这怎么解决运动检测问题呢?我们可以看看所有传感器传给我们的有关个人的数据。如果他们有一个可穿戴设备用以检测心跳、位置、速度等信息,并且在他们做不同的运动时,我们收集许多类似的数据,之后就得到了数据来表示“这就是走路的样子”“这就是跑步的样子”,等等,如图1-10所示。
图1-10:从编码到ML:收集和标注数据
现在我们的工作从搞清楚检测运动的规则变成编写代码来匹配数据与标签。如果我们可以解决这个问题,就可以扩展到那些用代码实现的情况。机器学习是一项可以帮助我们做到这些事情的技术,但是在开始之前,我们需要一个框架—这就是TensorFlow的用武之地了。下面我们会看看它是什么以及如何安装它,在本章后面你将写下第一段代码来学习两个数值之间的关系,就像之前的情况一样。它是一个简单的“Hello World”场景,但是它拥有同样的基础代码模式,可以在极端复杂的情况下使用。
人工智能的领域是庞大而抽象的,包含所有让计算机像人类一样思考和行动的相关事物。人类形成新行为的方法是从例子中学习。机器学习可以被理解为人工智能开发的道路入口。通过它,机器可以像人类一样看(计算机视觉)、像人类一样阅读(自然语言处理),等等。通过使用TensorFlow,我们会在本书中介绍机器学习的基本概念。