深度模型DNN在个性化推荐场景中的应用

随着深度神经网络在语音和图像识别上取得的巨大成功,AlphaGo
战胜人类围棋顶尖高手,以深度网络为基础的人工智能迎来第三次高潮。与此同时互联网所面临的信息超载问题愈演愈烈,其中个性化推荐是重要的信息过滤手段。

本篇文章以短视频为切入点,探索如何将深度模型应用于个性化推荐场景。这样的模型“深度”的理解用户偏好的同时又能保持一定的推理效率。

业务背景

我们团队主要业务场景在美拍潮流短视频社区,美拍首页以双列流形式展示,也就是热门短视频场景。若用户看完当前热门短视频意犹未尽,想看更多相似内容时可向下滑动,即上下滑业务场景。

深度模型DNN在个性化推荐场景中的应用_第1张图片

我们处在一个信息超载的时代,短视频这种新媒体平台也不例外。随着短视频制作与发布的便捷性提高,每分每秒会有大量的短视频产生,面临这样的信息超载情况,个性化推荐服务愈显重要。

个性化推荐流程

个性化推荐分为多个阶段。在召回阶段评估出用户可能感兴趣的内容,过滤掉用户不感兴趣的内容。排序阶段对召回的结果做打分服务,到最后的预估阶段综合考虑新颖性、多样性、准确性、实时性等多方面因素,为用户呈现推荐结果。接下来的内容将围绕排序阶段展开。排序阶段有多种策略模型:线性模型 LR、非线性模型 GBDT、NN 模型,我们之所以选择 NN 模型,原因在于它有着更大的想象空间与发挥空间。

深度模型DNN在个性化推荐场景中的应用_第2张图片

如何得到一个很好的深度模型 DNN?我们不可能每做一次调整就尝试应用于线上服务,而是需要通过一些指标来快速衡量模型是否符合预期。那么我们从两个业务需求点出发确定两个指标,一个指标用来衡量模型的拟合能力 Metric,另一个指标用来衡量模型的推理效率 Efficiency ,简单来说两个字:准和快。

那为什么需要交叉?先来看两个 Cross 的例子。试想这样一种场景:当用户打开美拍的时候呈现了一个视频,如果该视频的主题或标签是化妆类,可以想象当用户是女性时点击播放概率要远远大于男性用户,这就是二阶交叉一个例子。同理可以拓展到三阶交叉,在保留刚刚前两个特征(性别:女,标签:化妆)的前提条件下,再引入年龄特征:某个年龄段的用户对这种类型的视频的播放的几率要大于其它用户,这就是所谓的三阶交叉。

注:Cross 即特征交叉,符号 fModel_BI 表 Cross 特征交叉。

深度模型的演进

如下图所示,红色区域表示优化目标在于模型的拟合能力 Metric,而到了后期优化目标则转变为模型的推理效率 Efficiency。

深度模型DNN在个性化推荐场景中的应用_第3张图片

1.LR

LR 模型是很典型的宽而浅的模型,这样的模型有一个特点:当它使用编码方式为 One-hot 时采用手动特征交叉。

优势:

易于使用

模型特别浅,模型推理效率高

劣势:

线性模型对非线性场景的拟合能力较差

手动特征交叉

--成本高,当对一个业务特别熟悉的时候可以对这个业务提取出比较有效的一些特征交叉,若切换一个新的业务则需要花大量的时间成本去熟悉新业务,才能提取出有效的交叉特征。

--可扩展性差,实际业务场景中随着特征维度的激增,有效提取所有的交叉特征的困难度也会随之而增长。

--拟合能力差,以上文中所举的性别与标签的交叉示例,这是一个显而易见的交叉,但是在实际业务中很多交叉是隐性、不可见的,很难用手动的方式把它们提取出来。

对于手动特征交叉存在这样的缺陷我们思考能否从模型层面自动捕捉特征交叉,于是我们引入了 FM 模型。

2.FM

FM 模型的结构如下图所示,粉色部分表示原来的 LR 模型部分,蓝色部分表示特征交叉的学习,深红色节点表示性别与标签的二阶交叉学习。

深度模型DNN在个性化推荐场景中的应用_第4张图片

我们每次对模型做一次演化时会评估离线指标,也就是模型的拟合能力。通过下图的效果等级表可以看出:相对于 LR 模型, FM 模型离线指标有一个很好的提升。

深度模型DNN在个性化推荐场景中的应用_第5张图片

另外一方面,虽然 FM 模型克服了手动特征交叉的缺陷,但它依然属于线性模型的家族。于是我们引入了 NFM 模型。

3.NFM

从名字上看 NFM 模型在 FM 模型之前加了一个「Neural」字段,反映在 NFM 模型的结构图中非常直观。我们在 BI-interaction layer 后接入了一个三层的 FC 全连接层(模型结构图的右侧依然是 LR 模型),通过这种方式提升了模型的非线性拟合能力。但是思考模型本身时会发现,NFM 模型与 FM模型一样依然只能捕捉二阶交叉,无法捕捉三阶甚至是更高阶的交叉。

深度模型DNN在个性化推荐场景中的应用_第6张图片

出于捕捉更高阶交叉的目的,我们引入了 DCN 模型,即 Deep Cross Network 。

4.DCN

DCN 模型与 NFM 模型除了Cross 部分结构比较类似。DCN 模型通过控制 Cross 层数来捕捉特定阶数的交叉,一层 Cross 可以捕捉二阶交叉,而二层 Cross 可以捕捉三阶交叉......以此类推。

接下来通过对 Cross 层的展开来演示如何捕捉二阶交叉和三阶交叉。

二阶交叉捕捉的是:CTR(性别:女,标签:化妆) > CTR(性别:男,标签:化妆)。

三阶交叉捕捉的是:CTR(性别:女,标签:化妆,年龄:18 ~ 36) > CTR(性别:女,标签:化妆,年龄:12 ~ 18)。

学习二阶交叉时捕捉的是 x1=x0 x0T 。

捕捉三阶交叉时捕捉的是 x2=x0 x1T。

通过这种循环的方式将 N 阶交叉扩展到 N+1 阶交叉。另外实现 DCN 模型的时候需要注意:根据秩 1 矩阵的属性,先计算 xt 乘以 w 的部分,假设 embedding 以后向量长度为 2000,那么空间复杂度就能由 2000*2000 优化为 2000。通过这样的实现机制有效避免了参数空间过大所带来的 OOM 。

阶段分析

从 FM 模型到 NFM 模型,加强了模型的非线性拟合能力;从 NFM 模型到 DCN 模型,让模型从仅仅捕捉二阶交叉到捕捉更高阶交叉。在下图可以看到 NFM vs FM 和 DCN vs NFM 的提升情况。

深度模型DNN在个性化推荐场景中的应用_第7张图片

从 LR 模型到 FM 模型、NFM 模型、再到 DCN 模型,我们把重心放在模型拟合能力的提升上,相应的取得了阶段性的成果。但鱼与熊掌难以兼得,在提升模型拟合能力的同时不可避免地提升了模型的复杂度,导致了模型推理效率的下降。

接下来考虑在保持模型拟合能力的同时(在模型拟合能力下降的可接受范围内)提升模型的推理效率。首先分析 NFM 模型推理效率低下的原因在于 Embedding 层,Embedding 层的超高维度特征的查表过程是一个费时的过程,从而考虑将 Embedding 层替换为经典的 FC 层。但这样的简单替换可能带来两个问题:超大参数和过大模型。

5.xNFM

问题的源头就在于不论什么特征都统一编码为固定长度的向量(如 128),那么这种方式在编码空间上是否是一种浪费呢?于是我们引入特征分域,按照特征分域区分编码长度。通过特征分域的方式有效扩展了网络可支持的特征维度,克服了超大参数和过大模型的问题,这种添加特征分域和 FC 输出层的模型,便是 xNFM 模型。

在优化之后做一个阶段性的分析,发现 xNFM 模型的推理效率是 NFM 模型的两倍。然而在这个模型的推广过程中依然会遇到瓶颈,毕竟众多的分域 FC 也在一定程度带来了模型复杂度的提升。此时我们引入了 xNFM_Sparse 模型。

6.xNFM_Sparse

xNFM_Sparse 模型从 FC Embedding 回归到朴素的 Embedding 查表方式,却单独实现了一套 Sparse Embedding 方式(一种高效的 Embedding 方式),同时它融入了一部分 BI-interaction 运算,提升模型的前向推理效率。对比 xNFM_Sparse 模型与 xNFM 模型得出:Metric 基本保持不变,但推理效率 Efficiency 再次得到了加倍提升。

深度模型总结

上文中为大家介绍了如何一步步优化模型的拟合能力和模型的推理效率,接下来对已有的模型做一个总结。

我们的模型跨越 4 个方面:

  • Embedding
  • LR
  • MLP
  • Cross

不同于卷积神经网络 CNN 对图像的语义理解,个性化推荐场景中的特征通常高维度且十分稀疏,需要有效的 Embedding 手段来处理这种问题。对于 LR 模型和 MLP 模型需要通过 Wide 模型捕捉记忆性,也就是 Wide 部分长处在于学习样本中的高频部分,其优点是模型的记忆性好,对于样本中出现过的高频低阶特征能够用少量参数学习。与此同时也需要 Deep 模型去捕捉 Generalization 泛化性,Deep 部分的长处在于学习样本中的长尾部分,优点是泛化能力强,对于少量出现过的样本甚至没有出现过的样本都能做出预测(非零的 embedding 向量)。而最后的 Cross 部分通过模型自动去捕捉二阶,三阶,甚至是更高阶的交叉,也可以将 MLP 归纳为隐性特征交叉的捕捉,而将 Cross 归纳为对显性特征交叉的捕捉。

深度模型DNN在个性化推荐场景中的应用_第8张图片

回顾深度模型演变历程,在最开始的 LR, Wide & Deep 阶段,我们通过手动交叉的方式去捕捉交叉特性,同时 Wide & Deep 也有捕捉隐性特征交叉;到了FM、NFM、DeepFM 阶段,我们能够捕捉显性的二阶交叉;再到了 DCN,我们通过网络层数控制交叉阶数,捕捉元素级别的显性高阶交叉,直至本文为做展开的 xDeepFM,捕捉向量级别的显性高阶交叉。

未来展望

虽然上文花了这么多的篇幅来介绍深度 FM 系列的模型,但 FM 不是我们的全部重心所在,它更像是摩天大楼的一个地基而已。

「This is not the end, this is just the beginning.」

以深度 FM 模型为起点,分别从业务和模型两个层面思考它的不足以及如何改善。首先是业务层面,单纯的 DNN 容易带来如下两个问题:

冷启动问题

新出现的用户或者视频,其相关行为特征少,已“校准”好的模型对 于此类用户或者视频,表征推理能力差

表征能力

单纯的数值统计特征表征能力有限,用户行为都是已视觉产生先入为主的印象,视觉信息更容易对用户产生吸引力

面对这两个问题我们引入多模态数据融合,模型上也融合了多种模型的优势。保留 FM 如下优势的同时引入 CNN 与 RNN / LSTM。

1.有效的 Embedding 技术应对高维,稀疏特征

2.非线性表征能力,对隐性交叉的有效捕捉

3.对显性交叉的有效捕捉

其中 CNN 能够有效的捕捉用户的视觉维度特征。同时对于新出现的视频,即使没有出现在训练数据中,CNN 也能做很好的推理。而 RNN / LSTM 则促进了有效学习用户的行为序列。

从模型本身角度出发,DNN 这样的模型有它固有的优势如下:

优秀的数据拟合能力,多种业务下state-of-the-art

大规模的随机优化算法简单而有效。

但 DNN 也有它固有的缺陷:

超参数过多(诸如学习率,正则化参数等等),难以学习

采用点估计,无法考虑到参数的不确定性

而贝叶斯推理能有效克服这些缺陷。贝叶斯推理采用少量的先验分布及参数估计,充分考虑到了参数的不确定性。因此我们引入在线贝叶斯深度学习,保留 DNN 模型优点的同时客服它的不足,且模型可以在线实时更新,捕捉实时的用户反馈。

你可能感兴趣的:(个性化推荐)