PSGAN(2019SIGIR)

在这里插入图片描述

介绍

传统的搜索引擎采用一刀切的策略。它们对任何用户的查询都使用相同的排名函数。众所周知,该策略无法满足同一查询背后用户的不同搜索信息需求(比如apple fruit 和 apple phone)。现有的个性化搜索方法大多从用户的搜索历史中提取点击局部特征,并根据查询结果和诱导的用户兴趣计算文档相关性。但是,这些功能通常是手动设计的。很难期望这些特性完全涵盖了重要因素。深度学习模型不需要人工设计和提取,就可以从训练数据中自动学习文档的表示、用户配置文件和其他相关特征。它们还可以涵盖更广泛的功能。
然而,对于深度学习方法来说,训练数据是一个关键问题,它涉及大量的参数,需要大量的训练数据。这对于个性化搜索来说是一个非常具有挑战性的问题,因为个性化模型严重依赖于用户的个人数据,而特定用户的搜索历史总是有限的。每次搜索只有几次点击。此外,可用的数据是噪声。例如,如果用户点击了一个搜索结果而不是另一个搜索结果,通常认为前者比后者更可取,这可能并不总是正确的。这是因为用户可以只点击一些相关文档,也可以点击不相关的文档。盲目使用所有这些数据可能会导致错误的用户配置文件。在这种情况下,选择能带来最有用信息的适当培训数据是很重要的
本文方法基于GAN,其中包含一个生成器和一个鉴别器。通过对抗训练的minimax博弈,generator试图生成高质量的反例来迷惑鉴别器,而鉴别器则为生成器提供reward,以帮助生成器调整数据分布。然而,由于文本数据的离散性,不可能生成一个作为负样本的自由文本向量

为什么GAN不适合处理离散数据?https://blog.csdn.net/qq_29997655/article/details/82711333

Idea

本文设计了一个通用的个性化搜索框架PSGAN。两个模型:

  1. 第一种方法让生成器根据当前查询的相关性分布和用户兴趣直接从候选文档中选择一个负样本。称之为基于文档选择的个性化搜索GAN模型
  2. 第二种方法首先生成与用户意图(通过历史信息)和当前查询一致的相关查询,然后通过生成的查询计算文档的相关性。我们希望通过生成的查询可以更好地估计文档的相关性,因为信息丰富。称之为基于查询生成个性化搜索GAN模型

PSGAN

Problem Formulation

在这里插入图片描述
表1列出了本文中使用的符号。假设给定一组查询 Q Q Q,每个查询 q q q ∈ ∈ Q Q Q由用户 u u u发出。用 U U U来表示当前查询 q q q之前 U U U的所有历史搜索行为(搜索sessions)。我们根据时间将 U U U中的sessinos分为两部分:过去的session L u L_u Lu和当前会话 S M S_M SM,即 U U U= L u L_u Lu∪{ S M S_M SM}。我们有 L u L_u Lu={ S 1 S_1 S1,····, S i S_i Si,···, S S S M _M M − _− 1 _1 1},其中 M M M是与 u u u相关联的session数目。每个session S i S_i Si由一系列查询组成,每个查询包括一个查询字符串和搜索引擎返回的文档列表。例如,如果第 i i i个session中有 n n n个查询,那么 S i S_i Si={( q q q i ^i i 1 _1 1, D D D i ^i i 1 _1 1),…,( q q q i ^i i j _j j, D D D i ^i i j _j j),…,( q q q i ^i i n _n n, D D D i ^i i n _n n)。 S M S_M SM包括在同一session中在 q q q之前发出的查询。在不引起歧义的情况下,本文的其余部分省略了符号的上标和下标。用 d d d来表示用户 u u u发出的查询 q q q的结果中的文档,其历史搜索数据用 U U U表示

discriminator

尝试学习 U U U q q q d d d之间的相关分布 f f f ϕ ϕ ϕ d d d q q q U U U),从相关文档中采样的数据被视为正示例,生成器生成的数据被视为负示例。

generator

尝试学习一个分布 p θ p_θ pθ d d d | q q q U U U r r r)逼近 p p p t _t t r _r r u _u u e _e e d d d | q q q U U U r r r),并根据学习的 p θ p_θ pθ生成反例来迷惑鉴别器。

PSGAN - the Framework

PSGAN中的minimax博弈可以描述为:给定一个用户发布的查询,generator试图生成一个看起来符合用户意图的(否定)文档,并欺骗鉴别器;而鉴别器则试图在相关文档和generator生成的否定文档样本之间进行清晰的区分。形式上,给定一组查询Q,有:
在这里插入图片描述
discriminator指定为:
在这里插入图片描述

 注意,与IRGAN不同,PSGAN有一个额外的组件U,用于建模用户概要文件。
Optimizing Discriminator.

在这里插入图片描述
将上述学习形式转化为成对训练:
在这里插入图片描述
d + d_+ d+为真实分布的采样, d θ d_θ dθ是generator的生成分布的采样。不改变优化目标的情况下,可以写成:
在这里插入图片描述
为了迫使鉴别器更加注意那些难以区分的文档,为每个文档对分配一个权重。权重越大,表示negative文档越接近相关文档。所以应该引起更多的关注。根据生成模型产生的生成概率,用 r θ r_θ rθ加权( d + d_+ d+ d θ d_θ dθ):
在这里插入图片描述
其中 r θ r_θ rθ d + d_+ d+ d θ d_θ dθ)= p θ p_θ pθ d θ d_θ dθ| q q q U U U r r r − − p θ p_θ pθ d + d_+ d+| q q q U U U r r r + + + 1 1 1,当 p θ p_θ pθ d θ d_θ dθ| q q q U U U r r r)为1,其他文档为0时, r θ r_θ rθ d + d_+ d+ d θ d_θ dθ)得分最高为2.0。在这种情况下, d θ d_θ dθ极难区分。当两个文档的概率相等且难以区分时, r θ r_θ rθ d + d_+ d+ d θ d_θ dθ)取1。

Optimizing Generator.

在实践中,由于文本数据的离散性,很难生成文本数据。根据IRGAN,从候选文档集 D D D中选择高质量的文档来生成负示例 D ′ D^′ D,形式上,生成模型的梯度为( policy gradient):
在这里插入图片描述
然后,根据概率 θ θ θ选择一个文档。文档的权重设置为 r θ r_θ rθ= r θ r_θ rθ d + d_+ d+ d θ d_θ dθ)。feedback组件日志?1+exp(fψ(d))?
由Discriminator给予的作为对Generator的reward。

两个模型

1.Document Selection based Model

The Discriminator

Discriminator和Generator结构一致:
在这里插入图片描述
Discriminator试图估计给定当前查询 q q q和用户数据 U U U的个性化文档相关性,即 f ϕ f_ϕ fϕ d d d)=score( d d d | q q q S M S_M SM S S S M _M M − _− 1 _1 1,…, S 1 S_1 S1)。在这个模型中,把相关性进一步分为三个部分:文档与查询的相关性与用户长期概要文件的相关性与短期概要文件的相关性。即:
在这里插入图片描述
其中score ϕ _ϕ ϕ d d d | q q q)反映了文档和当前查询之间的即席相关性,score ϕ _ϕ ϕ d d d | S M S_M SM)表示文档在短期用户配置文件方面的个性化相关性,score ϕ _ϕ ϕ d d d | L u L_u Lu)是文档和长期用户配置文件之间的相关性。 F F F是稠密层,用于将三个分数合并,并输出最终的个性化关联得分。

  长短期用户配置提取遵循HRNN,它使用层次化的RNN模型和注意力机制来构建长期和短期的用户配置文件。然而,**HRNN只将用户的历史查询和满意的点击作为历史数据,而忽略了无关的文档**。请注意,将停留时间超过30秒的点击或是会话中最后一次点击的点击视为满意的点击,而将满足点击上方的被跳过文档集合和未点击的下一个文档视为无关文档。通过考虑那些不相关的文档来改进模型。定义为HRNN+。模型的结构如图1所示。

在这里插入图片描述

  1. 对于score ϕ _ϕ ϕ d d d | q q q),遵循SLTB的方法并提取文档的原始排名、查询点击熵和其他局部特征作为关联特征 r r r q _q q , _, , d _d d, F q F_q Fq时dense layer
    在这里插入图片描述
  2. 对于score ϕ _ϕ ϕ d d d S m S_m Sm),session S M S_M SM中的每个查询,通过将相关文档的平均向量和不相关文档的平均向量作为输入,输入到RNN层来生成向量,即,我们具有 x i x_i xi=[ q i q_i qi v v v d + _d^+ d+ i _i i v v v d − _d^- d i _i i ],其中 x i x_i xi是session中的第 i i i个步骤的输入, q i q_i qi是查询字符串的向量. v v v d + _d^+ d+ i _i i是相关文档的平均向量, v v v d − _d^- d i _i i 是不相关文档的平均向量。对于 q q q前有 n n n个查询的session S M S_M SM ,最后一步输出是session的编码,取用户的短期profile,即 h h h 1 ^1 1 M _M M=RNN( h h h 1 ^1 1 M _M M , _, , n _n n − _− 1 _1 1 x n x_n xn),则文档 d d d对用户短期兴趣的关联度得分为:
    在这里插入图片描述
  3. 对于score ϕ _ϕ ϕ d d d | L u L_u Lu),使用第一层历史session的输出编码作为第二层RNN的输入,即 h h h 2 ^2 2 i _i i=RNN( h h h 2 ^2 2 i _i i − _− 1 _1 1 h h h 1 ^1 1 i _i i)(上标“2”表示第二层)。与HRNN类似,使用一种注意力机制来加权历史session,以建立长期档案:
    在这里插入图片描述

其中 e i e_i ei= u u u T ^T T i _i i u d u_d ud u i u_i ui=tanh( F d F_d Fd q q q h h h 2 ^2 2 i _i i))是表示 q q q和session S i S_i Si之间匹配程度的向量。 u d u_d ud是当前session的文档向量。然后用=˝M−1i=1αih2 i
计算动态长期用户profile,

在这里插入图片描述
HRNN+根据 f ϕ f_ϕ fϕ d d d)计算文档的相关性,并根据相关性对文档进行排序。在基于文档选择的模型中,直接使用 f ϕ f_ϕ fϕ d d d)作为判别函数。HRNN+与基于文档选择的模型的区别在于,HRNN+只使用历史点击信息进行训练,并且一次性计算 f ϕ f_ϕ fϕ d d d)并输出排名列表。而在基于文档选择的模型中, f ϕ f_ϕ fϕ d d d)被训练在多个epochs,并且在每个epoch中,训练数据将由生成器更新。

The Generator

生成器的目标是从候选文档集中选择一个与相关文档类似的negative文档,使用类似的模型作为Discriminator。具体地说,生成器函数 g θ g_θ gθ定义如下:
在这里插入图片描述
式(1)中定义的分量 p θ p_θ pθ由以下公式定义:
在这里插入图片描述

2.Query Generation based Model

由于用户的意图很可能偏离当前的查询,为了使文档的分布更符合用户的真实意图,提出了第二种方法,即基于查询生成的模型。使用与基于文档选择的模型相同的方法,训练Discriminator,学习查询、文档和用户配置文件之间的关联关系。
但是对于 Generator,为了更好地估计用户的真实意图,首先通过分析用户的历史搜索日志生成更符合用户当前意图的查询。然后使用Generator通过生成的查询判断文档的相关性,从而根据用户的真实意图更好地估计文档的分布情况。生成查询的模型将搜索日志中的下一个查询作为目标查询,并通过最小化生成查询与目标查询之间概率的交叉熵来训练模型。不同于以往的训练方法,PSGAN通过Discriminator的反馈训练 Generator以适应相关查询的分布。

The Generator

如果生成 k k k个查询,可以使用softmax函数计算每个查询的生成概率。更具体地说,对于每个生成的查询q′,有:
在这里插入图片描述
g θ g_θ gθ是Generator的函数, p θ p_θ pθ是Generator计算的概率分布。
同时,通过Discriminator给出的函数,可以计算出每个生成查询下文档的概率分布。有:
在这里插入图片描述
文档的概率分布 p θ p_θ pθ定义为:
在这里插入图片描述
在这种情况下,生成模型的梯度变为:
在这里插入图片描述
可以看出,优化生成器θ的参数相当于使生成的查询更符合用户的真实意图。

Query Generation

使用两个编码器对历史信息进行编码,使用一个解码器来生成查询。由于在某些情况下,用户的查询意图可以从用户的历史查询中推断出来,因此首先使用一个长期编码器来处理过去会话中的历史信息。由于用户在一个session中的查询意图往往是一致的,为了准确地描述用户的session意图,使用一个短期编码器来处理当前会话中的历史查询。模型如图2所示。

在这里插入图片描述

  1. 对于长期编码器,使用RNN将过去session中的历史查询序列{ q 1 q_1 q1,…, q i q_i qi,… q m q_m qm}作为输入(假设在 L u L_u Lu中共有 m m m个查询)。对于输入的新查询 q i q_i qi,有 h i h_i hi=RNN( h h h i _i i − _− 1 _1 1 q i q_i qi)。
  2. 由于一个session中有多个查询,为了更细粒度地描述,使用层次结构对当前的搜索意图进行编码。同时考虑查询内部术语之间的关系和查询之间的关系。对于短期编码器,再次假设当前session中在 q q q之前有n个查询。首先使用双向RNN将每个查询字词编码为第一层,然后使用另一个RNN编码第一层的输出作为第二层。具体地说,对于第一层有:
    在这里插入图片描述在这里插入图片描述
    对于第一层的输出 q q q,假设 L i L_i Li是查询字符串 q i q_i qi中包含的词数目,有:
    在这里插入图片描述
    类似地,对于第二层,第i个查询的表示由
    在这里插入图片描述
  3. 对于解码器,使用短期编码器的最后一个输出,通过s0=tanh(Fh(h2n))
    初始化状态。进一步在两个编码器上为解码器添加了一个注意机制。
    具体地说,对于长期编码器中的第 i i i个查询,相关注意是αL t,i=softmax?乌托姆?
    其中 u i u_i ui u u u L ^L L t _t t , _, , i _i i=tanh( F m F_m Fm( s s s t _t t − _− 1 _1 1 h i h_i hi))的缩写形式。
    u u u T ^T T i _i i u m u_m um)用于测量解码器的前一状态 s s s t _t t − _− 1 _1 1与第 i i i个查询的编码 h i h_i hi之间的相关性。
    最后,下一项的隐藏态是在这里插入图片描述
    类似地,由短期编码器加权的下一项的隐藏状态是
    在这里插入图片描述

在这里插入图片描述
我们连接 h h h L ^L L t _t t h h h S ^S S H ^H H t _t t作为解码器选择下一个术语的最终上下文向量:ct=hhlt,hS-hti。
对于解码器的每个步骤,生成概率计算为:
在这里插入图片描述
最后,对于生成的查询:在这里插入图片描述
k k k个单词组成,其产生概率估计如下:
在这里插入图片描述
式(10)中的 g g g θ _θ θ q q q ′ ′ q q q U U U)可用于计算 p θ p_θ pθ q q q ′ ′ | q q q U U U),公式(11)中用于估算 p θ p_θ pθ并训练发电机。
在这里插入图片描述
在这里插入图片描述

Query Candidate Selection

上面的模型假设根据用户以前的搜索历史生成查询。但是,如果直接生成查询,我们会发现一些困难。

  1. 首先,如果查询从未出现在搜索日志中,则查询与文档之间的某些关联特征(如点击信息)将不可用,因此生成的查询对最终排名的影响很难评估。
  2. 由于单词词典太大,生成的查询质量不稳定。因此,要求生成的查询必须已经出现在搜索日志中,也就是说,只将训练的查询生成模型应用于查询日志中有限的一组候选查询。这样可以在一定程度上控制风险,使模型更加稳定。

为了确定可以生成的候选查询列表,使用下面的排名函数对日志中的历史查询进行排名,并选择前10个。对于候选查询 q j q_j qj,只需使用以下公式计算其对 q q q的重要性:
在这里插入图片描述
q j q_j qj时q的扩展时:
在这里插入图片描述
否则:
在这里插入图片描述
这个组件简单的评估 q j q_j qj q q q之间的特殊性,扩展查询 q j q_j qj包含的单词越多, q j q_j qj q q q的特定性就越强;

s s s( q q q, q j q_j qj):
在这里插入图片描述

用来衡量 q q q q j q_j qj的相似性,这将评估两个查询之间的语义关系
f f f( q q q, q j q_j qj):
在这里插入图片描述
n n n q _q q , _, , q j q_j qj表示两个查询同时出现在同一会话中的次数, n q n_q nq表示 q q q在整个搜索日志中出现的次数
r r r( q q q, q j q_j qj):
在这里插入图片描述
表示两个查询之间的点击相关性,其中 c c c q _q q , _, q _q q j _j j是在两个查询 q q q q j q_j qj下同时点击的URL数, c q c_q cq是在 q q q下单击的URL数。

   一旦候选查询被选中,使用公式(12)来评估每个候选查询的重要性,并根据公式(10)(11)选择文档。这样,当用户的真实意图与当前查询不一致时,我们可以提供更好的选择。为了保证在当前查询与用户意图一致或候选集中没有比当前查询更好的选择的情况下,模型退化为当前查询,在训练和测试模型时,我们还将当前查询添加到候选集中。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

EXPERIMENTS

Dataset

日志中的每个数据记录都包含用户id、查询字符串、发出查询的时间、搜索引擎检索到的URL、标识用户是否单击文档的标记以及单击文档的驻留时间。日志是根据抽样用户id的列表从搜索引擎中提取的,以确保这些用户在这段时间内的所有搜索历史记录都保存在我们的数据集中。数据集包含33204个用户和2665625个查询。在现有工作的基础上,根据发出非活动时间超过30分钟的查询,将日志分割成会话。最后我们得到了654776个Session。因为在本文提出的第二种方法中,我们需要根据当前查询生成查询,需要过滤一部分无意义的查询,例如只包含单个无意义单词(如“a”)的查询。
在这里插入图片描述
将实验环节按4:1:1的比例分成训练集、验证集和测试集。利用word2vec对实验数据中的查询和文档内容进行预训练。在实验中,简单地将一个查询的词向量平均作为查询的表示,并使用tf-idf加权平均词向量作为文档向量。将驻留时间超过30秒或是会话中最后一次单击的单击视为满意的单击(sat click),并将其他文档称为非sat单击。原始训练数据是由sat点击文档和一些非sat点击文档组成的文档对。使用sat点击的文档作为相关文档,选择的非sat点击文档作为无关文档。模型通过抽样非sat点击文档来增强训练数据,这些文档更难区分为无关文档,并对数据对进行加权。

结果

在这里插入图片描述
在这里插入图片描述
图4显示,无论查询是清晰的(较低的熵)还是模糊的(更大的熵),模型始终优于SLTB。在点击量较大的查询上,个性化模型相对于原始排名的整体改进更为显著。
在这里插入图片描述
用户之前发出的查询(重复查询)或不发出的查询(非重复查询)对模型进行实验。结果如图5所示我们发现所有的个性化模型都比最初的排名有更大的改进,并且基于深度学习的模型表现得更好

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值