深度学习在推荐系统中的应用

本文深入探讨了深度学习在推荐系统中的应用,从深度学习介绍、推荐方法、经典算法到开源框架,详尽阐述了深度学习如何与推荐系统结合。通过YouTube、Google的深度学习推荐模型实例,展示了深度学习的优势与挑战,并提供了实施建议。最后,展望了深度学习推荐系统未来的发展趋势,包括模型、工程、应用场景、数据和交互维度的变革。
摘要由CSDN通过智能技术生成

2016年DeepMind开发的AlphaGo在围棋对决中战胜了韩国九段选手李世石,一时成为轰动全球的重大新闻,被全球多家媒体大肆报道。AlphaGo之所以取得这么大的成功,这其中最重要的技术之一是深度学习技术。经过这几年的发展,深度学习技术已经在图像分类、语音识别、自然语言处理等领域取得突破性进展,甚至在某些方面(如图像分类等)超越了人类专家的水平。深度学习技术驱动了第三次人工智能浪潮的到来。

 

鉴于深度学习技术的巨大威力,它被学术界、产业界尝试应用于各类业务及应用场景,包括计算机视觉、语音识别、自然语言处理、搜索、推荐、广告等等。2016年YouTube发表论文将深度学习应用于视频推荐取得了非常好的效果,自此之后,深度学习技术在推荐系统上的应用遍地开花,各种论文、学术交流、产业应用层出不穷。国际著名的推荐系统会议RecSys从2016开始专门组织关于深度学习的会议,深度学习在推荐圈中越来越受到重视。

 

本文试图对深度学习在推荐系统中的应用进行全面介绍,不光介绍具体的算法原理,还会重点讲解作者对深度学习技术的思考及深度学习应用于推荐系统的当前生态和状况,我会更多地聚焦深度学习在工业界的应用。具体来说,本文会从深度学习介绍、利用深度学习做推荐的一般方法和思路、工业界经典深度学习推荐算法介绍、开源深度学习框架&推荐算法介绍、深度学习推荐系统的优缺点、深度学习推荐系统工程实施建议、深度学习推荐系统的未来发展等7个部分分别介绍。

 

本文的目的是通过全面的介绍让读者更好地了解深度学习在推荐上的应用,并更多地冷静思考,思考当前是否值得将深度学习引入到推荐业务中,以及怎么引入、需要具备的条件、付出的成本等等,而不是追热点跟风去做。深度学习是一把双刃剑,我们只有很好地理解深度学习、了解它当前的应用状况,最终才能更好地用好深度学习这个强有力的武器,服务好推荐业务。希望本文可以为读者提供一个了解深度学习在推荐系统中的应用的较全面的视角,成为你的一份学习深度学习推荐系统的参考指南。

 

一 深度学习介绍

深度学习其实就是神经网络模型,一般来说,隐含层数量大于等于2层就认为是深度学习(神经网络)模型。神经网络不是什么新鲜概念,在好几十年前就被提出来了,最早可追溯到1943年McCulloch与Pitts合作的一篇论文(参考文献1),神经网络是模拟人的大脑中神经元与突触之间进行信息处理与交互的过程而提出的。神经网络的一般结构如下图,一般分为输入层、隐含层和输出层三层,其中隐含层可以有多层,各层中的圆形是对应的节点(模拟神经元的对应物),节点之间通过有向边(模拟神经元之间的突触)连接,所以神经网络也是一种有向图模型。

图1:深度学习网络(前馈神经网络)结构示意图

 

假设前馈神经网络一共有k个隐含层,那么我们可以用如下一组公式来说明数据沿着箭头传递的计算过程,其中 是输入, 是第i个隐含层各个节点对应的数值,是从第i-1层到第i层的权重矩阵,是偏移量,是激活函数,是最终的输出,这里是需要学习的参数。

             

             

       ......

             

对于更加复杂的深度学习网络模型,公式会更加复杂,这里不细说。深度学习一般应用于回归、分类等监督学习问题,通过输出层的损失函数,构建对应的最优化问题,深度学习借助于反向传播(参考文献3)技术来进行迭代优化,将预测误差从输出层向输入层(即反向)传递,依次更新各层的网络参数,通过结合某种参数更新的最优化算法(一般是各种梯度下降算法),实现参数的调整和更新,最终通过多伦迭代让损失函数收敛到(局部)最小值,从而求出模型参数。梯度下降算法的推导公式依赖于数学中求导的链式规则,这里具体不做介绍,读者可以参考相关文章及书本学习了解。

 

虽然神经网络很早被提出来了,但当时只是停留在学术研究领域,一直没有得到大规模的产业应用。最早的神经网络叫做感知机(Perceptron),是单层的人工神经网络,只用于模拟简单的线性可分函数,连最简单的XOR异或都无能为力,这种致命的缺陷导致了神经网络发展的第一次低谷,科研院校纷纷减少对神经网络研究的经费支持。单层感知机无法解决线性不可分的分类问题,后面人们提出了有名的多层感知机(MLP),但是限于当时没有好的方法来训练MLP,直到80年代左右,反向传递算法被发现,被用于手写字符识别并取得了成功,但是训练速度非常慢,更复杂的问题根本无法解决。90年代中期,由Vapnik等人发明的支持向量机(SVM)在各类问题上取得了非常好的效果,基本秒杀神经网络模型,这时神经网络技术陷入了第二次低谷,只有Hinton等很少学者一直坚持研究神经网络。事情的转机出现在2006年,Hinton提出了深度置信网络,通过预训练及微调的技术让深度神经网络的训练时间及效果得到了极大提升。到了2012年,Hinton及他的学生提出的AlexNet网络(一种深度卷积神经网络)在ImageNet竞赛(2010年开始,斯坦福的李飞飞教授组织的ImageNet项目,是一个用于视觉对象识别软件研究的大型可视化数据库,该竞赛直接促进了以深度学习驱动的第三次AI浪潮的发展)中取得了第一名,成绩比第二名高出许多,这之后深度学习技术获得了空前的巨大成功。

 

经过近十来年的发展,有更多的神经网络模型被陆续发现,除了最古老的多层感知机(MLP)外,卷积神经网络(CNN)在图像识别取得极大的胜利,循环神经网络(RNN)在语音识别、自然语音处理中如鱼得水,CNN和RNN是当前最成功的两类神经网络模型,它们有非常多的变种。另外,像自编码器(Autoencoder)、对抗网络(Adversarial Network,简称AN)等新的模型及神经网络架构不断被提出。

 

对深度学习发展历史感兴趣的读者可以阅读参考文献2,该文对深度学习发展历史做了非常好的总结与整理。

 

二 利用深度学习做推荐的一般方法和思路

在上一节我们对深度学习的基本概念、原理、发展历史做了简单的介绍,同时也提到了MLP、CNN、RNN、Autoencoder、AN几类比较出名并且常见的神经网络模型,这几类模型都可以应用于推荐系统中。

 

本节我们来简单讲解一下可以从哪些角度将深度学习技术应用于推荐系统中。根据推荐系统的分类及深度学习模型的归类,我们大致可以从如下三个角度来思考怎么在推荐系统中整合深度学习技术。这些思考问题的角度可以帮助我们结合深度学习相关技术、推荐系统本身的特性以及公司具备的数据及业务特点选择合适自身业务和技能的深度学习技术,将深度学习技术更好地落地到推荐业务中。

 

1 从推荐算法中用到的深度学习技术角度来思考

常用的深度学习模型有MLP(多层感知机)、CNN(卷积神经网络)、RNN(循环神经网络)、Autoencoder(自编码器)、AN(Adversarial Network,对抗网络)、RBM(受限玻尔兹曼机)、NADE(Neural Autoregressive Distribution Estimation)、AM(Attentional Model,注意力模型)、DRL(深度强化学习)等,这些模型都可以跟推荐系统结合起来,并且学术界和产业界都有相关的论文发表。读者可以参见参考文献5,该文章是一篇非常全面实用的深度学习推荐系统综述文章,在这篇文章中作者就是按照不同深度学习模型来整理当前深度学习应用于推荐系统的有代表性的文章和方法的。希望对深度学习推荐系统有全面了解和学习的读者可以好好阅读这篇文章,一定会有较大的收获。

 

目前采用MLP网络来构建深度学习推荐算法是最常见的一种范式(参考文献7、8、13、19等),如果需要整合附加信息(图像、文本、语音、视频等)会采用CNN、RNN模型来提取相关信息。

 

2 从推荐系统的预测目标来思考

从推荐系统作为机器学习任务的目标来看,推荐系统是为用户推荐用户可能感兴趣的标的物,一般可以分为预测评分、排序学习、分类等三类问题,下面分别介绍。

 

(1) 推荐作为评分预测问题

我们可以通过构建机器学习模型来预测用户对未知标的物的评分,高的评分代表用户对标的物更有兴趣,最终根据评分高低来为用户推荐标的物。这时推荐算法就是一个回归问题,经典的协同过滤算法(如矩阵分解)、logistic回归推荐算法都是这类模型,以及基于经典协同过滤思路发展的深度学习算法(见参考文献19)也是这类模型。

 

由于在真实产品中用户对标的物评分数据非常有限,因此隐式反馈是比用户评分更容易获得的数据类型,所以采用评分预测问题来构建深度学习推荐系统的案例及文章会比较少。深度学习需要大量的数据来训练好的模型,因此也期望数据量足够大,所以利用隐式反馈数据是更合适的。

 

(2) 推荐作为排序学习问题

可以将推荐问题看成排序学习(Learning to Ranking)问题,采用信息抽提领域经典的一些排序学习算法(point-wise、pair-wise、list-wise等)来进行建模,关于这方面利用深度学习做推荐的文章也有一些,比如参考文献46是京东的一篇基于深度强化学习做list-wise排序推荐的文章。作者未来会单独写一篇关于排序学习相关的文章,这里不细讲解。

 

(3) 推荐作为分类问题

将推荐预测看成是分类问题是比较常见的一种形式,既可以看成二分类问题,也可以看成多分类问题。

 

对于隐式反馈,我们用0和1表示标的物是否被用户操作过,那么预测用户对新标的物的偏好就可以看成一个二分类问题,通过输出层的logistic激活函数来预测用户对标的物的点击概率。这种将推荐作为二分类问题,通过预测点击概率的方式是最常用的一种推荐系统建模方式。下面会讲到的wide & deep模型就是采用这样的建模方式。

 

我们也可以将推荐预测问题看成一个多分类问题,每一个标的物就是一个类别,有多少个标的物就有多少类,一般标的物的数量是巨大的,所以这种思路就是一个海量标签(label)分类问题。我们可以通过输出层的softmax激活函数来预测用户对每个类别的“分量概率”,预测用户下一个要点击的标的物就是分量概率最大的一个标的物。下面要讲到的YouTube深度学习中的召回阶段采用的就是这种建模方式。

 

3 根据推荐算法的来归类来思考

从推荐算法最传统的分类方式来看,推荐算法分为基于内容的推荐、协同过滤推荐、混合推荐等三大类。

 

(1) 基于内容的推荐

基于内容的推荐,会用到用户或者标的物的metadata信息,基于该metadata信息来为用户做推荐,这些metadata信息主要有文本、图片、视频、音频等,一般会用CNN或者RNN从metadata中提取信息,并基于该信息做推荐。参考文献9就是这类推荐。

 

(2) 协同过滤推荐

协同过滤只依赖用户的行为数据,不依赖metadata数据,因此可以在更多更广泛的场景中使用,它也是最主流的推荐技术。绝大多数深度学习推荐系统都是基于协同过滤思路来推荐的,或者至少包含部分协同过滤的模块在其中,参考文献19就是这类模型中的一个代表。

 

(3) 混合推荐

混合推荐就是混合使用多种模型进行推荐,可以混合使用基于内容的推荐和协同过滤推荐,或者混合多种内容推荐、混合多种协同过滤推荐等。参考文献10就是一种混合的深度学习推荐算法。下面要讲到的wide & deep模型中wide部分可以整合metadata信息,deep部分类似协同的思路,因此也可以认为是一种混合模型。

 

三 几种用于推荐系统的嵌入方法的算法原理介绍

深度学习在推荐系统中的应用最早可以追溯到2007年Hinton跟他的学生们发表的一篇将受限玻尔兹曼机应用于推荐系统的文章(参考文献6),随着深度学习在计算机视觉、语音识别与自然语音处理的成功,越来越多的研究者及工业界人士开始将深度学习应用于推荐业务中,最有代表性的是2016年Google发表的wide & deep模型和YouTube深度学习推荐模型(这两个模型我们下面会重点讲解),这之后深度学习在推荐上的应用如雨后春笋,使用各种深度学习算法应用于各类产品形态上。本节我们选择几个有代表性的工业级深度学习推荐系统,讲解它们的算法原理和核心亮点,让大家更好地了解深度学习在推荐的应用方法,希望给大家提供一些可借鉴的的思路和方法。具体来说我们会重点讲解如下4个主流深度学习推荐模型,在最后也会对其他重要的模型进行简单介绍。

 

1 YouTube深度学习推荐系统

该模型发表于2016年(参考文献7),应用于YouTube上的视频推荐。该篇文章按照工业级推荐系统的架构将整个推荐流程分为两个阶段:候选集生成(召回)和候选集排序(排序)(见下面图2)。构建YouTube视频推荐系统会面临三大问题:规模大(YouTube有海量的用户和视频),视频更新频繁(每秒钟都有数小时时长的视频上传到YouTube平台,噪音(视频metadata不全、不规范,也无法很好度量用户对视频的兴趣),通过将推荐流程分解为这两步,并且这两部都采用深度学习模型来建模,很好地解决了这三大问题,最终获得非常好的线上效果。

       

图2:YouTube深度学习推荐系统架构

 

候选集生成阶段根据用户在YouTube上的行为为用户生成几百个候选视频,候选集视频期望尽量匹配用户可能的兴趣偏好。排序阶段从更多的(特征)维度为候选视频打分,根据打分高低排序,将用户最有可能点击的几十个作为最终的推荐结果。划分为两阶段的好处是可以更好地从海量视频库中为用户找到几十个用户可能感兴趣的视频(通过两阶段逐步缩小查找范围),同时可以很好地融合多种召回策略召回视频。下面我们分别来讲解这两个步骤的算法。

 

1. 候选集生成

通过将推荐问题看成一个多分类问题(类别的数量等于视频个数),基于用户过去观看记录预测用户下一个要观看的视频的类别。利用深度学习(MLP)来进行建模,将用户和视频嵌入同一个低维空间,通过softmax激活函数来预测用户在时间点t观看视频i的的概率。具体预测概率公式如下:

 其中u、v分别是用户和视频的嵌入向量。U是用户集,C是上下文。该方法通过一个(深度学习)模型来一次性学习出用户和视频的嵌入向量。

 

由于用户在YouTube的显示反馈较少,该模型采用隐式反馈数据,这样可以用于模型训练数据量会大很多,这刚好适合深度学习这种强依赖数据量的算法系统。

 

为了更快地训练深度学习多分类问题,该模型采用了负采样机制(重要性加权的候选视频集抽样)提升训练速度。最终通过最小化交叉熵损失函数(cross-entropy loss)求得模型参数。通过负采样可以将整个模型训练加速上百倍。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值