Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

Song, Guoqiong (Intel),Lu Wang(Office Depot),Jing Nicole Kong(Office Depot)作者

Office Depot使用Apache Spark和Analytics Zoo上的分布式Keras实现实时产品推荐

实时推荐系统对电子商务行业的成功至关重要。在Office Depot *的实例上,大规模训练推荐系统的深度神经网络(DNN)具有挑战性。本文主要分享了Office Depot和Intel团队在Amazon Web Services(AWS)*上使用Analytics Zoo [1]和Apache Spark*构建高效实时的基于DNN的产品推荐系统从而增加该网站每次访问收入的实现。

背景

Office Depot(纳斯达克股票代码:ODP)是一家领先的B2B综合分销公司,成立于1986年,在美国有1800人的专业销售队伍、1350个零售网点和数十个第三方物流合作伙伴,为中小企业提供产品、服务和技术解决方案。通过旗下品牌Office Depot、OfficeMax*、Compucom*和Grand&Toy为客户提供他们所需的工具和资源,专注于他们创业、成长和经营业务的热情。


Office Depot希望从传统的基于规则的供应商推荐解决方案转向自主开发更智能的深度学习推荐解决方案,该解决方案可以根据客户的实时会话行为做出个性化的推荐决策。在这项工作中,我们面临着使用大量大规模clickstream数据训练深度神经网络(DNNs)的挑战。在Office Depot电子商务平台上销售的活跃产品超过30万件,每月产生超过1亿个不同的会话控制。目前,Office Depot采用Apache Spark生态系统作为大数据平台,使用Sparse MLlib开发机器学习模型,但在现有的Apache Spark生态系统上,我们很难大规模地训练和利用深度学习模型。


新开发的DNNs通过捕获许多行业中用户项数据集的非线性关系,已不断被证明能作为成功的推荐系统。经验证据表明,使用深层DNNs可以提供更好的推荐性能[2,3,4]。因此,在现有的大数据平台和管道上应用DNNs的推荐系统对于像Office Depot这样的电子商务行业来说至关重要。


在这个博客中,我们会详细介绍如何使用Analytics Zoo和Apache Shark上的分布式Keras,在AWS上大规模构建端到端的推荐流系统。 


Analytics Zoo 解决方案

Analytics Zoo[1], Intel开源的一个统一的分析和人工智能平台,将Spark、TensorFlow、Keras和BigDL[5] 程序无缝地整合到一个集成的管道中;然后整个管道可以透明地扩展到一个大型Hadoop/Spark集群中进行分布式深度学习训练和推理,而无需额外的GPU基础设施

office depot推荐系统的端到端流程

推荐系统AWS上运行的端到端流程包括训练和推理 (图1)。

1. 首先,系统会在AWS上使用Spark对clickstream数据进行预处理,使用Spark原生StringIndexer和Pipeline对所有产品和用户进行索引,产生对应的ID作为模型训练的特征,并进一步使用Mleap保存pipeline模型。

val userIndexer = new StringIndexer().setInputCol("strUserId").setOutputCol("userId")

val itemIndexer = new StringIndexer().setInputCol("strItemId").setOutputCol("itemId")              

val pipelineEstimator: Pipeline = new Pipeline()

                    .setStages(Array(userIndexer, itemIndexer))

val plModel: PipelineModel = pipelineEstimator.fit(df)

2. 系统进一步将特征转换成Analytics Zoo推荐模型需要的RD[Sample]。对于session recommender, 每个session的特性都预先设定了一个为10的长度。 

3. 使用Analytics Zoo大规模训练不同的DNNs,包括神经协同过滤(NCF)网络、广域和深度(WND)网络和基于循环神经网络的session recommender(RNN,图2),并将模型保存在AWS S3上。目前,Analytics Zoo为不同的用例提供了3个内置的recommender models

2  基于RNNSession recommender

val model = SessionRecommender[Float](itemCount, itemEmbed, maxLength)
model.compile(loss="mse", optimizer= "adam")
model.fit(data, nbEpoch=20)
model.saveModel(modelPath)

4. 最后,系统加载了第一步已经保存的管道模型,将产品转化为ID,然后加载第三步保存的推荐模型,使用BigDL [5] 的LocalPredictor在WebService上进行推理。为每个客户的产品推荐是基于特定产品添加到其购物车中的概率排名。推理流通过利用play framework有效地扩展。用LocalPredictor推理并不依赖Spark,从而大大加快了响应延迟。

val model = LocalPredictor(Module.loadModule[Float](bigDLModelPath))

model.recommenderForUsers(data, 5)

结果和讨论 

模型通过离线性能比较和在线A/B测试进行评估。

Model

ALS

NCF

Wide and Deep

Session recommender

Top 5 Accuracy

16.2%

46.7%

45.2%

52.3%

图表不同推荐系统的离线性能比较

离线性能比较(图表1)表明,通过采用基于DNN的Analytics Zoo解决方案的端到端流程,我们发现与ALS等传统推荐算法相比,准确性有了显著提高。与ALS相比,NCF通过捕获用户和产品之间的非线性关系,将前5位精度从16.2%提高到46.7%。与NCF相比,WND模型前5位精度具有一定的竞争力。为了了解用户与产品之间的非线性关系,我们基于DNN再增加了一个宽度模型来学习用户的属性,包括忠诚度指标,Office Depot卡用户标识等。用户属性的噪声,也被添加到WND中的训练过程中,以至于WND的精度相比NCF有一点下降。

根据Wu[4]的发表论文指出,电子商务系统中的每个用户session都可以被作为一系列的网页 来建模,深度RNN可以通过使用多个隐藏层来学习跟踪用户浏览网站(图2),每个隐藏层都模拟了如何访问网页组合以及按什么顺序访问。通过使用Analytics Zoo构建基于两层GRU的session recommender,我们的前5名精度相比在NCF和WND的基础上提高了6%以上。

我们已在OfficeDepot的官方网站上部署了session recommender,并针对当前基于规则的推荐器系统运行了两周多的在线A/B测试。与当前的recommender相比,session recommender显示销售额和平均订单价值分别上升了1%和1.6%。 

结论

本文简要介绍了Office Depot在构建基于DNN的推荐系统以增加在线销售方面面临的挑战。然后,我们提出了一个运行在AWS上,使用Analytics Zoo构建了端到端深度学习管道,其中我们采用了Analytics Zoo内置的基于DNN的recommender来建模。最后,我们展示了在线和离线评估结果,发现基于RNN的session recommender极大的提升了销售额和平均订单价值。类似的session recommender也可能会在电子商务的其他案例中发挥关键作用。更多的示例和API在Analytics Zoo Model Recommendation 

参考文献

  1. Analytics Zoo
  2. X He, L Liao, H Zhang, etc., 2015, Neural Collaborative Filtering
  3. H-T Cheng, 2016, Wide & Deep Learning: Better Together with TensorFlow
  4. S Wu, W Ren, C Yu, etc. 2016, Personal Recommendation Using Deep Recurrent Neural Networks in NetEase
  5. BigDL
  6. J Dai, Y Wang, X Qiu, etc., 2018, BigDL: A Distributed Deep Learning Framework for Big Data
Analytics Zoo
Analytics Zoo

Analytics Zoo是一个统一的大数据分析+AI平台,它无缝地将Spark、TensorFlow、Keras和BigDL程序集成到一个整合的流水线中,可以透明地扩展到大型Apache Hadoop/Spark集群,用于分布式训练或预测,方便用户构建深度学习端到端的应用。通过该专栏希望和大家一起探讨AI在实际生活中各个领域的创新。

工程Keras推荐系统
3
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

机器学习技术

机器学习是人工智能的一个分支,是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、计算复杂性理论等多门学科。机器学习理论主要是设计和分析一些让计算机可以自动“学习”的算法。因为学习算法中涉及了大量的统计学理论,机器学习与推断统计学联系尤为密切,也被称为统计学习理论。算法设计方面,机器学习理论关注可以实现的,行之有效的学习算法。

协同过滤技术

协同过滤(英语:Collaborative Filtering),简单来说是利用某兴趣相投、拥有共同经验之群体的喜好来推荐用户感兴趣的信息,个人通过合作的机制给予信息相当程度的回应(如评分)并记录下来以达到过滤的目的进而帮助别人筛选信息,回应不一定局限于特别感兴趣的,特别不感兴趣信息的纪录也相当重要。协同过滤又可分为评比(rating)或者群体过滤(social filtering)。其后成为电子商务当中很重要的一环,即根据某顾客以往的购买行为以及从具有相似购买行为的顾客群的购买行为去推荐这个顾客其“可能喜欢的品项”,也就是借由社区的喜好提供个人化的信息、商品等的推荐服务。除了推荐之外,近年来也发展出数学运算让系统自动计算喜好的强弱进而去芜存菁使得过滤的内容更有依据,也许不是百分之百完全准确,但由于加入了强弱的评比让这个概念的应用更为广泛,除了电子商务之外尚有信息检索领域、网络个人影音柜、个人书架等的应用等。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

Apache Spark技术

Apache Spark是一款快速、灵活且对开发者友好的工具,也是大型SQL、批处理、流处理和机器学习的领先平台。它是一个围绕速度、易用性和复杂分析构建的大数据处理框架,提供了一个全面、统一的框架用于管理各种不同性质(文本数据、图表数据等)数据集和数据源(批量数据或实时的流数据)的大数据处理的需求。

TensorFlow技术

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。目前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

推荐系统技术

推荐系统(RS)主要是指应用协同智能(collaborative intelligence)做推荐的技术。推荐系统的两大主流类型是基于内容的推荐系统和协同过滤(Collaborative Filtering)。另外还有基于知识的推荐系统(包括基于本体和基于案例的推荐系统)是一类特殊的推荐系统,这类系统更加注重知识表征和推理。

深度神经网络技术

深度神经网络(DNN)是深度学习的一种框架,它是一种具备至少一个隐层的神经网络。与浅层神经网络类似,深度神经网络也能够为复杂非线性系统提供建模,但多出的层次为模型提供了更高的抽象层次,因而提高了模型的能力。

推荐文章
暂无评论
暂无评论~