Datawhale组队学习课节2: 传统序列召回实践:GRU4Rec打卡

传统序列召回实践:GRU4Rec

论文理解,参考沈向洋论文十问

  1. 论文解决了什么问题?
    序列推荐场景下用户长期行为不可知的问题

  2. 这是否是一个新的问题?
    不是

  3. 这篇文章要验证什么科学假设?
    用户的一个会话中访问的条目是具有相关性的,且随时间而变化

  4. 有哪些相关研究?如何归类?谁是这一课题在领域内值得关注的研究员?
    前人的研究主要集中在矩阵分解方法和相似度算法,归类为序列推荐问题,Philip S. Yu ,Hongzhi Yin

  5. 论文中提到的解决方案之关键是什么?
    使用GRU建模时序信息,并且设计了batch-size方法,来解决序列长度分布不均衡的问题

  6. 论文中的实验是如何设计的?
    Recall MRR,非全量,只从热门商品里召回。

  7. 用于定量评估的数据集是什么?代码有没有开源?
    RSC15 Video ,https://github.com/hidasib/GRU4Rec

  8. 论文中的实验及结果有没有很好地支持需要验证的科学假设?
    有,加入RNN序列建模之后效果有大幅提升

  9. 这篇论文到底有什么贡献?
    开创了序列推荐使用神经网络的先河,解决了很多在线系统中长期用户行为记录不可用的情况

  10. 下一步呢?有什么工作可以继续深入?
    作者的未来工作是使用多模态信息来增强item的特征。

推荐系统概览

https://blog.csdn.net/weixin_42052231/article/details/120789636

代码工程学习

主要是学习了faiss大规模向量检索
流程如下:

# 第一步:我们获取所有Item的Embedding表征,然后将其插入Faiss(向量数据库)中
item_embs = model.output_items().cpu().detach().numpy()
item_embs = normalize(item_embs, norm='l2')
gpu_index = faiss.IndexFlatIP(hidden_size)
gpu_index.add(item_embs)
# 第二步:根据用户的行为序列生产User的向量表征
user_embs = model(item_seq,mask,None,train=False)['user_emb']
user_embs = user_embs.cpu().detach().numpy()
# 第三步:对User的向量表征在所有Item的向量中进行Top-K检索
D, I = gpu_index.search(user_embs, topN)  # Inner Product近邻搜索,D为distance,I是index

思考与讨论

Datawhale组队学习课节2: 传统序列召回实践:GRU4Rec打卡_第1张图片
这个生成的Embedding可视化是否说明了存在长尾分布的问题?

你可能感兴趣的:(推荐算法,神经网络,算法)