10 深度推荐模型演化中的进阶路径

你好,我是大师兄。上一课时,我们介绍了深度推荐算法的一些演化规律,这一讲我们仍然以 MLP 基础组件为例。如下所示,我将按照以下七步及其深度学习模型,介绍深度推荐算法的演化规律。

  • 通用范式框架:Embedding + MLP

  • 仅对 Embedding 部分改造:FNN 模型

  • 借用 ResNet:Deep Crossing 模型

  • 结合注意力机制:注意力因子分解机(AFM)模型

  • 使用注意力机制:深度兴趣网络(DIN)模型

  • 添加兴趣提取层与兴趣进化层:深度兴趣进化网络(DIEN)模型

  • 引入会话概念:深度会话兴趣网络(DSIN)模型

我们有必要先了解 Embedding + MLP 通用范式框架。

通用范式框架 Embedding + MLP

深度学习中非常基础且应用最广泛的通用范式框架是 Embedding + MLP,目前即便是鼎鼎大名的广深(Wide&Deep)模型框架也只是这套框架的变种之一。

Embedding + MLP 通用范式框架就是把 MLP 作为模型的拟合基础组件,然后将高维度特征以隐向量表征的形式进行输入,从而实现了两者的完美结合。

MLP 是深度推荐算法中最通用的组件,并且其他的各种范式都是由此演变而来。关于 MLP 模型,你可以回顾 08 与 09 课时。

为了方便你理解,我们把 Embedding + MLP 通用范式框架比作一把刀,MLP 部分相当于刀刃,Embedding 部分相当于刀柄。

通常来说,Embedding + MLP 通用范式框架的打法如下。

  • 第一步:把稀疏特征转成稠密隐向量表征;

  • 第二步:将隐向量表征以某种形式进行拼接;

  • 第三步:堆叠 FC 层(全连接 MLP)对目标进行拟合;

  • 第四步:对目标函数进行输出。

通过这种打法,使得 Embedding + MLP 能够较好地捕获高阶特征组合。

不过,它对高频低阶特征兼容性不够,这也是广深(Wide&Deep)框架需要改进的点(在09 讲中已介绍)。另外,MLP 深度的增加,容易导致梯度消失、训练难以收敛、模型容易过拟合使得模型效能不升反降等问题。

基于因子分解机的神经网络(FNN)模型

抛开广深(Wide&Deep)框架不谈,顺着 Embedding + MLP 这条路,我们率先想到的是对 Embedding 部分进行改造,而 MLP 部分保持不变。

这样就相当于给 Embedding 部分缠上绳子,这样在战斗中就可以大大降低滑脱的概率,这就得到了接下来要讲的 FNN 模型。

基于因子分解机的神经网络(Factorization Machine supported Neural Network,FNN)模型采用了预训练特征向量思路,预训练使得模型训练收敛更快,训练代价小,这种思路目前在 NLP 领域仍然大放异彩。

FNN 模型框架图如下:整个模型较为简单,分为上下两层。上层是 MLP 部分,下层是 FM 预训练好的 Embedding 部分。

CTR:点击通过率

Fully Connected:全连接

Hiden Layer:隐藏层

Dense Real Layer:稠密实层

Sparse Binary Features:稀疏二进制特征

Global:全局

Field i~j:域 i~j

采用 FM 预训练特征向量的主要目的是在 FM 二阶交叉的基础之上,再叠加 MLP 高维特征组合学习,使得模型特征交叉的表达能力更强。另外,采用预训练的方式不仅能节省训练开销,还能加速模型收敛。

不过,这种方式也存在一定的缺点,比如预训练的 Embedding 部分受制于 FM 表征能力的上限,而且过于通用化,缺少指定任务信息,故而存在隐向量在特定场景下表征能力不强的问题。

09 讲我们介绍了广深框架下的 NFM 模型,NFM 模型采用了 Bi-Interaction Pooling 操作,不仅让特征之间实现了强行交互,还让模型以较好的性能学习到了包含更多信息的组合特征。

那么在 Embedding + MLP 通用范式框架中,是否也存在类似特征交互方面的优化呢?

答案是肯定的,一切规律皆有迹可循。我们将刀柄(Embedding 部分)和刀刃(MLP 部分)保持不变,然后在连接处加上了刀格,以此避免手滑脱触刃,从而得到了 PNN 模型。

基于点乘的神经网络(PNN)模型

基于点乘的神经网络(Product-based Neural Network,PNN)模型认为,将特征隐向量表征输入 MLP 之后学习的交叉特征表达并不充分,于是提出了一种 Product 层的思想,即利用点乘运算体现特征交叉的结构。

我们知道,乘法运算其实相当于逻辑关系“与”;而大多数的深度模型对向量之间的处理都是采用加法运算,相当于逻辑关系“或”。此时我们能明显感觉到“与”比“或”更能贴近目标选择。

比如 58 同城 App 本地服务二手买卖的帖子中,既是望京花园,又是家具床的帖子显然比要不地点是望京花园小区,要不是含有家具床的帖子更符合用户的需求。

关于 PNN 模型框架图如下:PNN 通过添加的二阶向量积层(Product 层)对 FM 后的隐向量表征进行两两点乘,并将生成的结果作为后续 MLP 的输入。

  • CTR:点击通过率 | Fully Connected:全连接

  • Hiden Layer:隐藏层 | Product Layer:点积层

  • Pair-wisely Connected:成对连接 | Embedding Layer:表征层

  • Field-wisely Connected:域连接

  • Feature 1~N:特征 | 1~NField 1~N:域 1~N

向量运算包含内积运算(IPNN)和外积运算(OPNN)。内积运算(IPNN)可以看作外积运算(OPNN)的一种特殊形式,这里不详述。通过这种方式提升了整个模型的特征交叉能力。通过这种方式,我们就可以衡量两个不同域之间的关系。

自深度学习诞生以来,深度模型围绕模型的深度的较量就没有停止过。

因为我们想解决越复杂的问题,要么在模型深度上下功夫,要么在模型宽度上下功夫,而往往增加宽度的代价更高。在这种基调下,任何深度学习涉足的领域的算法模型演化都少不了在模型深度上一较高下。

更深的模型,意味着具备更好的非线性表达能力,可以学习更加复杂的变换,从而拟合更加复杂的特征输入。然而,深层网络带来的梯度不稳定,使得网络退化的问题始终存在(虽然可以缓解,但是没法消除),这就有可能会导致网络加深的同时,性能反而下降。

针对这个问题,ResNet(残差网络) 采用跳跃连接的方式进行了解决,使网络深度得到了进一步加深。ResNet 是 MLP 中的一种,而深度推荐算法借用了 ResNet 作为模型基础进行演化。

目前,我们已经将战刀的刀柄(Embedding 部分)做了优化,并增加了刀格,那么可以对刀刃(MLP 部分)进行优化吗?

必然是可以的。俗话说“一寸长一寸强”,加长刀刃(MLP 部分)的长度是非常有实际意义的。同样,在深度模型的深度上下功夫也可以得到非常现实的收益。借用 ResNet,使得深度推荐模型的深度进一步提升,这就是所谓的 Deep Crossing 模型。

深度交叉(Deep Crossing)模型

深度交叉(Deep Crossing)模型是 Embedding + MLP 的一个经典模型,它采用 ResNet 完整地解决了特征工程、稀疏向量稠密化、优化目标拟合等问题。

关于 Deep Crossing 模型框架图如下所示:Deep Crossing 模型由 Embedding 层、Stacking 层、Multiple Residual Units 层、打分层组成。

  • Embedding 层用于将稀疏的特征转换成稠密的隐向量表征,这个过程的本质是降维;

  • Stacking 层用于将各个输入的隐向量表征进行拼接;

  • Multiple Residual Units 层由 MLP 构成,确切地说是 ResNet 对特征隐向量表征的各个维度充分的交叉组合,实现了特征工程自动化,从而捕获更多高阶特征组合信息;

  • 最后再对接打分层输出分数。

  • Objective:目标 | Scoring Layer:打分层

  • Multiple Residual Units:多重残差单元 | Stacking Layer:堆叠层

  • Embedding 1~n:表征向量 | 1~nFeature 1~n:特征 1~n

Deep Crossing 模型是多个 MLP 的串联结构,它采用了 ResNet 结构使模型更“深”,也因此获得了更强的拟合能力,并避免了深层网络带来的一系列问题。此外, Deep Crossing 还可以通过调整神经网络的深度进行特征之间的“深度交叉”。

以上我们介绍了 Embedding + MLP 范式框架在模型深度方面做的演化,主要目的还是利用深层 MLP 捕获更多特征交叉信息,以此增强模型的拟合能力。

然而,深度学习新的一场革新风暴正悄然而至。在 Google 论文《Attention is all you need》曾提到,注意力机制(Attentional Mechanisms) 相继在计算机视觉和自然语言处理领域获得巨大成功。

学术界“他山之石,可以攻玉”的例子层出不穷,注意力机制的影响力也迅速扩展到了推荐领域。

注意力机制秉承的是“来世不可待,往世不可追”的思想,将当下信息作为重点进行关注,并对当前任务分配较高的权重,使得有限资源得到高效分配,从而使模型的准确率和稳定性大大提升。

下面我们就看一下 Embedding + MLP 范式框架,结合注意力机制的演化过程。

注意力因子分解机(AFM)模型

09 讲我们介绍了广深框架下的 NFM 模型,NFM 模型的主要创新在于把 FM 输出的隐向量表征的元素两两相乘,以此增加模型特征拟合能力,不过也就止步于此了。

结合注意力机制后,我们就可以在这个基础上获得更加复杂的运算过程,这就是注意力因子分解机(Attentional Factorization Machine,AFM)模型,它通过添加 Attention 网络,自动学习不同特征之间交互的重要性。

在之前讲述的深度推荐模型中,自动进行特征向量的交叉基于的假设是“产生的新交叉特征对结果的贡献度是一样的”,但事实上这种假设并不合理。而 AFM 采用注意力机制后,就可以有效避免这个问题的出现。

AFM 模型框架图如下:AM 模型同 NFM 模型一样,都是在 Embedding 层后让不同域的特征做点积。然而,和 NFM 将交叉项向量直接加起来不同,后接的 Attention 网络对产生的交叉特征项进行了特征重要度筛选,例如image.png为image.png 与image.png交叉特征的重要度。

  • Sparse Input:稀疏输入层 | Embedding Layer:表征层

  • Pair-wise Interaction Layer:成对交互层 | Attention-based Pooling:基于注意力的池化层

Attention Net:注意力网络 | Prediction Score:预测打分

AFM 模型通过模型显式地学习每种交叉特征的权重,使得模型准确率大幅度提升,并且对模型的可解释性也很有帮助。由于篇幅有限,这里不再详述。

严格地说,AFM 模型不属于 Embedding + MLP 范式框架,因为模型中缺少用于拟合目标的 MLP 层,但这不妨碍我们对模型演化方式的理解。

前文所述,Embedding + MLP 范式框架通过四大步骤,使得 MLP 自动挖掘和拟合高阶非线性关系的能力得到充分利用。不过却忽视了关键的问题,即用户行为的多样性和局部激活问题,这个问题导致了用户的兴趣呈现多峰形态而非单峰形态。

以 58 同城 App 本地服务为例,在本地服务中,用户可以找保洁、租车、除甲醛、找婚庆公司、买卖宠物等,通过查看用户行为的历史记录,我们发现用户的兴趣十分广泛。

此时如果我们想对其中一个领域进行推荐(比如宠物),就应该更多关联用户在宠物方面的历史记录,而与租车或者婚庆的关系就不大了。

也就是说,只有部分历史行为数据会影响当前推荐,而并不是所有历史行为数据,这就是 DIN 模型需要解决的关键问题。

深度兴趣网络(DIN)模型

深度兴趣网络(Deep Interest Network,DIN)模型在传统 Embedding + MLP 范式框架上通过使用注意力机制,能够更好地衡量用户的历史兴趣,从而得到更高的准确率。

左图为传统 Embedding + MLP 范式框架的经典打法,右图为 DIN 模型框架。

传统范式框架会将用户历史行为序列向量化为 N 维向量,也就是说最多只能表达 N 个独立兴趣。实际上,用户的兴趣不止 N 个,因此 N 的取值对计算量和计算效果将形成明显影响。虽然 N 增加,代表模型可以拟合更多用户兴趣信息,但也同时带来了模型过拟合的风险。

而 DIN 将注意力单元(Attention Unit,即最右图权重子网络)添加在 Concat & Flatten 层之前,使模型能够根据候选物品的不同,调整不同特征的权重。权重子网络可保留了用户在每个领域的历史特征权重,并能根据候选物品的不同,调整不同特征的权重。

进行预测时,模型对当前用户行为的注意力是不一样的,模型可以增加相关历史行为特征的权重,并忽略不相关历史行为特征,从而对当前行为的反馈形成注意力。

DIN 虽然成功解决了上文提到的用户行为的多样性和局部激活的问题,但是 DIN 抽取的用户兴趣之间是完全独立且没有关联的,并没有考虑到用户兴趣是随时间进行变化的动态性;另外,通过单一的显性行为表达隐性兴趣并不能保证准确性。以上便是 DIEN 模型所要解决的问题。

深度兴趣进化网络(DIEN)模型

深度兴趣进化网络(Deep Interest Evolution Network,DIEN)模型设计了兴趣提取层和兴趣进化层,以此更加准确地表达用户兴趣的动态变化性。

关于 DIEN 模型框架图如下:

  • Attention Score:注意力分数 | Inner Product:内积 | Product:点积

  • user behavior sequence:用户行为序列 | Embedding Layer:表征层

  • Interest Evolving Layer:兴趣进化层 | Interest Extractor Layer:兴趣抽取层 | Behavior Layer:行为层

  • Target Ad:目标广告

  • Context Feature:上下文特征 | UserProfile Feature:用户画像特征

从上图可知,DIEN 模型也是以传统 Embedding + MLP 范式框架为基础进行演化,其中行为层(Behavior Layer)与原有框架相同,另添加两个核心部分,即兴趣提取层(Interest Extractor Layer)、兴趣进化层(Interest Evolving Layer)。

兴趣提取层基于行为序列来提取兴趣序列,由于历史行为序列有可能会很长,考虑效能和性能之间的平衡,我们主要采用 GRU 网络来提取行为之间的依赖关系。

兴趣进化层采用 AUGRU(注意力更新 GRU)网络构成,考虑到候选物品的相关性,我们会针对每种不同的兴趣各自的变化趋势进行预测。

以 58 同城 App 本地服务三嫂业务为例,随着时间变化,用户会产生月嫂——>育儿嫂——>保姆的兴趣变化,捕捉兴趣变化对于用户行为预测的准确率至关重要。

此外,由核心模块生成的隐向量表征还需要连接用户基本信息、上下文信息、候选物品基本信息等,最终才能输入 MLP 中进行目标拟合。

总结一下,DIEN 模型使用 GRU+AUGRU 组合,使得模型输出与用户行为序列相关,并且利用注意力机制对不同种类的行为施加不同权重,解决了 DIN 无法捕获用户兴趣动态变化的问题。

按照 DIEN 的思路,用户兴趣的动态变化应该是平滑转变的。但实际上,同一个会话中的行为比较接近,而不同会话之间的跳跃性比较大,这就是 DSIN 需要解决的问题。

深度会话兴趣网络(DSIN)模型

深度会话兴趣网络(Deep Session Interest Network,DSIN)模型对用户历史行为的刻画中引入了会话概念,并使用了 Transformer 模块学习会话的隐向量表征。

DSIN 模型也是以传统 Embedding + MLP 范式框架为基础进行演化,核心框架主要由以下四个部分组成:

  • 会话分割层(Session Division Layer)

  • 会话兴趣提取层(Session Interest Extractor Layer)

  • 会话兴趣交互层(Session Interest Interacting Layer)

  • 会话兴趣激活层(Session Interest Activating Layer)

DSIN 模型框架图如下。

  • User Profile:用户画像 | Item Profile:物品画像 | Sparse Feature:稀疏特征

  • User Field:用户域 | Item Field:物品域 | Activation Unit:激活单元

  • Session Interest Activationg Layer:会话兴趣激活层

  • Session Interest Interacting Layer:会话兴趣交互层

  • Session Interest Extractor Layer:会话兴趣提取层

  • Session Division Layer:会话分割层

在互联网应用中,系统通常不会因为用户未登录而强制用户登录。因此,我们需要通过会话机制记录用户行为,也就需要按照会话对用户行为进行分割。

首先,我们在会话分割层将用户的历史行为按照时间进行排序,然后将前后时间间隔 >30 分钟的行为切分到不同会话中。

  • 在会话兴趣提取层,我们使用 Transformer 模块学习会话的隐向量表征;

  • 在会话兴趣交互层,我们使用 bi-LSTM 模块学习会话之间的演变;

  • 在会话兴趣激活层,我们使用注意力机制学习候选物品与历史行为会话的相关性。

总的来说,在 MLP 层之前,DSIN 主要由两部分构成:

  • 一部分为高频稀疏部分,即用户和物品 ID 等;

  • 另一部分是用户行为序列的隐向量表征,这部分经过会话兴趣提取后,再和上下文信息混合为会话隐藏状态向量。然后,会话隐藏状态向量加上候选项激活的会话兴趣向量,再与高频稀疏部分连接起来,最后才能送入 MLP 进行目标拟合。

目前,DIN、DIEN、DSIN 三大模型并称为阿里三部曲,三者均是在传统 Embedding + MLP 范式框架基础上添加注意力机制进行优化的模型,高度体现了注意力机制在深度推荐算法中的作用。

小结与预告

本节我们通过 FNN、PNN、Deep Crossing 模型的演化过程,了解到深度学习模型不断加深,使用更复杂的模型、使用更多的样本信息,似乎是使得 Embedding + MLP 范式框架不断刷新纪录的不二法门。

然而更深的模型意味着需要训练更多的参数,必须引入更多的样本信息,却使得模型陷入海量的有用和无用信息的海洋中反而让模型抓不到本质。

注意力机制将信息视为一种负担,替模型过滤掉无用的信息,反而能使得模型拟合能力得到提升。

道德经中“见小曰明”,指出了不被事物的表象、无关要素所迷惑的重要思维方式,只有抓住事物背后的根本性运作逻辑,才能抓住真正的因果关系。

从需要海量样本到进行样本的条件筛选,这也许就是道德经中的“反者,道之动”吧。

那么你还能想到,有哪些模型符合深度推荐模型的更深、更专注的演化路径呢?请在评论区与我交流。

  • 17
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

周壮

您的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值