上QQ阅读APP看书,第一时间看更新
1.2 传统编程的局限性
图1-3中的模型从它初始就成为开发的主干。但是它有一个与生俱来的局限:只适用于可以制定规则的场景。其他情况下怎么办呢?通常,由于代码过于复杂,它们是不可行的,无法通过编写代码来处理它们。
考虑一个例子:运动检测。可以检测我们运动的健身监视器是最近的一个创新产品,不仅得益于其廉价精致的硬件而变得普及,同时得益于曾经不可行的检测算法现在可行了。让我们来研究一下为什么。
图1-4展示了一个简单的步行运动检测算法。它可以知道人的速度。如果速度小于一个固定的值,我们便可以判断人们可能正在走路。
图1-4:运动检测算法
既然数据是速度,我们可以扩展到检测人们是否正在跑步,如图1-5所示。
图1-5:扩展算法来检测跑步
可以看到,根据速度,我们可以说如果它小于一个固定值(例如,4英里/时,约6.44千米/时),那么这个人就是在走路,否则他们就是在跑步。这个算法仍然有效。
现在假设我们想要扩展这个算法来检测另一个受欢迎的健身运动:骑行。算法可能看起来如图1-6所示。
图1-6:扩展算法来检测骑行
我知道这很简单,因为它只是检测速度—有些人比其他人跑得更快,而且你可能在跑步下山时比上山骑行时更快。但是总的来说,这个算法依然有效。但是,如果我们要检测高尔夫球(如图1-7所示)时会发生什么呢?
图1-7:如何写一个高尔夫球算法
我们现在卡住了。如何通过上述方法来判断一个人正在打高尔夫球呢?那个人可能走一会,停下来,做一些活动,再走一会,停下来,等等。但是我们怎么知道这是打高尔夫球呢?
我们使用传统规则来检测这项运动的能力碰壁了。但是也许有一种更好的方法。
使用机器学习。