2020-06-17-深度学习推荐系统 第3章

在第二章学习了传统的推荐模型的发展,本章主要介绍一些比较重要的深度学习模型的进展.

深度学习模型的优势在于:

  1. 模型的表达能力更强,能够挖掘更多数据中的潜藏模式;
  2. 深度学习的模型结构非常灵活,能够根据业务场景和数据特点,灵活调整模型结构,使模型与应用场景完美契合.

深度学习推荐模型的演化关系图

下图是改变神经网络的结构,构建不同的推荐模型的演变方向图.(DNN/Multi-layer Perceptron为起点)

可以分为以下几个演化方向:

  1. 改变神经网络的复杂程度:AutoRec Deep Crossing, 增加了深度神经网络层数和结构复杂度.
  2. 改变特征交叉方式: NeuralCF PNN
  3. 组合模型: wide&deep, Deep&Cross, DeepFM
  4. FM模型的深度学习演化: NFM(使用nn提升特征交叉能力), FNN(FM初始化), AFM(注意力机制)
  5. 注意力机制与推荐模型的结合:DIN
  6. 序列模型与推荐模型相结合: 使用序列模型模拟用户行为或用户兴趣的演化趋势,代表模型是DIEN;
  7. 强化学习与推荐模型的结合: DRN

接下来挑一些笔记到重要的模型做简单介绍:

模型简介

AutoRec

(略)基于自编码器的模型,将用户通过压缩和重建的方式得到新的向量表达
AutoRec 模型过于简单表达能力不强

deep crossing-经典深度学习架构

模型在2016年由微软提出, 完整地解决了从特征工程\稀疏向量稠密化\多层神经网络进行优化等一系列深度学习在推荐系统中的应用问题,为后续研究打下了基础.

deep crossin 解决了这几个问题:

  1. 离散特征过于稀疏,不利于直接输入NN训练,如何解决稀疏向量稠密化的问题.
    • 使用embedding解决
  2. 如何解决特征自动交叉组合的问题.
    • 通过Multiple residual unit层(resnet) ,使得特征向量充分组合(在当时时间点,看可能是有道理的,但是我不是很认同resnet提供了交叉组合这个说法)
  3. 如何在输出层中达成问题设定的优化目标.
    • 输出层使用逻辑回归或者softmax形式

NeuralCF- CF与深度学习的结合

第二章介绍了CF和矩阵分解,将共现矩阵拆分成用户u和物品i向量矩阵,二者做内积,得到u对i的相似度. NeuralCF是对此的一个扩展.

我们可以将矩阵分解的用户和item的隐向量当做是其embedding(上图左), 我们直接将这两个embbedding做内积即为矩阵分解方法的u2i打分.

NeualCF使用多层MLP的结构替代了矩阵分解模型中简单的内积操作. 作者说有如下收益(以我的经验,内积比mlp方式效果要好的,下边的优点看看就得了):

  1. 更充分的交叉,得到更多有价值的特征组合信息;
  2. 引入更多的非线性,让模型表达能力更强.

进一步地,为了得到user和item更精准地表达,可以将内积(简化为元素乘积)和MLP合并在一起用.

PNN模型

与deepcrossing相比PNN模型在embedding层后接入的是乘积层(Product layer
).


product层可以分为两种方式:

  1. 内积
  2. 外积

不详细介绍目前工业界应该没有人用了,思想可借鉴,网上文章可参考:
https://zhuanlan.zhihu.com/p/89850560

优点:

  1. 内积和外积交叉
    缺点:
  2. 全交叉复杂度高,没有直接利用原始特征信息,可能有信息损失(NN没那么万能,需要人工特征)

wide&deep

google爸爸在2016提出了很nb的wide&deep模型.

将模型分为两个部分,由单层的wide和多层的nn混合成的模型:

  1. wide:让模型具有较强的"记忆能力"(memorization)
  2. deep:发让模型具有"泛化能力"(generalization)

这样的结构特点,是模型兼具了逻辑回归和深度神经网络的优点---能够快速处理并记忆大量历史行为特征,并且具有强大的表达能力.

模型的记忆和泛化能力

记忆能力: 模型直接学习并利用历史数据中物品或者特征的"共现频率"的能力.
泛化能力: 可以理解为模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀疏特征与最终标签相关性的能力.

矩阵分解比协同过滤的泛化能力强,因为矩阵分解引入了隐向量这样的结构,使得数据稀少的用户或者物品也能生成隐向量,从而获得有数据支撑的推荐得分, 这是非常典型的将全局数据传递到稀疏物品上,从而提高泛化能力的例子.

模型结构

wide&deep模型把稀疏向量输入层按需进入了wide层和deep的embedding层再进入MLP最终合并在一起形成走logit.

上图是论文中googleplay团队使用的特征,Deep部分的输入是全量的特征向量,wide部分的输入只是已安装应用和曝光应用两类特征的交叉,其中已安装应用代表用户的历史行为,而曝光应用代表当前的待推荐应用. 这种交叉特征可以充分发挥简单模型的"记忆能力"强的优势.

交叉的例子:用户历史看了 ABC, 当前待排序item为D 那么特征为 A&D, B&D, C&D.

Deep&Cross模型

这个模型是deepwide的升级,它将wide部分改造为了cross.

cross的公式如下:


x_{l+1} = x_{0}x_{l}^{T}W_l + b_l + x_l

x只当前层的输入,l指第l层,指原始输入. 含义是,每层都与做外积再与相乘得到输出向量在加上偏置和原始层作为这一层的输出.

优点:cross网络在特征上进行了自动交叉,避免了需要根据业务理解的特征组合.(是的,但是它的训练和推断效率很低, 而且不一定比业务理解的特征处理好)

widedeep模型的重要性

widedeep的成功在于:

  1. 从业务出发,抓住了业务本质特点(泛化和记忆)
  2. 模型结构不负责,工业界好用
  3. widedeep是一个base模板,好多之后的模型都基于此.

FM与深度学习模型的结合

以Fm模型为基础的深度学习模型有 FNN DeepFm NFM,它们使用不同的方式改进了FM,发挥特征组合的优势.

FNN-用FM的隐向量完成Embedding的初始化

由于emb层的参数数量巨大,会导致Embedding的受凉速度很慢,所以考虑使用预先初始化的方式解决这个问题:

如上图,使用FM的隐向量为每个特征的emb做初始化.

deepFM - 使用FM代替WIDE部分

顾名思义, 使用FM替代wide的好处是自动地进行了特征组合,这个模型效果是OK的,是一个值得上线的模型.

NFM- FM的神经网络化尝试

FM的局限是只能二阶交叉. 3阶以上参数太多. 研究人员考虑使用深度模型学习交叉项如下:


将FM的二阶交叉部分使用NN来进行学习得到sum emb在经过几层MLP学习.


上图的交叉池化层将所有的emb进行了二阶element元素交叉,再sum成为一个emb作为输出.

它的优点书中的说法是加强了特征交叉,但是实际上交叉池化层几乎是与FM的二阶交叉是等价的,不同的是NFM二阶交叉后做了sum的得到emb在走mlp增加了模型的表达能力.

FM的深度学习模型的优点和局限

  1. 交叉,模型表达能力强
  2. 这种特征工程已经穷尽了可能的尝试,在进行提升的空间比较小了.

注意力机制在推荐模型中的应用

注意力机制是指人类面对大量的信息,会有不同的关注程度.在推荐模型领域,这种注意力机制主要是指,用户对于物品的关注与偏好程度的高低.

AFM 引入注意力机制的FM

在之前的介绍的NFM模型中,它有一个问题是将所有的emb"一视同仁"地进行交叉,没有考虑不同特征对结果的影响程度,事实上消解了大量有价值的信息.

"注意力机制"认为,不同的交叉特征对结果的影响的程度不同,需要加一个"权重",所以有了下图的模型:


这里不同的是激活网络, 它将交叉emb的输出走了一个softmax得到每个交叉的权重,在进行emb加权求和走logit得到预测结果y.

这个方法是从改进模型结构角度的一个有益尝试.

DIN- 引入注意力机制的深度学习网络

阿里提出的DIN模型从用户角度出发, 将待排序广告与用户历史行为序列(商品和商铺id序列)进行了attention, 得到用户对排序广告的"注意力"权重,进行emb加权.

image.png

上图可以看到, 广告特征组与用户特征组进行了attention激活, 这个激活单元使用的是一个以原始广告emb输入用户每个id的emb输入以及二者emb差作为输入的网络,输出为这个id特征的关注程度,再进行加权求和,输入mlp层.

这个模型的优点是从业务场景触发,但是这种注意力并没有考虑时序的关系,用户的行为是有明显的时序变化的,历史的再现在可能已经不感兴趣.

DIEN

刚提到DIN注意力模型并没有考虑时序的关系,用户的行为是有明显的时序变化的,历史的再现在可能已经不感兴趣.DIEN考虑了用户兴趣的进化,使用了类似GRU的模型结构.

这个模型可以分为3层:

  1. 行为序列层:

    • 主要作用是吧原始的id类行为序列转换成Embedding行为序列;
    • 它的输入就是用户序列的emb
  2. 兴趣抽取层: 主要作用是通过模拟用户兴趣过程抽取用户兴趣

    • 兴趣抽取层是一个GRU层,它的隐向量作为本层的输出
  3. 兴趣进化层:这一层将上一层输入的GRU隐层走了一个带有attention的AUGRU,并将最终的隐层作为兴趣进化emb输入给mlp

AUGRU

首先GRU的公式如下:


AUGRU的不同点是,将更新门进行了attention加权,这个attention是将目标广告和兴趣抽取层的输出学习得到的.

这个模型充分考虑了用户兴趣的演化, 但是模型比较复杂

强化学习推荐

(略)主要介绍了DQN DRN, 目前强化在业界真落地的不多.书中也是比价基础的强化方法.

总结

你可能感兴趣的:(2020-06-17-深度学习推荐系统 第3章)