机器学习是如何运作的?谷歌来告诉你
最近媒体报道谷歌正在利用机器学习帮助处理搜索结果,这引发了人们对于这一人工智能领域的兴趣和疑问。什么是“机器学习”,机器是如何自学的呢?这里有一些 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 分享了很多它如何利用机器学习的信息。甚至在其他领域分享了很多技术细节。但是它对将如何在搜索上应用机器学习讳莫如深,防止泄漏很多它认为重要和独特的信息。
本文文字及图片出自 伯乐在线
共有 1 条讨论