深度学习在 Airbnb 中的探索与应用

栏目: 数据库 · 发布时间: 5年前

内容简介:文章作者:马宇峰编辑整理:Hoh Xil

深度学习在 Airbnb 中的探索与应用

文章作者:马宇峰 阅文集团

编辑整理:Hoh Xil

内容来源:作者授权

出品社区:DataFun

注:欢迎转载,转载请注明出处

本文来自对论文:Applying Deep Learning To Airbnb Search 的解读。

内容大纲:

  • 效果概览

  • 模型演进

  • 失败尝试

  • 特征工程

  • 系统介绍

一、效果概览

深度学习在 Airbnb 中的探索与应用

分为离线和在线俩部分。其中,一个重要指标是 NDCG 标准化文档累计增益,NDCG = DCG/IDCG 。

二、模型演进

演进1:SimpleNN

超简单网络结构,其特点:

  • 一层隐含层,32个 ReLUunits

  • 所有用到的特征 GBDT 一样

  • 训练目标与 GBDT 一致,最小化均方误差用户预定了就是1,没有预定就是0

结论:

  • SimpleNN 相对 GBDT 排序效果提升较小

  • 验证 NN 的线上可行性

演进2:LambdaRankNN

深度学习在 Airbnb 中的探索与应用

网络结构保持不变:

  • 改用 pairwise 损失,并在训练的时候最小化 crossentropy loss

  • 使用 listing 对调带来的 delta NDCG 作为 pairwiseloss 的权重,得到最终的损失函数

结论:

线下小幅度提升 NDCG

线上大幅度提升

演进3:GBDT/FM NN

在研究 NN 模型的同时,Airbnb 还探索了 GBDT 和 FM 模型。三者线下表现差不多,但是得到的 排序 结果却很不相同。所以,Airbnb 尝试了将三种模型进行模型结构的融合,也算是常用的做法:

  • 将 GBDT 的每一颗树的预测结果在叶节点中的 index ,作为 categorical feature ,输入到 NN 中;

  • 将 FM 的预测点击概率结果,直接作为特征放到 NN 中。

  • 单隐层全连接使用 ReLU 激活函数

深度学习在 Airbnb 中的探索与应用

结论:

  • GBDT/FM/SimpleNN 效果基本一致

  • 单纯排序结果三者差异性较大

  • 融合后线上收益较高

演进4:Deep NN

引入复杂深度模型探索特征空间:

  • 195个 features 输入 ( 还是把类别型特征 embedding 之后的 )

  • 两层 hiddenlayer 。第一层 127Units 输出,第二层 83Units 输出,使用 ReLU 激活函数。

  • 数据量增加了10倍后效果显现

深度学习在 Airbnb 中的探索与应用

结论:

  • 离线/在线均获得较大收益

  • 离线训练量达到10亿量级时,训练与测试之间的效果 gap 消失

  • 强调在 DL 中数据重要性

三、失败尝试

1. 失败 Embedding List

类比 item2vec 对 list ( 这里也是指某 item ) 进行 embedding :

  • 直接使用用户 booking 顺序,产出 list2vec

  • 考虑现实情况,单条 booking 顺序中没有大量的重复数据 ( 低频触发 )

  • 考虑现实冲突,某个 house 一年最多 booking 365次

深度学习在 Airbnb 中的探索与应用

结论:

  • 应用于线上带来大量过拟合,更大规模的训练数据也无法消灭低频

  • Airbnb 的现实场景导致 item 冲突约束性,大量房子预订量极低

2. 尝试挽救

发现:

  • Item 预定量低频,但浏览量不低

  • 长时间浏览行为,与 booking 预定行为强相关

深度学习在 Airbnb 中的探索与应用

尝试:

  • 多任务训练,以预定/浏览时长为多任务目标

  • 隐层共享,利用 view 浏览时长数据修正过拟合,促进 embedding 效果

深度学习在 Airbnb 中的探索与应用

结论:

  • 线上实验 longview 大幅提升,预订量无显著提升

  • 人工分析,优先推荐:

    ① 高端但价格高的 item

    ② 特别而滑稽的 item

    ③ 文字描述很长的 item

四、特征工程

1. 深度学习也要做特征工程!

认知:

1 ) GBDT 考虑的是有序分裂点,对归一化不敏感

2 ) DL 对特征的绝对数值 较为敏感

  • 较大的数值变化,会在 BP 学习中带来较大的梯度变化

  • 较大数值在 ReLU 作为激活层时,甚至会导致其永久关闭

3 ) 满足一定条件的输入数据,会让深度学习模型表现得更好

  • 特征值映射到 [-1,+1] 区间,中值为0

  • 输入值尽量稠密平滑,去除输入毛刺点

归一化方法:

1 ) 将满足正太分布的特征归一化:

深度学习在 Airbnb 中的探索与应用

2 ) 将满足幂度分布的特征归一化:

深度学习在 Airbnb 中的探索与应用

2. 特征平滑

深度学习在 Airbnb 中的探索与应用

发现:

  • DL 中的每一层,输出都是越来越平滑

    上图中,从下到上,分别是模型每层的输出

  • 如果在输入层就平滑,将会提升泛化能力

    底层的平滑输出,将保证高层对未知特征组合的稳定性

  • 便于排查异常,保证特征完整性

    下图是预定天数特征,左边为原始预定天数分布,右图为考虑预定天数中值后的分布

深度学习在 Airbnb 中的探索与应用

3. 特殊特征 ( 经纬度 ) 平滑

深度学习在 Airbnb 中的探索与应用

经纬度平滑过程:

直接使用经纬度特征,分布极其不均衡 ( 见上图第一层图片 ) 。

第二层图片左图,是对目标地点的距离特征分布,可以 看出大部分的点走在原点位置,其他的很多点以原点为中心均匀的分散开来。

第二层图片右图,是对经纬度分别取 log 。

将经纬度的 offset 分别取 log ( 上图最底层图片 ) , 得到基于距离的全局特征,而不是基于特定地理位置的特征。

4. 离散特征 embedding

深度学习在 Airbnb 中的探索与应用

发现:

  • 虽然 item-embedding 在此场景不适用,但一些零散特征的 embedding 仍然有效 ( 主要针对不可比较、选项较多的离散值特征 )

  • 利用搜索城市后的街道连续点击行为,构建街道 embedding

  • 对全局query搜索内容进行初步聚合,再建立 embedding,产出作为用户搜索特征输入

5. 特征重要性评估

失败做法:

  • 分解深度学习的 score,给出每一部分特征重要度

    分析:多层非线性断绝分解的希望

  • 依次移除特征,查看模型性能变化。

    分析:特征之间不完全独立,在特征工程后尤其如此

  • 随机修改某些特征,查看性能变化

    分析:特征依旧不独立,没法排除 noise

成功做法:( TopBot 分析法 )

  • 产出测试集预测的 list 排序

  • 观察某个特征在头部 list 与尾部 list 的区别,有区分度为重要特征

  • 下图中,左侧为 price ,头部 price 比尾部低;右侧为评论数,头部与尾部没区别

深度学习在 Airbnb 中的探索与应用

五、系统工程

Airbnb 系统介绍:

1. 工程架构

  • JavaServer 处理 query

  • Spark 记录 logs

  • Tensorflow 进行模型训练

  • JavaNNLibrary 线上低延迟预测

2. 数据集

  • GBDT 时代采用 CSV ,读入耗时长

  • Tf 时代改用 Protobufs ,效率提升17倍,GPU 利用率达到90%

3. 统计类特征

  • 大量样本共同拥有的统计类特征,成为数据读取瓶颈

  • 整合统计类特征,将其汇总后,看作不可训练的 embedding 矩阵,作为 tf 的统计特征节点输入层参数

4. 超参数

  • Dropout 层没有带来增益

  • 初始化采用 {-1,1} 的范围均匀随机,比全0初始化要好

  • Batchsize 选用200,最优化使用 lazyAdom

参考资料:

Applying Deep Learning To Airbnb Search,论文链接:

https://arxiv.org/abs/1810.09591v2

论文 pdf 版本可直接关注本文公众号,回复“ Airbnb ”下载。

作者介绍:

马宇峰,阅文信息 资深研发工程师 内容挖掘平台技术负责人。前百度高级研发工程师,研究方向主要包括知识图谱、用户理解、推荐系统。曾获2014百度知识图谱竞赛第1名。

内推信息:

NLP算法工程师 

薪资:20k-40k

经验:1-3年

学历:硕士及以上

邮箱: mayufeng@yuewen.com

地点:上海市浦东新区碧波路690号张江微电子港6号楼

职责:

1. 负责NLP基础算法研究工作,包括并不限于分词、重要性、紧密度、词性、专名识别、句法分析、文本分类、关键词抽取、纠错、知识图谱、词向量等

2. 建设基础的自然语言分析 工具 和平台,通过自然语言处理、深度学习等技术提升用户浏览与搜索体验

要求:

1. 211/985院校计算机、数学等相关专业硕士及以上学历

2. 熟悉 nlp 方向的基本技术,掌握常用的文本数据挖掘、自然语言处理等相关技术,有相应的工作或研究经验

3. 精通 c++ 或者 Python 语言,熟练使用 Hadoop

4. 掌握机器学习相关知识,有深度学习 NLP 算法相关经验,熟悉主流深度学习工具 ( TensorFlow/Caffe 等 ) 优先

5. 在搜索领域有相关工作经验优先

6. 责任心强,具备很强的团队协作意识和沟通能力

——END——

文章推荐:

NLP在网络文学领域的应用

关于 DataFun:

DataFun 定位于最实用的数据智能平台,主要形式为线下的深度沙龙、线上的内容整理。希望将工业界专家在各自场景下的实践经验,通过 DataFun 的平台传播和扩散,对即将或已经开始相关尝试的同学有启发和借鉴。

DataFun 的愿景是:为大数据、人工智能从业者和爱好者打造一个分享、交流、学习、成长的平台,让数据科学领域的知识和经验更好的传播和落地产生价值。

DataFun 成立至今,已经成功在全国范围内举办数十场线下技术沙龙,有超过三百位的业内专家参与分享,聚集了数万大数据、算法相关领域从业者。

深度学习在 Airbnb 中的探索与应用

您的「在看」,我的动力!:point_down:


以上所述就是小编给大家介绍的《深度学习在 Airbnb 中的探索与应用》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Learn Python the Hard Way

Learn Python the Hard Way

Zed A. Shaw / Addison-Wesley Professional / 2013-10-11 / USD 39.99

Master Python and become a programmer-even if you never thought you could! This breakthrough book and CD can help practically anyone get started in programming. It's called "The Hard Way," but it's re......一起来看看 《Learn Python the Hard Way》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具