Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate

算法概述

 Deep Interest Evolution Network(DIEN)是在Deep Interest Network(DIN)基础上的改进方法,其初衷是为了解决当前CTR预估中存在的一些问题:

1.大多数的方法缺少兴趣模型,直接把用户的行为当作用户的兴趣,缺少对具体行为背后隐含的兴趣做模型化处理;

2.用户的兴趣在不断发生变化,之前的大多数方法缺少对用户兴趣变化趋势的思考。

DIEN通过设计兴趣提取层(Interest Extractor Layer)来获取用户历史行为的兴趣,通过在这一层添加一个额外的损失函数来监督每一步的兴趣提取。

在电商系统中,用户的兴趣非常广泛,DIEN通过加入兴趣进化层(Interest Evolving Layer)来获取与目标推荐相关的兴趣进化过程。

基本的网络结构

深度兴趣网络详解中已经给出了基本模型结构的介绍,DIEN和DIN的基本模型结构是类似的,下面还是具体介绍一下。

特征表示(Feature Representation)

文章中的线上系统有四类特征:User Profile(性别、年龄等), User Behavior(访问过的商品id), Ad(推荐的商品(target item)id)and Context(时间等特征)。每一个类里面的每一个具体特征都是一个one-hot编码,注意这和之前的DIN是不一样的,之前的DIN可能有muti-hot编码。四类特征所有具体特征的one-hot编码拼接到一起分别得到向量:\textbf{x}_p,\textbf{x}_b\textbf{x}_a\textbf{x}_c​​​​​​。

对于序列化的CTR模型,每一个具体特征都包含一个行为的列表,每一个行为对应一个one-hot编码(比如浏览过的商品每一个商品就是一个one_hot编码,所有浏览过的商品构成一个列表List),可以被表示为:

\textbf{x}_b=[\textbf{b}_1;\textbf{b}_2;...\textbf{b}_T] \in \mathbb{R}^{K \times T} \textbf{b}_t \in \{0,1\}^K

\textbf{b}_t是one-hot编码向量,对应的是用户的第t个行为,T是用户的历史行为数,K为用户所有可能点击的商品数总和。

基本的模型结构

大多数Deep CTR模型都是基于embedding&MLP这一基本结构构建的,下面介绍下基本结构的主要组成部分:

embedding 层:每一个具体特征对应一个嵌入矩阵(embedding matrix),例如访问商品的嵌入矩阵可以表示为:\text{E}_{goods} = [\textbf{m}_1;\textbf{m}_2;...,\textbf{m}_K] \in \mathbb{R}^{n_E \times K},即每一个商品对应一个n_E维的嵌入向量。具体的来说,对于行为特征\textbf{b}_t[j_t] = 1,其对应的嵌入式向量为\textbf{m}_{j_t},那么按照时间序排列的嵌入向量列表可以表示为:\textbf{e}_b = [\textbf{m}_{j_1};\textbf{m}_{j_2};...,\textbf{m}_{j_T}]。同理,推荐物品相关特征的嵌入向量列表可以表示为:\textbf{e}_a

MLP

首先,同一类特征的嵌入式向量首先进行池化操作,随后将不同类的所有池化向量连接到一起,最后连到到一起的向量被送入接下来的MLP层来做最后的预测。

损失函数

深度CTR模型中,广泛应用的损失函数使用的是目标item的label预测:

L_{target} = - \frac{1}{N} \sum_{(\textbf{x},y) \in D}^N(y\log{p(\textbf{x})} + (1 -y)(1 -\log{p(\textbf{x})}))

其中,\textbf{x} = [\textbf{x}_p,\textbf{x}_a,\textbf{x}_c,\textbf{x}_b] \in DD为有N个样本的训练集合,y \in \{0,1\}

DIEN的网络结构

DIEN旨在获取获取用户的兴趣以及模型化用户的兴趣进化过程,其结构如下图

Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate_第1张图片

 DIEN由几部分组成:

1.各类特征均通过embedding层进行转换;

2.DIEN通过两步来获取兴趣进化:1)兴趣提取层(interest extractor layer)基于用户的行为序列提取兴趣序列;2)兴趣进化层(interest evolving layer)模型化与目标推荐物品相关的兴趣的进化过程;

3.最后兴趣表示向量嵌入向量被拼接到一起。

兴趣提取层(Interest Extractor Layer)

在兴趣提取层,从用户行为习惯序列中提取一系列的兴趣状态。为了平衡效率和性能,采用了GRU(Gate Recurrent Unit)网络结构(具体GRU结构介绍可参考GRU详解):

Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate_第2张图片

\sigma为sigmoid激活函数,\circ是内积。W^u,W^rW^h \in R^{n_H \times n_I}U^u,U^rU^h \in R^{n_H \times n_H}n_H是隐藏层的尺寸,n_I是输入的尺寸。\textbf{i}_t为GRU的输入,\textbf{i}_t = \textbf{e}_b[t]代表用户采取的第t个行为,\textbf{h}_t为第t个隐藏状态。

然而,隐藏层 \textbf{h}_t只能获取行为间的依赖性,无法高效地表示兴趣。由于目标商品的点击行为由最后的兴趣来触发,label只包含监管最终兴趣预测的真实信息,而历史状态\textbf{h}_t (t < T)不包含合适的监督。显而易见,每一步的兴趣状态直接导致了随后的行为,所以提出了辅助损失(auxiliary loss),auxiliary loss使用行为\textbf{b}_{t+1} 去监管兴趣状态\textbf{h}_t的学习(\textbf{h}_t\textbf{b}_{t+1}应该具有很强的相关性)。而且,除了取出下一步的真实行为作为正样本,也通过从未点击商品集合采样来取出一些负样本。考虑有N对行为嵌入序列:\{​{\textbf{e}_b^i}, \hat{\textbf{e}}_b^i\} \in D, i \in 1,2,...,N,其中{\textbf{e}_b^i} \in R^{T \times n_E}代表点击过的行为序列,而\hat{\textbf{e}}_b^i \in R^{T \times n_E}表示负样本序列。{\textbf{e}}_b^i [t] \in G表示用户i在第t次点击商品的嵌入向量,G为所有商品的集合。\hat{\textbf{e}}_b^i \in G - {\textbf{e}}_b^i [t]为从商品集合随机抽取的且不是用户i在第t次点击过的商品。auxiliary loss的表达式为:

Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate_第3张图片

 为sigmoid激活函数,\textbf{h}_t^i表示GRU对于用户i的第t个隐藏状态,可以看到,auxiliary loss 通过优化的方法,使得\textbf{h}_t^i{\textbf{e}_b^i}[t+1]的相关性变强,而\textbf{h}_t^i\widehat{​{\textbf{e}_b^i}}[t+1]相关性变弱,从而达到当前时刻状态\textbf{h}_t^i预测下一时刻行为{\textbf{e}_b^i}[t+1]的目标,整个全局loss为:  

\alpha为超参数,用来平衡兴趣表示和CTR预测。在auxiliary loss的帮助下,在用户发生行为\textbf{i}_t时,每个隐藏层\textbf{h}_t足够表示当前用户兴趣的状态,把所有T个兴趣点连在一起[\textbf{h}_1,\textbf{h}_2,...,\textbf{h}_T]构成兴趣序列能够模型化兴趣的变化过程。

总的来说,引入 auxiliary loss有如下优势:

1.兴趣学习的角度,可以帮助GRU的隐藏层更好的表达用户的兴趣;

2.对于长序列GRU模型的训练,降低了BP算法的难度;

3.给予embedding层学习更多的语义信息,可以训练出更好的embedding矩阵。

兴趣进化层 (Interest Evolving Layer)

由于外部环境和内部感知的影响,不同用户的兴趣随时间在不断变化。兴趣的变化有两个特点:兴趣的多样性,一段时间喜欢书籍,一段时间喜欢衣服;兴趣有可能相互影响,但变化过程(例如书记的种类、衣服的品类等)几乎是独立变化的,通常只关心与推荐商品相关就可以。

在兴趣提取层的帮助下,可以拿到兴趣序列的有效表示。通过分析兴趣变化的特征,兴趣进化层结合了注意力机制的本地激活能力以及GRU模型化兴趣变化的序列学习能力。GRU每一步中的局部激活可以增强相关用户兴趣的影响,同时减弱兴趣飘变的干扰,对于模型化目标推荐物品相关的兴趣变化过程是很有帮助的。

兴趣进化层的核心同样是一个GRU,{\textbf{i}_t}'{\textbf{h}_t}'分别表示兴趣进化模型的输入和隐藏状态,兴趣进化模型的GRU输入为对应兴趣提取层的兴趣状态:{\textbf{i}_t}' = {\textbf{h}_t}。最后的隐藏状态{\textbf{h}_T}'表示最后的兴趣状态。

兴趣进化模型中,注意力函数的表达式为:

Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate_第4张图片

 \textbf{e}_a为推荐商品的嵌入向量的连接,W \in \mathbb{R}^{n_H \times n_A}n_H为隐藏状态的纬度,n_A为推荐商品的嵌入向量维度。Attention的分数反映了推荐物品\textbf{e}_a和输入\textbf{h}_t的关系,更强的相关性会导致更高的注意力分数。几种结合注意力机制GRU模型化兴趣变化过程的几种方法:

GRU with attentional input (AIGRU) 

 AIGRU是注意力机制控制输入的GRU模块,主要目的是为了在兴趣进化过程中激活相关的兴趣,AIGRU使用注意力分数来影响兴趣进化层的输入:

{\textbf{i}_t}'=\textbf{h}_t * a_t

\textbf{h}_t兴趣提取层中GRU的隐藏状态,{\textbf{i}_t}'兴趣进化层的GRU的输入。以这种方式,不相关的兴趣可以通过注意力分数来减少影响。AIGRU的缺点是,即使兴趣相关性很低也依然会影响兴趣进化的学习。

 Attention based GRU(AGRU)

AGRU用注意力分数代替了GRU的更新门来直接修改隐藏状态:

AGRU利用注意力分数直接控制隐藏层的更新,削弱了兴趣变化中不相关兴趣的影响,使得AGRU解决了AIGRU的缺点。

GRU with attentional update gate (AUGRU)

AGRU可以使用注意力分数来直接控隐藏层的更新,但是注意力分数是标量,即用一个标量a_t代替了一个向量(更新门\textbf{u}_t),这导致忽略了不同纬度间的不同,因此给出一种更准确的GRU即AUGRU:

Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate_第5张图片

{\textbf{u}}'_t 为原始的更新门,{\widetilde{\textbf{u}}}'_t​​​​​​​为新的更新门,这样既保留了不同纬度的信息,又通过注意力分数a_t来控制相关性的影响。

 实验对比结果和结论

Deep Interest Evolution Network(DIEN)专题1:论文解析Deep Interest Evolution Network for Click-Through Rate_第6张图片

  从实验对比上来说,DIEN即GRU+AUGRU+auxiliary loss + 其他常规模块的方式有明显的优势,这表明监督信息对于序列化兴趣和嵌入表示学习过程的重要性。

你可能感兴趣的:(推荐算法,深度学习,推荐算法,人工智能)