推荐场景中——DIN排序模型讲解和应用

前文介绍了一种普适性比较强的DeepFM排序模型,易用且部署简单。本文结合用户的行为序列数据剖析一下由阿里妈妈算法团队开发的深度兴趣网络模型(下称DIN模型)。

推荐场景中——DIN排序模型讲解和应用

以往的深度点击预估模型都是对特征进行Embedding映射,拼接组合后输入到多层感知器网络(下称MLP)。在这种情况下,无论候选商品是什么,用户的特征都被压缩为固定长度的Embedding向量,该方式难以捕获用户的多样性的兴趣而无法有效地从丰富的历史行为中表达label的信息。

为此阿里提出了一个新颖的模型:DIN模型通过引入注意力机制(下称Attention)捕捉用户的兴趣点,用来表示用户对某个商品的历史行为的兴趣,用户的Embedding向量随着候选商品的变化而变化,有效的提升了模型的表达能力。此外,文中还提出mini-batch aware正则方法和自适应激活函数来辅助模型进行训练。

一、Attention机制介绍

1.1 Attention机制简介

在正式介绍模型之前,先介绍一下Attention机制。Attention机制是模仿人类注意力而提出的一种解决问题的办法,简单地说就是从大量信息中快速筛选出高价值信息,即一种将内部经验和外部感觉对齐从而增加部分区域的观察精细度的机制。

例如人的视觉在处理一张图片时,会通过快速扫描全局图像,获得需要重点关注的目标区域,也就是注意力焦点。然后对这一区域投入更多的注意力资源,以获得更多所需要关注的目标的细节信息,并抑制其它无用信息。图1中对Attention机制进行了图示,其中亮白色区域表示更关注的区域。

推荐场景中——DIN排序模型讲解和应用

图1 注意力机制直观展示图

Attention机制的具体计算过程见图2。对目前大多数Attention方法进行抽象,可以将其归纳为两个过程,三个阶段:

第一个过程是根据query和key计算权重系数;

(1)第一个阶段根据query和key计算两者的相似性或者相关性;

(2)第二个阶段对第一阶段的原始分值进行归一化处理;

第二个过程根据权重系数对value进行加权求和。

推荐场景中——DIN排序模型讲解和应用

图2 三阶段计算Attention过程

1.2 特征数据简介

工业CTR预测任务中的特征数据主要是由画像特征、统计特征、行为序列特征、上下文特征等组成,DIN模型中使用的特征列表如下:

推荐场景中——DIN排序模型讲解和应用

用户端的特征主要包含画像特征和多组行为序列特征;商品端主要包含画像特征;上下文特征包含时间、网络、地点、终端等特征。

处理类别特征主要采用Embedding方式,连续特征采用分桶、归一化、或log等方式进行转化。

1.3 基准模型简介

基准模型就是比较常见的多层神经网络,即:

(1)先对每个特征进行Embedding操作,得到一系列Embedding向量;

(2)将不同Group的特征拼接组合起来之后得到一个固定长度的用户Embedding向量,和候选商品Embedding向量;

(3)然后将(2)中的向量输入后续的全连接网络,最后输出pCTR值。具体网络结构见图3。

推荐场景中——DIN排序模型讲解和应用

图3 基准模型结构图

从基准模型的结构图中可以看出,无论候选商品是什么,用户的Embedding值均不会发生改变。用户的历史行为中的商品Embedding数据对用户的Embedding的贡献力度是一样的,然而这与实际情况并不符合,因为每个用户的兴趣是多样性的。

举个例子:某用户购买过“外套”、“手机”、“洗面奶”、“小说”等,当用户计划购买“耳机”的时候,历史行为中的“手机”自然比其他商品对本次决策的贡献更大一些;当计划购买裤子的时候,历史行为中的“外套”自然比其他商品对本次决策的贡献更大一些。

在实际情况下,基准模型的效果存在待改进的空间,由此阿里提出了基于用户兴趣的深层网络。图4展示了一位女生的历史行为数据,与候选商品之间的相关度权重情况,进度条越大,表示历史的商品与候选的商品越相似。

推荐场景中——DIN排序模型讲解和应用

图4 历史行为数据与候选商品之间的相关度权重情况

二、DIN模型详解

2.1 模型结构

DIN模型在基准模型的基础上,增加了注意力机制,就是模型在对候选商品预测的时候,对用户不同行为的注意力是不一样的。“相关”的行为历史看重一些,“不相关”的历史甚至可以忽略。图5展示了DIN模型的网络结构图。

DIN的模型结构中增加了 Activation Unit模块,该模块主要提取当前候选商品与历史行为中的商品的权重值。输入包括两个部分,一个是原始的用户行为Embedding向量、商品Embedding向量;另外一个是两者Embedding向量经过外积计算后得到的向量,和两者Embedding向量差值得到的向量。文章指出这种方式有利于保留更丰富的信息。

推荐场景中——DIN排序模型讲解和应用

图5 DIN模型结构图

输入层:

(1)用户的画像特征,例如性别、年龄、学历等;

(2)用户的行为序列数据,例如点击商品的行为序列、购买商品的行为序列;

(3)候选商品的画像特征,例如品类、品牌等;

(4)上下文特征,例如设备终端、时间、地点等;

Embedding层:

(1)将输入层的特征映射为固定长度的向量;

Concat层:

(1)将Embedding向量组合为一个向量;

Activation Unit层:

(1)计算候选商品与历史行为商品之间的权重。该模块可以认为是一个独立的MLP;

Sum Pooling层:

(1)将用户历史行为的商品Embedding进行Sum操作;

Concat和Flatten层:

(1)将以上的Embedding合并,并展平;

全连接网络层:

(1)经过两层全连接,并使用自定义Dice激活函数激活神经元;

输出层:

(1)对全连接网络层的结果进行Softmax操作,返回最大值的索引作为预测结果;

2.2 模型细节

2.2.1 讲解一下Activation Unit模块

与基准模型相比,DIN模型引入了一种新颖设计的Attention单元,并保持其他结构相同。Attention单元应用于用户特征组中,通过“加权”方式自适应地计算用户在候选商品中用户向量的兴趣表示值。Activation Unit的网络结构如图6所示。

推荐场景中——DIN排序模型讲解和应用

图6 Activation Unit的网络结构图

(1)输入层:

user 产生行为(例如点击、或购买)的 item embedding,作为key;

候选 item embedding,作为query;

(2)Out Product层:

计算矩阵之间的 element-wise 乘法;

(3)Concat层:

将 query, key, query-key, query*key(Out Product层,element-wise 乘法) 的结果进行拼接;

(4)Dense层:

全连接层,并以PRelu或Dice作为激活函数;

(5)Linear层(输出层):

全连接层,输出单元为1,即得到(query, key)相应的权重值;

Activation Unit的表达式如公式(1)所示。

推荐场景中——DIN排序模型讲解和应用

(1)

其中:

{e1,e2,……,eH}是用户U历史行为商品的embedding,长度为H;

uA是候选商品的embedding;

a() 是前向网络,矩阵以out product进行计算,输出结果为权重值。

2.2.2 讲解一下小批量aware正则化

mini-batch aware regularization主要解决的就是在大规模稀疏场景下,采用SGD对引入L2正则的loss进行更新时计算开销过大的问题。该方法只对每一个mini-batch中不为0的参数进行梯度更新,经过一系列推到之后得到近似的梯度计算公式如公式(2)所示,对于第m个小批量,特征j的梯度权重是:

推荐场景中——DIN排序模型讲解和应用

(2)

2.2.3 自适应激活函数Dice

文章认为采用PRelu激活函数的校正点固定不变,在输入分布发生变化时是不适用的。文章对该激活函数进行了改进,Dice激活函数会根据每层输入数据的分布来自适应调整校正点的位置,具体形式如下:

推荐场景中——DIN排序模型讲解和应用

(3)

其中:E[s]和Var[s]是每个小批量输入数据的均值和方差,ε是一个常数,设定为10-8。

三、DIN模型实践

下面使用一个简单的数据集,实践一下DIN排序模型。该模型的实现主要参考:python软件的DeepCtr模块。

3.1数据处理

(1.1)加载数据

samples.txt 数据可以从百度网盘下载:

链接: https://http://pan.baidu.com/s/1_i8_7RdvNN7UfftLSKc4eQ

提取码: gap1

推荐场景中——DIN排序模型讲解和应用

本示例中包含:7个特征。

●user端特征有5个,分别为["user_id", "gender", "age", "hist_movie_id", "hist_len"];

user_id 为 用户ID特征,离散特征,从1-3表示;

gender 为 用户性别特征,离散特征,从1-2表示;

age 为 用户年龄特征,离散特征,从1-3表示;

hist_movie_id 为 用户观看的movie序列特征,根据观看的时间倒排,即最新观看的movieID排在前面;

hist_len 为 用户观看的movie序列长度特征,连续特征;

●movie端特征有2个,为 ["movie_id", "movie_type_id"];

movie_id 为 movieID特征,离散特征,从1-208表示;

movie_type_id 为 movieID 类型特征,离散特征,从1-9表示;

(1.2)分割数据为训练集和验证集

(1.3)转换数据存储格式

3.2构建模型

(2.1)统计每个离散特征的词频量,构造特征参数

(2.2)构建模型及训练模型

推荐场景中——DIN排序模型讲解和应用

由于数据量较少等原因,本次实验触发了早停机制。

(2.3)打印看一下模型的结构

推荐场景中——DIN排序模型讲解和应用
推荐场景中——DIN排序模型讲解和应用
推荐场景中——DIN排序模型讲解和应用
推荐场景中——DIN排序模型讲解和应用

(2.4)绘制损失函数图

推荐场景中——DIN排序模型讲解和应用

本文由 新媒体之家 作者:一个数据人的自留地 发表,其版权均为原作者所有,文章内容系作者个人观点,不代表 新媒体之家 对观点赞同或支持,未经许可,请勿转载,题图来自Unsplash,基于CC0协议。
0

发表评论