

1. GRU4Rec

现在来看GRU4Rec的网络结构比较简单, 输入是用户匿名session序列, 对其中item进行1-of-N(one-hot)编码, 接着从Embedding层获得item向量. 经过多层堆叠GRU更新, 最后经由全连接层计算下一个被点击item的概率. 本质上, GRU层相当于对session序列进行编码, 获得了session向量以表征用户行为意图. 在输出层, 基于与候选集中item的向量点积, softmax输出作为预测概率. 为了加速训练速度及精度, 其工程实现上也有以下3个创新点, 在后续推荐算法落地中被大家所借鉴:
并行化最小批训练 (session-parallel mini-batches) Batch内负采样 (sampling on the output) Pair-wise损失 (rank loss)

图4 Session序列内用户兴趣分布图

图5 NARM结构图
NARM设计为Encoder-decoder结构, 编码器部分包括Global encoder和Local encoder, 均由堆叠的多层GRU构成, 分别对用户序列行为和主要意图进行建模. 其中, 利用注意力机制进行主要意图学习:
3. STAMP

图6 STAMP结构图
对比NARM结构看, STAMP同样设计了不同结构分别对session内长期兴趣和短期兴趣建模, 也同样是取序列中最后一个交互的item表征短期兴趣. 不同的是, STAMP的网络设计地更加简单, 序列, 取最后item的embedding经过MLP后得到短期兴趣表征. 同时设计了注意力网络(Attention Net)对session内长期兴趣进行提取, 该模块也比较好理解, 具体计算如下:
注意力网络输出同样经过MLP, 结构与MLP Cell B相同, 只是参数独立, 得到长期兴趣表征. 最后, 在Trilinear Composition模块中进行兴趣拼接和预测, 通过Hadamard积把长短期兴趣进行组合, 再与候选item向量点积:
4. SR-GNN
上述算法充分考虑了session的序列特性, 并拆分出长短期兴趣表征, 取得了很好的效果, 但是忽略了顺序上不直接相邻的item间是如何过渡的(complex transitions of items). SR-GNN将单个session序列构造为session图结构, 同时引入GGNN(Gated Graph Neural Network), 在此基础上进行建模, 以下是该算法主要流程:

图7 SR-GNN

图8 SR-GNN图结构及其连接矩阵
解释一下算法中有向图的连接矩阵是如何构建的. 假设下图左侧是某一Session graph的邻接矩阵表示, 行表示源结点, 列表示目标结点. 可以看到, 结点的出度、入度均为2. 接着分别对结点按照出度、入度进行归一化, 可以得到出度邻接矩阵和入度邻接矩阵, 拼接构成上图右侧的连通矩阵.

图9 有向图的出度邻接矩阵与入度邻接矩阵
(2) 采用GGNNs对session graph中的所有结点进行统一表征学习,主要传播规则如下, 公式第一行通过连接矩阵聚合邻居结点信息(包含了入和出两个方向), 剩余过程类似GRU参数更新 :
(3) 获得item embedding向量后, 接着生成session embedding. 取session内最后一个交互的结点向量作为用户当前兴趣向量local embedding, 以凸显最后交互item的重要性. 接着, 通过soft-attention网络获得global embedding以表征session长期兴趣. 最后, 通过一个简单线性函数做融合, 得到session的hybird embedding.
(4) session embedding与候选item embedding点积作为预测值, 进行TopN推荐.
Session-based推荐本质上是一个Next-Item-Prediction任务, 根据日志里sessionID按照时间顺序聚合为序列, 最后一个item作为label. 由于用户兴趣会发生转移, 训练数据集时间跨度并不是越大越好. 比如, 利用近一个月的数据去训练模型可能要比用近三个月的, 在验证集上的指标更好. 而在实时兴趣推断时, 也存在类似情况, 当session长度超过20后, Recall、NDCG等离线指标也都发生了明显下降. 我们在SR-GNN基础上进行了一些改进(数据增强、Normalize embedding、Position embedding等), 作为线上多路召回中一路实时召回队列使用.
[2016][GRU4Rec] Session-based recommendations with recurrent neural networks
[2017][NARM] Neural Attentive Session-based Recommendation
[2018][STAMP] STAMP:Short-Term Attention/Memory Priority Model for Session-based Recommendation
[2019][SR-GNN] Session-Based Recommendation with Graph Neural Networks
[2019][NISER] NISER: Normalized Item and Session Representations to Handle Popularity Bias
[2020][TAGNN] TAGNN: Target Attentive Graph Neural Networks for Session-based Recommendation
[2020][TailNet] Long-tail Session-based Recommendation




