数学基础
- 线性代数
- 概率论与随机过程
- 数值计算
- 蒙特卡洛方法与 MCMC 采样
- 机器学习方法概论
统计学习
- 线性模型
- 支持向量机
- 朴素贝叶斯
- 决策树
- knn
- 集成学习
- 梯度提升树
- 数据预处理
- 模型评估
- 降维
- 聚类
- 半监督学习
- EM 算法
- 最大熵算法
- 隐马尔可夫模型
- 概率图与条件随机场
- 边际概率推断
- 主题模型
深度学习
- 深度学习简介
- 深度前馈网络
- 反向传播算法
- 正则化
- 深度学习中的最优化问题
- 卷积神经网络
- CNN:图像分类
- 循环神经网络 RNN
- Transformer
- 一、Transformer [2017]
- 二、Universal Transformer [2018]
- 三、Transformer-XL [2019]
- 四、GPT1 [2018]
- 五、GPT2 [2019]
- 六、GPT3 [2020]
- 七、OPT [2022]
- 八、BERT [2018]
- 九、XLNet [2019]
- 十、RoBERTa [2019]
- 十一、ERNIE 1.0 [2019]
- 十二、ERNIE 2.0 [2019]
- 十三、ERNIE 3.0 [2021]
- 十四、ERNIE-Huawei [2019]
- 十五、MT-DNN [2019]
- 十六、BART [2019]
- 十七、mBART [2020]
- 十八、SpanBERT [2019]
- 十九、ALBERT [2019]
- 二十、UniLM [2019]
- 二十一、MASS [2019]
- 二十二、MacBERT [2019]
- 二十三、Fine-Tuning Language Models from Human Preferences [2019]
- 二十四 Learning to summarize from human feedback [2020]
- 二十五、InstructGPT [2022]
- 二十六、T5 [2020]
- 二十七、mT5 [2020]
- 二十八、ExT5 [2021]
- 二十九、Muppet [2021]
- 三十、Self-Attention with Relative Position Representations [2018]
- 三十一、USE [2018]
- 三十二、Sentence-BERT [2019]
- 三十三、SimCSE [2021]
- 三十四、BERT-Flow [2020]
- 三十五、BERT-Whitening [2021]
- 三十六、Comparing the Geometry of BERT, ELMo, and GPT-2 Embeddings [2019]
- 三十七、CERT [2020]
- 三十八、DeCLUTR [2020]
- 三十九、CLEAR [2020]
- 四十、ConSERT [2021]
- 四十一、Sentence-T5 [2021]
- 四十二、ULMFiT [2018]
- 四十三、Scaling Laws for Neural Language Models [2020]
- 四十四、Chinchilla [2022]
- 四十七、GLM-130B [2022]
- 四十八、GPT-NeoX-20B [2022]
- 四十九、Bloom [2022]
- 五十、PaLM [2022] (粗读)
- 五十一、PaLM2 [2023](粗读)
- 五十二、Self-Instruct [2022]
- 句子向量
- 词向量
- 传统CTR 预估模型
- CTR 预估模型
- 一、DSSM [2013]
- 二、FNN [2016]
- 三、PNN [2016]
- 四、DeepCrossing [2016]
- 五、Wide 和 Deep [2016]
- 六、DCN [2017]
- 七、DeepFM [2017]
- 八、NFM [2017]
- 九、AFM [2017]
- 十、xDeepFM [2018]
- 十一、ESMM [2018]
- 十二、DIN [2017]
- 十三、DIEN [2019]
- 十四、DSIN [2019]
- 十五、DICM [2017]
- 十六、DeepMCP [2019]
- 十七、MIMN [2019]
- 十八、DMR [2020]
- 十九、MiNet [2020]
- 二十、DSTN [2019]
- 二十一、BST [2019]
- 二十二、SIM [2020]
- 二十三、ESM2 [2019]
- 二十四、MV-DNN [2015]
- 二十五、CAN [2020]
- 二十六、AutoInt [2018]
- 二十七、Fi-GNN [2019]
- 二十八、FwFM [2018]
- 二十九、FM2 [2021]
- 三十、FiBiNET [2019]
- 三十一、AutoFIS [2020]
- 三十三、AFN [2020]
- 三十四、FGCNN [2019]
- 三十五、AutoCross [2019]
- 三十六、InterHAt [2020]
- 三十七、xDeepInt [2023]
- 三十九、AutoDis [2021]
- 四十、MDE [2020]
- 四十一、NIS [2020]
- 四十二、AutoEmb [2020]
- 四十三、AutoDim [2021]
- 四十四、PEP [2021]
- 四十五、DeepLight [2021]
- 图的表达
- 一、DeepWalk [2014]
- 二、LINE [2015]
- 三、GraRep [2015]
- 四、TADW [2015]
- 五、DNGR [2016]
- 六、Node2Vec [2016]
- 七、WALKLETS [2016]
- 八、SDNE [2016]
- 九、CANE [2017]
- 十、EOE [2017]
- 十一、metapath2vec [2017]
- 十二、GraphGAN [2018]
- 十三、struc2vec [2017]
- 十四、GraphWave [2018]
- 十五、NetMF [2017]
- 十六、NetSMF [2019]
- 十七、PTE [2015]
- 十八、HNE [2015]
- 十九、AANE [2017]
- 二十、LANE [2017]
- 二十一、MVE [2017]
- 二十二、PMNE [2017]
- 二十三、ANRL [2018]
- 二十四、DANE [2018]
- 二十五、HERec [2018]
- 二十六、GATNE [2019]
- 二十七、MNE [2018]
- 二十八、MVN2VEC [2018]
- 二十九、SNE [2018]
- 三十、ProNE [2019]
- Graph Embedding 综述
- 图神经网络
- 一、GNN [2009]
- 二、Spectral Networks 和 Deep Locally Connected Networks [2013]
- 三、Fast Localized Spectral Filtering On Graph [2016]
- 四、GCN [2016]
- 五、神经图指纹 [2015]
- 六、GGS-NN [2016]
- 七、PATCHY-SAN [2016]
- 八、GraphSAGE [2017]
- 九、GAT [2017]
- 十、R-GCN [2017]
- 十一、 AGCN [2018]
- 十二、FastGCN [2018]
- 十三、PinSage [2018]
- 十四、GCMC [2017]
- 十五、JK-Net [2018]
- 十六、PPNP [2018]
- 十七、VRGCN [2017]
- 十八、ClusterGCN [2019]
- 十九、LDS-GNN [2019]
- 二十、DIAL-GNN [2019]
- 二十一、HAN [2019]
- 二十二、HetGNN [2019]
- 二十三、HGT [2020]
- 二十四、GPT-GNN [2020]
- 二十五、Geom-GCN [2020]
- 二十六、Graph Network [2018]
- 二十七、GIN [2019]
- 二十八、MPNN [2017]
- 二十九、UniMP [2020]
- 三十、Correct and Smooth [2020]
- 三十一、LGCN [2018]
- 三十二、DGCNN [2018]
- 三十三、AS-GCN
- 三十四、DGI [2018]
- 三十五、DIFFPOLL [2018]
- 三十六、DCNN [2016]
- 三十七、IN [2016]
- 图神经网络 2
- 图神经网络 3
- 推荐算法(传统方法)
- 一、Tapestry [1992]
- 二、GroupLens [1994]
- 三、ItemBased CF [2001]
- 四、Amazon I-2-I CF [2003]
- 五、Slope One Rating-Based CF [2005]
- 六、Bipartite Network Projection [2007]
- 七、Implicit Feedback CF [2008]
- 八、PMF [2008]
- 九、SVD++ [2008]
- 十、MMMF 扩展 [2008]
- 十一、OCCF [2008]
- 十二、BPR [2009]
- 十三、MF for RS [2009]
- 十四、 Netflix BellKor Solution [2009]
- 推荐算法(神经网络方法 1)
- 一、MIND [2019](用于召回)
- 二、DNN For YouTube [2016]
- 三、Recommending What Video to Watch Next [2019]
- 四、ESAM [2020]
- 五、Facebook Embedding Based Retrieval [2020](用于检索)
- 六、Airbnb Search Ranking [2018]
- 七、MOBIUS [2019](用于召回)
- 八、TDM [2018](用于检索)
- 九、DR [2020](用于检索)
- 十、JTM [2019](用于检索)
- 十一、Pinterest Recommender System [2017]
- 十二、DLRM [2019]
- 十三、Applying Deep Learning To Airbnb Search [2018]
- 十四、Improving Deep Learning For Airbnb Search [2020]
- 十五、HOP-Rec [2018]
- 十六、NCF [2017]
- 十七、NGCF [2019]
- 十八、LightGCN [2020]
- 十九、Sampling-Bias-Corrected Neural Modeling [2019](检索)
- 二十、EGES [2018](Matching 阶段)
- 二十一、SDM [2019](Matching 阶段)
- 二十二、COLD [2020 ] (Pre-Ranking 模型)
- 二十三、ComiRec [2020](https://www.wenjiangs.com/doc/0b4e1736-ac78)
- 二十四、EdgeRec [2020]
- 二十五、DPSR [2020](检索)
- 二十六、PDN [2021](mathcing)
- 二十七、时空周期兴趣学习网络ST-PIL [2021]
- 推荐算法之序列推荐
- 一、FPMC [2010]
- 二、GRU4Rec [2015]
- 三、HRM [2015]
- 四、DREAM [2016]
- 五、Improved GRU4Rec [2016]
- 六、NARM [2017]
- 七、HRNN [2017]
- 八、RRN [2017]
- 九、Caser [2018]
- 十、p-RNN [2016]
- 十一、GRU4Rec Top-k Gains [2018]
- 十二、SASRec [2018]
- 十三、RUM [2018]
- 十四、SHAN [2018]
- 十五、Phased LSTM [2016]
- 十六、Time-LSTM [2017]
- 十七、STAMP [2018]
- 十八、Latent Cross [2018]
- 十九、CSRM [2019]
- 二十、SR-GNN [2019]
- 二十一、GC-SAN [2019]
- 二十二、BERT4Rec [2019]
- 二十三、MCPRN [2019]
- 二十四、RepeatNet [2019]
- 二十五、LINet(2019)
- 二十六、NextItNet [2019]
- 二十七、GCE-GNN [2020]
- 二十八、LESSR [2020]
- 二十九、HyperRec [2020]
- 三十、DHCN [2021]
- 三十一、TiSASRec [2020]
- 推荐算法(综述)
- 多任务学习
- 系统架构
- 实践方法论
- 深度强化学习 1
- 自动代码生成
工具
- CRF
- CRF ++
- lightgbm
- xgboost
- xgboost 使用指南
- scikit-learn
- spark
- numpy
- matplotlib
- matplotlib 使用指南
- pandas
- huggingface_transformer
- 一、Tokenizer
- 二、Datasets
- 三、Model
- 四、Trainer
- 五、Evaluator
- 六、Pipeline
- 七、Accelerate
- 八、Autoclass
- 九、应用
- 十、Gradio
Scala
- 环境搭建
- 基础知识
- 函数
- 类
- 样例类和模式匹配
- 测试和注解
- 集合 collection(一)
- 集合collection(二)
- 集成 Java
- 并发
五、Facebook Embedding Based Retrieval [2020](用于检索)
-
搜索引擎已经成为帮助人们在线获取海量信息的重要工具。在过去的几十年里,已经开发了各种技术来提高搜索质量,特别是在包括
Bing
和Google
在内的互联网搜索引擎中。由于很难从query
文本中准确地计算搜索意图search intent
,也很难表达文档document
的语义semantic meaning
,因此搜索技术大多数基于各种term
匹配技术,这对于关键词keyword
匹配可以解决的情况表现良好。语义匹配仍然是一个具有挑战性的问题:需要解决与
query
文本不完全匹配、但是能够满足用户搜索意图的预期结果desired result
。在过去几年中,深度学习在语音识别、计算机视觉、自然语言理解方面取得了重大进展。其中
embedding
(也被称作representation learning
)已被证明是有助于成功的技术。本质上,embedding
是将id
的稀疏向量表示为稠密特征向量的一种方式,这种方式也被称作语义embedding
(semantic embedding
),因为它通常可以学习语义semantics
。一旦学到了embedding
,就可以将其用作query
和文档的representation
,从而应用于搜索引擎的各个阶段stages
。由于该技术在包括计算机视觉和推荐系统在内的其它领域获得巨大成功,因此作为下一代搜索技术,它已经成为信息检索information retrieval
社区和搜索引擎行业search engine industry
的一个活跃研究课题。一般而言,搜索引擎包括:
- 召回层
recall layer
:旨在以低延迟low latency
和低计算量low computational cost
来检索一组相关relevant
的文档。这也被称作检索retrieval
。 - 精确层
precision layer
:旨在以更复杂的算法或模型将最想要的文档排在最前面。这也被称作排序ranking
。
尽管可以将
embedding
应用于检索和排序,但是通常更多地利用检索层中的emebdding
,因为检索层位于系统的底部,并且通常是系统的瓶颈。embedding
在检索中的应用称作基于embedding
的检索embedding-based retrieval: EBR
。简而言之,EBR
是一种使用embedding
来表示query
和文档,然后将检索问题转换为embedding
空间中的最近邻nearest neighbor: NN
搜索问题的技术。- 由于要考虑的数据规模巨大,因此
EBR
在搜索引擎中是一个具有挑战性的问题。不同于通常每个session
仅考虑数百个文档的排序层,检索层需要在搜索引擎的索引中处理数十亿或者数万亿个文档。巨大的规模对于embedding
的训练以及embedding
的serving
提出了挑战。 - 其次,与计算机视觉任务中基于
embedding
的检索不同,搜索引擎通常需要将基于embedding
的检索和基于term
匹配的检索term matching based retrieval
结合起来,从而在检索层中对文档进行评分。
Facebook
搜索作为一个社交搜索引擎,它与传统搜索引擎相比有着独特的挑战。在Facebook
搜索中,搜索意图不仅取决于query
文本,而且还受到发出query
的用户、以及该用户所处上下文的严重影响。例如,searcher
的社交图social graph
就是上下文的组成部分,并且是Facebook
搜索的一个特有方面unique aspect
。因此,正如信息检索社区IR community
中积极研究的那样,在Facebook
搜索中基于embedding
的检索不是文本embedding
问题。相反,它是一个更复杂的问题,需要完全理解文本、用户、以及上下文。为了在
Facebook
搜索中部署EBR
,论文《Embedding-based Retrieval in Facebook Search》
开发了一些方法来解决建模modeling
、serving
、和全栈full-stack
优化方面的挑战。-
在建模中,我们提出了统一嵌入
unified embedding
的方法。该模型是一种two side
模型,其中一个side
是包含query
文本、搜索用户searcher
、上下文的搜索请求search request
,另一个side
是文档。为了有效地训练模型,我们开发了从搜索日志中挖掘训练数据,并从搜索用户、
query
、上下文和文档中抽取特征的方法。为了快速进行模型迭代,我们在离线评估集合中采用召回recall
指标来比较模型。为搜索引擎构建检索模型有着独特的挑战,例如如何为模型构建具有代表性
representative
的训练任务,以使其有效effectively
和高效efficiently
地学习。我们研究了两个不同的方向:hard mining
以解决有效地effectively
表示representing
和学习learning
检索任务。ensemble embedding
以将模型划分为多个阶段stage
,其中每个阶段都有不同的召回率recall
和精确率precision
的tradeoff
。
-
在模型开发完成之后,我们需要开发一些方法来高效
efficiently
、有效effectively
地serve
检索stack
中的模型。虽然构建一个结合现有检索(即基于term
匹配的检索)和embedding KNN
的系统很简单,但是由于以下几个原因,我们发现这是次优suboptimal
的:- 从我们最初的实验来看,它具有巨大的性能代价
performance cost
(延迟方面)。 - 双套索引(即一套为基于
term matching
、一套基于embedding
)导致维护成本较高。 - 现有检索的候选
item
和embedding kNN
的候选item
可能有很大的重叠,这使得整体效率较低。
因此,我们开发了一种混合检索框架
hybrid retrieval framework
,将embedding KNN
和布尔匹配Boolean Matching
集成integrate
在一起,从而对文档打分以进行检索。为此,我们使用Faiss
库来用于embedding
向量的量化quantization
,并将其与基于倒排索引inverted index based
的检索相集成,从而构建一个混合检索系统hybrid retrieval system
。除了解决上述挑战之外,该系统还具有两个主要优点:- 它可以实现
embedding
和term matching
的联合优化,从而解决搜索的检索问题。 - 它支持受
term matching
约束的embedding KNN
,这不仅有助于解决系统性能代价system performance cost
问题,而且还提升了embedding KNN
结果的precision
。
- 从我们最初的实验来看,它具有巨大的性能代价
-
搜索是一个多阶段的排序系统
multi-stage ranking system
,其中检索是第一阶段,然后是排序模型ranking models
和过滤模型filtering models
等各阶段。为了全局优化系统以最终返回那些新的好结果new good results
并抑制新的坏结果new bad results
,我们执行了后期优化later-stage optimization
。具体而言,我们将embedding
融合到排序层中,并建立了训练数据的反馈循环feedback loop
,从而主动学习识别EBR
中好的结果和坏的结果。下图中给出了EBR
系统的说明。
我们使用在线
A/B test
对Facebook Search
的垂直领域verticals
评估了EBR
,并观察到显著的指标增长。我们相信本文将提供有用的洞察和经验,从而帮助人们开发搜索引擎中基于embedding
的检索系统。注:搜索的垂直领域
verticals
指的是哪种类型的搜索,比如搜索某个人people
、某个页面page
、某个群组group
等。 - 召回层
5.1 模型
-
我们将搜索的检索任务形式化为召回优化
$ \text{recall@}K = \frac{\sum_{i=1}^Kd_i\in \mathbb T}{N_t} $recall optimization
问题。具体而言,给定一个搜索query
以及target
结果集合 $ \mathbb T=\{t_1,\cdots,t_{N_t}\} $ ,我们的目标是模型返回的top-K
结果 $ \left\{d_1,\cdots,d_K\right\} $ 的recall
召回率最大化:其中:
target
结果是基于某些准则criteria
下的、与给定query
相关的文档(即label
)。例如,它可能是用户点击的结果,或者是基于人类评分得到的相关的文档。 $ N_t $ 为target
结果集合的规模。 -
我们将召回优化问题形式化为:基于
query
和文档之间计算的距离的排序问题ranking problem
。query
和文档被神经网络模型编码为稠密向量dense vector
,在此基础上我们使用余弦相似度作为距离度量。我们提出使用
triplet loss
来逼近召回目标函数recall objective
,从而学习神经网络编码器(也被称作embedding
模型)。 -
尽管
semantic embedding
语义embedding
通常被表述为信息检索中的文本embedding
问题,但是对于Facebook
搜索而言这是不够的。Facebook
搜索是一种个性化的搜索引擎,它不仅考虑文本query
,而且还考虑searcher
的信息以及搜索任务中的上下文,从而满足用户的个性化信息需求。以人物搜索people search
为例,虽然Facebook
可能有成千上万个名为John Smith
的用户资料,但是用户通过query "John Smith"
搜索的实际目标人物可能是他们的朋友或熟人。为了对这个问题进行建模,我们提出了
unified embedding
,该embedding
不仅考虑了文本、还考虑用户和上下文信息。
5.1.1 评估指标
-
虽然我们的最终目标是通过在线
A/B test
实现端到端的质量提升,但重要的是开发离线指标,以便在在线实验之前快速评估模型质量,并从复杂的在线实验配置中隔离isolate
问题。我们提出在整个索引中运行
KNN
搜索,然后使用 $ \text{recall@}K = \frac{\sum_{i=1}^Kd_i\in \mathbb T}{N} $ 作为模型评估指标。具体而言,我们采样了10000
个搜索session
从而收集评估集合的query
和target result
的pair
对。然后我们报告这10000
个搜索session
的平均recall@K
指标。
5.1.2 损失函数
-
给定一个三元组 $ \left(\mathbf{\vec q}^{(i)},\mathbf{\vec d}_+^{(i)},\mathbf{\vec d}_-^{(i)}\right) $ ,其中 $ \mathbf{\vec q} ^{(i)} $ 是一个
$ \mathcal L = \sum_{i=1}^N \max\left(0,f_d\left(\mathbf{\vec q}^{(i)},\mathbf{\vec d}_+^{(i)}\right)-f_d\left(\mathbf{\vec q}^{(i)},\mathbf{\vec d}_-^{(i)}\right)+m\right) $query
的representation
, $ \mathbf{\vec d}_ +^{(i)} $ 为对应的positive
文档的representation
、 $ \mathbf{\vec d}_-^{(-)} $ 为对应的negative
文档的representation
。triplet loss
定义为:其中:
- $ f_d\left(\mathbf{\vec u},\mathbf{\vec v}\right) $ 为两个向量 $ \mathbf{\vec u} $ 和 $ \mathbf{\vec v} $ 之间的距离。
- $ m\ge 0 $ 为
margin
超参数,它是正pair
对和负pair
对之间的边距margin
。 - $ N $ 为训练集中所有的
triplet
数量。
这个损失函数的直觉是:将正
pair
对和负pair
对分开一段距离(由 $ m $ 超参数指定)。 -
我们发现调整
margin
值 $ m $ 非常重要:最佳 $ m $ 值在不同训练任务中变化很大,不同的 $ m $ 值会导致5 ~ 10%
的KNN recall
方差。 -
我们认为,使用随机样本形成负
pair
对的triplet loss
可以逼近召回优化任务。 理由如下:-
如果我们为训练数据中每个
postive
样本随机采样 $ n-1 $ 个negative
样本,那么当候选池candidate pool
大小为 $ n $ 时,模型将优化最头部位置的top-1
召回。候选池为
n
,假设池子中每个样本都是随机选择的,则候选池中有1
个positive
样本。 -
假设实际
serving
的候选池大小为 $ N $ ,我们将优化最前面的 $ K\simeq \frac{N}{n} $ 位置的top-K
召回。候选池为
N
,假设池子中每个样本都是随机选择的,则候选池中有 $ N/n $ 个postive
样本。
在后续我们将验证该假设,并提供不同正、负标签定义的比较。
-
5.1.3 Unified Embedding Model
-
为了从优化
triples loss
中学习embedding
,我们的模型包括三个主要组件:- 一个
query encoder
$ \mathbf{\vec q}=f(Q) $ , 它用于根据query
$ Q $ 产生query embedding
。 - 一个
document encoder
$ \mathbf{\vec d}=g(D) $ ,它用于根据文档D
产生 文档embedding
。 - 一个相似度函数
similarity function
$ S\left(\mathbf{\vec q},\mathbf{\vec d}\right) $ ,它用于产生query
$ Q $ 和文档 $ D $ 之间的得分score
。
下图给出了我们的
unified embedding
模型架构,其中有关特征工程将在后续讨论。 - 一个
-
编码器
encoder
是一种神经网络,可以将输入转换为低维稠密向量,也称作embedding
。在我们的模型中,这两个编码器 $ f(\cdot), g(\cdot) $ 默认是两个独立的网络,但是可以选择共享部分参数。 -
对于相似度函数,我们选择余弦相似度,因为它是
$ S\left(\mathbf{\vec q},\mathbf{\vec d}\right)=\cos\left(\mathbf{\vec q},\mathbf{\vec d}\right)=\frac{\mathbf{\vec q}\cdot\mathbf{\vec d}}{\left\|\mathbf{\vec q}\right\|\times \|\mathbf{\vec d}\|} $embedding
学习中常用的方法之一:因此在
$ f_d\left(\mathbf{\vec q},\mathbf{\vec d}\right)=1- \cos\left(\mathbf{\vec q},\mathbf{\vec d}\right) $triplet loss
函数中定义的距离函数为:因此如果 $ \mathbf{\vec q} $ 和 $ \mathbf{\vec d} $ 相似,则它们的相似性得分较高(由余弦相似度刻画)、距离较近。可以看到 $ 0\le f_d(\cdot) <=2 $ 为一个
0~2
之间的正数。 -
编码器的输入是
unified embedding
模型区别于传统文本embedding
模型的地方。unified embedding
模型编码文本特征、社交特征、以及其他有意义的上下文特征来分别表征query
和文档 。例如:- 在
query side
,我们可以包括searcher location
以及他们的社交关系。 - 在文档侧
document side
,以group
搜索为例,我们可以包含有关Facebook group
的聚合location
以及社交群social cluster
。
大多数特征都是高基数
high cardinality
的离散特征,可以是one-hot
或者multi-hot
向量。- 对于每个离散特征,在输入编码器之前插入一个
embedding look-up layer
从而学习和输出其稠密向量的representation
。 - 对于
multi-hot
向量,将多个embedding
的加权组合从而得到最终的feature-level embedding
。
- 在
5.1.4 Training Data Mining
-
在搜索排序系统
search ranking system
中为检索任务定义positive label
和negative label
是一个非常重要的问题。这里我们根据模型召回率指标比较了几种选择。对于负样本,我们在初始研究中尝试了以下两种负样本选择,同时将click
作为正样本:- 随机选择:对于每个
query
,我们从文档库中随机采样文档作为负样本。 non-click
曝光:对于每个query
,我们随机采样那些在同一个session
中曝光、但是未被点击的文档作为负样本。
和使用随机负样本相比,使用
non-click
曝光的负样本训练的模型具有更差的模型召回率:对于people
搜索的embedding
模型,召回率下降了55%
(绝对值,而不是相对比例)。我们认为这是因为
non-click
曝光负样本倾向于hard case
(可能在一个或者多个因子factor
上匹配了query
),而倒排索引中的大多数文档都是easy case
(根本不可能匹配上query
)。将所有负样本都设为hard case
会改变训练数据对于真实检索任务的表示性representativeness
,这可能会对学到的embedding
施加不小的bias
。所谓的
easy case
指的是文档和query
压根无关,模型很容易学到是负样本;hard case
指的是文档和query
有一定相关性,模型需要努力学习才知道是不是负样本。 - 随机选择:对于每个
-
我们还尝试了多种挖掘正样本的不同方法,并有如下有趣的发现:
-
click
:将点击的结果作为正样本是很直观的,因为点击表明用户对结果的反馈:可能与用户的搜索意图相匹配。 -
impression
曝光:我们的想法是将检索视为ranker
的近似函数,但可以更快地执行。然后,我们希望设计检索模型来学习ranker
相同的结果集合以及结果排列顺序。从这个意义上讲,所有用户的曝光结果对于检索模型都是正样本。即用
matching
模型去逼近ranking
模型:认为曝光的item
都是相关的item
。
我们的实验结果表明:两种定义均有效。在给定相同数据量的情况下,使用点击的模型和使用曝光的模型产生了相似的召回率。
此外,我们还尝试了使用
impression-based
的数据来扩充click-based
的训练数据,但是我们并未观察到相比于click-based
模型的更多增益。结果表明:增加曝光数据不能提供额外的价值,模型也不能从增加的训练数据中获益。 -
-
我们的上述研究表明:使用点击作为正样本、以及使用随机采样的负样本可以提供合理的模型性能。此外,我们还进一步探索了
hard mining
策略,从而提高模型区分相似结果的能力。
5.2 特征工程
-
unified embedding
模型的优点之一是它可以融合文本之外的各种特征,从而提高模型性能。我们在不同的垂直领域vertical
观察到,unified embedding
比文本embedding
更有效。例如,将文本embedding
切换为unified embedding
之后,事件搜索events search
的召回率提高了18%
、群组搜索group search
的召回率提高了16%
。unified embedding
的有效性很大程度上取决于识别和构建有信息量informative
的特征的成功。下表展示了通过将每个新特征添加到group embedding
模型(以文本特征为baseline
)而实现的增量提升。其中Abs.Recall Gain
表示绝对的召回率增益。接下来,我们将讨论有助于提升模型效果的几个重要特征。
-
文本特征:字符的
n-gram
是用于文本embedding
的表示文本的常用方法。和单词n-gram
相比,它有两个优势:- 首先,由于字符
n-gram
的词典规模vocabulary size
有限,因此embedding lookup table
规模较小,在训练过程中可以更有效地学习。 - 其次,
subword representation
对于我们在query
侧(例如拼写变化或错误)和文档侧(由于Facebook
中的大量内容库存content inventory
)遇到的out-of-vocabulary
问题是鲁棒robust
的。
我们比较了使用字符
n-gram
训练的模型以及使用单词n-gram
训练的模型,发现前者可以产生更好的模型。但是,在字符3-gram
模型的基础上,包含单词n-gram representation
额外提供了较小、但是一致的模型提升(+1.5%
的召回率提升)。注意,由于单词
n-gram
的基数cardinality
通常非常高(例如,352M
的query 3-gram
),因此需要哈希hashing
来减少embedding lookup table
的规模。但是,即使有哈希冲突的缺点,添加单词n-gram
仍然提供了额外的增益。对于
Facebook
实体entity
,抽取文本特征的主要字段是人物实体people entity
的名字、非人物实体non-people entity
的标题。和布尔term
匹配技术相比,我们发现使用纯文本特征训练(即没有位置特征、社交特征等非文本特征)的embedding
特别擅长处理以下两种情况:- 模糊文本匹配
fuzzy text match
:例如,该模型能够学习在query "kacis creations"
和"Kasie’s creations"
网页之间进行匹配,而基于term
的匹配则无法实现。 - 可选
optionalization
:在query "mini cooper nw"
的情况下,模型可以通过删除"nw"
以获得可选的term
匹配,从而学习检索预期的、Mini cooper owner/drivers club
的group
。
- 首先,由于字符
-
位置特征
location feature
:位置匹配在很多搜索场景中是有利的,例如本地商业local business
、本地群组local groups
、本地事件local events
。为了使得embedding
模型在生成输出embedding
时考虑位置信息,我们在query
侧和文档侧的特征中都添加了位置特征。- 在
query
侧,我们抽取了searcher
的城市city
、地区region
、国家country
、以及语言language
。 - 在文档侧,我们添加了公开可用的信息,例如由管理员
admin
打标tag
的、显示的群组位置group location
。
结合文本特征,该模型能够成功学习
query
和结果之间的隐式位置匹配location match
。下表比较了文本
embedding
模型和文本+位置embedding
模型返回的、用于group
搜索的最相似的文档。可以看到:具有位置特征的模型可以学习将位置信号融合到embedding
中,将与来自Louisville、Kentucky
的searcher
位置相同的文档排序到更高的position
。 - 在
-
社交
embedding
特征:为了利用丰富的Facebook
社交图来改善unified embedding
模型,我们基于社交图训练了一个单独的embedding
模型来嵌入用户和实体。这有助于将综合社交图comprehensive social graph
融合到unified embedding
模型,否则该模型可能没有完整的社交图信息。
5.3 Serving
5.3.1 ANN
-
我们在系统中部署了基于倒排索引的
ANN
(近似近邻approximate near neighbor
)搜索算法,因为它具有以下优点:- 首先,由于
embedding
向量的量化quantization
,它具有较小的存储成本。 - 其次,更容易集成
integrate
到现有的、基于倒排索引inverted index
的检索系统中。
- 首先,由于
-
我们使用
Faiss library
来量化向量,然后在我们现有的倒排表inverted table
扫描系统scanning system
中实现高效的最近邻搜索。embedding
量化有两个主要组成部分:- 一个是粗量化
coarse quantization
,它通常使用K-means
算法将embedding
向量量化为粗粒度的簇cluster
。 - 一个是乘积量化
product quantization
,它执行细粒度量化以实现embedding
距离的有效计算。
- 一个是粗量化
-
我们需要调优几个重要参数:
-
粗量化
coarse quantization
:粗量化有不同的算法,例如IMI
和IVF
算法。而且重要的是调整簇的数量num_cluster
,这会影响性能和召回率。 -
乘积量化
product quantization
:乘积量化算法有多重变体,包括原始PQ
、QPQ
、带PCA
变换的PQ
。PQ
的字节数pq_bytes
是要调优的重要参数。乘积量化的思想是将向量空间(假设为 $ d $ 维)划分为 $ m $ 个(即
pq_bytes
参数)子空间,每个子空间的维度为 $ d/m $ 。然后我们在每个子空间上聚类。假设每个子空间聚类的类别数都是 $ k $ ,则每个原始向量将由 $ m $ 个整数来表示(称作codebook
),每个整数代表某个子空间中的聚类类别。 -
nprobe
:该参数用于确定每个query embedding
需要召回多少个簇,它进一步决定将扫描多少个粗簇。该参数会影响性能和召回率。
我们构建了一个离线
pipeline
来有效地调优这些超参数。此外,我们需要进行在线实验,根据离线调优结果从选定的候选配置中确定最终配置。下面我们将分享从ANN
调优中获得的经验和技巧:-
基于扫描的文档数量调优召回率。最初,我们比较了相同
num_cluster
和相同nprobe
下,不同粗量化算法的召回率。但是,通过更多的数据分析我们发现:簇
cluster
是不平衡的imbalanced
,特别是对于IMI
算法而言大约一半的簇仅有几个样本。对于相同num_cluster
和相同nprobe
的配置下,这将导致扫描文档的数量不同。因此,我们将扫文档数量(而不是簇的数量)作为更好的指标来近似approximate
ANN
调优中的性能影响,如下图所示。我们使用
1-recall@10
来度量ANN
的准确率accuracy
,这是根据准确的KNN
搜索的top
结果在ANN
搜索top-10
结果中的召回率。即:
KNN
搜索得到top-1
结果,然后看这个top-1
结果是否在ANN
搜索的top-10
列表中。 -
当模型发生重大变化时,调优
ANN
的超参数。我们观察到,ANN
的性能和模型特性characteristics
有关。例如,当我们将集成技术ensemble technique
用于non-click
曝光训练的模型时,我们发现:虽然模型显示出比baseline
更好的召回率,但是在对两者应用量化之后,模型召回率比baseline
更差。当模型训练任务发生重大变化时,例如增加更多的
hard
负样本,应该始终考虑调优ANN
超参数。 -
始终尝试
OPQ
。在应用量化之前对数据进行转换通常很有用。我们用PCA
和OPQ
对数据进行了转换,发现OPQ
通常更有效,如下表和下图所示,其中采用128
维的embedding
。OPQ
的一个警告是:由于OPQ
应用了embedding
的旋转,我们可能还需要重新调优num_cluster
和nprobe
才能有类似的文档扫描。 -
选择
pq_bytes
为d/4
。乘积量化器product quantizer
将向量压缩为 $ x $ 个字节码。对于 $ x $ 的选择,它与embedding
向量的维度 $ d $ 有关: $ x $ 越大,搜索准确率search accuracy
越高,但代价是内存和延迟的增加。从经验结果来看,我们发现 $ x\gt d/4 $ 之后,准确率提升有限。 -
在线调优
nprobe, num_clusters, py_bytes
以了解实际的性能影响。虽然离线调优ANN
算法和参数以合理了解性能和召回率之间的tradeoff
很重要,但是我们发现同样很重要的一点是:在线部署ANN
算法和参数的若干个配置,从而更好地了解从embedding-based
检索、到实际系统的性能影响。这对于确定容量预算capacity budget
,并减少离线调优中的参数搜索范围非常重要。
-
5.3.2 系统实现
-
为了将
EBR
集成integrate
到我们的serving stack
中,我们在Unicorn
中实现了对最近邻搜索的first-class
支持。Unicorn
是为Facebook
上大多数搜索产品提供支持的检索引擎retrieval engine
。Unicorn
将每个文档表示为bag of terms
,这些term
是表示文档二元属性binary property
的任意字符串,通常使用属性的语义来命名。例如:居住在西雅图的用户John
的term
为:text:john
和location:seattle
。term
可以附加有效载荷payload
。query
可以是term
的任何布尔表达式。例如,以下query
将返回名字中有john
和smithe
、并且居住在Seattle
(西雅图)或者Menlo Park
(门罗公园)的人:1 (and (or (term location:seattle)2 (term location:menlo_park))3 (and (term text:john)4 (term text:smithe))5 )
-
为了支持最近邻,我们扩展了
document representation
从而包括文档embedding
。每个文档embedding
都有一个预先固定的字符串关键字,并在query
侧添加了一个nn<key>: radius <radius>
的query operator
。这个query operator
匹配<key> embedding
在query embedding
指定半径内的所有文档。其中<key>
就是预先固定的字符串关键字,如model-141795009
(模型版本号)。-
在索引时,每个文档
embedding
被量化并转换成一个term
(针对粗聚类)和一个有效载荷(针对量化的残差)。 -
在查询时,
(nn)
在内部被重写为term
之间的(or)
的规则。这些term
关联那些与query embedding
最接近的coarse clusters
(即(probes)
)。然后对于匹配的文档, 检索term
的playload
以验证半径约束。probes
的数量可以用一个额外的属性来指定:: nprobe
。
-
-
通过根据已经存在的原语
primitives
实现最近邻支持,而不是编写一个单独的系统,我们继承了现有系统的所有功能,例如实时更新、高效的查询计划query planning
和执行、以及对multi-hop query
的支持。multi-hop query
使我们能够支持基于top-K
的最近邻query
,其中我们只选择最接近query
的K
个文档,而不是通过半径进行匹配。然后评估query
的剩余部分。然而,从我们的实验研究中我们发现:半径模式可以更好地权衡
tradeoff
系统性能和结果质量。一个可能的原因是:半径模式支持受约束的最近邻搜索(受匹配表达式的其它部分约束),但是top K
模式提供了更宽松的操作more relaxed operation
,该操作需要扫描整个索引来获得top K
的结果。因此,我们在当前产品中使用基于半径的匹配。 -
混合检索
Hybrid Retrieval
:通过将(nn) operator
作为布尔查询语言的一部分,我们现在可以支持混合检索表达式,将embedding
和term
任意组合。这可用于基于模型的模糊匹配fuzzy matching
,该模型可以改善拼写变体spelling variation
、可选化optionalization
等情况,并且重用和受益于检索表达式的其它部分。例如,假设一个拼写错误的
query "john smithe"
意图寻找一个位于Seattle
或者Menlo Park
的、名叫john smith
的用户,那么检索表达式类似于上面的表达式。该表达式将无法检索目标用户,因为term
text:smithe
和该文档不匹配。我们可以通过(nn) operator
为该表达式添加模糊匹配:xxxxxxxxxx
61 (and (or (term location:seattle)2 (term location:menlo_park))3 (or (and (term text:john)4 (term text:smithe)))5 (nn model-141795009 :radius 0.24 :nprobe 16))6 )其中,
model-141795009
是embedding
的键。在这种情况下,如果
query "john smithe"
的embedding
与文档"john smith"
的embedding
之间余弦距离小于0.24
,则目标用户将被检索。 -
Model Serving
:我们通过以下方式来serve embedding
模型。在训练好two-sided
embedding
模型之后,我们将该模型分解为query embedding
模型和document embedding
模型,然后分别独立地serve
这两个模型。- 对于
query embedding
,我们将模型部署在online embedding inference service
从而进行实时推断。 - 对于
document embedding
,我们使用Spark
在离线状态下batch
地进行模型推断,然后将生成的embedding
内容与其它元数据metadata
一起发布到正排索引forward index
中。
我们还进行了额外的
embedding
量化,包括粗量化和PQ
,并将其发布到倒排索引inverted index
中。 - 对于
5.3.3 Query and Index Selection
-
为了提高
EBR
的效率和质量,我们执行了query
和索引选择query and index selection
。-
在
query
选择方面:我们应用query
选择技术来克服诸如过度触发over-triggering
、巨大的容量成本capacity cost
、以及垃圾增加junkiness increase
等问题。我们并未针对某些
query
触发EBR
,因为EBR
在这些query
上的优势很弱,并且无法提供任何额外的价值。例如考虑以下两类场景:searcher
正在搜索之前已经被搜索过的、或者点击过的特定目标。query
意图和embedding
模型训练的意图明显不同的情况。
-
在索引选择方面:我们进行了索引选择,从而加快索引速度。例如,我们仅选择每月活跃用户、最近事件
event
、热门页面page
、热门的group
。
-
5.4 后期优化
-
Facebook
的搜索排序是一个复杂的多阶段排序系统multi-stage ranking system
,其中每个阶段逐步精细化refine
前一阶段的结果。该stack
的最底部是检索层retrieval layer
,这里应用了EBR
。检索层的结果随后被一组ranking layer
进行排序和过滤。每个阶段的模型都应该针对前一层返回的结果的分布进行优化。然而,由于当前的排序阶段是为现有检索场景设计的,这可能导致从
EBR
返回的新结果被现有的ranker
进行次优sub-optimally
排序。为了解决这个问题,我们提出了两种方法:-
embedding
作为ranking
特征:沿着漏斗funnel
进一步传播embedding similarity
不仅有助于ranker
从EBR
中识别新结果,还为所有结果提供了通用的语义相似性度量。我们探索了几种基于
embedding
的特征抽取选择,包括query
和结果embedding
之间的余弦相似度、Hadamard
积、原始embedding
。从我们的实验研究来看,余弦相似度特征始终表现出比其他选择更好的性能。 -
训练数据反馈环
feedback loop
:尽管EBR
可以改善检索的召回率,但是和term matching
相比,其precision
可能更低。为了解决
precision
问题,我们建立了一个基于人工评分pipeline
的闭环反馈closed feedback loop
。具体而言,在启用EBR
之后,我们记录了结果,然后将这些结果发送给评估者以标记query
和检索结果之间是否相关。我们使用这些人工评估的数据来重新训练相关性模型relevance model
,以便模型可以学会过滤这些不相关的结果、保留相关的结果。事实证明,这是一种在
EBR
中提高召回率、并达到高precision
的技术。
-
5.5 高级主题
EBR
需要广泛的研究来继续提高性能。我们研究了embedding
建模的两个重要领域:hard mining
和embedding ensemble
,以继续推进EBR
方案的state-of-the-art
。
5.5.1 Hard Mining
-
用于检索任务的数据空间在文本匹配程度、语义匹配程度、社交匹配程度上具有不同的数据分布,并且重要的是:为
embedding
模型设计训练数据集,以便在这种空间上能够有效地学习。为了解决这个问题,
hard mining
是一个主要的方向,也是embedding learning
的活跃研究领域。但是,大多数研究来自于计算机视觉领域,并且用于分类任务。而搜索的检索任务没有class
的概念,因此是一个现有技术不一定能解决的独特unique
的问题。在这个方向上,我们将解决方案分为两部分:hard negative mining: HNM
、hard positive mining: HPM
。 -
hard negative mining
:在分析我们的embedding
模型以进行people search
时,我们发现:在给定query
的情况下,embedding
的top K
个结果通常具有相同的名称name
,并且该模型并不总是将target
结果排名高于其它结果,即使存在社交特征。这促使我们相信该模型尚不能正确利用社交特征,这可能是因为负的训练数据太容易了,因为它们是随机负样本,通常使用不同的名称name
。因为负样本通常都是和
target
结果name
不同的,因此模型简单地认为:和target
结果同名的文档就是正样本。为了使得模型更好地区分相似结果,我们可以使用
embedding
空间中更接近正样本的样本作为训练中的hard
负样本。-
在线
hard negative mining
:由于模型训练是基于mini-batch
更新的,因此可以在每个batch
中以动态dynamic
而有效efficient
的方式选择hard
负样本。假设每个
batch
包含 $ n $ 个正positive
的pair
对 $ \left\{q^{(i)},d_+^{(i)}\right\}_{i=1}^n $ 。然后对于每个query
$ q^{(i)} $ ,我们使用所有其它的positive document
$ \left\{d_+^{(1)},\cdots,d_+^{(j)},\cdots,d_+^{(n)} \mid j\ne i\right \} $ 构成一个小的document pool
,并选择相似度得分similarity score
最高的文档作为hardest
负样本,从而创建训练triplet
。使用在线
hard negative mining
是我们改进模型的主要贡献之一。它在所有垂直领域verticals
都显著提高了embedding
模型的质量:对于people search
,召回率+8.38%
;对于groups search
,召回率+7%
;对于events search
,召回率+5.33%
。我们还观察到,最佳设置是每个正样本使用最多两个
hard
负样本。使用两个以上的hard
负样本将开始降低模型质量。在线
hard negative mining
的一个局限性在于:从随机样本中获得任何hard
负样本的概率很低,因此无法产生足够hard
的负样本。接下来,我们研究如何基于整个结果池来生成更hard
的负样本,即离线hard negative mining
。 -
离线
hard negative mining
:离线hard negative mining
的过程如下:- 首先为每个
query
生成top K
个结果。 - 然后根据
hard
选择策略hard selection strategy
来选择hard
负样本。 - 接着使用新生成的
triplet
来重新训练embedding
模型。 - 上述过程可以反复迭代。
我们进行了广泛的实验,从而比较离线
hard negative mining
和在线hard negative mining
。一个可能首先看起来违反直觉的发现是:简单地使用hard
负样本训练的模型无法胜过使用随机负样本训练的模型。进一步的分析表明:相比较于easy
模型(即使用随机负样本训练的模型),hard
模型对非文本non-text
特征赋予了更多的权重,但是在文本匹配上表现更差。因此,我们调整了采样策略,最终产生了一个可以超越在线hard negative mining
的模型。- 第一个洞察是关于
hard
选择策略。我们发现使用最hard
的样本不是最好的策略。我们比较了来自不同排序位置rank position
的采样,发现排序101~500
之间的采样实现了最佳的模型召回率。 - 第二个洞察是关于检索任务优化。我们的假设是:仍然需要在训练数据中包含
easy
负样本。因为检索模型要在整个输入空间中进行操作,而输入空间包含各种hard
级别(从最hard
到最easy
)的数据,并且输入空间中的大多数数据都是非常easy
的负样本。
因此,我们探索了将随机负样本和
hard
负样本结合在一起的方法,包括从easy
模型中进行迁移学习transfer learning
。根据我们的经验研究,以下两种技术显示出最高的有效性effectiveness
:- 混合
easy/hard
训练:在训练中混合easy
负样本和hard
负样本是有利的。增加easy
负样本的比例(相比较于hard
负样本)会持续改善模型的召回率,并且在easy : hard = 100 : 1
时达到饱和。 - 从
hard
模型到easy
模型的迁移学习:虽然从easy
模型迁移到hard
模型不能产生更好的模型,但是从hard
模型迁移到easy
模型却进一步改善了模型召回率。
最后但同样重要的是,为训练数据中的每个数据点进行详尽地
KNN
计算非常耗时,并且由于有限的计算资源,总的模型训练时间将变得不切实际。对于离线hard negative mining
算法而言,有效的top K
结果生成很重要。在这里,近似的近邻搜索是一种实用的解决方案,可以显著减少总的计算时间。另外,在一个随机分片shard
上执行近似的近邻搜索足以生成有效的hard
负样本,因为我们在训练期间仅依赖于semi-hard
负样本(即排序101~500
之间的)。 - 首先为每个
-
-
hard positive mining
:我们的baseline
模型使用点击或者曝光作为正样本,这是现有产品product
已经能够获取的。为了通过EBR
来最大化互补增益complementary gain
,一个方向是识别尚未被产品成功检索、但是仍然为正postive
的结果。为此,我们从
searcher
的活动日志activity log
中为失败的搜索session
挖掘潜在的target
结果来作为正样本(怎么挖?)。我们发现以这种方式挖掘的正样本可以有效地帮助模型训练。单独使用hard
正样本训练的模型就可以达到与点击训练数据相似的模型召回水平,而数据量仅为点击训练数据的4%
。通过将hard
正样本和曝光数据结合起来作为训练数据,可以进一步提高模型的召回率。
5.5.2 Embedding Ensemble
-
我们从
hard negative mining
实验中了解到:easy
负样本和hard
负样本对于EBR
模型训练都很重要。我们需要hard
负样本以提高模型的precision
,但是easy
负样本对于表征represent
检索空间也很重要。- 使用随机负样本训练的模型模拟了检索数据的分布,并对于非常大的
K
是较优的,但是当K
较小时,在top K
处的precision
较低。 - 另一方面,被训练来优化
precision
的模型,例如使用non-click
曝光作为负样本、或者使用离线hard negative mining
来训练的模型,擅长为较小的候选集合进行排序,但是对于检索任务却失败了。
因此,我们提出通过多阶段方法
multi-stage approach
将训练有不同hard
级别levels of hardness
的模型组合起来,其中第一阶段模型侧重于recall
、第二阶段模型专门区分由第一阶段模型返回的、更相似的结果。我们使用
《Hard-Aware Deeply Cascaded Embedding》
相同的级联embedding
训练cascaded embedding training
的思想,它以级联cascaded
的方式集成ensemble
了一组以不同hard
水平训练的模型。我们探索了不同形式的
ensemble embedding
,包括加权拼接weighted concatenation
、级联模型cascade model
,并且发现两者都是有效的。 - 使用随机负样本训练的模型模拟了检索数据的分布,并对于非常大的
-
加权拼接
Weighted Concatenation
:由于不同的模型为(query,document)
的pair
对提供了不同的余弦相似度评分,因此我们使用加权的余弦相似度作为度量来定义pair
对的相似性。具体而言,对于任何
$ S_w(Q,D) = \sum_{i=1}^n\alpha_i\text{cos}\left(\mathbf{\vec v}_{Q,i},\mathbf{\vec v}_{D,i}\right) $query
$ Q $ 和文档 $ D $ ,给定一组模型 $ \left\{\mathcal M_1, \cdots,\mathcal M_n\right\} $ 以及模型相应的权重 $ \left\{\alpha_1,\cdots,\alpha_n\right\} $ ,我们定义 $ Q $ 和 $ D $ 之间的加权集成相似度weighted ensemble similarity
$ S_w(Q,D) $ 为:其中:
- $ \mathbf{\vec v}_{Q,i} $ 为模型 $ \mathcal M_i $ 对
query
$ Q $ 学到的embedding
向量。 - $ \mathbf{\vec v}_{D,i} $ 为模型 $ \mathcal M_i $ 对文档 $ D $ 学到的
embedding
向量。
出于
serving
的目的,在query
侧和document
侧,我们需要将多个embedding
向量集成ensemble
到单个representation
中。并且ensemble
之后的query embedding
向量和文档embedding
之间的相似性要和 $ S_w(Q,D) $ 成正比。我们没有直接使用 $ S_w(Q,D) $ ,一是因为它的取值范围超出了
[0,1]
之间;二是它的计算在线比较复杂,需要计算 $ n $ 对embedding
向量的相似性。我们可以证明:在
$ \mathbf{\vec v}_Q = \left(\alpha_1\frac{\mathbf{\vec v}_{Q,1}}{\left\|\mathbf{\vec v}_{Q,1}\right\|} ,\cdots,\alpha_n\frac{\mathbf{\vec v}_{Q,n}}{\left\|\mathbf{\vec v}_{Q,n}\right\|}\right)\\ \mathbf{\vec v}_D = \left(\frac{\mathbf{\vec v}_{D,1}}{\left\|\mathbf{\vec v}_{D,1}\right\|} ,\cdots,\frac{\mathbf{\vec v}_{D,n}}{\left\|\mathbf{\vec v}_{D,n}\right\|}\right) $query
侧(或者document
侧)应用加权的归一化可以满足需求。具体而言,我们通过以下方式构造了query
向量和document
向量:可以看到 $ \mathbf{\vec v}_Q $ 和 $ \mathbf{\vec v}_D $ 之间的余弦相似度正比于 $ S_w(Q,D) $ :
$ \cos\left(\mathbf{\vec v}_Q,\mathbf{\vec v}_D\right) = \frac{S_w(Q,D)}{\sqrt{\sum_{i=1}^n\alpha_i^2}\times\sqrt n} $我们以
5.3
节所描述的相同方式为ensemble embedding
执行serve
。-
模型权重 $ \left\{\alpha_1,\cdots,\alpha_n\right\} $ 的选择是经验性的,可以基于验证集的性能进行选择。
-
另外我们探索了第二阶段
embedding
模型的几种选择。实验表明:使用non-click
曝光训练的模型获得了最佳的KNN
召回率(和baseline
模型相比,召回率提升了4.39%
)。但是,当应用
embedding
量化时,和单个模型single model
相比,ensemble model
遭受了更多的准确率accuracy
损失。因此,当提供在线serving
时,其实际的收益会减少。我们发现,为了在
embedding
量化后具有最佳召回率,最佳策略是:将相对easier
的模型和离线hard negative mining
模型集成ensemble
,其中这些模型修改和调优了训练负样本的hard
级别。这个集成ensemble
模型的离线提升略低,但是能够实现在线的显著的召回率提升。
- $ \mathbf{\vec v}_{Q,i} $ 为模型 $ \mathcal M_i $ 对
-
级联模型
Cascade Model
:和加权ensemble
中的并行组合parallel combination
不同,级联模型以串行方式在第一阶段模型的输出上运行第二级模型。我们比较了不同的第二阶段的选择。我们发现:使用
non-click
曝光训练的模型不是一个很好地选择。总体提升远小于加权ensemble
方法。此外,随着第二阶段模型要重新排序rerank
的结果数量的增加,收益会降低。但是,在第二阶段使用离线hard
负样本模型可以比baseline
召回率提高3.4%
。这是一个更适合级联的候选模型,因为离线hard negative mining
构建的训练数据完全基于第一阶段模型的输出。此外,我们探索了另一种级联模型的组成。我们观察到,尽管和文本
embedding
相比,unified embedding
总体上具有更大的模型召回率,但是由于它将焦点转移到了社交匹配social match
和位置匹配position match
上,因此产生了新的文本匹配text match
失败。为了提高模型的文本匹配能力,进而提高模型precision
,我们采用了级联策略:使用文本embedding
来预选择pre-select
文本匹配的候选文档,然后使用unified embedding
模型对结果进行重排rerank
以返回最终的top
候选文档。和仅使用unified embedding
相比,它实现了显著的在线效果提升。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论