搜索算法工具箱 - USER(二)
文章名称
【CIKM-2021】【Tencent/Renmin University of China】USER: A Unified Information Search and Recommendation Model based on Integrated Behavior Sequence
核心要点
文章旨在解决现有信息流(Feeds)平台单独建模搜索和推荐模型,而没有考虑两者之间联系的问题。作者认为联合建模这两个任务能充分两种任务的数据,解决数据系数问题,同时提升两种任务的性能,并最终提高整体用户满意度。因此,提出可以利用用户搜索和推荐混合行为序列的框架USER,联合建模混合序列。利用包括Text Encoder,Sequence Encoder(short-term/intra-session history),History Encode(long-term/inter-session history)和Unified Task Modeling在内的4个模块,融合两种任务的信息。并利用联合预训练和单独fine-tuning的2阶段训练方式,同时兼顾信息融合和(单独)分布拟合。
上一节介绍了作者联合建模的思路和背景,以及联合建模的优势。并且介绍了问题的建模方法以及作者提出的统一建模框架USER的整体架构和各个组成部分。本节继续介绍各个组成部分的细节。
方法细节
问题引入
如前所述,搜索和推荐在用户目的上是具有相关性,即使获得想要的信息[2]。并且用户通常的行为模式通常是混合的,例如,用户在浏览推荐文章列表时,被标题为“新能源汽车:蔚来……?”的文章吸引。看完这篇文章,用户在搜索引擎中搜寻更多关于“新能源汽车”的信息,然后,浏览搜索结果。因此,联合建模两者,能够同时提升两个场景的性能,其有点包括,
- 聚合建模用户的搜索和推荐行为,可以缓解单个任务的数据稀疏问题。
- 基于混合行为序列,可以构建更全面、更准确的用户画像,提高个性化搜索和推荐的能力。
- 聚合建模可以捕捉搜索和推荐之间的潜在相关性,抓住获取信息的本质上,同时促进推荐和搜索能力。
具体做法
USER
如前所述,USER的整体框架如下图所示,由四个模块组成。
- Text Encoder。文本编码器,主要是NLP相关任务,利用word-level的transformer来学习文档和查询的嵌入向量表示表示。
- Session Encoder。会话编码器,主要对当前会话中的集成行为序列进行建模,统一编码用户搜索和浏览行为,并融合两类行为之间的相关性,以此反应用户的当前意图。在处理用户搜索行为时,作者采用共同注意机制[25],来融合查询和对应点击文档的内在相关性。
- History Encoder。历史编码器,主要是对用户长期行为建模,从长期异构序列中学习信息反应用户固有意图。
- Unified Task Framework。这部分主要是统一推荐和搜索建模问题。作者采用两阶段训练的方法,首先使用来自两个任务的训练统一模型,并进行预训练,以减轻数据稀疏性的影响。随后,在各自任务上fine-tuning(就是在推荐和搜索各自场景下),以适应对应任务的数据分布。

Text Encoder
如上所述,文本编码器主要是对用户浏览过的文档、搜索的查询语句及其对应的点击文档进行编码,将它们转换成嵌入向量表示。以浏览文档为例,其中
是文档的长度。
- 老套路,首先获得词向量
。
- 考虑上下文,利用word-level transformer[28],得到词向量表示
。
- 考虑词的不同权重,作者引入了所谓的“查询”向量
(是可训练的参数,感觉叫上下文向量更合适)。基于
和
得到权重向量
。其中,
也是可训练的向量。
- 最终文档表示,
,同理可以得到
(搜索的查询语句及其对应的点击文档的编码)。
Session Encoder
会话编码器,主要对当前会话中的集成行为序列进行建模,也就是前面说的。用户正处在当前session的第
步行为中,其意图的向量表示记作
。此时,可能存在两种情况,
- 用户进行搜索,查询向量表示为
。
- 用户进行浏览,用户偏好向量表示为
(虽然说是用用户ID计算,但没有细说何得到?)。
那么,当前行为的意图可以用如下公式得到。

由于当前session的前几步行为可以提供丰富的上下文信息来辅助推断用户的当前意图,因此作者尝试了多种方法建模联合行为序列。
在查询场景下,学习历史查询和文档之间相关性信息。不同于计算当前的文档和查询表示
,作者采用co-attention结构[25]来计算历史查询和点击文档的整体向量表示。首先,从Text Encoder的word-level transformer中得到上下文表示
和
,拼接所有
得到
。进而利用bilinear运算,得到交互线性矩阵
,其中,
是可学习参数向量。并通过如下公式得到co-attention weights。
co-attention weights
基于和co-attention weights可以利用如下图所示的公式,计算出搜索行为下的co-attention嵌入向量表示,
。最终,把
拼接后传入MLP得到historical search behavior(注意是当前session的)的嵌入向量表示,
。
co-attention representation
在推荐场景下,利用Text Encoder得到的浏览文章嵌入向量表示
来表。
混合两种场景,基于上述的嵌入向量表示,可以得到当前session的历史行为表示
(注意这里
的
是session的意思,整体看文章的notation有点迷惑)。随后,作者拼接当前步骤行为的意图
和历史行为表示
,得到session行为序列
,并采用Transformer来学习这个序列的信息。由于是联合序列,且需要处理位置信息,因此作者引入了位置编码和行为类别编码,利用如下公式得到当前session用户历史行为的意图,
(注意不要和
混了)。其中,
表示取最后一个隐层的最后一个位置的隐向量作为输出。
分别表示位置和行为类别编码向量。
user’s intent representation enhanced by the short-term behavior history
History Encoder
长期意图(或者说偏好),反映了用户的固有兴趣。当没有短期意图信息可以利用时,长期意图变得非常重要。
首先,利用Session Encoder对历史所有session(当然是一定时间段内的)得到
。
随后,拼接上当前session的历史行为意图
得到所有行为的嵌入向量表示。同Session Encoder一样,利用如下图所示的transformer,得到历史行为增强的用户意图表示向量
。
分别表示位置编码向量。
user’s intent representation enhanced by the long-term behavior history
反应用户寻找历史文章的意图,作者利用
加强当前步骤文档向量
,其计算公式如下图所示,得到向量
。最终
共同决定了文档的排序分数。
long-term history enhanced document representation
Unified Task Framework
如前所述,整个框架(或者说模型),是在给定查询(搜索场景是,推荐场景是
),推测的用户意图
和上下文感知的文档编码,生成推荐文档列表。当然,这里的
包括
,
,文档表示,包括
。
相关性的度量可以表示为,其计算过程如下图所示,其中的特征可以分为3部分。

- 语义相似程度。计算
,
,
之间两两的相似程度。
- 查询交互特征。作者采用interaction-based component KNRM[42],在
上,计算查询与文档的交互相关性,
。
- 人工特征。借鉴[13, 20]作者构建人工特征
(搜索相关的)。
最终,经过神经网络,得到相关性得分
。基于该得分对文档排序得到最终的排序列表。
模型训练采用曝光文档负采样(全局负差的一种吧),并利用sampled softmax计算损失。如前所述,训练时两阶段的,先在混合数据是pre-train,最后在单个任务上fine-tuning。

心得体会
历史行为增强
个人感觉,USER的一个重要的特性是历史行为增强。利用当前Session和长期Session得到,,反映了意图和文档在特定上下文和特定用户下的不同兴趣点,体现了个性化的能力。
框架图中,虽然表示是利用用户ID计算的,采用何种方式,没有明确讲述细节。个人推测是随机初始化E2E训练的。
notation
个人感觉,文章的notation还是有一些不太明确的地方。细致阅读的时候,需要特别注意。
文章引用
[2] NicholasJ.BelkinandW.BruceCroft.1992.InformationFilteringandInformation Retrieval: Two Sides of the Same Coin? Commun. ACM 35, 12 (1992), 29–38.
[13] Songwei Ge, Zhicheng Dou, Zhengbao Jiang, Jian-Yun Nie, and Ji-Rong Wen. 2018. Personalizing Search Results Using Hierarchical RNN with Query-aware Attention. In Proceedings of the CIKM 2018.
[20] Shuqi Lu, Zhicheng Dou, Xu Jun, Jian-Yun Nie, and Ji-Rong Wen. 2019. PSGAN: A Minimax Game for Personalized Search with Limited and Noisy Click Data. In Proceedings of SIGIR 2019. 555–564.
[25] KaiShu,LimengCui,SuhangWang,DongwonLee,andHuanLiu.2019.dEFEND: Explainable Fake News Detection. In Proceedings of KDD 2019. ACM, 395–405.
[28] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Lukasz Kaiser, and Illia Polosukhin. 2017. Attention is All you Need. In Advances in Neural Information Processing Systems 30.
[42] ChenyanXiong,ZhuyunDai,JamieCallan,ZhiyuanLiu,andRussellPower.2017. End-to-End Neural Ad-hoc Ranking with Kernel Pooling. In Proceedings of SIGIR 2017. 55–64.