
第一章 入门简介
TensorFlow 入门
如果你想入门人工智能(AI)?机器学习(ML)和深度学习是很好的起点。不过,一开始接触这些概念时,可能会被各种选项和新术语搞得有点迷茫。本人工智能学习课程连载的目标是帮助程序员理清思路,带你一步步通过写代码实现机器学习和深度学习的核心概念,构建像人类一样思考的模型,比如在计算机视觉、自然语言处理(NLP)等场景下应用。通过这些模型,机器开始具备类似人类的智能,形成所谓的人工智能。
但说到机器学习,究竟是什么呢?我们先来简单了解一下,从程序员的角度看看它到底是什么。然后,我们会介绍如何安装开发工具,包括 TensorFlow 本身,以及如何搭建编写和调试 TensorFlow 模型的环境。
什么是机器学习?
在深入讨论机器学习之前,先看看它是怎么从传统编程发展出来的。我们会先讲讲什么是传统编程,接着看看它的局限性,最后再看机器学习是如何解决这些问题的,同时开启了更多实现人工智能的机会。
传统编程是我们用编程语言写规则,这些规则作用于数据,得到结果。几乎所有可以编程的场景都适用这种方法。
比如,你可以想象一下像打砖块(Breakout)这样的游戏。代码控制着球的运动、得分,以及赢或输的各种条件。比如当球碰到砖块时会发生什么,就像图 1-1 中展示的那样。

在这个例子中,小球的运动是由它的 dx 和 dy 属性来决定的。当小球击中砖块时,砖块会被移除,同时小球的速度会加快,方向也会改变。这段代码就是对游戏状态的数据进行操作。
再来看一个金融服务的例子。你有一家公司股票的数据,比如当前价格和收益。你可以用图 1-2 中的代码计算一个很有用的比率,叫做市盈率(P/E,比价格除以收益)。

代码会读取价格和收益,最后返回价格除以收益的结果。
如果要用一个简单的图表来概括传统编程,可能就像图 1-3 这样。

可以看到,编程规则是用编程语言表示的,它们作用于数据,最终得出结果。
正如你所看到的,规则是用编程语言来表示的,这些规则作用于数据,最终得出结果。
传统编程的局限性
从图 1-3 的模型问世以来,它一直是开发的基础。不过,它有个明显的限制:只有那些你能推导出规则的场景才能实现。那么其他场景呢?通常,它们很难开发,因为代码太复杂,根本无法写出处理这些问题的代码。
比如活动检测这个例子。能够检测我们日常活动的健身追踪器是最近的创新,这不仅是因为有了便宜的小型硬件,还因为以前的算法根本无法实现这种检测。那为什么会这样呢?我们来探讨一下。
图 1-4 展示了一个简单的行走检测算法。它可以根据人的速度来判断,如果速度低于某个值,我们就可以推测他们可能是在走路。

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

你可以看到,按照速度来判断的话,如果低于某个特定值(比如 4 英里每小时),我们可以说这个人在走路,否则就是在跑步。这个方法还是有点效果的。
现在,假设我们想把这个算法扩展到另一项常见的健身活动,比如骑自行车。那么这个算法可能会像图 1-6 这样。

我知道这个方法有点简单,只是通过速度来判断——毕竟每个人跑步的速度不一样,而且你下坡跑步可能比上坡骑车还快。不过,总的来说它还是有效的。但是,如果我们想扩展到另一个场景,比如打高尔夫(见图 1-7),又该怎么办呢?

我们现在卡住了。用这种方法,怎么判断一个人是在打高尔夫呢?他们可能走一会儿,停下来做点事情,然后再走一会儿,再停下来,等等。但我们怎么知道这就是在打高尔夫呢?
用传统规则来检测这种活动已经碰到瓶颈了。不过,也许有更好的方法。
这就是机器学习派上用场的时候了。
下一篇我们就正式进入机器学习ML了......
欢迎大家留下评估,我来给大家讲解!