zoukankan      html  css  js  c++  java
  • Deep Learning 论文解读——Session-based Recommendations with Recurrent Neural Networks

    博客地址:http://www.cnblogs.com/daniel-D/p/5602254.html

    新浪微博:http://weibo.com/u/2786597434

    欢迎多多交流~

    Main Idea

    这篇论文的工作是讲 RNN 应用到推荐系统中,想法在于把一个 session 点击一系列 item 的行为看做一个序列,用来训练一个 RNN 模型。在预测阶段,把 session 已知的点击序列作为输入,用 softmax 预测该session下一个最有可能点击的item。论文想法虽然很朴素很直白,但是目前这类直接用deep learning的结构来做推荐的论文非常少(RBM除外),因此值得仔细研读。

    Architecture

    论文采用了 RNN 中的 GRU 单元作为基本结构,组建了一个深层的神经网络来预测该session下一个点击的item 的概率。比如item拥有 2w 个,那么通过 1-of-N coding 的方式(one hot encoding),神经网络的第一层就有2w个节点,然后通过第二层embedding层压缩为低维连续向量(假设200维),当然最开始这些向量都是随机初始化的。embedding这一层实际上是一个 2w * 200的矩阵字典,每一行 200 维的向量就是一个item的presentation。这200维向量可作为 stacked GRU 的输入,得到低维连续的输出(200维),然后通过与 一个 200 * 2w 的矩阵相乘,得到了下一个点击的item在 2w 个节点中的预测概率,整体而言,这是一个 sequence to sequence 的预测问题。

    为了更好的并行计算,论文采用了mini-batch的处理,即把不同的session拼接起来,同一个sequence遇到下一个Session时,要注意将 GRU 中的一些向量重新初始化。因为item的维度非常高,每次要预测 2w 个item 的概率会导致计算量庞大,因此原则上只选取当前的正样本(即下一个点击的item)加上随机抽取的负样本。论文采用了取巧的方法来减少采样需要的计算量,即选取了同一个 mini-batch 中其他sequence下一个点击的item作为负样本,用这些正负样本来训练整个神经网络。

    Loss Function

    作者尝试了 常见的 point-wise rank loss,即认为负样本为 0, 正样本为 1 的loss function,发现训练出来的模型并不稳定,原因可能因为在推荐里面,并不存在绝对的正样本和负样本。在同一个情景里面,用户只能点击一个最偏好的item,对其他item可能也存在偏好,这并不是一个非黑即白的classification问题。然后作者尝试了 pair-wise rank loss,并且对于负样本的分数进行了近0约束,防止训练过程中分数相互“攀比”的情形下所有的预测分数都越来越高。实际上,我认为这种约束方法近似于对 权重进行了 L2 约束。 

    Results

    论文在 recSys2015 竞赛的数据集上进行了点击item的预测评比,对比的方法有 pop 、s-pop 、item-knn以及 BPR-MF,评测标准有 MRR@20 和 Recall@20,貌似都取得了不错的效果。

    一些想法

    a、最后一层很重要,最后一层隐层实际是前面点击序列的embedding结果,可以看做 user 向量。输出层某个节点表示一个item,与之相连的实际是item的向量。

    b、user 向量只用到了item序列,item和user本身的profile属性是否可以应用到模型里来?

  • 相关阅读:
    揭秘!如何快速提高网站权重-关键词百度指数叠加
    dede编辑文章不更新时间的方法
    PHPCMS V9轻松完成WAP手机网站搭建全教程
    如何建立关键词词库
    3gcms-Flash幻灯片上传后图片模糊解决办法
    手机端wap站网页播放腾讯视频代码
    解决dede编辑器不能保存word文档样式问题
    vi查找替换命令详解 (转载)
    eclipse上安装 windowBuilder方法
    单播、多播(组播)和广播的区别
  • 原文地址:https://www.cnblogs.com/daniel-D/p/5602254.html
Copyright © 2011-2022 走看看