前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >从0到1,Airbnb的深度学习实践经验总结

从0到1,Airbnb的深度学习实践经验总结

作者头像
AI科技大本营
发布2019-10-24 14:55:42
4320
发布2019-10-24 14:55:42
举报
文章被收录于专栏:AI科技大本营的专栏

此前,AI科技大本营发布了关于Booking.com网站将机器学习用于其系列产品的经验总结。这一次,我们将深入浅出详细介绍了Airbnb从标准的机器学习方法转向深度学习的过程,希望通过介绍的研究成果为读者提供一些有用的帮助和指引。

模型中的生态系统

本文要讨论的机器学习现实应用,是关于根据用户预约的可能性来预订客房的模型。当用户在Airbnb网站上搜索的时候,这样的模型有助于搜索排名。新模型是通过A/B测试框架来进行在线测试,并将其性能与前几个版本进行比较。

正确的时机

最开始,Airbnb搜索排名是通过人工手动操作来完成的。

用梯度增强决策树(Gradient Boosted Decision Tree ,GBDT)模型取代手动操作的评分功能,是Airbnb历史上最大的一次关于客房预订应用的改进。

这种方法还有许多成功的迭代要继续进行,但最终性能达到饱和了,而且很难再更进一步进行提升,这就到了尝试全面改造系统的时候了。

值得关注的是,Airbnb团队已经拥有了在机器学习、数据管道和在线控制实验平台等方面的丰富经验。在此基础上,他们向神经网络迈出了第一步。

值得这么做吗?

Airbnb已经从一个梯度增强决策树(GBDT)模型作为起点逐步地向深度神经网络发展。总的来说,这一转变是“Airbnb的最具影响力的机器学习应用之一”。下面的图表显示随着时间的推移,在主要的离线指标、标准化折扣累积收益(NDCG)以及使用已部署模型实现的在线预订收益等方面的改善。

当然,在实际过程中,也经历了许多的弯路和失败的尝试:“现实中充满的失败尝试数量超过了成功的次数……”

别当英雄

Andrej Karpathy对模型架构有一个建议:别当英雄。好吧,我们可不是这样开始的…...

但在经历了几次失败的尝试之后,第一个部署到实际应用中的神经网络模型是一个简单的模型,它只有一个隐藏层,并带有32个完全连接的ReUL激活函数。与之前的GBDT模型相比,它在预订功能方面的表现一般。不过,这并不是无谓的尝试:

实践的价值在于,对于实际应用,它验证了整个神经网络管道已经做好了准备,并且能够提供客户出行方面的服务。

一开始别当英雄

我们会采纳Kapathy的建议:不要在一开始就成为英雄。

预订收益的第一个重大突破是将神经网络与Lambdarank的思想相结合起来。然而最初的神经网络使用了与GDBT模型相同的一些特性,“lambdarank为我们提供了一种直接优化NDCG神经网络的方法。”

Lambdarank模型使用了成对的{booked, not-booked}实例作为训练的输入,并通过交换成对的分类而导致的NDCG差异来衡量每一对的损失。最终的结果是预定的列表趋向于向搜索结果的顶端移动。

利用所有能利用的

本文所述的成功经历是基于神经网络模型,但也有其它的模型正处于研究之中。在某些情况下,这些模型的最终表现是类似的,但排名靠前的却大不相同。因此,在下一次迭代中尝试了将神经网络方法的优点与GBDT模型和因子分解机模型的特征结合在一起来作为额外的输入。

这些模型确实提高了预订率,但同时也付出了代价。

摒弃复杂性

在我们最后一次的飞跃中,能够通过简单地将训练数据缩放10倍并移动到具有2个隐藏层的深度神经网络来降低所有的复杂性。

但与之前的版本相比,它的宽度相对较大:一个具有195个特征的输入层,为第一个隐藏层提供带有127个完全连接的ReLUs,而第二个隐藏层提供带有83个完全连接的ReLUs。

给模型“喂”数据

伴随着模型架构的快速发展,这些模型中的特性也相应地发生了变化。

第一次尝试训练神经网络时,我们简单地将用于训练GBDT模型的所有特性都输入到神经网络中,但结果很差。

第一个改进来自于对特征标准化的应用(GDBT对精确的数值不是特别敏感,但神经网络是比较敏感的)。这在很大程度上将特征映射到在{-1,1}里的中值为0的小范围取值中。

下一个比较大的改进来自于保证这些特性的分布是平滑的。争取平滑分布有助于发现错误、支持标准化、突出一些特征工程可能有用的领域,以及发现一个模型有可能缺失了一些其它的功能。

准确回答深度神经网络擅长标准化的原因是一个十分复杂的前沿研究课题。同时,我们的专业知识是基于这样的观察而得到的:在为我们的应用而构建的深度神经网络中,各层的输出在其分布的过程中变得越来越平滑……来自较低层的平滑分布确保了上层能够正确地“插入”不可见值的过程。将这种能力一直延伸到输入层,我们尽最大努力确保输入的特性具有一个平滑的分布。

调整模型

神经网络带来了巨大的超参数空间。而最后,simple在Airbnb的表现最好。

对于应用,我们发现很难通过Adam的默认设置来提高它的性能……在LazyAdamOptimizer之下,扫除了学习率的问题,我们只是选择了一个固定的大小为200的批量,这似乎适用于当前的模型。

理解模型

随着向深度神经网络的转移,其中一件事变得更加的困难,那就是了解模型实际在做什么以及为什么这么做的原因。在尝试使用各种策略后,最适合Airbnb的是一个名为TopBot的自研发工具,一款自上而下的分析器。TopBot将排名靠前的列表中的特征值分布图与排名靠后的进行对比,这个对比突出显示了模型如何在不同取值的范围内来使用这些特征。

例如,在下面的图表中显示模型对价格的敏感度,但也显示了这个版本的模型并没有像预期的那样进行审查。

心得和体会

转向深度学习不仅仅是改变模型的内部结构,也要改变它的规模。“因此,它需要重新考虑围绕这一模式的整个体系。”

那么我们还向其他人推荐深度学习吗?那将会是一个诚心诚意的“Yes”,而这不仅仅是因为这个模型的在线表现很强劲。其中一部分是与深度学习如何改变我们未来的研究路线有关。早期的重点主要放在了特征工程上,但是在转向深度学习后,尝试通过对特征执行更好的数学计算已经失去了意义。这让我们可以在更高的层次上研究问题,比如,我们如何改进优化目标,是否准确地表示了所有的用户?

两年过去了,Airbnb的团队才刚刚起步……

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

本文分享自 AI科技大本营 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 模型中的生态系统
  • 正确的时机
  • 值得这么做吗?
  • 别当英雄
  • 一开始别当英雄
  • 利用所有能利用的
  • 摒弃复杂性
  • 给模型“喂”数据
  • 调整模型
  • 理解模型
  • 心得和体会
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档