《Improved Recurrent Neural Networks for Session-based Recommendations》 DLRS 2016 阅读笔记

简介:和上一篇介绍的ICLR 2016文章所要解决的问题一致,即利用session内用户的点击序列去预测用户下一次点击的item。方法也运用的RNN,但是更多在于引入了一些优化方法,如data augmentation, model pretrain, generalized distillation ( use of privileged information) 等。

直接先上文中使用的模型图。相比上一篇文章,整个模型只有一处不同:
1. output Layer是直接预估newsid的embedding向量。

《Improved Recurrent Neural Networks for Session-based Recommendations》 DLRS 2016 阅读笔记_第1张图片

然而,文中在RNN基础上使用了多项优化技巧,这是本文的重点:

1) Data augmentation: 俗称数据变换,通过人工的方式从现有样本中制造出新的样本。文中使用了两种策略:(1) 对于给定的一条原始点击序列,将所有可能的前缀序列均做为一条新的训练样本。比如针对现有原始序列 x1,x2,x3...,xn ,生成 (x1,V(x2)) , (x1,x2,V(x3)) ….. (x1,x2,..xn1,V(xn)) 共n-1条训练样本。(2) Embedding dropout: 这是一种防止过拟合、增强模型鲁棒性的方法。对于点击序列的处理即为随机丢掉序列中的部分item。在下图中给出了应用这两种方法下训练样本的生成示例。

《Improved Recurrent Neural Networks for Session-based Recommendations》 DLRS 2016 阅读笔记_第2张图片

2) Pre-training. 对于推荐问题,面临的普遍情况是,基于所有历史数据来训练模型,会使得其中包含的老信息过多。而对于user和item更新都很快的推荐场景,最近的信息更为重要,如何平衡新老信息的关系是个问题。文本提出的解决方案为,先利用历史所有数据预训练出一个模型。然后只选取最近的数据,以预训练得到的模型权重作为初始化参数,再训练一个最终模型。

3). Use of Privileged information. 对于这一节的内容第一次接触,即在训练过程中使用未来的信息。一开始看还有点蒙。具体思路是,用户点击某item后的点击序列中实际上能提供该item的信息,这些信息尽管在实际预测时使用不上,但在训练时我们可以加以利用,用于提供soft labels。一个通用的框架是generalized distillation framework。实施方法为,给定序列 [x1,x2,...,xr] 和对应label xr+1 ,其相应的privileged sequence为 x= [x_n,x_{n-1},….,x_{r+2}] label x_{r+1} n$为该session总长度。可以看到这就是刨去给定序列后的剩余序列的逆序列。基于这些privileged sequence即可训练一个teacher model。既然有teacher model,那就有student model。student model就是最初我们一直想要学习的模型。此时loss function变为:

(1λ)L(M(x),V(xn))+λL(M(x),M(x))

λ 在两组训练数据中起到平衡作用。对于训练数据规模小的数据集用处很大,对于大规模的训练集我推荐效果有限吧。

4). Output embedding. 在上一篇文章中,最后的output是一个 N 维向量, N 为item数量。这样带来的问题是模型参数多计算量大。以往一般采用的方法为hierarchical softmax,这种方式在word2vec里被应用,是一种通过一系列二分类近似多分类的思想。具体在此篇中不展开讲述,后续单开一个word2vec的笔记时再细说。本文提出的解决方案是,直接预测item的embedding向量。这样做好处很大:一是是embedding层的维数显著低于 N ,从而有效降低模型参数,加速训练过程;另外,预测结果更具有泛化意义,相当于预测了用户在embedding后的语义空间中兴趣表示。显然,输出层的embedding空间与Input后加入的那层embedding layer是同一个空间的时候模型的学习和评价过程具有一致性,因此文中直接使用输入item在embedding layer层的输出结果做为其向量表达。训练时定义的loss为输出层与该样本在embedding层的cosine相似度。

总体来说,这篇文章的收益更多是来自各种的trick,稍显得不那么混然一体和优美。但我认为优化中的第4点:output为embedding是很有意义的。其次是data augmentation,能提高模型的鲁棒性,同时也更贴切实际情况,完全依照单条完整的链式点击训练进行训练会有偏,在经过augmentation后学到的结果更为全面。

你可能感兴趣的:(deep,learning,推荐算法)