WWW2020 | 一种未来数据辅助训练的会话推荐方法

本文提出GRec,一种基于会话的推荐系统,利用间隙填充机制解决未来数据建模中的数据泄露问题,提升推荐准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


来源 | 知乎

链接 | https://zhuanlan.zhihu.com/p/126201530

前言

该文的亮点是引入了用户点击目标Item之后的浏览数据(文中称为未来数据,Future Data),但引入未来数据的过程中传统的Encoder-Decoder框架会存在数据泄露(Data Leakage)的问题,即预测目标Item的过程中输入数据中存在该Item,因此提出了一种间隙填充的机制(Gap-filling)来进行缓解。

 摘要

基于会话的推荐系统近年来受到了广泛的关注。为了捕获顺序依赖项,现有的方法要么采用数据扩充技术,要么采用从左到右的自回归训练。由于这些方法的目的是对用户行为的顺序性进行建模,因此在构建目标交互的预测模型时忽略了目标交互的未来数据。然而,本文认为在目标交互之后的未来交互(在训练期间也可用)提供了关于用户偏好的有价值的信号,可以用来提高推荐质量。

然而,正确地将未来的数据集成到模型训练中是不容易实现的,因为它违反了机器学习的原则,很容易导致数据泄漏。为此,我们提出了一种新的编码-解码器框架——基于间隙填充的推荐器(GRec),它通过一个间隙填充机制来训练编码器和解码器。具体地说,编码器采用部分完成的会话序列(其中一些item被有目的地屏蔽)作为输入,并且解码器根据编码的表示来预测这些屏蔽项。

本文使用具有稀疏内核的卷积神经网络实例化了通用的GRec框架,同时考虑了准确性和效率。作者在两个涵盖短期、中期和长期用户会话的真实数据集上进行了实验,结果表明GRec显著优于最先进的顺序推荐方法。更多的实证研究验证了在我们的GRec框架下建模未来环境的高实用性。

本文的关键词有趣:顺序推荐,编码器和解码器,Seq2Seq学习,间隙填充,数据泄漏

感觉有趣是因为第一次在推荐场景中见到数据泄露、间隙这种词(当然也不知道我翻译的是否准确,原文中是用Gap-filling和Data Leakage),大概是我读书太少了,还是要多学!

  1.背景介绍

基于会话的推荐系统(SRS)已经成为推荐领域中一个新兴的主题,它的目标是根据用户会话中交互项的有序历史来预测下一项。虽然深度神经网络的最新进展在建模用户短期兴趣转移方面是有效的,但捕获长期会话中的顺序依赖关系仍然是一个基本挑战。

在实践中,长期的用户会话广泛存在于微视频和新闻推荐等场景中。例如,TikTok上的用户可以在30分钟内观看100个微视频,因为每个视频的平均播放时间只有15秒。

一般来说,从序列数据中训练推荐模型有两种常用的策略:数据扩充和自回归训练。

具体来说,数据扩充方法,如改进后的GRU4Rec,利用目标序列的前缀进行数据预处理,生成新的训练子会话,然后由推荐者预测序列中的最后一项。自回归方法以端到端方式对整个序列的分布建模,而不是只对最后一项建模。这个想法导致了一个典型的从左到右风格的单向生成模型,称为NextItNet 。这两种策略具有相似的直觉,即在构建目标交互的预测函数时,只考虑其过去的用户行为(本文也称之为“上下文”)。

在标准的顺序数据预测中,根据过去的数据预测目标item是一种简单而合理的选择。然而,在顺序性推荐中,我们认为这样的选择可能会限制模型的能力。关键原因是,虽然用户行为是以顺序数据的形式出现的,但顺序依赖关系可能并没有严格地保持。例如,用户在购买手机后,可能会在会话中点击手机套、耳机和屏幕保护器,但三者之间不存在顺序依赖关系,换句话说,用户很可能会按任意顺序点击这三者。

因此,并不一定要将用户会话建模为严格的序列。其次,推荐的目的是准确地估计用户的偏好,使用更多的数据有利于偏好的估计。由于目标交互后的未来数据也证明了用户的偏好,因此有理由相信对未来数据进行建模可以帮助建立更好的目标交互预测模型。然而,未来的数据建模是一个挑战,因为它违背了机器学习的原则,如果处理不当会导致数据泄漏。以编码器-解码器(ED)神经结构为例,在序列数据建模中得到了广泛的应用。如图1(a)所示,在机器翻译中,当按顺序预测一个目标词时(也就是 句子),编码器将两边的单词作为输入源。由于源词和目标词来自不同的领域,因此不存在数据泄漏问题。但是,如果我们将相同的ED体系结构应用于用户会话建模,如下面所示图1 (b),数据泄漏问题不可避免。这是因为源项和目标项来自相同的域,因此目标项(由解码器预测)恰好出现在的输入中。

为了解决上述问题,我们提出了一种新的SRS方法来模拟未来的上下文:用于顺序性推荐的基于间隙填充的编码-解码器框架,或简称为GRec。GRec对ED设计进行了修改,使其适合未来的数据建模,而不会出现数据泄漏:编码器和解码器通过一个间隙填充机制进行联合训练,该机制的灵感来自于最近开发的预训练语言模型。具体来说,用户会话中的一部分项是通过填充间隙符号(如“__”)来删除的。

编码器以部分完全序列作为输入,解码器根据编码的表示模型对这些间隙项进行预测。通过这种方式,GRec可以强制编码器感知由未屏蔽操作表示的一般用户首选项,同时强制解码器根据过去的上下文和已编码的一般用户首选项执行下一个项生成。

本文贡献如下:

  1. 本文强调了在基于会话的推荐系统中建模未来上下文的必要性,并开发了一个通用的没有数据泄漏的神经网络框架GRec。

  2. 本文使用具有稀疏内核的卷积神经网络来指定GRec,统一了序列生成的自回归机制和编码的双边上下文的优点。

  3. 本文提出了一种解码器中具有倒置瓶颈架构的投影神经网络,它可以增强编码器和解码器之间的表示带宽。

  4. 本文在两个真实的数据集上进行了大量的实验,证明了GRec在利用基于会话的推荐系统的未来上下文方面的有效性。

2.相关论文介绍

1.基于会话推荐的Top-N问题

在SRS中,“session”这个概念被定义为在某一时间或某一时间段内发生的item集合(指任何对象,如视频、歌曲或查询)。例如,在一个小时或一天内浏览的网页列表和观看的视频集合都可以视为一个会话。

形式上,让  表示一个按时间顺序排列项目的用户会话,其中  定义了表示在会话中总共有n个项,其中一个已单击项的索引。SRS的任务是训练一个模型,对于给定的前缀会话数据,  ,它可以为将发生在未来的项目生成 分布 ,其中  。  表示项目  在下一次单击事件中发生的概率值。

在实践中,SRS通过从  选择头N个(例如,N = 10)item,称为Top-N个基于会话的推荐。

2. Left-to-Right-style算法

在本节中,我们主要回顾了从左到右的顺序推荐模型,包括但不限于Improve GRU4Rec(IGRU4Rec的简称)、Caser和NextItNet。其中IGRU4Rec和Caser属于数据扩充方法,如图2 (a)所示,而NextItNet是典型的AR生成模型,如图2 (b)所示。

GRU4Rec、NextLtNet可通过数据扩张(DA)和自回归模型(AR)可通过进行训练。

模型算法

在介绍最终的解决方案之前,首先需要研究一些结合未来上下文的传统方法。然后,我们阐明了这些方法在用于生成任务时的潜在缺陷。在分析的基础上,我们提出了基于间隙填充(或填空)的编码器-解码器生成框架,即GRec。下面,我们将使用NextItNet中使用的扩展卷积神经网络实例化所提出的方法,同时考虑准确性和效率。

1

双向数据扩充

利用未来数据的一种直接方法是反转原始用户输入序列,并通过同时输入和反转输出来训练推荐模型。这种类型的双向数据扩充方法已经在几个NLP任务中得到了有效的验证。基于数据扩充和增强现实方法的推荐模型无需修改即可直接应用。例如,我们通过使用NextItNet(用NextItNet+表示)来展示这个方法,如下所示:

但是,如果用于生成item的任务,上述双向数据扩充可能有两个潜在的缺点:

(1) item  的左右上下文是由相同的一组参数或相同的NextitNet卷积内核建模的。而在实践中,左右上下文对  的影响可能非常不同。也就是说,从这个角度来看,相同的参数表示并不准确。

(2) 左右两种上下文的单独训练过程容易导致次优性能,因为模型训练右上下文时,对左上下文学习的参数可能会有较大的修改。因此,更好的解决方案是:

  • 单个优化目标同时包含左右上下文

  • 左右上下文由不同的模型参数集表示

2

双向NextItNets (tNextItNets)

在这里,我们引入了双向NextItNets,它在向前方向建模过去的上下文,在向后方向建模未来的上下文。与前向NextItNet类似,后向NextItNet以反向的方式运行一个用户会话,根据未来的上下文来预测前一项。我们要做的是保证被预测的item不会被高层神经元访问。

后向NextItNet的公式为: 前向和后向NextItNets都会在每个卷积层为一个用户会话生成一个隐藏矩阵。让  和 为顶层NexitItNet分别从正向和反向计算得到的item隐藏向量  。为了形成双向NextItNets,我们将  和  串联起来,即,  。为了在目标函数中结合两个方向,我们最大化了两个方向的联合对数似然。

参数Θ由四部分组成:底层项目嵌入  ,卷积的内核NextItNet  , 它包括  和  和softmax层的权重  。这里的思想与最近的deep context - alized word representation (ELMo)模型具有类似的想法,除了ELMo是通过Bi-RNN编码器来设计单词理解或特征提取任务,而我们使用双向NextItNets来解决生成任务。

虽然tNextItNets可以解决双向数据扩充提到的训练问题,但是在生成阶段,未来的环境实际上是不可接近的。也就是说,后向NextItNet在用于推理时是无用的。训练和预测之间的差异可能会严重影响最终的推荐性能,因为为双向NextItNets学习的最优参数可能在很大程度上对于单向NextItNets是次优的NextItNet。另一个缺点是,双向NextItNets本质上是独立训练的从左到右和从右到左的模型的浅层连接,在建模复杂的上下文表示时,它们的表现力有限。因此,尽管推荐的双向NextItNet利用了更多的上下文,但它是否比NextItNet表现得更好还是未知的。

3

基于间隙填充的ED框架

在本小节中,我们介绍GRec的一般框架和神经结构。

1. Seq2seq for SRS

首先,我们介绍SRS的seq2seq学习的基本概念。定义  作为一个序列对,其中,  表示具有  个item的的用户输入会话序列,  表示输出序列,并且  被认为是源和目标域。与标准的seq2seq场景(即,图1 (a)),我们在SRS任务中有以下两个特殊关系(见图1 (b)):

seq2seq模型的目标是学习一组参数  来描述条件概率  ,  通常采用对数似然作为目标函数,在链式法则分解之后,概率可以进一步表示为自回归方式:

3.2 General Framework of Pseq2pseq

可以看出,利用上一节中的最后一个式子来设计一个seq2seq学习模型是很重要的,因为所预测的item,例如  ,可以通过  从编码器网络中间接看到。

为了解决这个问题,我们通过在ED架构中应用间隙填充的思想(最初是为语言[19]任务设计的)来提出masked-convolution操作。这里,我们假设用户会话中的项是句子中的单词。相应地,我们可以将序列中的一些令牌随机替换为间隙符号"__"。填补空白的目的是预测这些丢失的标记的真实性。

GRec包括一个修改版的编码器和解码器,以及一个注入解码器网络的投影模块。编码器和解码器都使用扩展的卷积神经网络进行描述,尽管它们可以简单地替换为递归和注意力网络。编码器和解码器的主要区别在于编码器网络建立在深度双向CNN的基础上,而解码器网络建立在深度因果CNN的基础上。为了增强编码器和解码器之间的品牌宽度,我们将解码器置于编码器计算的代表之上,并在两者之间注入一个投影网络。这与将编码器表示压缩为固定长度的向量或通过注意机制对齐它们的模型形成了对比。

形式上,给定一个用户会话序列  ,我们将  表示为  的偏导,其中,item的部分,即  随机替换为空白掩模符号("__")。GRec以修改后的项目序列  作为输入序列,通过在每个用户会话中预测  来优化pseq2pseq模型。GRec的目标函数  被定义为:

 由项目嵌入的编码器  和解码器  卷积编码器  和解码器  的权重,权重的投影模块  和softmax层  。你可能会发现  和  之间有重叠的数据。事实上,由于编码器和解码器的item嵌入是不共享的,因此编码器和解码器中的重叠标记可以表示不同的含义。

我们使用图3展示GRec的目标函数的图形化示例。GRec的解码器将预测项目(即, )在编码器部分被屏蔽。如图3所示,GRec需要一个输入序列  ,出数和产生 作为输出序列。

以生成项  为例,预测,GRec可以利用部分序列的因果关系  ,同时通过编码器利用item  的表征,其中,  是  的上下文。为清晰起见,我们将NextItNet (seq2seq)和GRec (pseq2pseq)在模型生成方面的比较如下:

通过这种设计,GRec可以利用过去和未来的上下文,而不会造成数据泄漏。

3.3 GRec Architecture

下面,我们将介绍GRec的组件:嵌入层、编码器、解码器、投影器和softmax层。

[1] Embedding Layers

所提出的GRec具有两个不同的嵌入层,即编码器嵌入矩阵  和解码器嵌入矩阵  ,其中,  是item的数量,  是嵌入维度。具体地说,GRec的编码器嵌入了通过查找来自  中的被mask的用户输入序列  ,由  表示,而解码器嵌入了来自  原始输入序列  ,被  。

在进行嵌入查找操作后,我们将编码器和解码器的嵌入表示如下:

其中,  表示  用户序列,  表示空白符号的嵌入向量,也就是在编码器嵌入“___”。

[2] Encoder:深双向CNNs的间隙填充

受NextItNet的启发,我们利用一系列堆叠的一维扩展卷积层实现了编码器网络。为了减轻梯度消失的问题,我们每隔两层用残差块包裹起来。

与NextItNet不同,编码器的卷积操作没有因果关系。每一个较高层的神经元都能同时看到左右两边的环境。通过填补空白的设计,这些神经元被迫理解序列中未被掩蔽的上下文。还值得一提的是,所提出的间隙填充机制是动态的和随机的,它掩盖了不同训练批次中项目序列的不同部分。在形式上,我们将编码器网络的输出定义为两层叠加,如图3所示:

图3:带有两个卷积层的GRec的图形说明。

其中,  表示非因果CNNs的函数,定义为:

 和  表示非线性激活函数和layer-normalization[1],ψ1 和ψ2分别为1-扩频和2-扩频的非因果型CNNs。在实践中,可以多次重复基本的编码器结构来捕获长期和复杂的依赖关系。

[3] Decoder:通过间隙预测的深度因果CNNs

解码器由嵌入层  ,投影模块和因果卷积模块组成。CNN组件严格遵循NextItNet,只是允许它估计编码器中屏蔽item的概率,而不是NextItNet中的整个序列。同时,在执行因果CNN操作之前,我们需要将编码器的最终输出矩阵和解码器的嵌入矩阵进行汇总,然后将其传递到投影模块网络中。在形式上,解码器的最后一个隐含层(在softmax层之前)可以表示为:

其中,

其中,上图中1和2为投影层和因果卷积层的输出。

[4] Projector:连接编码器和解码器

为了使编码器和解码器之间的表征带宽最大化,我们提出在解码器中增加一个投影网络(或简称投影器)。具体来说,投影器是一个倒瓶颈残差架构,由上投影层、激活函数层、下投影层和一个上投影和下投影层之间的跳跃连接。

投影器首先利用  (本文中  )卷积运算将原始的  维通道投影到更大的维度上。然后利用非线性将  通道投影到原  维上,并进行  卷积运算。投影器的输出是这样的:

其中,

其中,  表示代表上映射和下映射射操作。

[5] 模型训练与生成

GRec只考虑掩蔽位置,而不考虑完整的序列。因此,我们首先通过从  检索掩蔽位置的隐藏向量来执行查找表。然后,我们将这些向量输入到一个全连通的神经网络层中,该神经网络层将这些向量从三维潜在空间投射到三维软极大空间中。计算得到的掩蔽项  的概率为

最后,我们可以通过梯度上升(或是目标函数的负值上的梯度下降)来优化目标函数。由于GRec只估计每个批中的item的一部分,因此与nextitnet样式的模型(估计整个序列)相比,它需要更多的训练步骤来聚合,但是与基于从左到右数据扩充的模型(例如,Caser)相比,它需要更少的步骤(只估计最后一个项目)。

一旦模型得到良好的训练,我们就可以使用它来生成项目。与训练阶段不同,在此期间编码器必须屏蔽一定百分比的项目,GRec可以直接计算最后一层在推理时的最终位置的softmax,而无需执行掩码操作。

喜欢的话点个在看吧????

<think>嗯,用户想了解AI辅助推荐系统的实现和应用。首先,我得回忆一下推荐系统的基本原理。推荐系统通常分为协同过滤、内容推荐和混合推荐几种类型。协同过滤又分为基于用户和基于物品的,可能需要用矩阵分解或者深度学习的方法来处理稀疏数据。内容推荐则需要分析物品的特征,比如文本、图像,可能需要用到自然语言处理或计算机视觉技术。混合推荐结合两者的优点,提升效果。 接下来是具体的实现步骤。数据收集部分,用户行为数据比如点击、购买记录,内容数据比如商品描述、标签。数据预处理可能需要处理缺失值、标准化,还要做特征工程,比如将文本转换成TF-IDF向量或者词嵌入。模型选择方面,传统算法像协同过滤的SVD,或者更高级的如神经网络、因子分解机。深度学习模型如Wide & Deep、YouTube的DNN结构可能适用。然后模型训练需要选择合适的损失函数,比如交叉熵,优化器如Adam,防止过拟合可以用正则化或Dropout。部署阶段要考虑实时推荐,用Flask或Django搭建API,结合Redis缓存,可能需要分布式框架如Spark或TensorFlow Serving。 应用场景的话,电商推荐比如亚马逊的商品推荐,视频平台如Netflix的影片推荐,社交媒体如Facebook的好友推荐,新闻资讯如头条的个性化推送,还有教育平台的课程推荐。这些都是常见的例子。 挑战和优化部分,冷启动问题可以通过迁移学习或引入外部数据,实时性需要流处理技术如Kafka,可解释性可能用SHAP或LIME方法,隐私保护方面需要联邦学习或差分隐私技术。 根据用户提供的引用,引用[1]提到AI技术如自然语言理解和知识表示对CAI系统的提升,这可能关联到推荐系统中的内容分析。引用[2]指出AI辅助研发能加速方案设计,这和推荐系统的优化相关。引用[4]中的医疗影像辅助诊断系统虽然不同,但技术如模型优化和比赛验证的经验可能适用。引用[3]关于欧盟监管,提醒在推荐系统中需注意隐私和数据合规。 用户可能想了解推荐系统的技术细节和实际案例,可能需要进一步解释算法差异,或者如何评估推荐效果。潜在的问题可能包括如何处理数据稀疏性,冷启动的解决方案,以及如何平衡准确性和多样性。需要确保回答覆盖技术实现和应用实例,同时引用合适的参考资料支持观点。</think>### AI辅助推荐系统的实现与应用 #### 一、实现原理与技术方法 1. **核心算法分类** AI推荐系统主要依赖以下算法类型: - **协同过滤**:通过分析用户历史行为(如评分、点击)挖掘相似用户或物品,分为基于用户(User-Based)和基于物品(Item-Based)的推荐。例如,矩阵分解(Matrix Factorization)可将用户-物品交互矩阵分解为低维隐向量,解决数据稀疏性问题[^1]。 - **内容推荐**:基于物品特征(如文本、标签、图像)生成推荐,需结合自然语言处理(NLP)或计算机视觉(CV)技术。例如,用BERT模型提取文本语义特征[^2]。 - **混合推荐**:融合协同过滤与内容推荐,例如Wide & Deep模型结合记忆(历史行为)与泛化(内容特征)能力[^2]。 2. **实现步骤** - **数据收集**:用户行为数据(点击、购买)、物品元数据(描述、标签)、上下文信息(时间、地点)。 - **特征工程**: - 数值特征:归一化处理 - 文本特征:TF-IDF或词嵌入(如Word2Vec) - 图像特征:CNN提取视觉特征 - **模型训练**: ```python # 示例:基于PyTorch的矩阵分解 import torch.nn as nn class MatrixFactorization(nn.Module): def __init__(self, n_users, n_items, latent_dim): super().__init__() self.user_embed = nn.Embedding(n_users, latent_dim) self.item_embed = nn.Embedding(n_items, latent_dim) def forward(self, user, item): return (self.user_embed(user) * self.item_embed(item)).sum(1) ``` - **部署与优化**:使用TensorFlow Serving或Kubernetes部署模型,结合A/B测试验证效果。 --- #### 二、典型应用场景 1. **电商平台** - **案例**:亚马逊的“猜你喜欢”通过协同过滤与实时行为分析,提升30%的转化率[^2]。 - **技术细节**:引入会话感知推荐(Session-Based),使用GRU捕捉短期兴趣变化。 2. **视频流媒体** - **案例**:Netflix结合用户观看历史与视频内容特征(如导演、演员),减少用户选择时间。 - **创新点**:多模态融合(字幕、画面特征)提升长尾内容覆盖率。 3. **社交媒体** - **案例**:Facebook好友推荐基于社交图谱嵌入(Graph Embedding),分析共同兴趣与社交关系[^3]。 4. **教育领域** - **案例**:Coursera通过课程内容标签(如“编程入门”)与学习进度匹配,个性化推荐学习路径[^4]。 --- #### 三、关键挑战与解决方案 | 挑战 | 解决方案 | 技术工具 | |---------------------|---------------------------------------------|--------------------------| | **冷启动问题** | 迁移学习(预训练模型)+ 知识图谱关联 | HuggingFace Transformers | | **实时性要求** | 流式计算(Apache Flink)+ 增量学习 | Redis实时特征存储 | | **可解释性不足** | SHAP值分析 + 规则引擎辅助决策 | LIME解释工具包 | | **隐私保护** | 联邦学习(Federated Learning)+ 差分隐私 | PySyft框架 | --- #### 四、未来发展趋势 1. **多模态融合**:结合语音、视频等多维度数据,例如抖音基于音频节奏推荐背景音乐。 2. **因果推理推荐**:分析用户决策因果链,避免“信息茧房”,如阿里巴巴的因果图模型。 3. **合规化发展**:遵循欧盟《人工智能法案》(引用[3]),在医疗等敏感领域强化数据脱敏与审计追踪。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值