前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >用于工业界的机器学习:案例研究

用于工业界的机器学习:案例研究

作者头像
哒呵呵
发布2018-08-06 17:48:38
7000
发布2018-08-06 17:48:38
举报

您好,我是Chris Burges。 在我过去在微软工作了14年,在此之前为贝尔实验室又工作了14年,我花了大量的时间在机器学习(ML)上,其中有部分时间又花在解决工业问题上了。由于对ML的兴趣,特别是在工业环境中,越来越火,现在似乎是一个好时机去从实践的角度和算法的思考ML的工作原理的整个应用。

在2004年,微软研究(MSR)和微软的网络搜索团队决定试试通过合作我们是否可以有效提高网络搜索结果的相关性。当时使用的系统被称为飞翔的荷兰人(The Flying Dutchman)。过了数月时间,我们设计了一个系统,该系统不仅提高了相关性,除此之外,被证明更容易进行实验:而漂泊的荷兰人花了数天时间和一个集群产生了模型(以排名网络搜索结果),一个简单的神经网络分级器RankNet ,它能够只用一台机器产生在大约一个小时的排序模型。

在接下来的几年中展开的是科学,研究,算法设计和产品工程之间的相互作用的有趣故事。在这第一篇文章中,我希望给你一个简单的感觉,在后面的文章,我将解释基本的算法如何在今天实际的工作,假设你没有ML的基础知识。 我们已经接触了前进的一个基石:快速实验的能力。 如果你认为你所想的是一个好主意,立即在理想情况下获取你需要的实验证据,一种途径或更多种。因此,即使模型最初不像已经具有的那样表现得好,如果通过训练和测试可以更快,那么整体进度可以更快,并且单独的这个将经常使得模型能够快速超过当前模型精度和速度。

如今,一系列名为 增强决策树(BDTs)的模型特别受欢迎。BDT可以灵活的用于解决不同类型的预测任务,例如:

  • 排名,例如将最相关的网络搜索结果放在列表的顶部,
  • 分类,例如确定特定电子邮件是否是垃圾邮件
  • 回归,例如,预测你的房子可能卖什么价格。

灵活性很好,但是BDT有多有用呢? 在微软内部使用的ML服务上收集的日志显示,在过去一年中,在微软各地使用BDT进行了超过670,000次训练。 这个数字被夸大了,因为给定的实验者通常将执行模型选择(即,训练多个模型,每个模型具有不同的参数环境,并且使用不变的数据集以选择最佳模型),但是其给出了总体图景。这是BDT的微软倾向,还是别的人喜欢他们? 2010年,雅虎举办了 学习等级的挑战 ,一个方向的目的是要看看谁拥有最好的网络搜索排名算法。超过一千支队伍注册了挑战。而令人欣慰的是,微软队赢了 ,排名很接近,对我来说最有趣的意外是,前5个系统的决策树全部采用集合和增强,这种或那种形式(事实上我们的系统是一个BDT和神经网络的集合)。所以,如果你正在考虑训练一个固定的模型来解决一个预测任务,值得考虑BDTs。

让我们使用网络搜索排名作为我们的典型例子来探索典型的研究/产品周期。 做研究最困难的挑战是提出正确的问题,并获得良好验证的想法(除了历史悠久的出版方法,验证测试可以说是相当嘈杂)。处理对数百万人有意义的真实问题是获得这两个挑战的一个很好的方法。

当您在Bing上写下一个查询,我们将有效扫描地索引库里所有文件。通过应用一些非常快速的过滤器(例如我们甚至可能不考虑没有与您的查询共同的单词的文档)排除大量候选文档。这将候选文档的集合减小到可管理的大小。对于每一次这样的候选文档中,我们可以产生几千个特征 (features),表明文档可能与您的查询如何有关。例如,一个特征可能是“文档标题是否包含查询中的任何单词”,或者在更高级别上,“文档是否指向查询中提及的实体?”排名模型的任务是采取此列表的特征,并将其映射为一个单一的分数,这分数与编码该文档的相关性的查询有关。这与初始过滤过程相结合,允许我们通过与您的查询的相关性来对Web上的所有文档进行排名。我们使用称为NDCG单一指标来衡量搜索结果的质量(我们现在使用几个指标来衡量用户满意度)。给定查询的NDCG值取决于整个排名列表,取值在0和1之间,其中1表示在特殊的,标记的数据集(我们称为D)上可实现的最佳排名。

那么,我们如何从RankNet到BDTs的呢? RankNet虽然在当时是一个突破,但不能很好地适应任务:特别是,它忽略了NDCG权重,并且只是试图获得文档的成对的顺序正确。所以,如果对于一个给定的查询,你会有一对由D文件,其中一个已经被贴上了完美匹配的查询,其他则是可怕 的,RankNet会花同样多的精力试图得到完美而在此之上摆放着可怕 的标签,因为它会一个之上的不太好相当(我要补充一点,这些都不是我们使用实际标签!)。创建直接优化NDCG的模型的问题是NDCG不正确,数学上; 如果您认为每个文档具有分数(由您的排名模型指定),以便通过按照他们的分数对文档排序来获得排名,那么NDCG会不连续地改变,即使这些分数会连续改变。为了解决这个问题,我们使用的一件实例是,当你训练神经网络时,你不必为你优化函数的实际价值,只使用梯度(值,表明该函数将如何作为神经网络的改变输出分数变化)。对于排名任务,您可以将这些值视为小箭头或力,将每个文档在排名列表中向上或向下拉。 我们可以将一对文档之间的这些小的力建模为通过交换两个文档(对于集合D)而获得的NDCG的变化,然后将给定查询的每个文档的所有的力相加,然后使用这些作为梯度来训练神经网络。于是诞生LambdaRank ,它同时还是一个神经网络模型,可以给出比RankNet更好的相关性表现。 后来我们扩展了这种想法,使用增强决策树模型和算法 LambdaMART ,使得一些的BDTs享有神经网络的优势,其中两个是:

  1. 更自然地处理范围从一个特征到另一个特征变化巨大的特征的能力
  2. 更快的训练,因此更快的实验周转时间。

随后带领的团队 奥弗德克尔 展示了如何工程师BDTs从而使训练达到比的神经网络速度更快约两个数量级,也能够处理更大的数据集。

简而言之,我们是如何爱BDT的。 整个过程是工程和产品需求的循环,铲平推动研究,研究为产品开创新的机会。 对于三个步骤中的两个(RankNet和BDT),主要贡献是能够用更多数据做更快的实验。 虽然我在这里集中在排名的故事,应该注意的是,在Bing的质量和工程中有更多的只是排名算法,这是一个小而重要的部分。 在我的下一篇文章中,我们将看看BDTs是如何工作的。

克里斯Burges

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-10-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 鸿的学习笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档