《session-based recommendations with recurrent neural networks》ICLR 2016 阅读笔记

文章简介: 该文提出了利用RNN建模一个session间用户的点击序列。该方法完全利用用户在当前session里的反馈去做推荐,相比原依赖用户历史记录的推荐能在解决冷启动问题上更为简洁有效。

  • 模型

文中提出的模型如下图所示:
Input层是对所有item做的one-hot encoding, 接下来是一层embedding层,再往下是一层或多层RNN模型,再往下是一个feedforward层,然后接到output,是一个维数等于item数量的向量,其中各元素为各item的打分。

《session-based recommendations with recurrent neural networks》ICLR 2016 阅读笔记_第1张图片

文中选用的loss function有两种:
一种是BPR: Bayesian Personalized Ranking, 是一种pairwise ranking loss.

Ls=1NSj=1Nslog(σ(r^s,ir^s,j))

其中 NS 是采样规模, rs,k^ 是当前时刻在item k 上的打分,i是期望item,即在当前session下一时刻的目标item,而 j 是负样本。

另一种是TOP1: 这是作者自改进的一个ranking loss。基于一个概念:relative rank of an item,在此作者定义两item的相对rank差为I(r^s,j>r^s,i), 该函数随两item间分值差距的增加而增大。作者使用sigmoid函数来近似 I{.} 。最终的loss function如下所式,增加了对负样本的一个正则项,目的是使负样本的分值尽可能接近0,以防止正负样本间多重反馈导致大家分值集体偏高的情形。

Ls=1NSj=1Nsσ(r^s,ir^s,j)+σ(r^2s,j)

  • 优化*
    session-parallel mini-batches: 在使用该模型的过程中,由于session长短变化大,也不宜对session做截断,因此文中在做mini-batch训练过程中做了一定的调整,使得每个batch都尽可能满。具体做法为:首先,在构建mini-batch的过程中,在一个session完结后,将另一个session拼接在该session之后,按此思想去确定input和output;其次,上次做法会带来的问题是,对于每处理到一个新的session,模型的隐层状态需要重置。

《session-based recommendations with recurrent neural networks》ICLR 2016 阅读笔记_第2张图片

你可能感兴趣的:(推荐算法,推荐-RNN-GRU)