《Latent Cross: Making Use of Context in Recurrent Recommender Systems》
推荐系统长期以来一直用于预测用户会喜欢什么内容。随着 Facebook, Netflix, YouTube, Twitter
等在线服务的不断增长,拥有一个高质量的推荐系统来帮助用户筛选不断扩大和日益多样化的内容变得越来越重要。
推荐系统的大部分研究都集中在有效的机器学习技术上:如何最好地从用户的行为(如点击、购买、观看、评分)中学习。在这个方向上,有大量关于协同过滤(collaborative filtering
)和推荐算法的研究。
与此同时,人们越来越显著地认识到对推荐的上下文( context
)进行建模的重要性:不仅仅是正在寻找视频的用户,还包括一天中的时间(time of day
)、位置(location
)、用户的设备(device
)等。人们已经在分解(factorization
)的 setting
中提出了许多相关的模型,例如用于 location
的张量分解、用于不同类型的用户动作的 unfolding tensor
、或者关于时间效应的手工制作的特征。
随着深度学习的日益普及,如何将这些上下文特征( contextual feature
)整合到神经推荐系统中的直接研究较少。先前关于 deep neural network: DNN
推荐系统的工作在很大程度上依赖于将上下文作为模型中的直接特征、或者依赖于具有多任务的目标。一个值得注意的例外是使用 recurrent neural network: RNN
来建模时间模式( temporal pattern
)。 在论文 《Latent Cross: Making Use of Context in Recurrent Recommender Systems》
中,作者将 contextual collaborative filtering
文献和神经推荐器文献联系起来。作者探索了如何在深度神经推荐器(尤其是在 RNN
模型中)中利用上下文数据(contextual data
),并证明主流技术遗漏了这些特征中的大量信息。
作者探索了在 YouTube
使用的RNN-based
的推荐系统中,使用上下文数据的能力。与大多数生产(production
)的 setting
一样,YouTube
拥有大量重要的上下文数据,其中包括:请求和观看时间(request and watch time
)、设备类型、网站或移动app
上的页面(page
)。在论文中,首先作者对建模上下文作为直接特征的局限性提供了理论解释,尤其是使用feed-forward neural network: FFN
作为示例的 baseline DNN
方法。然后作者提供了一种易于使用的技术来整合这些上下文特征,从而提高预测准确性,即使在更复杂的 RNN
模型中也是如此。
论文的贡献是:
一阶挑战(First-Order Challenges
):论文展示一阶神经网络建模低秩关系(low-rank relationship
)的挑战。
生产模型(Production Model
):论文描述了如何为 YouTube
构建了一个大规模的 RNN
推荐系统。
潜在交叉(Latent Cross
):论文提供了一种简单的技术,称作 Latent Cross
,以便在模型中更 expressively
包含上下文特征。具体而言,latent cross
在 context embedding
和神经网络 hidden state
之间执行逐元素乘积(elementwise product
)。
经验结果(Empirical Result
):论文提供的经验结果证实了所提出方法提高了推荐的准确性。
相关工作:我们首先对各种相关研究进行调研,overview
参考下表。
上下文推荐(Contextual Recommendation
):大量研究集中在推荐过程中使用上下文数据。具体而言,某些类型的上下文数据已被深入探索,而其它类型的上下文数据已被抽象地处理(treated abstractly
)。
例如,推荐中的时间动态(temporal dynamics
)已被广泛探索。在 Netflix Prize
期间,《Collaborative filtering with temporal dynamics》
在 Netflix
数据集中发现了重要的长期时间动态(long-ranging temporal dynamics
),并在他的协同过滤模型中添加了时间特征(temporal features
)来解释这些影响。
研究人员还探索了偏好(preference
)如何在较短的时间尺度内(如 session
)演( evolve
)。更一般的抽象已被用于对推荐的偏好演变进行建模,如 point processes
和 RNN
。类似地,使用概率模型、矩阵分解、张量分解来建模带地理数据(geographical data
)的用户行为也得到了广泛的探索。
各种方法都建立在矩阵分解和张量分解的基础上,用于跨域学习(cross domain learning
)。分解器(factorization machine
)和其它上下文推荐器等方法提供了这些协同过滤方法的推广。
神经推荐系统(Neural Recommender Systems
):随着神经网络在计算机视觉和自然语言处理(natural language processing: NLP
)任务中的普及,推荐系统的研究人员已经开始将 DNN
应用于推荐。
早期的迭代侧重于将协同过滤直接应用于神经网络,例如通过自编码器、或者联合 deep and CF models
。人们已经设计出更复杂的网络来融合更广泛的输入特征。《Wide & deep learning for recommender systems》
在模型的 DNN
部分之外,通过线性模型处理上下文特征之间的交互(interaction
)从而解决这个问题。
最近,使用 RNN
进行推荐的情况越来越多:
《Neural Survival Recommender》
和 《Rurrent Recommender Networks》
在他们的模型中包括时间信息(temporal information
)作为特征和监督( supervision
),而 《Modelling Contextual Information in Session-Aware Recommender Systems with Neural Networks》
包含一般上下文特征。然而,在这两种情况下,这些特征都与输入相拼接( concatenated
),我们将展示这种方式提供的好处有限。
并行的、独立的研究 《What to Do Next: Modeling User Behaviors by Time-LSTM》
通过乘法性地融合(multiplicatively incorporate
)时间信息来改善 LSTM
,但是它没有将这种方法推广到其它上下文数据。
二阶神经网络(Second-order Neural Networks
):本文的一个主要重点是神经推荐器中乘法关系(multiplicative relation
)的重要性。这些二阶单元(second-order unit
)出现在神经网络的一些地方。
循环单元( recurrent unit
),如 LSTM
和 GRU
,是常见的带逐元素乘法(elementwise multiplication
)的门控机制的二阶单元。
此外,用于分类的、网络顶部的 softmax layer
是 DNN
产生的 embedding
与 label class embedding
之间的显式双线性层( bi-linear layer
)。该技术已在多篇论文中得到扩展,包括 DNN
之上的 user-item
双线性层。
与本文中描述的技术类似的是乘法模型(multiplicative model
)。这些乘法结构最常用于NLP
。这些 NLP
方法被应用于评论的个性化建模(具有稍微不同的数学结构)。最近,《Neural Survival Recommender》
不是在上下文数据上,而是直接在用户上使用乘法技术,类似于张量分解。PNN
和 NFM
将这一思想推向了一个极端,将输入端的所有的特征 pair
对进行相乘,并在通过前馈神经网络之前拼接、或者平均相乘的结果。这些模型的直觉与我们的相似,但不同之处在于:
我们关注上下文数据和用户动作之间的关系。
我们的 latent crossing
机制可以应用于、并且已经被应用于整个模型。
我们证明了这些交互的重要性,即使是在一个 RNN
推荐系统内。
更复杂的模型结构(如注意力模型attention model
、记忆网络memory network
、元学习meta-learning
)也依赖于二阶关系,并且越来越受欢迎。例如,注意力模型使用通过乘法调制(modulate
) hidden state
的注意力向量。然而,这些方法在结构上明显更加复杂,并且通常更难训练。相比之下,我们发现本文提出的 latent cross
技术在实践中易于训练并且有效。
考虑一个推荐系统,其中我们有一个包含事件(event
) k-way
元组。我们定义
例如,Netflix Prize
的 setting
将由元组
注意,每个值可以是离散(discrete
)的 categorical
变量(例如,用户编号 continuous
)的变量(例如,时间 unix
时间戳)。连续变量通常在预处理步骤中进行离散化,例如将 day
) 。
有了这些数据,我们可以将推荐系统构建为:试图在给定事件其它值的情况下预测该事件中的某一个值。例如,在 Netflix Prize
中,我们使用
我们可以通过定义 categorical value
)的还是实数值 (real value
),机器学习问题分别是分类问题或回归问题。
在分解模型中,所有输入值都被认为是离散的,并且被嵌入(embedded
)、被相乘(multiplied
)。当我们embed
一个离散值时,我们学习一个稠密的 latent representation
,例如,用户 latent vector
item
latent vector
在矩阵分解模型中,通常基于 embedding
向量。为了符号简便,我们用
神经网络通常还嵌入离散的输入。即,给定一个输入
我们稍后将扩展此定义,从而允许模型将相关的 previous events
也作为网络的输入,就像在序列模型中一样。
为了了解神经推荐器如何利用拼接的特征,我们首先探查( inspecting
)这些网络的典型构建块(building blocks
)。如上所述,神经网络,尤其是前馈神经网络,通常建立在一阶运算(first-order operation
)之上。更准确而言,神经网络通常依赖于 matrix-vector product
)。其中,last layer
的输出)。在前馈神经网络中,全连接层通常具有以下形式:
其中: sigmoid
或 ReLU
),
我们认为这是一个一阶单元,因为该layer
仅仅将
即,输入
的各维度元素之间是加法关系,而不是乘法关系。
尽管具有此类 layer
的神经网络已被证明能够逼近任何函数,但它们的核心计算在结构上与协同过滤的直觉有很大不同。如前所述,矩阵分解模型采用一般形式 (general form
) item
、时间等等)之间的低秩关系(low-rank relationship
)。鉴于低秩模型(low-rank model
)已在推荐系统中取得成功,我们提出以下问题:一阶神经网络对低秩关系的建模效果如何?
为了测试一阶神经网络是否可以建模低秩关系,我们生成人工合成的低秩数据并研究不同大小的神经网络对这些数据的拟合程度。更具体而言,我们考虑一个 m-mode
的张量(即,m
个输入),每个输入都是离散的并且取值空间大小都是
结果是我们的数据是一个秩 scale
(均值为零、经验方差接近 1
)。例如,当 embedding
来表示形式为
注意,这里的
并不是 embedding
,而是用于生成label
。
我们尝试使用这些数据来拟合不同大小的模型。具体而言,我们考虑一个将离散特征嵌入并拼接为输入的模型。该模型有一个带 ReLU
激活函数的 hidden layer
,这在神经推荐系统中很常见,然后是一个 final linear layer
。我们使用 TensorFlow
实现该模型,使用 Adagrad
优化器来优化均方误差( mean squared error: MSE
)损失,并且训练模型直到收敛。我们通过训练数据和模型预测之间的 Pearson correlation (R)
来衡量和报告模型的准确性。
我们使用 Pearson
相关性,使其不受数据方差的微小差异的影响。
我们针对训练数据报告准确性,因为我们正在测试这些模型结构与低秩模式(low-rank pattern
)的匹配程度。
即,我们在训练数据上评估(而不是测试数据),因为我们想评估这些模型对训练数据的拟合程度。
我们使用
Pearson correlation
指标(而不是MSE
),因为该指标不受数据方差的影响。
为了建模低秩关系,我们想看看模型对单个乘法(individual multiplication
)(代表了变量之间的交互interaction
)的逼近程度。所有数据都是在 hidden layer
必须有多大时才能建模两个标量的乘法。在 hidden layer
必须有多大时才能建模三个标量的乘法。
我们使用 embedding
维度无关。我们测试 hidden layer
的隐层维度
控制了:为了得到 label
,我们需要多少个乘法。
实验结果如下图和下表所示,我们发现:
首先,随着隐层维度的增加,模型地更好地逼近数据。鉴于网络逼近乘法的直觉,更宽的网络(即隐层维度更高)应该给出更好的逼近(approximation
)。
其次,我们观察到,当我们将数据的秩
更有趣的是,我们发现即使对于 relation
(即,layer
来学到单个 two-way relation
。
此外,我们发现建模超过 two-way relation
会增加逼近的难度。也就是说,当我们从 MSE
或 Pearson correlation
。
总之,我们观察到 ReLU layer
可以逼近乘法交互( multiplicative interaction
)(即,cross
),但是这样做的效率很低。这激发了对能够更轻松地表达和处理乘法关系(multiplicative relation
)的模型的需求。我们现在将注意力转向使用 RNN
作为 baseline
。这是一个更强的 baseline
,因为与前馈神经网络相比,RNN
可以更好地表达乘法关系。
以上述分析为动力,我们现在描述对 YouTube
的 RNN
推荐系统的改进。RNN
是优秀的 baseline
模型,因为它们已经是二阶神经网络,比上面探索的一阶神经网络复杂得多,并且处于动态推荐系统(dynamic recommender system
) 的前沿。
我们首先概述我们为 YouTube
构建的 RNN
推荐器,然后描述我们如何改进这个推荐器从而更好地利用上下文数据。
公式描述:在我们的 setting
中,我们观察到用户 recurrent neural network: RNN
模型,其中模型的输入是用户
该模型经过训练以产生序列预测
在上面的例子中,如果 video embedding
,uploader embedding
,context embedding
。
注意,这里
是作为 RNN
的输入。对于RNN
而言,这意味着我们基于来预测 。但是我们忽略了 时刻的上下文信息作为输入。
当预测 label
作为输入,但是我们可以使用来自
Baseline RNN
模型的结构:我们的 RNN
模型 diagram
如下图所示。RNN
对一系列动作进行建模。对于每个事件 hidden state vector
更准确而言:
每个事件首先由神经网络 input
)。在我们的 setting
中,这将是一个恒等映射或者全连接的 ReLU layer
。
网络的循环部分是函数:
即,我们使用循环单元(如,LSTM
或 GRU
)从而将上一步的 state
和变换后的输入
为了预测 setting
中,该网络将 RNN
的输出、以及即将进行预测的上下文作为该网络的输入,最后以所有视频的 softmax layer
而结束。这个网络可以包括多个全连接层。
output network
越简单越好还是越复杂越好?个人感觉,如果output network
越复杂,那么迫使GRU
学到的representation
越简单。
上下文特征:该模型成功的核心是结合上下文数据,而不仅仅是观看的视频序列。我们将在下面讨论我们如何利用这些特征。
TimeDelta
:在我们的系统中,有效地结合时间对我们 RNN
的准确性非常有价值。从历史上看,时间上下文 time context
已经以多种方式被纳入协同过滤模型中。在这里,我们使用一种称为 timedelta
的方法:
也就是说,在考虑事件 《Neural Survival Recommender》
和 《What to Do Next: Modeling User Behaviors by Time-LSTM》
中描述的 time representation
。
这里是
而不是 ,因为我们需要刻画当前的 action
对未来的影响(而不是对过去的影响)。
Software Client
:YouTube
视频可以在各种设备上观看,如浏览器、iOS
、Android
、Roku
、Chromecast
等。将这些上下文视为等同(equivalent
)的,则会错失相关的关系(relevant correlation
)。例如,与通过 Roku
设备相比,用户不太可能在手机上观看完整的故事片。类似地,像预告片这样的短视频可能相对更有可能在手机上观看。对 software client
进行建模,特别是它如何与观看决策 watch dicision
交互,这一点很重要。
不同设备上呈现不同的交互特色。
Page
:我们还会在我们的系统中记录观看是从哪里开始的。例如,我们区分从主页开始的观看(即,Home Page Watches
),以及作为被推荐的 follow-up watch
来初始化的观看(即,Watch Next Watches
)。
Watch Next Watches
:当用户已经在观看一个视频时,系统提供一个推荐列表,然后用户从推荐列表选择一个视频并进行观看。
这一点很重要,因为 Home Page Watches
可能对新内容更加开放open
,而 Watch Next Watches
可能是因为用户想要更深入地挖掘某个主题。
Pre-Fusion
和 Post-Fusion
:我们可以通过两种方式将这些上下文特征(统称为 RNN cell
的输出相结合。
我们把在 RNN cell
之前包含上下文特征称作 pre-fusion
,把在 RNN cell
之后包含上下文特征称作 post-fusion
。尽管可能是一个精巧的点( subtle point
),但这个决定可能会对 RNN
产生重大影响。具体而言:
通过 pre-fusion
包含一个特征,该特征将通过它如何修改 RNN
的 state
来影响预测。
但是,通过 post-fusion
包含一个特征,该特征可以更直接地对该 time step
的预测产生影响。
为了解决这个问题,在预测 post-fusion
的特征,并使用 pre-fusion
的特征。这意味着 RNN
状态,但 pre-fusion
特征,并且开始影响 RNN
的状态。
由于
GRU
的递归特性,这里相当于是:cell state
捕获了序列,并且 直接地对该时刻的预测产生影响。
实现&训练:我们的模型在 TensorFlow
中实现,并在许多分布式 workers
和 parameter servers
上进行了训练。训练使用一种可用的反向传播 mini-batch
随机梯度下降算法,即 Adagrad
或 ADAM
。在训练期间,我们使用周期 100
次观看)。这通常会优先考虑最近的观看,因为当学到的模型将被应用于实时流量(live traffic
)时,这种方式(即,优先考虑最近的观看)与预测任务更为相似。
由于可用的视频数量非常多,因此我们限制了我们要预测的可能的视频集合、以及我们建模的这些 uploaders
的数量。在下面的实验中,这些集合的规模从 50
万到 200
万 。 softmax layer
使用sampled softmax
进行训练,每个 batch
采样2
万个负样本。我们在针对 batch
内所有 label
的交叉熵损失中使用这个 sampled softmax
的预测。
即,每个
batch
内的所有样本共享同一组负样本。
在上面对我们的 baseline
模型的描述中应该很清楚,上下文特征的使用通常是作为简单的全连接层的拼接输入( concatenated input
)来进行的。然而,正如我们在前面所解释的,神经网络在建模拼接输入特征之间的交互(interaction
)方面效率很低。这里我们提出一个简单的替代方案。
单个上下文特征:我们从包含单个上下文特征的情况开始。为了清楚起见,我们将时间作为上下文特征的一个例子。我们并不是将该特征与其它相关特征拼接起来作为输入从而执行融合,而是在网络的中间执行一个逐元素乘积( element-wise product
)。也就是说,我们执行:
其中,我们使用零均值的高斯分布来初始化 1
的高斯分布。
乘法项的均值为 1
,这可以解释为在 representation
上提供一个 mask
机制或者一个注意力机制的上下文。但是,它也 enable
了输入的previous watch
与 time
之间的低秩关系(矩阵分解代表了一种低秩关系)。
注意,我们也可以在 RNN
之后应用这个操作:
《A multiplicative model for learning distributed text-based attribute representations》
中提供的技术可以被视为一种特殊情况,其中乘法关系(multiplicative relation
)与 softmax
函数一起被包含在网络的最顶部,从而改善 NLP
任务。在这种情况下,该操作可以被视为张量分解,其中一种模态的 embedding
是由神经网络产生的。
多个上下文特征:在许多情况下,我们想要包含不止一个上下文特征。当包含多个上下文特征时,例如时间
我们使用这种形式有几个不同的原因:
使用零均值的高斯分布来初始化 1
,因此可以类似地充当 hidden state
的 mask/atttention
机制。
通过将这些项相加,我们可以捕获 hidden state
和每个上下文特征之间的 2-way
关系。这遵循了分解机( factorization machine
)设计中的观点。
使用简单的加法函数易于训练。像
根据前文的结论,我们是否可以把常规的
input field
也视为上下文,然后进行latent cross
,从而更好地捕获2-way
关系?更进一步地,我们是否可以将
input
拆分为多个field
,网络的每一层利用一个field
并进行latent cross
,并且最重要的field
靠近输出、最不重要的field
靠近输入?甚至更进一步,我们是否可以用
attention
机制自动筛选出哪些是最重要的、哪些是不重要的,然后每一层选择不同的field
进行latent cross
?
效率:我们注意到使用 latent cross
的一个显著优势是:它们的简单性和计算效率。使用 embedding
,可以在 latent cross
,并且不会增加后续 layer
的宽度。
我们进行两个实验:
第一个实验是在时间作为唯一上下文特征的数据集上,我们比较了几个模型。
第二个实验是在我们的生产模型上,并根据我们如何融合上下文特征来探索相对的效果提升。
数据集:我们使用一个数据集,该数据集的观看序列来自于数亿用户。用户被拆分为训练集、验证集、测试集,其中验证集和测试集都有数千万的用户。
观看被限制在 50
万个流行视频的集合中。所有用户的序列中至少有 50
个观看。序列是由观看视频的列表、以及每个观看的时间戳给出的。任务是预测用户序列中最近 5
次观看。
评估指标:在测试集上的 Mean-Average-Precision-at-k (MAP@k)
,其中
模型配置:对于这个实验,我们使用带 LSTM
的 RNN
。我们在循环单元之前或之后没有 ReLU cell
,并使用一个 pre-determined
的 hierarchical softmax: HSM
来预测视频。在这里,我们使用序列中除了第一个观看之外的所有观看作为训练期间的监督。模型使用 ADAM
优化算法来训练。
由于时间是该数据集中唯一的上下文特征,我们使用视频 embedding
timedelta
值 latent cross
,使得 LSTM
的输入为 pre-fusion
的例子,我们称之为 RNNLatentCross
。
注意,这里仅评估了
pre-fusion
的效果。
baseline
方法:我们将上述 RNNLatentCross
模型与其它 baseline
方法进行比较:
RRN
:使用 RNN
的输入。
RNN
:直接在 RNN
,没有时间信息作为输入。
BOW
:作用在用户观看历史的视频集合、以及用户的人口统计学特征上的 bag-of-watches
模型。
BOW+Time
:一个三层的前馈神经网络模型,将 bag-of-watches
、最近观看的三个视频中的每一个、week
这些特征的拼接作为输入。该模型使用 softmax
对与最近观看 last watch
共现次数最多的 50
个视频进行训练。
Paragraph Vector (PV)
:使用 《Document embedding with paragraph vectors》
学习每个用户的无监督 embedding
(基于用户人口统计,以及历史的观看)。使用学到的 embedding
以及最后一个观看的 embedding
作为一个单层前馈神经网络分类器的输入,其中该分类器通过 sampled softmax
来训练。
Cowatch
:根据序列中的 last watch
推荐共现次数最多的其它视频。
除非另有说明,否则所有模型都使用一个 hierarchical softmax
。所有模型及其超参数都进行了调优。注意,只有 BOW
和 PV
模型使用了用户人口统计学数据。
实验结果:我们在下表中报告了该实验的结果。从中可以看到,我们的模型在 Precision@1
和 MAP@20
上都表现最佳(注意,MAP@1
就是 Precision@1
)。
可能更有趣的是模型的相对性能。我们在 BOW
模型(对比 BOW with time
)和 RNN
模型(对比 RNN with time
)中都观察到建模时间的重要性。
此外,我们观察到执行 latent cross
而不是仅仅拼接
配置:在这里我们使用用户观看的生产数据集(production dataset
)。我们的序列由观看的视频以及视频创建人(即uploader
)组成。我们使用了百万级最近流行的视频和 uploader
的更大的 vocabulary
。
我们根据用户和时间将数据集拆分为训练集和测试集。
首先,我们将用户分为两组:90%
的用户在我们的训练集中,10%
在我们的测试集中。
其次,为了根据时间来拆分,我们选择截止(cut-off
)时间 vocabulary
是基于
我们的模型考虑嵌入和拼接上面定义的所有特征作为输入,然后是一个 256
维的 ReLU
层、一个 256
维的 GRU cell
,然后是另一个 256
维的 ReLU
层,最后再输入到 softmax
层。如前所述,我们使用区间 100
个观看作为监督信息。在这里,我们使用 Adagrad
优化器在多个 workers
和 parameter servers
上进行分布式训练。
为了测试我们的模型,我们仍然使用 MAP@k
指标。对于不在我们 vocabulary
中的观看,我们总是将预测标记为不正确。这里报告的评估 MAP@k
得分是使用大约 45000
个观看来度量的。
Page
作为上下文的价值:我们通过以不同方式融合 Page
来开始分析准确性的改善。具体而言,我们比较了不使用 Page
、使用 Page
与其它特征拼接来作为输入、使用 Page
来执行post-fusion latent cross
。注意,当我们将 Page
作为被拼接的特征时,它在 pre-fusion
和 post-fusion
都被拼接。
如下图所示,使用 Page
来执行 latent cross
可以提供最佳准确性。此外,我们看到同时使用 latent cross
和特征拼接并没有额外提高准确性,这表明 latent cross
足以捕获 Page
的信息。
整体提升:最后,我们测试了在完整生产模型之上添加 latent cross
对准确性的影响。在这种情况下,模型知道每次观看的 page
、设备类型、时间(the time
)、观看时长(watch time
)、视频年龄(watch age
)(即,视频从上传到现在过了多久)、uploader
。具体而言,我们的 baseline YouTube
模型使用 page
、设备类型、观看时长、timedelta
数据作为 pre-fusion
的拼接特征,并且还使用 page
、设备类型、视频年龄作为 post-fusion
的拼接特征。
为什么
pre-fusion
特征和post-fusion
特征不同、latent-cross
的特征也不同?个人猜测是经过反复实验得到的结论。
我们测试包含 timedelta
和 page
作为 pre-fusion
的 latent cross
,以及设备类型和 page
作为 post-fusion
的 latent cross
。从下图可以看到,尽管所有这些特征都已通过拼接包含在内,但将它们作为 latent cross
可以进一步提高 baseline
模型的准确性。这也证明了具有多个特征的 pre-fusion
和 post-fusion
能够共同工作并提供强大的准确性提升。
我们在下面讨论了这项工作提出的一些问题以及对未来工作的影响。
DNN
中的离散关系(Discrete Relation
):虽然本文的大部分内容都集中在 enable
特征之间的乘法交互( multiplicative interaction
),但是我们发现神经网络也可以逼近离散交互( discrete interaction
),这是factorization
模型更困难的领域。例如,在 《Improving User Topic Interest Profiles by Behavior Factorization》
中,作者发现当用户 item
与 “一阶DNN的挑战” 的实验类似,我们按照 pattern
1
的矩阵。我们遵循与 “一阶DNN的挑战” 相同的实验程序,测量具有不同隐层深度、不同隐层宽度的网络的 Pearson correlation (R)
。我们以 0.01
的学习率训练这些网络,比上面使用的学习率小十倍。作为 baseline
,我们还测量了不同秩的张量分解(Pearson
相关性。
从下图可以看出:
在某些情况下,深度模型获得了相当高的 Pearson
相关性,这表明它们实际上能够逼近离散交叉(discrete cross
)。同样有趣的是,学习这些交叉需要具有宽隐层的深度网络,对于数据规模而言特别大(即,对于小数据集就需要很宽的网络了)。此外,我们发现这些网络很难训练。
baseline
张量分解性能很有趣。我们观察到分解模型可以很好地逼近数据,但是需要相对较高的秩。然而,即使在这么高的秩下,张量分解模型需要的参数也比 DNN
少,而且更容易训练。
因此,与前面的结果一样,DNN
可以逼近这些 pattern
,但这样做可能很困难,并且模型包含低秩交互(low-rank interaction
)有助于提供易于训练的逼近(approximation
)。
二阶 DNN
:阅读本文时自然要问的一个问题是,为什么不尝试更宽的层、或者更深的模型、或者更多的二阶单元(second-order unit
)(如 GRU
和 LSTM
)?所有这些都是合理的建模决策,但根据我们的经验,模型的训练变得更加困难。latent cross
方法的优点之一是它易于实现和训练,同时仍然提供显著的性能提升,即使与 LSTM
和 GRU
等其它二阶单元结合使用也是如此。
整个深度学习的趋势似乎是使用更多的二阶交互。例如,这在注意力模型(attention model
)和记忆网络( memory network
)中很常见。虽然更多二阶交互导致更难训练,但我们相信这项工作展示了神经推荐系统在这个方向上的前景。
如果将加法类比于
or
操作、将乘法类比于and
操作,那么这意味着推荐算法会涉及大量的and
,而and
难以设计和优化?