banner

【机器学习】工业上的机器学习: 一个案例研究

作者: 大数据观察来源: 大数据观察时间:2016-12-11 14:14:280

这篇博文由雷蒙德微软研究院首席研究经理Chris Burges 撰写。

你好,我是Chris Burges。在微软的这14年,和之前在贝尔实验室度过的14年里,我花了很多时间接触机器学习,而在解决工业力量问题上花了些时间。自从我对机器学习,尤其是对最近兴起的工业行情感兴趣以来,想象机器学习如何工作的种种画面都是十分幸福的,不管是从时间的角度还是从算法的角度都是如此。

在2004年,微软研究院和微软网络搜索团队决定尝试着联合提高网络搜索结果的相关性。那时使用的系统叫做“飞翔的荷兰人”。经过几个月的时间,我们设计了一个系统。这个系统不仅能够改善相关性,还更加容易操作。“飞翔的荷兰人”需要好几天和许多机器来产生一个模型,也就是对搜索结果进行排行,与之相比,名为“RankNet”的简单神经网络排行系统却能在只使用一台机器的情况下在大约一小时内产生出一个排行模型。

在未来几年里展开的将是科学、研究、算法设计和产品工程间相互作用的奇妙故事。这在篇博文中,我希望能让你感受到那种相互作用的感觉,在下一篇博文里,我会解释在没有具备顶尖机器学习知识的条件下,当今使用的基础算法是如何工作的。我们已经谈过了一种进步的基石,也就是进行快速实验的能力。理想情况下,如果你已经想到了好的主意,你就会尝尽方法想要立刻得到实验证据。所以即使一个模型一开始并没有像原有的模型表现得一样出色,如果这个模型能够更快地完成训练和测试,整个项目的进度都能够变得更快,仅仅凭这个事实,这个模型就能够很快在精确度和速度上超越现有的模型。

如今,一个名为增长决定树(BDTs)的系列模型尤其流行。BDTs极具灵活性,它可以用来解决不同的可预测任务,比如:

·排名,例如将最有关联的网站搜索结果放在这列结果的最顶端。

·分类,例如 判定一封特定的邮件是否是垃圾邮件。

·复原,例如预测你的房子将会以多少的价钱售出。

灵活度确实很好,但BDTs实际上有多实用呢?在微软内部使用的机器学习服务上收集到的记录显示,在过去的一年中,有大约670,000条调整通过微软使用BDTs运行。这个数字是由增大的,因为一个实验者通常会执行模型筛选,也就是训练多个带有不同参数的模型,并用给出的数据集来选出最好的模型。但这个数字只给出了综合的结论。这种对于BDTs的频繁使用是一种微软自己的倾向,还是其他地方的人们也喜欢BDTs呢?在2010年,雅虎组织了一次学习排名挑战,并设计了一个标识来观察谁拥有最好的网页搜索排名算法。有大约一千只队伍参加了了这个挑战。令人高兴的是,微软团队获得了胜利,他们产生的排名十分紧密。而且对于我来说,最有趣的意外是前5名的系统都使用了一系列的决定树,并以一种或其他种的形式飞速发展。实际上,我们的系统就是一系列的BDTs和神经网络。所以如果你正想训练一个固定的模型来解决可预测的任务,BDTs值得考虑。

让我们把网站搜索排名当做探索典型研发流程和产品流程的权威例子。做研究最大的挑战就是提出正确的问题和想法的妥当检测,还有就是。。。出版,一种十分吵闹的有效测试。解决那些关系到几百万人的实际问题是一种解决上述挑战的相当好的方法。

当你在必应上提出疑问是,我们会高效地扫描索引中的文献。通过应用一些快速的过滤器,大量的候选文献被筛除掉。比如我们可能根本不会去考虑那些与你的提问完全没有相同字符的文献。这将一堆的候选文献减少到便于管理的数量。对于每个这样的候选文献,我们都归纳了几千种特征,而这些特征可以显示这个文献与你的提问的关联度。举个例子,其中一个特征可能是“这份文献的标题含有任何提问中的字符吗?”,或者,在一个更高的层次,“这份文献有提到问题中的实体吗?”。排名模型的任务就是把这一系列的特征整合成一个单一的,可以表现出文献与提问关联度的分数。这个任务的过程,加上一开始的过滤过程,使我们能够根据文献与你提问的关联度,对网页上的所有文献进行排名。过去我们常常只是用一个叫NDCG的衡量指标来评价搜索结果的质量,而我们现在使用多个衡量指标来估测用户的满意度。对于一个特定提问的NDCG值基于整个排名名单上,而且这个数值基于0到1,之间,1代表着我们在一个特殊的,做过标签的数据集上,也就是我们所说的D上,所能达成的最好排名。

所以我们是怎么从RankNet变到BDTs的。RankNet虽然在当时也是一个突破,但是它并不能很好地运用于任务上:尤其是它忽视了NDCG测量,仅试着使文献的双线顺序正确无误。所以,如果你对于一个给定的提问有两份来自D的文献,其中一份已经被标上了完美温和的标签,另一份差强人意,RankNet会投入很多精力试着将那份完美的文献置于那份差劲的文献上面,就像将一份好的文献置于一份不怎么好的文献上面一样,付出同样的精力。当然我想说上述标签并不是我们实际用的标签!要创造一个能直接优化NDCG的模型,问题在于NDCG 在数学层面仍是病态的。如果你想要每个文献都带有一个由排名模型授予的分数,并通过它们的分数来排序,那么当那些分数不断地变化时,NDCG就会时不时地变化。为了解决这个问题,当你调整一个神经网络的时候,不必提供你正在完善的函数的实际值,只需提供升降率,一种能够在神经网络结果分数变化时表现出函数会怎样变化的值。至于排名任务,你能够把这些数值当做小型的弓箭或力,在排名单上推动着每个或上或下。我们可以把这些两份文献中的小力塑造成你通过交换两份文件所得到的NDCG变化,接着加上针对一个特定提问所给出的每份文件的所有力,然后把这些力当成升降率来调整神经网络。所以LambdaRank就诞生了,它虽然仍是一个神经网络模型,却比RankNet给出更好的相关度。之后我们将这个想法扩展,用一个叫LambdaMART的算法来改进树模型,来权衡BDTs在神经网络上提供的优点,其中两个优点就是:

1. 更自然地处理那些从一个特征变化到另一个特征的大范围特征。

2. 能更快地调整,并减少了实验的周期时间。

之后,一个由Ofer Dekel领导的团队展示了如何设计BDTs,使得调整大概变成了两个比调整神经网络还要快的步骤,而且能够处理更大的数据堆。

以上,在一个小范围内,体现了我们如何喜爱上BDTs。这整个过程是一个设计,产品需求驱动研究和研究为产品创造新机会的循环。对于这三个步骤中的两种,也就是RankNet和BDTs,它们的主要贡献是更快地进行带有更多数据的实验的能力。虽然我现在只在这里集中讲了关于排名的故事,但需要注意的是,除了排名算法,必应的性能和设计还能做更多的事情,排名算法只是一个很小却又及其重要的部分。在我的下一篇博文里,我们将会了解BDTs实际上是如何工作的。

banner
看过还想看
可能还想看
热点推荐

永洪科技
致力于打造全球领先的数据技术厂商

申请试用
Copyright © 2012-2024开发者:北京永洪商智科技有限公司版本:V10.2
京ICP备12050607号-1京公网安备110110802011451号 隐私政策应用权限