机器学习是如何运作的?谷歌来告诉你

825 查看

最近媒体报道谷歌正在利用机器学习帮助处理搜索结果,这引发了人们对于这一人工智能领域的兴趣和疑问。什么是“机器学习”,机器是如何自学的呢?这里有一些 Google 内部关于机器学习的背景介绍。

昨天 Google 为科技记者举办了一场活动 —— “机器学习的入门课程”。我就是其中一位与会者。尽管宣传上说只是一些介绍,但对我和其他一些记者而言,里面的内容有相当的技术含量,难以消化。

例如,当一个演讲者告诉我们机器学习中的数学是“容易的”,而且还在同一句话里提到了微积分。我不得不说,和外行相比,他们对于“容易”有着完全不同的理解。

然而,我还是对机器学习的过程和组成有了进一步的理解,涉及机器(计算机)如何学会自学,去识别物体、文字、口语词汇和其他的东西。下面是我记录的要点。

机器学习的组成

机器学习系统由三个主要部分组成,包括:

  • 模型:用来预测或识别的系统。
  • 参数:模型做决定所使用的信号或因素。
  • 学习器:这个系统通过检查预测和实际输出的差异来调整参数,再对模型进行调整。

现在让我把昨天 Greg Corrado 讨论的东西转换成现实世界的一个实际问题。Greg Coorado 是 Goolge 的一位资深研究科学家,也是公司深度学习团队的共同创始人。

想象你自己是一位老师。你想确认如果学生要在考试中取得好成绩,最优的学习时间会是多少。你向机器学习求助以便找到一个解决方案。是的,对于这个问题而言,可能有点大材小用。但这是一个非常简单的说明。

构造模型

一切都要从模型开始,机器学习用它来进行预测。至少在这个特定的例子中,系统最初的模型必须由人类提供。在我们的例子中,老师可以告诉机器学习模型进行这样的假设,即学习 5 个小时就可以取得好成绩。

模型本身借助参数进行计算。这个例子中,参数是学习时间和取得的分数。假设参数像下面这样:

  • 0 小时 = 50% 分数
  • 1 小时 = 60% 分数
  • 2 小时 = 70% 分数
  • 3 小时 = 80% 分数
  • 4 小时 = 90% 分数
  • 5 小时 = 满分

实际上机器学习系统使用一个数学方程式来表示上述模型,事实上形成了一条预期的趋势线。这个是昨天讲座的一个例子:

提供最初的输入

现在模型已经确定了,需要输入实际的信息了。比如我们的老师可能会输入不同学生的 4 个分数,以及他们学习的小时数。

在这个例子中,结果是这些分数和模型不匹配。有的分数在预测趋势线的上面,有的在下面:

现在该轮到机器学习中的学习器了!

学习器进行学习

那些输入分数的集合?这些输入机器学习系统的数据通常被称为“训练集”或者“训练数据”,因为系统中的学习器借助它们训练自己,以便生成一个更好的模型。

学习器查看这些分数,看它们距离模型有多远。它利用更多的数学知识来调整最初的假设。比如,上面的列表很可能被替换成这样:

  • 0 小时 = 45% 分数
  • 1 小时 = 55% 分数
  • 2 小时 = 65% 分数
  • 3 小时 = 75% 分数
  • 4 小时 = 85% 分数
  • 5 小时 = 95% 分数
  • 6小时 = 满分

新的预测被重新调整了,取得满分需要更多的学习时间。

这只是流程的一个例子,当然这个例子完全是虚构的。最重要的收获就是理解学习部分对参数进行微调,并改善模型。我稍后再讨论这一点。

清洗并重复

现在输入一个新的分数集和时间,系统重新运行。这些实际的分数和学习部分修改后的模型做比较。如果成功,这些分数会很接近预测结果:

但是还不够完美。所以学习器再一次调整参数,重构模型。另外一组测试数据被输入进去。重新比较,学习器再一次调整模型。

这个循环过程会一直重复,直至得到一个最终的模型,它可以真的根据学习的小时数预测出取得的分数。

梯度下降法:如何避免机器学习失败

Google 的 Corrado 强调绝大多数的机器学习都是基于“梯度下降”或“梯度学习”的概念。也就是系统通过不断的微小调整直至得到正确的答案。

Corrado 喜欢把这比喻成从一个很陡峭的山峰下来。你不会想要跳下来或者跑下来,那样太危险了。你很可能会不小心掉下去。事实上你会很小心得一点点挪下去。

还记得我上面提到的“数学很简单”吗?很显然对于那些了解微积分和数学运算的人来说,涉及到的方程式真的很简单。

事实上现实的挑战是计算能力。要完成所有这些步骤,机器要花很长时间学习。但是计算机会更快更强大,机器学习之前被认为是不可能的,而现在已变得相当普遍了。

异想天开:识别猫

上面的例子非常简单。就像上面说的,一个老师利用机器学习预测考试分数实在是大材小用。但同样简单的系统可以用来做复杂的事情,比如识别猫的图片。

计算机不能像人类那样看东西。所以它们如何能够识别物体?就像 Google Photos 可以从我的照片中挑出很多物体一样:

机器学习可以做到这一点!还是同样的原理。你利用一些可能的因素构建了一个模型,这些因素可以帮助识别图像中的猫,比如颜色,形状等等。接下来你输入一个训练集,是一些有猫的图片,然后看这个模型工作的怎么样。

学习器进行调整,重复训练的循环。但识别猫和其它物体是很困难的。有很多参数可作为模型的一部分,甚至参数里还可以嵌套参数,这些参数被用来把图片转换成系统匹配物体的模式。

比如,最终系统是这样找到一只地毯上的猫:

这是一幅类似油画的图片,是利用 Google 发布的 DeepDream 代码做出来的,Google 进一步分享了机器学习系统是如何建立模式来识别物体。

The image is really an illustration of the type of patterns that the computer is looking for, when it identifies a cat, rather than being part of the actual learning process. But if the machine could really see, it’s a hint toward how it would actually do so.

这幅图事实上说明了,当计算机识别一只猫的时候,是在查找某种模式类型,而不是作为实际学习过程的一部分。但如果机器真的可以看到,这就提示了实际上它会如何做。

顺便说一下,从我们最初的例子发展到图像识别,模型已经不是人类而是机器创造出来的。它们自己尝试理解一个物体是什么,通过原始的颜色、形状和其他特性的组合来构建,然后利用训练数据进行优化。

识别活动

进一步加大难度,想象除了识别物体还要识别活动。Google 解释说要增加一些常识性的规定,而且人类还要引导机器学习过程,让它理解不同的物体如何出现在一个活动上。

比如考虑这个:

就像上面投影片里描述的,一个机器学习系统看到一个小孩、一个篮子和一个鸡蛋。但一个人类看到所有这些,会知道这是寻找复活节彩蛋的活动。

RankBrain的技术内幕呢?

所有这些机器学习是如何应用到 Rank Brain 上的?Google 并没有讨论这方面的技术细节。事实上在正式讨论中都没有提及,在演讲间歇中也没有披露什么新的消息(都是一些已经公开的信息)。(译者注:RankBrain,是 Google 研发的一套机器学习人工智能系统,用来帮助排序搜索结果。)详见《谷歌人工智能算法RankBrain运行原理解析》。

为什么?当然是竞争的考量。Google 分享了很多它如何利用机器学习的信息。甚至在其他领域分享了很多技术细节。但是它对将如何在搜索上应用机器学习讳莫如深,防止泄漏很多它认为重要和独特的信息。

想了解更多?

如果你想要进一步了解机器学习,可以参考 Google 相关研究的博客这里还有一些共享的研究报告和下面一个最新的视频:

https://youtu.be/l95h4alXfAA