暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于会话的推荐算法实践与应用

推荐螺丝钉 2022-02-16
1589
背  景
       基于会话的推荐算法(Session-based Recommendation)是指在用户未登录状态下, 仅仅依赖匿名会话进行用户下一步行为预测的一种算法, 在许多领域(如电商、短视频、直播等)有着重要的作用.
       基于会话的推荐易与序列推荐(Sequencial Recommendation)混淆, 这里区分一下, 序列推荐中常对用户长期历史序列建模以表征用户, 可能还包含用户画像等信息, 典型算法如Airbnb EmbeddingMINDSDM等; 而基于会话的推荐中, session长度相对更短且未登录用户偏好和属性完全未知, 主要侧重于建模用户近期实时兴趣, 可视为序列推荐的子领域.
图1 推荐系统4个阶段
       业界主流推荐系统分为召回、粗排、精排和重排四个阶段. 基于会话的推荐相关工作主要应用在我们线上的召回阶段. 在实际多路召回场景中, 利用SR-GNN算法作为一路实时召回队列, 针对新用户, 该队列直接能够提供粗排能力.

经典算法回顾
       基于会话推荐, 简单的可直接根据session内的item进行I2I扩充, 但每个item取多少? 多个I2I队列如何融合? 往往需要拍脑袋; 传统机器学习方法如马尔科夫链(Markov chain)也可进行Next Item Predict, 但其依赖的强假设: 下一状态只能由当前状态决定, 在时间序列中之前的行为均与之无关, 导致其在实际场景中运用受限.
图2 几种基于会话的推荐算法
       近期会话推荐领域SOTA结果都是基于神经网络模型取得的. GRU4Rec是该序列中经典的一篇, 首次利用RNN对session序列建模, 取得了很好的结果; 在此基础上, NARM将注意力机制应用于对session的顺序行为及主要意图分别建模; 与NARM相似, STAMP利用简单的多层感知机和注意力网络对session内长短期兴趣分别表征; 之前序列模型都仅对连续交互相邻item之间的序列过度关系进行挖掘, 而忽略了未直接相连item之间复杂地转变, SR-GNN通过引入GNN来对session graph进行建模, 以此挖掘序列内item之间复杂的过渡模式.       

1. GRU4Rec

图3 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)

2. NARM

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

       上图呈现了session内用户的兴趣分布, 可以发现, 的确大多数兴趣item集中于session尾部, 但并非所有item都与下一个点击的item相关, 并且用户在会话中的意图是Local的. 特别图中4260和7974等类似的session, 上文提到的GRU4Rec就不能很好地处理. NARM则设计了两路多层GRU编码器并引入注意力机制, 分别建模user's sequential behavioruser's main purpose, 具体结构如下图:

图5 NARM结构图

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

        
       Session Feature Generator模块将拼接, 形成session的最终隐含表示, 其中既包含了用户序列行为, 又涵盖了用户主要意图. 后面的Top-N预测过程看做是解码器, 在NARM中, 没有采用更常见的点积运算作为相似度量, 而是提出了一种双线性(bi-linear)相似函数,  不仅能缓解网络参数量过大的问题, 还提升了模型的精度, 具体计算如下:


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

      从左至右, 依次包含四个步骤, 分别为: Constructing session graphsNode representation learningSession representation generatingMaking recommendation:
      (1)  首先, 每个session序列都可以构建为一个有向图, 对图中边的权重按照起始结点出度进行归一化. 例如, 某一session序列为, 其session图结构及连接矩阵如下:

图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 embeddingPosition embedding等), 作为线上多路召回中一路实时召回队列使用.


参考文献
  1. [2016][GRU4Rec] Session-based recommendations with recurrent neural networks

  2. [2017][NARM] Neural Attentive Session-based Recommendation

  3. [2018][STAMP] STAMP:Short-Term Attention/Memory Priority Model for Session-based Recommendation

  4. [2019][SR-GNN] Session-Based Recommendation with Graph Neural Networks

  5. [2019][NISER] NISER: Normalized Item and Session Representations to Handle Popularity Bias

  6. [2020][TAGNN] TAGNN: Target Attentive Graph Neural Networks for Session-based Recommendation

  7. [2020][TailNet] Long-tail Session-based Recommendation








文章转载自推荐螺丝钉,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论