文章目录
SESSION-BASED RECOMMENDATIONS WITH RECURRENT NEURAL NETWORKS
论文概况
论文发布在ICLR 2016上,首次将递归神经网络RNN应用于推荐系统,在传统RNN的基础上进行了GRU单元的优化,并且为了使实际效果更佳的好,进行了Seesion-Parallel、 Mini-BatchesSampling On The Output、Ranking Loss等改进。
GRU-based RNN
RNN的输入时会话的实际状态,输出是会话中下一个事件的item。
会话的状态可以是实际事件的item,也可以是会话中迄今为止的事件
前者中,使用1-of-N编码,即输入向量的长度等于item的长度,对应的item为1,其余为0。
后者中,使用representations的加权和来表示,如果事件发生的较早,则会对其进行折扣。
文章还尝试了添加额外的embedding层,但是i-of-N 编码的表现更好。
在最后的GRU层和输出之间再添加一个额外的Feedforward layers(前馈层)。
GRU
一般的RNN是使用公式(1)来更新隐藏状态h
h t = g ( W x t + U h t − 1 ) (1) \mathbf{h}_{\mathbf{t}}=g\left(W \mathbf{x}_{\mathbf{t}}+U \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right)\tag{1} ht=g(Wxt+Uht−1)(1)
其中g是一个光滑且有界的函数,并入logistic sig moid函数, x t x_t xt是t时刻的unit输入, h t h_t ht的作用就是,给定当前状态 h t h_t ht,RNN会输出序列中下一个元素的概率分布。
本文采用了由Cho等人在论文《 On the proper-ties of neural machine translation: Encoder-decoder approaches》提出的GRU(Gated Recurrent Unit),用来解决梯度消失的问题。
h t = ( 1 − z t ) h t − 1 + z t h t ^ (2) \mathbf{h}_{\mathbf{t}}=\left(1-\mathbf{z}_{\mathbf{t}}\right) \mathbf{h}_{\mathbf{t}-\mathbf{1}}+\mathbf{z}_{\mathbf{t}} \hat{\mathbf{h}_{\mathbf{t}}}\tag{2} ht=(1−zt)ht−1+ztht^(2)
z t = σ ( W z x t + U z h t − 1 ) (3) \mathbf{z}_{\mathbf{t}}=\sigma\left(W_{z} \mathbf{x}_{\mathbf{t}}+U_{z} \mathbf{h}_{\mathbf{t}-\mathbf{1}}\right)\tag{3} zt=σ(Wzxt+U