机器学习

AI and machine learning for coders 中文翻译(1)

中文书名:给程序员的人工智能和机器学习

译者:朱瑞

译者邮箱:kevindree@gmail.com

译者声明:译者在IT领域工作多年,基于对于人工智能、机器学习的兴趣,自学了很多机器学习课程,Ai and machine learning for coders是其中的一本书。为了让更多华人了解和学习人工智能的相关技术,在学习的过程中,经过长时间的辛勤劳动和付出,将这一中文版呈现在大家面前。翻译中难免有许多不准确的地方,还望广大读者原谅。

Geehootek.com是译者首发网站,请尊重译者劳动,转载时请注明出处!!!

第一部分:建立模型

第一章:Tensorflow的介绍

在创建人工智能 (AI) 时,机器学习 (ML) 和深度学习是一个很好的起点。 然而,刚开始使用时,很容易被各种选项和所有新术语弄得不知所措。 本书旨在为程序员揭开神秘面纱,带您通过编写代码来实现机器学习和深度学习的概念; 以及构建行为更像人类的模型,包括计算机视觉、自然语言处理 (NLP) 等场景。 因此,是一种人工的、智慧的形式。

但是当我们提到机器学习时,这个特殊的事物到底指的是什么? 让我们快速看一下,并在我们继续之前从程序员的角度来思考。 之后,文章将向您展示如何安装各种工具,从 TensorFlow 本身到您可以编码和调试 TensorFlow 模型的环境。

什么是及机器学习

在我们深入了解 ML 的来龙去脉之前,让我们先考虑一下它是如何从传统编程演变而来的。 我们将从研究什么是传统编程开始,考虑它有哪些受限的情况。 之后我们将看到 ML 如何进化来应对这些情况,并因此开辟了实施新场景的新机会,解锁了许多人工智能的概念。

传统编程让我们可以通过某种编程语言来编写某些规则,这些规则作用于数据,并最终给出答案。 这几乎适用于任何可以用代码编程的地方。

例如,我们考虑一款非常流行的 Breakout 这样的游戏。 代码决定了球的移动、得分以及各种游戏输赢的条件。想一想球从砖块上弹回的场景,如图 1-1 所示。

AI and machine learning for coders – Figure1-1 Code in breakout game

这里,球的运动可以由它的 dx 和 dy 属性决定。 当球撞到一块砖时,砖被消除,球的速度增加并改变方向。 这段代码作用于游戏状态数据。

或者,考虑一个金融服务场景。 您拥有某个公司的股票数据,例如其当前价格和当前收益。 您可以使用图 1-2 中的代码计算出一个很有价值的比率,称为 P/E率(价格除以收益)。

AI and machine learning for coders – Figure1-2 Code in a financial services scenario

这段代码读取价格和收益数据,并返回前者除以后者的值。

如果试图将传统编程总结成一张图,它看起来应该像图 1-3。

Figure 1-3. High-level view of traditional programming

如您所见,您通过编程语言来表达规则。 这些规则作用于数据,而结果就是答案。

传统编程的局限性

图 1-3 中的模型从一开始就是开发的支柱。 但它有一个固有的局限:即只有可以实施的场景,您才可以从中推导出规则。 那么其他更复杂的场景呢? 通常,由于代码太复杂, 编写代码来处理这些场景几乎是不可能的。

例如,运动检测。 健身监测器是最近的一项创新,可以检测我们的运动状态,这不仅是因为廉价且小型的硬件现在变的可用,更因为处理检测的算法在之前并不可行。让我们探讨一下原因。

图 1-4 显示了一个简单的步行活动检测算法。 它可以考虑人的速度。 如果速度小于特定值,我们可以确定他们可能正在走路。

Figure 1-4. Algorithm for activity detection

鉴于我们的数据是速度,我们可以进行扩展这个算法,来检测人物是否正在跑步(图 1-5)。

Figure 1-5. Extending the algorithm for running

如您所见,根据速度,我们可能会说如果它小于某个特定值(例如 4 英里/小时),则该人正在行走,否则他们正在跑步。 这似乎还算有效。

现在假设我们想将其扩展到另一种流行的健身活动,骑自行车。 该算法可能类似于图 1-6

Figure 1-6. Extending the algorithm for biking

我知道这很天真,因为它只是检测速度——例如,有些人跑得比较快,而且跑步下坡的速度可能比骑车上坡快,因此这个判断并不准确。 但总的来说,它仍然还算有效。 但是,如果我们想实现另一个场景,比如打高尔夫球(图 1-7),会发生什么情况呢?

Figure 1-7. How do we write a golfing algorithm?

我们如何通过类似的方法来确定某人是否正在打高尔夫球呢? 这个人可能会走一会儿,停下来,做一些活动,再走一会儿,停下来 …… 。但是我们怎么知道这是在打高尔夫呢?

我们使用传统规则来检测此活动的能力遇到了瓶颈。 但也许有更好的方法。

让我们一起进入机器学习。

从编程到学习

让我们回顾一下我们用来总结什么是传统编程的图(图 1-8)。 在这里,我们有规则作用于数据并给我们答案。 在我们的活动检测场景中,数据是人移动的速度; 由此我们可以编写规则来检测他们的活动,无论是步行、骑自行车还是跑步。 然而,我们在检测打高尔夫球时碰壁了,因为我们无法给出一个规则来确定这项活动是什么样子的。

Figure 1-8. The traditional programming flow

但是如果我们把这个图左右翻转一下会发生什么? 如果我们不是给出规则,而是连同数据一起给出答案,而用一种方法弄清楚规则可能是什么,那会怎样?

图 1-9 显示了它的样子。 我们可以用这个高级图示来定义机器学习。

Figure 1-9. Changing the axes to get machine learning

那么这意味着什么呢? 嗯。。。我们现在并不是要试图弄清楚规则是什么,而是获得了大量关于我们场景的数据,我们标记这些数据,然后交给计算机去弄清楚是什么样的规则使得一个数据和一个特定的标签相匹配,而另一条数据则匹配另一个不同的标签。

这对于我们的活动检测场景有什么用呢? 好吧,我们可以查看所有为我们提供有关此人数据的传感器。 如果他们有一个可检测心率、位置、速度等信息的可穿戴设备——如果我们在他们进行不同的活动时收集了大量此类数据的实例——我们最终会得到一个拥有数据的场景,并且上面写着“这时他在走路”、“这时他在跑步”等等(图 1-10)。

Figure 1-10. From coding to ML: gathering and labeling data

现在,作为程序员,我们的工作从找出规则转变为定义活动,再转变为编写将数据与标签相匹配的代码。 如果我们能做到这一点,那么我们就可以扩展我们可以用代码实现的场景。 机器学习是一种使我们能够做到这一点的技术,但为了开始,我们需要一个框架——这就是 TensorFlow 发挥作用的地方。 在下一节中,我们将了解它是什么以及如何安装,然后在本章的后面,您将编写您的第一段代码来学习只有两个值的模式,就像在前面的场景中一样。 这是一个简单的“Hello World”场景,但它与在极其复杂的场景中使用的基础代码具有相同的模式。

人工智能领域广阔而抽象,涵盖了让计算机像人类一样思考和行动的一切。 人类采取新的行为的方法之一是通过实例进行学习。 因此,机器学习可以被认为是人工智能发展的入口。 通过它,机器可以学习像人一样看东西(计算机视觉领域),像人一样阅读文本(自然语言处理)等等。 我们将使用 Tensor-Flow 框架在本书中介绍机器学习的基础知识。

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注