美文网首页
[推荐系统] Session-Based Recommendat

[推荐系统] Session-Based Recommendat

作者: nlpming | 来源:发表于2022-02-19 20:13 被阅读0次

    1. 简介

    论文:Session-based Recommendations with Recurrent Neural Networks。本文第一次提出将RNN网络用于基于session的推荐。session可以理解为当你进入app,直到你推出app这段时间,也可以限定一定的时间范围比如30分钟。基于session的推荐即在你进入app后根据你短时间内的交互行为做的推荐。本文直接对用户的session点击序列使用RNN网络进行建模。

    2. GRU4rec模型

    • 文本的模型结构如下所示,假设用户的session点击序列为:X=[x_1,x_2,...,x_{n-1},x_n],则将x_1,x_2,...,x_{n-1}输入多层GRU网络,预测下一次可能点击的商品。
    • 点击商品序列先经过one-hot编码,然后通过embedding层得到低维稠密向量。之后经过多层的GRU网络,最后通过一层全连接层,预测下次点击每个商品的概率。每个商品都存在两个embedding向量(输入商品id->embedding假设为w_1),第一个是输入层商品x_i对应的embedding向量,第二个是输出层商品y_i对应的向量(输出商品id->embedding假设为w_2)。则最终预测点击商品y_i的概率为w_1 * w_2
    GRU4rec模型结构.png

    2.1 训练中小trick

    Session-parallel mini-batch

    由下图可以看出session1的长度为4,session2的长度为3,session3的长度为6,session4的长度为2,session5的长度为3。假设设置batch_size=3,则当取第3个batch的时候,session2已经结束了。此时按照顺序将session4中的序列拼接在session2后面,并且重置GRU的隐状态值为初始隐状态。

    Session-parallel mini-batch说明.png

    Sampling On the output

    最终预测每个商品下一次点击的概率,当商品数量非常大的时候计算量很大。所以论文采用了一种取巧的方式,将同一个batch中其他session的下一次点击商品作为当前点击商品的负样本。例如i_{1,1} -> i_{1,2},则对应的负样本为i_{2,2},i_{3,2}

    2.2 模型损失函数

    文本中采用了两种pairwise损失函数:BPR损失和TOP1损失。其中N_s表示负样本个数,\hat{r}_{s,i}表示正样本预测概率,\hat{r}_{s,j}表示负样本预测概率。

    BPR损失函数

    L_s = - \frac{1}{N_s} \sum_{j=1}^{N_s} log \left( \sigma(\hat{r}_{s,i} - \hat{r}_{s,j}) \right)

    TOP1损失函数

    L_s = \frac{1}{N_s} \sum_{j=1}^{N_s} log \left( \sigma(\hat{r}_{s,i} - \hat{r}_{s,j}) + \sigma(\hat{r}^2_{s,j}) \right)

    参考资料

    相关文章

      网友评论

          本文标题:[推荐系统] Session-Based Recommendat

          本文链接:https://www.haomeiwen.com/subject/bmyplrtx.html