预备知识:Transformer:1.https://blog.csdn.net/longxinchen_ml/article/details/86533005
2.苏剑林. (2018, Jan 06). 《《Attention is All You Need》浅读(简介+代码) 》[Blog post]. Retrieved from https://kexue.fm/archives/4765
3. https://blog.csdn.net/weixin_40005743/article/details/85460869
残差网络 :https://blog.csdn.net/u014665013/article/details/81985082
介绍
个性化搜索的关键是根据用户的搜索历史,明确当前查询的含义。
- 以前的个性化研究试图在历史数据的基础上建立用户档案来定制排名。然而,基于用户概要文件的方法并不能真正消除当前查询的歧义。在构建用户配置文件时,它们仍然保留一些语义偏差。同一个查询通常表示不同的查询意图。因此,很难通过返回相同的文档列表来满足所有用户的需求。为了解决这一问题,个性化搜索试图对用户的偏好进行建模,并以此为基础对搜索结果进行重新排序。传统的个性化搜索策略通过从查询日志中提取个性化特征来建立用户模型。他们证明了用户历史点击数据的价值,以定制排名。
- 基于深度学习的方法学习发现深层语义关联的表征,著提高了检索质量。以前的方法已经表明,用户发出的大多数查询都是短而含糊的。当接收到不明确的查询时,捕捉用户的真实意图是个性化的关键步骤。现有的研究大多集中在根据用户历史数据建立用户档案,并根据当前查询重点突出相关部分对候选文档进行重新排序。然而,它们并没有从本质上消除当前查询的歧义,而是从历史行为中总结出用户的兴趣。由于当前查询的模糊性,在构建用户概要文件时,这仍然会导致语义偏差。例如,对于当前的查询“java”,它结合了“java编程语言”和“java岛”的语义,由于“java”的模糊性,这样的用户配置文件是有偏见的。直观地说,在用户搜索历史的特定上下文中,“java”的语义表示应该是唯一的,能够反映清晰的信息需求。
- 现有的上下文感知文档排序方法主要是通过递归神经网络或卷积神经网络对上下文信息进行编码。然而,这些方法关注的是局部关系,这些关系仍然面临长期依赖的挑战。
- 然而,由于查询通常很短,并且只包含几个关键字,仅依靠有限的单词是不足以推断用户意图的。有必要使用搜索历史来消除当前查询的歧义。另外,由于用户在搜索时行为的随机性,查询有时会因拼写错误或表达式偏离而难以表达所需的信息。在这种情况下,用户的真实意图不能简单地通过消歧来获得。受BERT中的mask语言模型的启发,我们认为对信息需求的一系列查询具有特定的模式。
- 具体来说,本文提出了一个上下文感知的神经检索模型,它包含了丰富的上下文信息,包括查询词、短期历史和长期历史,以改进当前查询的表示。它包括两个基于Transformer的子模型:查询消歧模型和个性化语言模型。前者用于根据当前查询的条件和历史交互进行多次消歧,后者则试图学习用户的个性化搜索模式,以更准确地推断用户的意图。最后,通过两个子模型的交互,我们可以得到一个具有特定意图的上下文感知查询表示,并计算其与每个候选文档的相关性,从而使结果个性化。
模型:HTPS
假设一个用户的历史数据
H
H
H由短期历史
H
s
H^s
Hs和长期历史
H
l
H^l
Hl组成。前者包括当前会话中的一系列查询和候选文档,
H
s
H^s
Hs={
q
q
q
s
^s
s
1
_1
1,
D
D
D
s
^s
s
1
_1
1},{
q
q
q
s
^s
s
t
_t
t
−
_-
−
1
_1
1,
D
D
D
s
^s
s
t
_t
t
−
_-
−
1
_1
1},其中
t
t
t是当前时间戳。后者包含以前会话中用户过去的交互,
H
l
H^l
Hl={
q
q
q
l
^l
l
1
_1
1,
D
D
D
s
^s
s
1
_1
1},{
q
q
q
l
^l
l
n
_n
n,
D
D
D
l
^l
l
n
_n
n}},其中
n
n
n是在以前的会话中发出的查询数。给定一个新的查询
q
q
q和搜索引擎返回的候选文档
D
D
D={
d
1
d_1
d1,
d
2
d_2
d2,…},我们的任务是根据当前查询
q
q
q和历史数据
H
H
H对
D
D
D中的每个元素进行评分,文档
d
d
d的分数表示为
p
p
p(
d
d
d|
q
q
q,
H
H
H)。不同于以往从历史数据
H
H
H中提取个性化特征的方法,本文试图以此为基础增强当前查询
q
q
q的表示。根据细化查询表示形式
q
H
q^H
qH和每个候选文档的匹配分数生成个性化搜索结果。 最终分数可以计算为
其中
p
p
p(
d
d
d,
q
q
q)是文档和查询之间的即席关联。
p
p
p(
d
d
d,
q
H
q^H
qH)表示相对于由历史数据增强的上下文感知查询表示的个性化相关性。函数
ψ
ψ
ψ(·)是以tanh(·)为激活函数的多层感知器(MLP),用于将不同权重的各个部分的得分组合起来。
Multi-stage Query Disambiguation 多级查询消歧
该模型将查询条件、短期历史和长期历史分别整合在一起。一个异构的Transformer结构将它们编码为上下文,以澄清当前查询的含义。整个过程分为:
- 单词级消歧,它考虑了周围术语的影响;
- 短期消歧,将用户在短期历史中的交互作为语境;
- 长期消歧,它利用长期历史中用户交互的语境。
Word-level disambiguation 词级消歧
对于歧义查询中的模糊词,周围词的上下文提供了捕捉其真实含义和进一步理解查询意图的机会。例如,“apple”一词在“apple fruit”和“apple company”中因上下文不同而具有不同的含义。与预先训练的词向量不同,我们认为即使是同一个词,在不同的语境中也应该用不同的向量来表示。对于当前的查询
q
q
q,假设它由
m
m
m个术语组成,表示为
q
q
q={
e
1
e_1
e1,
e
2
e_2
e2,…,
e
m
e_m
em}。我们的目的是学习基于整个文本的Word-levelTrnsformer对每个术语的上下文感知表示,表示为:
其中
q
q
q
∈
∈
∈
R
R
R
m
^m
m
∗
^∗
∗
d
^d
d和
q
p
q_p
qp
∈
∈
∈
R
R
R
m
^m
m
∗
^∗
∗
d
^d
d表示查询
q
q
q中的单词嵌入和位置嵌入。Trm(·)是一个Transformer层,它包含一个多头自我注意(
M
M
M
S
S
S)层和一个位置前馈(
P
P
P
F
F
F)层。为了防止在网络深入时出现困难的训练,我们将残差链接应用到每一层。
式中,LN(·)是稳定输出的层标准化。D(·)是我们设定的0.1概率的Dropout层。多头自我注意被证明比传统的注意机制表现得更好,因为它能够对不同的焦点应用权重。具体地说,它首先将输入投影到具有不同参数的子空间中,并对每个头部使用单个注意(Att)。最终输出为链接它们:(参考Transformer)
为了使模型具有不同维度之间的相互作用,添加了一个位置前馈网络来增强非线性投影的表示。它由两个核大小为1的卷积组成。我们有:
其中
C
1
C_1
C1(·)和
C
2
C_2
C2(·)是两个参数不同的卷积,它们在所有位置共享。最后,公式(2)中的Transformer层的输出被视为当前查询中的上下文感知表示
E
w
E^w
Ew={
e
e
e
w
^w
w
1
_1
1,
e
e
e
w
^w
w
2
_2
2,…,
e
e
e
w
^w
w
m
_m
m}。为了减少下游的计算成本,我们用词级消歧
q
w
q^w
qw来表示查询,即:
为了覆盖更多的情况,继续使用
q
w
q^w
qw作为下一阶段的输入来消除当前查询的歧义。
Short-term disambiguation 短期消歧
用户发出的查询通常很短,甚至是一个单词。在这种情况下,词级消歧并不能完全消除多义现象。有一种常见的情况是,用户经常在会话中针对单个信息需求呈现一系列查询。在这个过程中的查询和点击数据提供了丰富的上下文信息来推断当前用户的意图。因此,通过合并短期历史的上下文来进一步消除当前查询的歧义。形式上,对于短期历史
H
s
H^s
Hs中的每个查询,我们将查询条件与其满足的文档连接起来,以“[SEP]”作为分隔符。在单词级消歧之后,我们将输出作为当前查询的上下文信息。所有的输出形成了短期上下文,表示为
H
H
H
s
^s
s
w
^w
w={
h
h
h
1
_1
1
s
^s
s
w
^w
w,…,
h
h
h
t
_t
t
−
_-
−
1
_1
1
s
^s
s
w
^w
w}。我们将
H
H
H
s
^s
s
w
^w
w与
q
w
q^w
qw相连接,并应用短期Transformer得到精确的表示
q
s
q^s
qs:
其中Trm last(·)表示只获取最后一个位置的输出,该位置对应于当前查询。这里的位置嵌入
p
+
p^+
p+不仅对序列中的相对位置进行编码,而且考虑了层次信息。其基本思想是:短期历史在绝对地位上更接近,应该比长期史更受重视。因此,我们添加一个标识符来区分当前上下文是属于短期(标记为2)还是属于长期历史(标记为1),并以与位置嵌入相同的方式嵌入它。下一阶段将进一步完善输出
q
s
q^s
qs。
Long-term disambiguation 长期消歧
对于会话开始时的简短查询,由于缺乏上下文,它们仍然存在偏见。长期历史往往反映了用户稳定而稳固的兴趣,这也提供了一种根据当前查询推断用户意图的方法。因此,为了进一步消除歧义,我们将长期历史编码为上下文。与短期消歧类似,在对
H
l
H^l
Hl中的每一项进行词级消歧后,我们将输出向量
H
H
H
l
^l
l
w
^w
w={
h
h
h
1
_1
1
l
^l
l
w
^w
w,…,
h
h
h
t
_t
t
−
_-
−
1
_1
1
l
^l
l
w
^w
w}和
q
s
q^s
qs放在一起作为长期Transformer的输入。最后一个位置
q
l
q^l
ql的输出被认为是长期历史增强的新的查询表示,计算如下:
Personalized language model
本文提出的查询消歧模型的前提是,用户的真实意图隐藏在当前查询中,并且可以逐步将其剥离出来。然而,有时发出的查询与实际信息需求之间存在偏差。例如,一个用户想要找到一种药物的详细信息(假设是阿司匹林),但是他忘记了它的名称。在这种情况下,他可能会用“一种普通消炎药”(偏离表达式)或一个猜测的名字“asp…”进行搜索(拼写错误)。这些查询不包含歧义项,而且很难通过简单的消歧来细化。因此,如图2所示,我们的目标是建立一个个性化的语言模型来预测用户的真实意图。查看整个查询日志,相同的搜索模式通常会出现多次。当一个搜索引擎再次遇到一系列不准确的信息时,也会在一个搜索引擎中再次反映出一系列不准确的信息。我们的目标是学习这种搜索模式,并根据现有查询预测用户的意图。这个过程有两个步骤
Modeling the current search pattern.为当前搜索模式建模
给定当前会话中发出的查询集
Q
s
Q^s
Qs={
q
q
q
s
^s
s
1
_1
1,…,
q
q
q
s
^s
s
t
_t
t
−
_-
−
1
_1
1,
q
q
q},使用长期历史中类似的搜索模式来增强
Q
s
Q^s
Qs的查询表示。将长期历史中的历史查询集合表示为
Q
l
Q^l
Ql={
q
q
q
l
^l
l
1
_1
1,…,
q
q
q
l
^l
l
n
_n
n},每个查询通过对每个单词的向量求平均来表示。特别是,为了分割搜索模式,我们将“[SEP]”标记添加到会话边界,并将session ID编码到查询嵌入中。具有相同ID的一系列查询可以反映单个信息需求。最后,我们将前一个会话
Q
l
Q^l
Ql中的查询和当前会话
Q
S
Q^S
QS中的查询连接起来,并应用一个低层Transformer对当前会话的搜索模式进行建模。
其中[
Q
l
Q^l
Ql,
Q
s
Q^s
Qs]
s
_s
s是会话ID的编码。输出集
Q
Q
Q
s
^s
s
l
^l
l是对
Q
s
Q^s
Qs的精细表示,其中包含了个性化的搜索模式。它将有助于预测下一步用户的真实意图。
Predicting the real intent 预测真实意图
现在,我们已经基于用户的个性化搜索模式增强了当前会话的查询表示,我们尝试使用high-level Transformer来预测基于它们的真实意图。具体地说,我们在序列
Q
Q
Q
s
^s
s
l
^l
l的最后一个位置添加了$个“[MASK]”标记,并将其输出
q
p
q^p
qp 视为预期意图。
预测的意图
q
p
q^p
qp 汇总所有现有查询,并推断当前时间最可能的意图。为了更好地优化这个模型,选择下一个查询来监督预测
Gated Joint of Two Models两种模型的门控连接
消歧表示
q
l
q^l
ql和估计用户意图
q
p
q^p
qp都是推断用户信息需求的重要参考。我们认为,在不同的条件下,它们的贡献是不同的,并且它们的权重应该随着发出的查询的变化而动态调整。为了自动学习两个子模型对最终结果的贡献,我们设计了一个门单元来控制这两个部分的流量。形式上,当前查询
q
f
q^f
qf的最终表示是通过将
q
l
q^l
ql和
q
p
q^p
qp与门权重
z
z
z聚合而生成的:
其中
z
z
z是根据当前查询的特点和两部分的MLP来学习的。注意,为了使
z
z
z在0和1之间,这里的激活函数是sigmoid(·)。
最终表示
q
f
q^f
qf结合查询消歧模型和个性化语言模型的信息,通过计算匹配得分对结果进行重新排序。
Re-ranking Search Results
最后,每个候选文档的最终分数可以通过上面收集的上下文感知查询表示来计算。为了更广泛的匹配范围,我们对候选文档进行词级消歧,输出向量用
d
w
d^w
dw表示,这是
d
d
d的上下文感知表示,
对于公式(1):
对于个性化的相关性
p
p
p(
d
d
d,
q
H
q^H
qH),我们收集了每个阶段经过历史增强的精细化查询表示,包括
- 具有短期和长期消歧的查询和 q s q^s qs和 q l q^l ql
- 预测用户意向 q p q^p qp
- 查询最终表示
q
f
q^f
qf
对于包含不同程度歧义语义偏差的查询,我们将它们全部匹配到文档 d w d^w dw,并使用MLP自动调整每个部分的权重。我们有:
其中 s R s^R sR(·)表示基于表示的相似性。本文将其作为余弦相似度来实现。对于adhoc relevance p p p( d d d, q q q),我们考虑原始查询和文档术语的匹配,以及它们的精确表示 q w q^w qw和 d w d^w dw。此外、为每个文档提取了关于点击和主题的几个附加特征 F F F q _q q 、 _、 、 d _d d。这些特征被输入MLP以计算相关的分数。从形式上讲,adhoc relevance 包括三个部分:
其中 s I s^I sI(·)是基于交互的相似性。在给定一个查询文档对的基础上,利用查询和文档中每个项之间的余弦相似度构造交互矩阵。然后应用k核来处理不同范围的匹配。最终匹配分数 F F F k _k k( M M M)是通过将它们与MLP进行聚合而生成的:
式中,
µ
k
µ_k
µk按核数分布在-1和1中,
σ
σ
σ
k
_k
k设为0.1。最后,根据最终的相关性得分对结果进行重新排序,得到符合用户信息需求的个性化搜索结果。
Training and Optimization
Ranking loss
我们采用LambdaRank算法[5]对排序模型进行成对训练。每对都是构造好的正例(点击文档)和负例(没有点击文档)我们的目标是最大化他们之间的差距。形式上,给定一个正文档
d
i
d_i
di和一个负文档
d
j
d_j
dj,用sigmoid规范化
p
p
p(
d
i
d_i
di |
q
q
q,
H
H
H)−
p
p
p(
d
j
d_j
dj |
q
q
q,
H
H
H)来计算
d
i
d_i
di比
d
j
d_j
dj更关的预测概率。排序模型的损失函数由真实标签
p
i
p_i
pi
j
_ j
j
−
^-
−与预测概率
p
i
p_i
pi
j
_ j
j之间的加权交叉熵计算:
其中权值 λ λ λ i _i i j _j j对应于调换 d i d_i di和 d j d_j dj位置时排名质量的变化。
Prediction loss.
为了进一步优化参数,我们考虑了附加的监督信息,以便更好地训练个性化语言模型。在假设会话中的下一个查询比之前的查询更准确地表达真实意图的基础上,我们将下一个查询作为监督来优化模型。换句话说,我们确信基于现有查询的预测用户意图应该接近下一个查询。因此,预测的用户意图
q
p
q^p
qp和下一个查询
q
q
q
t
_t
t
+
_+
+
1
_1
1之间的损失是:
其中
q
q
q
t
_t
t
+
_+
+
1
_1
1表示下一个查询中每个单词的平均向量,sim(·)是余弦相似度。请注意,如果当前查询是会话的最后一个查询,则目标查询仍然是其自身。最后,我们同时最小化排名损失和预测损失,以更新模型中的参数:
其中 α α α是控制平衡的超参数。我们采用Adam优化器使最终损失最小。
实验