推荐系统(十):阿里电商推荐算法论文导读(下)

7. Deep Session Interest Network for Click-Through Rate Prediction

在电商的用户行为中,每个会话的行为是相近的,而不同会话间差别较大,如下所示:

这里会话的划分首先将用户的点击行为按照时间排序,判断每两个行为之间的时间间隔,前后的时间间隔大于30min,就进行切分。可以看上图,第一个session中,用户查看的都是跟裤子相关的物品,第二个session中,查看的是戒指相关的物品,第三个则是上衣相关。
基于此,阿里提出了深度会话兴趣网络Deep Session Interest Network,来建模用户这种跟会话密切相关的行为。

就是一个全连接神经网络,其输入的特征的主要分为三部分,用户特征,待推荐物品特征,用户历史行为序列特征。用户特征如性别、城市、用户ID等等,待推荐物品特征包含商家ID、品牌ID等等,用户历史行为序列特征主要是用户最近点击的物品ID序列。
这些特征会通过Embedding层转换为对应的embedding,拼接后输入到多层全连接中,并使用logloss指导模型的训练。

DSIN在全连接层之前,分成了两部分:左边的部分将用户特征和物品特征转换对应的向量表示,主要就是embedding层;右边主要对用户行为序列进行处理,从下至上分为4层:序列切分层(session division layer),会话兴趣抽取层(session interest extractor layer),会话间兴趣交互层(session interest interacting layer),会话兴趣激活层(session interest activating layer)。

DSIN模型

Session Division Layer
该层将用户的行为进行切分,首先将用户的点击行为按照时间排序,判断两个行为之间的时间间隔,若间隔大于30min则进行切分。切分后将用户的行为序列转换为会话序列
切分后,用户的行为序列S转换成为Q,第k个会话Q_k=[b_1;b_2;...;b_i;...;b_T],其中T是会话的长度,b_i是会话中的第i个行为,是一个d维的embedding向量。则Q_kT \times d的,QK \times T \times d的。
Session Interest Extractor Layer
在DSIN中,对序列中每个物品,以及每个物品对应的Embedding的每个位置进行的处理,成为Bias Encoding,它分为三块:
BE_{(k,t,c)}=\mathbf{w}_k^K + \mathbf{w}_t^T + \mathbf{w}_c^C

其中BEK \times T \times d,和Q的形状一样。BE_{(k,t,c)}是第k个session中,第t个物品嵌入向量的第c个位置的偏置项,也就是说,每个会话、会话中的每个物品有偏置项外,每个物品对应的embedding的每个位置,都加入了偏置项。所以加入偏置项后,Q变为:
Q = Q+BE

随后,是对每个会话中的序列通过Transformer进行处理,经过Transformer处理之后,每个Session是得到的结果仍然是T * d,随后,经过一个avg pooling操作,将每个session兴趣转换成一个d维向量。
{I}_{k}=\operatorname{Avg}\left({I}_{k}^{Q}\right)

这样,{I}_{k}就代表第k个session对应的兴趣向量。
Session Interest Interacting Layer
用户的会话兴趣,是有序列关系在里面的,这种关系,通过一个双向LSTM(bi-LSTM)来处理,每个时刻的hidden state计算如下:
{H}_{t}=\overrightarrow{{h}_{f t}} \oplus \overleftarrow{{h}_{b t}}
相加的两项分别是前向传播和反向传播对应的t时刻的hidden state。这里得到的隐藏层状态Ht,可以认为是混合了上下文信息的会话兴趣。
Session Interest Activating Layer
用户的会话兴趣与目标物品越相近,那么应该赋予更大的权重,这里使用注意力机制来刻画这种相关性:
a_{k}^{I} =\frac{\left.\exp \left({I}_{k} {W}^{I} {X}^{I}\right)\right)}{\sum_{k}^{K} \exp \left({I}_{k} {W}^{I} {X}^{I}\right)}

{U}^{I} =\sum_{k}^{K} a_{k}^{I} {I}_{k}

其中{X}^{I}是待推荐物品向量。同样,混合了上下文信息的会话兴趣,也进行同样的处理:
a_{k}^{H} =\frac{\left.\exp \left({H}_{k} {W}^{H} {X}^{I}\right)\right)}{\sum_{k}^{K} \exp \left({H}_{k} {W}^{H} {X}^{I}\right)}

\mathbf{U}^{H} =\sum_{k}^{K} a_{k}^{H} \mathbf{H}_{k}

后面的话,就是把四部分的向量:用户特征向量、待推荐物品向量、会话兴趣加权向量{U}^{I}、带上下文信息的会话兴趣加权向量{U}^{H}进行横向拼接,输入到全连接层中,得到输出。

8. Behavior Sequence Transformer for E-commerce Recommendation in Alibaba

淘宝的推荐系统总体上也分为匹配和精排阶段,匹配阶段主要是各种embedding方案;精排阶段,主要基于Wide & Deep和深度兴趣网络DIN来构建精排模型,这两种模型都存在一定的问题。
Wide & Deep:使用商品的类别和品牌特征、商品的统计特征、用户画像特征,通过Wide 和Deep两个部分来预测。离散特征使用常用的embedding来降维。这一框架效果还算不错,但是实践中忽略了用户历史的行为序列特征。
DIN:该模型使用注意力机制来捕获目标商品与用户先前行为序列中商品之间的相似性,但未考虑用户行为序列背后的序列性质。
本文尝试将NLP领域中大放异彩的Transformer模型来做推荐任务,其整体的架构如下:

Embedding Layer
所有的other feature分为四个部分,用户特征、商品特征、上下文特征、交叉特征,特征示例如下:

特征通过Embedding Layer来转换为对应的embedding。这里的交叉特征,有部分是基于业务经验提取出的,并非完全通过网络学习得到。
此外,我们还获得了行为序列中每个商品以及目标 商品的嵌入特征。每一个商品通过两部分来表示,“序列 item 特征”(红色部分)和“位置特征”(深蓝色)。其中,“序列 item 特征”包括 item_id 和 category_id。
Attention is all you need 论文中,作者提出了一种Positional Encoding来捕获句子中的顺序信息。同样,顺序也存在于用户的行为序列中。因此添加“位置”作为 bottom layer 中每个 item 的输入特征,然后将其投射为低维向量。第i个位置的位置特征计算方式为pos(v_i)=t(v_t)-t(v_i),其中,t(v_t) 表示推荐的时间戳,t(v_i) 表示用户点击商品v_i时的时间戳。采用这种方式,其效果优于原论文中使用的 sincos 函数。
Transformer Layer
Transformer Layer通过捕获行为序列中item与其它item的关系以学习到item的更深层表示。
Self-attention layer:
Scaled Dot-Product Attention
\text { Attention }({Q}, {K}, {V})=\operatorname{softmax}\left(\frac{{Q K}^{T}}{\sqrt{d}}\right) {V}

其中Q代表队列,K代表键,V代表值。
Multi-Head Attention
\begin{aligned}\mathbf{S} =\operatorname{MH}(\mathbf{E}) &=\text { Concat }\left(\text {head}_{1}, \text {head}_{2}, \cdots, \text {head}_{h}\right) \mathbf{W}^{H} \\ \text {head}_{i} &=\text { Attention }\left(\mathbf{E} \mathbf{W}^{Q}, \mathbf{E} \mathbf{W}^{K}, \mathbf{E} \mathbf{W}^{V}\right) \end{aligned}

Point-wise Feed-Forward Networks:
拟合模型的非线性,采用该神经网络
{F} = FFN({S})
同时为避免过拟合
{S}^{\prime}=\text { LayerNorm }({S}+\text { Dropout }(M H({S}))

\left.\left.\mathbf{F}=\text { LayerNorm }\left(\mathbf{S}^{\prime}+\text { Dropout(LeakyReLU(S'W }^{(1)}+b^{(1)}\right) \mathbf{W}^{(2)}+b^{(2)}\right)\right)

损失函数仍然采用交叉熵损失:
{L}=-\frac{1}{N} \sum_{(x, y) \in {D}}(y \log p(x)+(1-y) \log (1-p(x)))

参考资料

[1] https://www.jianshu.com/p/82ccb10f9ede
[2] https://www.jianshu.com/p/647669169f98
[3] https://mp.weixin.qq.com/s/RLxWevVWHXgX-UcoxDS70w

风吹柳花满店香,吴姬压酒劝客尝。——李白《金陵酒肆留别》

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容