论文笔记:Wide & Deep Learning for Recommender Systems

论文提要

本文在推荐方面提出一种wide & deep learning算法,也就是将一个宽的线性模型和一个深度神经网络一起训练,通过记忆和泛化(memorization and generalization),为用户推荐商品。该算法在Google Play上进行了实验和评估,结果表明,相比单一的宽线性模型和深度网络,该算法显著的提高了App安装量,具有更好的效果。另外,本文开源了一种基于TensorFlow的实现。

解决的问题

推荐系统可以视作为一个搜索排序系统,也就是基于用户输入和场景,输出一个有序的物品列表。推荐系统的挑战和搜索排序系统类似,可以归结为记忆和泛化问题。
记忆(memorization) 可以理解为,利用(exploit)历史数据,如何学习共同出现的商品或特征之间的关联。基于记忆,推荐系统能够给用户推荐与其行为直接相关的商品,以保证推荐结果的准确度
泛化(generalization) 可以理解为,基于关联分析,如何探索(explore)一些新的,稀有被发现的特征。基于泛化,推荐系统能够探索用户潜在的需求,提升结果的多样性。

解决方法

本文设计了一种wide & deep学习框架,将记忆和泛化问题在一个框架内解决。该框架包含两个部分,其中宽的线性模型,用于解决记忆问题;深度神经网络,解决泛化的问题。整体的结构系统结构图如下:
论文笔记:Wide & Deep Learning for Recommender Systems_第1张图片
其中左侧的宽模型是一个形如的y = wT x + b 线性模型,其中,x是特征的向量,w权值,b是偏置。特征向量x包含原始输入特征和转换后的特征。其中,最重要的转换特征是交叉乘积特征,形式如:
这里写图片描述
cki是一个bool变量,当第i个特征是第k次转换的一部分时取1,否则取0。换句话说,该式描述的是特征之间的AND型关系,它表征了关联的特征对的共同出现的状态。
该图右侧是一个深度模型,这是一个前馈神经网络。其输入是一个稀疏,高维,离散或连续的特征向量,所以该模型也有一个embedding层,将稀疏的输入向量转换为一个稠密的向量,并传递到隐层。隐层的处理形式如下:
这里写图片描述
其中l是层号,a是神经元的激活值,b是偏置,f是激活函数(RELU)。

训练过程有如下关键点需要注意:
作者是将Wide & Deep 放在一起进行联合训练。
联合训练是将宽度组件和深度组件通过加权求和的结果来预测输出,对于输出环节, 其实是一个常见的逻辑回归问题。形式如:
这里写图片描述
训练是通过梯度的反馈传播实现的。其中,实验中,作者采用FTRL算法作为宽度部分的训练的优化算法;深度部分,作者采用AdaGrad。
实施过程有如下几点需要注意:
特征处理:将词汇特征映射到一个整形的ID空间内;对连续变量做了归一化处理。
模型结构:输入向量转换后,embedding层的总维数将近1200;隐层设置了3层RELU;输出层是一个逻辑函数单元。模型结构如下图:
论文笔记:Wide & Deep Learning for Recommender Systems_第2张图片
另外,模型上线前,会做一段dry run,以确保对线上流量不会产生问题。
实验结果
作者从两种维度评估了算法效果:APP的安装转化,服务性能。
经过ABTest验证,Wide & Deep模型转化效果比单一模型好。
服务性能上,作者采用多线程的方式进行加速。

本文贡献

  • Wide & Deep学习框架能够将线性模型和深度网络一起训练,适用于常见的具有高维,稀疏输入的推荐系统。
  • 本文所提的算法在Google Play做过线上实验和评估,具有良好效果。
  • 本文算法基于TensorFlow的实现,已经开源。

我的思考

作者提出了记忆和泛化(memorization and generalization)的概念,很有价值。这两个概念对推荐系统面临的问题进行了拆分,并针对这两个问题分别设计了Wide model和Deep model,然后又阐述了模型的具体结构和训练方法,数据处理等,整体流程非常流畅,顺理成章,值得我们学习。

参考资料

  • Cheng H T, Koc L, Harmsen J, et al. Wide & Deep Learning for Recommender Systems[C]// The Workshop on Deep Learning for Recommender Systems. ACM, 2016:7-10.
    • http://v.youku.com/v_show/id_XMjYyODQ2NTIzMg==.html
    • https://www.tensorflow.org/tutorials/wide_and_deep

你可能感兴趣的:(深度学习,论文笔记)