论文地址:https://arxiv.org/abs/2006.11632

摘要

Facebook搜索作为社交网络搜索与传统的Web搜索挑战不同,在提供结果时考虑用户的上下文非常重要。论文提出基于embedding的向量检索应用到社交网络搜索,主要贡献如下:

  1. 提出用于个性化搜索的统一的embedding框架,以及基于传统倒排索引的搜索系统中使用基于embedding的检索服务系统。
  2. 在整个系统的端到端的优化中,提出了各种trick及经验,包括ANN参数调优、full-stack优化。
  3. 展示了关于建模的2个进阶主题(Hard样本挖掘和embedding集成)

简介

最近几十年来不同的技术被开发来提升搜索质量,尤其在Web搜索引擎领域,包括Bing和Google。因为很难从查询文本中准确计算搜索的意图并表示网页的语义,搜索技术大部分基于不同的词匹配技术上,对于关键词匹配的情况,它可以表现的很好。但是语义匹配仍然是一个挑战问题,即如何在查询文本不完全匹配的情况下满足用户的搜索意图。

最近深度学习在语音识别、计算机视觉、自然语言理解等领域取得长足进步。通过他们的embedding,在这些领域被证明是成功的。本质上,embedding是id的稀疏向量表示成稠密的特征向量的一种表示方法,也称为语义embedding,可以学习语义。一旦学习到了embedding,可以作为查询与网页的向量表示应用到搜索引擎的不同阶段。因为在其他领域的成功应用,embedding在信息检索及搜索引擎变得非常活跃。

一般来讲,搜索引擎包含一个召回层,目标是以低时延、低计算成本检索相关的文档集,还有一个排序层,目标是通过复杂的算法模型将用户更需要的文档排序在前面。embedding可以应用到召回和排序,但是有更多机会应用到召回层,因为处于系统的底层,这里经常是系统的瓶颈。基于embedding的召回检索( embedding-based retrieval )通常简称为EBR,使用embedding来表示查询文本及网页,将检索问题转化为在向量空间的近邻 nearest neighbor (NN)搜索问题。

EBR在搜索引擎中是个挑战问题,其一,不同于排序层处理数百个网页文档,检索召回层需要处理十亿以上的网页文档,这种巨大规模给embedding的离线训练和在线serving带来了挑战;其二,不同于计算机视觉,搜索引擎经常需要合并基于embedding检索的结果和基于词匹配检索的结果。

Facebook搜索相比传统的搜索引擎有自己独特的挑战,查询意图不仅仅依赖于查询文本,而且非常依赖于查询的用户及查询的上下文信息(像查询用户的位置信息)。因此Facebook搜索是一个更加复杂的问题,需要理解查询文本、用户、上下文。

为在Facebook搜索上面应用EBR,我们在建模、在线serving、全链路优化上面开发了很多方法来应对挑战。在建模上,我们提出联合embedding,这是个双塔模型,一边是查询文本、用户、上下文信息,另外一边是文档信息。为高效训练模型,我们从搜索日志中挖掘训练数据,从查询文本、用户、上下文、文档中抽取特征。为了更快的模型迭代,我们开发了评估指标来离线评估模型。

搜索引擎构建召回模型有独特的挑战,像怎样构建一个可表示的能有效学习的训练任务。我们调研了2个方向: h a r d m i n i n g hard \ mining hardmining来解决表示及有效学习检索任务的问题, e n s e m b l e e m b e d d i n g ensemble \ embedding ensembleembedding将模型划分为不同的阶段,每个阶段有召回和准确的平衡。

模型开发后,需要在召回任务中开发有效为模型提供服务的方法。一个直接的做法是构建一个系统,这个系统结合来自现存的检索候选结果和来自embedding KNN的候选结果,但是这样做不是最优的,原因如下:

  1. 在我们的初始实验中有巨大的性能成本
  2. 两种索引带来的巨大维护成本
  3. 两种候选集交叉重叠可能很大,整体显得低效

因此我们开发了一种融合了embedding KNN和布尔匹配方式来对文档进行打分的检索。为实现这个目的,我们应用了Faiss库来做embedding向量量化,并和倒排索引检索融合。这个系统有2点优势:

  1. 可以联合优化embedding和词匹配来解决搜索召回问题
  2. 支持词匹配约束的embedding KNN,这样不仅可以解决性能成本,而且提升embedding KNN的准确性

搜索是多阶段的打分系统,召回检索是第一个阶段,后面是排序及过滤等不同的阶段。为整体优化提醒,返回好的结果,抑制差的结果。如下图Figure 1所示,我们将embedding融合到了排序层召回,构建训练数据,来学习和鉴别好的及差的结果。

模型

将检索任务格式化为召回最优化问题,给定一个搜索的查询文本,目标结果集 T = t 1 , t 2 , . . . , t N T={t_1,t_2,...,t_N} T=t1,t2,...,tN,模型返回的 t o p K topK topK个结果{d_1,d_2,…,d_K},希望最大化 t o p K topK topK的召回结果
r e c a l l @ K = ∑ i = 1 K d i ∈ T N ( 1 ) recall@K = \frac {\sum_{i=1}^Kd_i \in T} {N} \ \ \ \ \ \ \ \ \ (1) recall@K=Ni=1KdiT(1)
目标结果集是给定查询的相关文档,例如,用户点击的文档。

将召回最优化问题形式化为计算查询和文档距离的排序问题,查询和文档由DNN编码成稠密向量,使用cos相似度作为距离度量。

语义embedding在信息检索中经常表述为文本embedding问题,但在Facebook个性化搜索引擎中是不够的,不仅仅需要考虑查询文本,还需要考虑搜索用户,以及搜索的上下文信息,来满足用户的个性化搜索需要。以人名搜索为例,可能在Facebook上面有成千上万的人叫”John Smith“,在Facebook上,一个实际的用户搜索这个名字时,可能是在搜索他的朋友或者熟人。为建模这样的问题,我们提出了 u n i f i e d e m b e d d i n g unified\ embedding unifiedembedding不仅考虑查询文本,而且考虑用户及上下文信息。

评估指标

我们的最终目标是通过在线AB实验提供端到端的质量改进,因此开发离线指标在上线前快速评估模型质量非常重要,在索引中运行KNN检索然后使用公式1定义的 r e c a l l @ K recall@K recall@K来评估。具体来讲,采样10000个搜索会话,汇聚这些会话的查询和目标结果,然后计算这些会话上面的评估 r e c a l l @ K recall@K recall@K指标。

损失函数

对于给定的三元组 ( q ( i ) , d + ( i ) , d − ( i ) ) (q^{(i)},d_+^{(i)},d_-^{(i)}) (q(i),d+(i),d(i))q ( i ) q^{(i)} q(i)是查询, d + ( i ) d_+^{(i)} d+(i)d − ( i ) d_-^{(i)} d(i)是相关的正样本和负样本文档
L = ∑ i = 1 N m a x ( 1 , D ( q ( i ) , d + ( i ) ) − D ( q ( i ) , d − ( i ) ) + m ) ( 2 ) L = \sum_{i=1}^N max(1, D(q^{(i)},d_+^{(i)}) - D(q^{(i)},d_-^{(i)}) + m)\ \ \ \ \ \ \ \ \ (2) L=i=1Nmax(1,D(q(i),d+(i))D(q(i),d(i))+m)(2)
D ( u , v ) D(u,v) D(u,v)表示向量 u u u和向量 v v v的距离, m m m是正样本和负样本增强的间隔。这个loss函数就是通过距离间隔将正样本对和负样本对区分开,调整间隔值非常重要,不同的间隔值会导致5%-10%的召回结果偏差。

三元组loss中使用随机样本作为负样本对可以逼近召回最优化任务,原因如下,如果我们对每个正样本采样n个负样本,候选池大小为n,模型最优化的是top1位置。如果候选池大小为N,最优化的为 t o p K ≈ N / n topK \approx N / n topKN/n,后面会证明这个假设。

统一的embedding模型

为学习优化三元组loss的embedding,模型包含三个组件:

  1. 生产查询embedding的查询encoder E Q = f ( Q ) E_Q = f(Q) EQ=f(Q)
  2. 生产文档embedding的文档encoder E D = g ( D ) E_D = g(D) ED=g(D)
  3. 相似度函数 S ( E Q , E D ) S(E_Q,E_D) S(EQ,ED),查询 Q Q Q和文档 D D D的打分
    encoder是一个将输入转化为低维稠密向量的神经网络,在我们的模型中,两个编码函数 f ( ⋅ ) f(\cdot) f()g ( ⋅ ) g(\cdot) g()是两个独立的网络但是共享部分参数。对于相似度函数,我们选择cosine相似度,因为它是在embedding学习中是最通用的。

S ( Q , D ) = c o s ( E Q , E D ) = < E Q , E D > ∥ E D ∥ ⋅ ∥ E D ∥ ( 3 ) S(Q,D) = cos(E_Q,E_D) = \frac {<E_Q,E_D>} {\parallel E_D \parallel \cdot \parallel E_D \parallel}\ \ \ \ \ \ \ \ \ (3) S(Q,D)=cos(EQ,ED)=EDED<EQ,ED>(3)

公式(2)中的cosine距离定义为 1 − c o s ( E Q , E D ) 1-cos(E_Q,E_D) 1cos(EQ,ED)
统一的embedding模型与传统的文本embedding模型的区别在于输入到编码器的信息,统一的embedding模型编码文本的、社交的、上下文的特征信息来表示查询和文档的向量表示。例如,查询端可以包含搜索者的位置和社会关系,文档端可以包含聚合的位置及社交群。

大多数特征是高基数的科类别特征,能变成 o n e − h o t one-hot onehot或者 m u l t i − h o t multi-hot multihot向量,对于每一个类别特征,在输入encoder之前,会插入一个embedding look-up的层,使得变成一个稠密向量。对于 m u l t i − h o t multi-hot multihot向量,多个embedding的加权组合作为特征的embedding输入,结构如下图Figure 2所示

训练数据挖掘

在检索任务中定义正负样本是个非同小可的问题,我们初始研究中,选择点击作为正样本,实验了下面的两种负样本方式

  1. 随机样本:对于每一个正样本,随机从文档池召回采样一部分作为负样本
  2. 曝光未点击样本:在一个会话中,从曝光未点击的文档集中随机采样一部分作为负样本

使用曝光未点击负样本显著差与使用随机负样本,因为这些负例可能在一个或者多个因素和查询匹配相关,作为hard案例存在,而大多数文档其实是easy案例,和查询匹配相关性不大。如果把这些hard负例作为所有的负例,相对于真实的检索任务,将会改变训练数据的分布表示,这样在学习embedding的时候会带来很大的偏差。

挖掘正样本时也尝试了下面2种方法

  1. 点击:使用点击案例作为正样本符合直觉,因为点击表明了用户搜索意图更匹配的用户反馈结果
  2. 曝光:因为我们将检索作为接近但是执行更快的排序,因此我们希望设计检索召回模型去学习将会被排序模块打分更高的结果集,基于此,所有对于用户曝光的的结果作为正样本。

实验结果显示两种选择方式同样有效,基于点击和曝光的正样本有相同的数据容量,产生相似的召回结果,增加曝光数据没有提供额外的增益。

以上的研究表明使用点击作为正样本和随机样本作为负样本能提供合理的模型表现,未来会探索负例挖掘的策略提升模型的能力。

特征工程

统一的embedding模型的一个优点就是除了文本特征还能合并其他不同的特征来提升模型表现,统一embedding模型相对于文本embedding更有效,例如对于事件搜索,文本embedding转到统一的embedding,召回效果提升18%,人群搜索,提升16%。统一的embedding的有效性高度依赖于特征,Table 1显示加不同的新特征带来的提升。

这部分来讨论带来效果提升的几个重要的特征。

文本特征

Character n − g r a m n-gram ngram是表示文本到文本embedding的通用方法,相比于word n − g r a m n-gram ngram有2个优点

  1. 限制了词表大小,embedding lookup表的大小也就更小,训练的时候能学习的更有效
  2. 对于out-of-vocabulary问题更加健壮,不论是搜索端(拼写错误)还是文档端(大量的文档库)

n − g r a m n-gram ngram是将文本表示成文本embedding的通用方法,相对于句子embedding,有2点优势

  1. 限制词表大小,embedding查询表跟小,学的更有效
  2. 子词表示更健壮,对于查询端(例如拼写错误)

比较了基于词 n − g r a m n-gram ngram和基于句子的模型结果,前者更好。对于三词的 g r a m gram gram,包含句子 g r a m gram gram能带来小但是持续的模型改进(1.5%的召回提升)。

对于Facebook实体,提取文本特征的主要字段是人员实体的名称或者非人员实体的标题,相对于布尔词匹配的系统,基于纯文本特征训练的embedding尤其擅长下面几个场景

  1. 模糊文本匹配(Fuzzy text match):例如,模型可以学习去匹配查询”凯西的创作“(kacis creations)和文档”凯西创建的页面“( Kasie’s creations page),基于词匹配的就不行
  2. 可选择性(Optionalization):例如,查询词是”mini cooper nw“,模型检索到”Mini cooper
    owner/drivers club“,通过将”nw“作为可选词丢掉。
位置特征

位置特征在本地商业、群组、事件的搜索中非常有帮助。在查询端,增加搜索者的城市、地域、国家和语言,在文档端,增加公开可用的信息,像管理员标记的人群信息。和文本特征一起,模型能学到查询和文档的隐式位置匹配。Table 2展示了基于文本特征的模型和基于文本+位置特征的模型top相似的返回结果,我们能看到模型能将位置信号融合到embedding中。

社交embedding特征

为了利用Facebook丰富的社交网络关系图,基于社交网络的用户和实体,对用户训练了一个单独的embedding,帮助融合社交网络信息到最终的embedding结果中。

在线serving

ANN

我们开发了一个基于ANN查找的倒排索引方法,有以下几个优点:

  1. 有更小的存储成本,因为embedding的向量量化(embedding quantization)
  2. 容易和现存的检索系统合并,因为现存的检索系统也是基于倒排索引的

embedding量化有2个主要的组成部分,一个是粗量化(coarse quantization),通过K-means将embedding向量粗聚类,另外一个是点乘(product quantization),用来有效计算embedding的距离。有几个重要的参数需要调优

  1. coarse quantization:有几种不同的方法实现,通常是IMI算法和IVF算法,需要重点调整聚类数量参数 n u m _ c l u s t e r num\_cluster num_cluster
  2. product quantization:也有几种实现, vanilla PQ, OPQ, PQ with PCA transform,PQ pq_bytes 是一个需要调整的参数
  3. nprobe:nprobe参数决定有多少类会分配到查询embedding,决定有多少粗类会扫描。

我们构建了离线的数据通道来调整这些参数,另外还有线上实验来决策最终的参数,下面分享ANN调优的trick。
T u n e r e c a l l a g a i n s t n u m b e r o f s c a n n e d d o c u m e n t s Tune\ recall\ against\ number\ of\ scanned\ documents Tunerecallagainstnumberofscanneddocuments,比较了不同的粗量化算法,在相同的聚类数量和nprobe条件。数据分析发现,聚类是不均衡的,尤其是IMI算法,一半的类只有几个样本,这会造成扫描文档集的差异,因此我们将扫描文档的数量作为评估指标。如图Figure 3所示

T u n e A N N p a r a m e t e r s w h e n t h e r e i s n o n − t r i v i a l m o d e l c h a n g e . Tune\ ANN\ parameters\ when\ there\ is\ non-trivial\ model\ change. TuneANNparameterswhenthereisnontrivialmodelchange.ANN的表现和模型的特点相关,当我们集成曝光未点击样本,模型相对于基线结果更好,但是经过向量量化之后,反而变差了。当模型有显著改变时(例如增加了hard负样本)需要调整ANN参数。
A l w a y s t r y O P Q Always\ try\ OPQ AlwaystryOPQ在向量量化之前转化数据经常有用,我们使用了PCA and OPQ 来转化,后者一般更有效,OPQ的一个警告是:如果应用到旋转embedding,需要调整聚类数量和nprobe参数。下表Table 是调优结果

C h o o s e p q b y t e s t o b e d / 4. Choose\ pq_bytes\ to\ be\ d/4. Choosepqbytestobed/4.点乘量化将向量压缩到 x x x字节,对于 x x x的选择,和embedding向量的维度 d d d相关,更大的 x x x有更高的搜索准确度,但是增加了内存成本,根据经验结果,准确度提升在 x > d / 4 x>d/4 x>d/4之后带来的提升就有限了
T u n e n p r o b e , n u m c l u s t e r s , a n d p q b y t e s o n l i n e t o u n d e r s t a n d t h e r e a l p e r f i m p a c t Tune\ nprobe,\ num_clusters,\ and\ pq_bytes\ online\ to\ understand\ the\ real\ perf\ impact Tunenprobe,numclusters,andpqbytesonlinetounderstandtherealperfimpact离线调整这些参数很重要,我们发现在线上设置几组ANN配置的实验也很重要,这也是减少离线和在线差距。

系统实现

查询和索引选择

为提升EBR的效率和质量,进行查询和索引选择。查询选择用来克服过度触发、大容量成本等问题,EBR不擅长处理他们,不会提供额外的价值。例如用户简单的搜索,是在找之前搜索或者点击过的结果。索引选择,目的是加快搜索,例如,只选择月活跃用户、最近的事件、流行的页面和群组。

后续阶段优化

Facebook搜索是一个复杂的多阶段系统,每个阶段更进一步优化前一个阶段的结果。最底层是检索召回层,后面是排序及过滤层。每一个阶段都需要最优化的结果。然而现在的排序阶段是为现存的召回检索场景设计的,会导致基于embedding的新的召回结果被排序模块打分不是最优的,为解决这个问题,提出两个方法

  1. embedding作为排序的特征:在漏斗中进一步传递相似度不仅能帮助排序模块识别检索召回的新结果,而且对所有候选集提供了通用的语义相似度。我们探索了几种基于embedding的特征抽取方法,包括查询和候选集的相似度,哈达玛积,原始embedding,我们的实验结果表明,cos相似度特征比其他方式更好。
  2. 训练数据反馈循环:尽管基于embedding的检索可以提高检索召回效果,但是可能在词匹配上面精度较低。为解决这个问题,我们构建了一个反馈的闭环,基于人工的评价。我们标记embedding检索结果,然后将这些结果发给人工来评价,然后根据评价结果在线训练相关性模型,这样模型就能过滤掉不相关的结果,保留相关的结果。

进阶主题

EBR需要继续广泛的研究来提升性能,我们研究了embedding建模的2个重要领域,负例挖掘和embedding集成,来进一步推进EBR的研究

Hard样本挖掘

在数据空间中,检索任务有不同的数据分布相对于文本/语义/社交,对于embedding模型设计训练数据去有效的学习非常重要。为解决这个问题,负例挖掘是一个主要的方向,同时在embedding模型中也是一个活跃的研究。但是大部分研究来自原计算机视觉,目的是分类任务,检索任务没有”类“的概念,因此是个独特的问题,现在的方案无法解决。在这个方向上,我们将我们的解决方案分为两部分:hard负例挖掘和hard正例挖掘。

Hard负例挖掘(Hard negative mining HNM)

当分析搜索人(people)的embedding模型时,我们发现给定查询时,embedding的topK结果经常是相同的名字,并且模型给目标结果的打分并不比其他结果高,尽管社交特征存在。这促使我们认为模型无法恰当的利用社交特征,这很可能因为训练数据的负例太简单了,因为是随机的,他们的名字经常是不同的。为使模型更好的区分相似结果,我们在训练时使用和正例相似的样本作为hard负例。

在线负例挖掘(oneline HNM)

模型训练基于小批量更新,hard负例可以在每个batch内动态选取。每个batch包含n个正例 { ( q i , d + ( i ) ) } i = 1 n \{ (q^{i},d_+^{(i)})\}_{i=1}^n {(qi,d+(i))}i=1n,对于每个查询 q i q^{i} qi,使用其他正例文档构建一个小的文档候选池, { d + ( 1 ) , d + ( 2 ) , . . . , d + ( n ) ∣ j ≠ i } \{ d_+^{(1)},d_+^{(2)},...,d_+^{(n)} \vert j \neq i \} {d+(1),d+(2),...,d+(n)j=i}选择最相似的文档作为最hard的负例。在各个垂直领域都效果显著,人的搜索+8.38%,人群搜索+7%,事件搜索+5.33%。同时,我们观察到最优设置是每个查询至多2个hard负例,超过2个模型质量会下降。

在线HNM的一个限制是从随机样本中产生hard负例的概率较低,可能无法产生足够的hard负例,下面介绍从整个候选池中挖掘hard负例,成为离线hard负例挖掘

离线负例挖掘(offline HNM)

经过以下4步产生

  1. 对每个查询产生topK结果
  2. 根据负例选择策略选择hard负例
  3. 使用新产生的三元组重新训练embedding模型
  4. 产生过程迭代

在线负例挖掘和离线负例挖掘做了很多实验,一个发现是仅简单使用hard负例并不比使用随机负例效果好,另外一个发现是基于hard负例的模型给了非文本特征更多权重,在文本匹配上面比基于easy负例的模型要差,因此调整了采样策略。

第一个观点是关于hard负例选择策略,我们发现最hard的样本并不是最好的策略,我们比较了从不同排序打分位置的候选集,发现介于排序打分位置101-500的负样本是最好的,第二个观点是关于召回检索任务最优化,easy负例仍然有必要存在,因为召回模型的输入是整个候选集空间,包含了不同水平的hard样本,而且大部分都是非常easy的负例。因此我们探索了几种合并随机负例和hard负例的方法,包括从hard模型迁移学习到easy模型

  1. 混合easy/hard负例:混合hard和easy负例,提升easy负例的比例能提升模型的效果,easy:hard=100:1
  2. 从hard模型迁移学习到easy模型:尽管从hard模型迁移到easy模型没有产生更好的模型,但是迁移学习有进一步的召回效果提升

训练数据的每个数据点都计算KNN结果非常耗时,重要的是需要有一个高效的topK负例挖掘算法,ANN搜索是一个解决办法。

Hard正例挖掘(Hard positive mining)

embedding模型使用点击或者曝光作为正例,为最大化EBR的收益,从用户日志中挖掘潜在的正例,仅仅使用hard正例可以得到相似的召回结果,但是数据量只有原来的4%。可以进一步通过结合hard正例和曝光作为正例来提升模型。(具体怎么挖掘论文未说明)

embedding集成

HNM实验表明easy和hard负例对模型都很重要,hard负例提升模型精度,easy负例表示召回检索的空间。使用随机负样本的模型模拟了召回的数据分布,在K很大是最优的,但是topK里的K如果很小精度就比较差,另一方面,使用曝光未点击做负例或者用离线hard负例挖掘的样本作为负例,擅长对相似的结果排序,但是对于大的候选集比较无力。因此我们提出结合不同hard程度训练的模型,称为多阶段方法,第一阶段聚焦在召回上,第二阶段聚焦在区分第一阶段产生的相似的结果。我们探索了不同的embedding集成方式,包括带权拼接和级联模型

带权拼接

不同的模型对同一个pair(query,document)打的cosine相似度分数不同,使用cosine相似度的加权和来定义这个pair的距离。给定一系列模型的集合 { M 1 , M 2 , . . . , M n } \{M_1,M_2,...,M_n \} {M1,M2,...,Mn},以及相应的权重 α 1 , α 2 , . . . , α n > 0 \alpha_1,\alpha_2,...,\alpha_n>0 α1,α2,...,αn>0,对于查询 Q Q Q和文档 D D D,定义加权集成相似度分数 S w ( Q , D ) S_w(Q,D) Sw(Q,D)
S w ( Q , D ) = ∑ i = 1 n α i c o s ( V Q , i , U D , i ) S_w(Q,D) =\sum_{i=1}^n\alpha_icos(V_{Q,i},U_{D,i}) Sw(Q,D)=i=1nαicos(VQ,i,UD,i)
V Q , i , 1 ≤ i ≤ n V_{Q,i},1\leq i \leq n VQ,i1in表示查询 Q Q Q由模型 M i M_i Mi得到的查询向量
U D , i , 1 ≤ i ≤ n U_{D,i}, 1 \leq i \leq n UD,i,1in表示文档 D D D有模型 M i M_i Mi得到的文档向量
对于查询和文档,我们分别需要将多个embedding向量集成为一个单独的向量表示,构造的查询向量和文档向量如下
E Q = ( α 1 V Q , 1 ∥ V Q , 1 ∥ , . . , α n V Q , n ∥ V Q , n ∥ ) ( 4 ) E_Q = (\alpha_1 \frac {V_{Q,1}} {\parallel V_{Q,1} \parallel },..,\alpha_n \frac {V_{Q,n}} {\parallel V_{Q,n} \parallel })\ \ \ \ \ \ \ \ \ (4) EQ=(α1VQ,1VQ,1,..,αnVQ,nVQ,n)(4)
D Q = ( U Q , 1 ∥ U Q , 1 ∥ , . . , U Q , n ∥ U Q , n ∥ ) ( 5 ) D_Q = (\frac {U_{Q,1}} {\parallel U_{Q,1} \parallel },.., \frac {U_{Q,n}} {\parallel U_{Q,n} \parallel })\ \ \ \ \ \ \ \ \ (5) DQ=(UQ,1UQ,1,..,UQ,nUQ,n)(5)
可以看出 E Q E_Q EQE D E_D ED的cosine相似度等价于 S w ( Q , D ) S_w(Q,D) Sw(Q,D)
c o s ( E Q , E D ) = S w ( Q , D ) ∑ i = 1 n α i 2 ⋅ n ( 6 ) cos(E_Q,E_D) = \frac {S_w(Q,D)} {\sqrt {\sum_{i=1}^n\alpha_i^2} \cdot \sqrt n}\ \ \ \ \ \ \ \ \ (6) cos(EQ,ED)=i=1nαi2

n

Sw(Q,D)(6)
权重的选择根据实际经验。embedding集成离线提升较小,但是在线提升显著。

级联模型

不像并行集成用加权集成来结合,级联模型使用第一阶段的输出作为模型第二阶段的输入。

总结

实现统一的embedding模型仅仅是第一步,最优化端到端系统还有很长的路要走,我们介绍了我们在模型上面的经验,在线serving调优,后阶段优化的经验。我们认为这是有价值的经验来帮助人们将EBR应用到实际的搜索引擎中,EBR在生产环境的成功应用为利用最新语义embedding的持续改进打开了一扇门。我们还介绍了hard负例挖掘和embedding集成经验。

未来有巨大的机会来不断改进这个系统,重要有2个方向:

  1. One is to go deep:我们可以利用更高级的模型像BERT来构建模型
  2. Ohter is to go universal:可以利用预训练的文本embedding模型去开发跟通用的文本embedding子模型,应用到各个不同的任务中

论文《Embedding-based Retrieval in Facebook Search》相关推荐

  1. 经典DL论文研读(part4)--ImageNet Classification with Deep Convolutional Neural Networks

    学习笔记,仅供参考,有错必纠 文章目录 ImageNet Classification with Deep Convolutional Neural Networks 摘要 Introduction ...

  2. 《每日论文》ImageNet Classification with Deep Convolutional Neural Networks

    这篇论文是剖析 CNN 领域的经典之作,也是入门 CNN 的必读论文.作者训练了一个面向数量为 1.2 百万的高分辨率的图像数据集 ImageNet, 图像的种类为 1000 种的深度卷积神经网络. ...

  3. AlexNet论文翻译(中英文对照版)-ImageNet Classification with Deep Convolutional Neural Networks

    图像分类经典论文翻译汇总:[翻译汇总] 翻译pdf文件下载:[下载地址] 此版为中英文对照版,纯中文版请稳步:[AlexNet纯中文版] ImageNet Classification with De ...

  4. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中文版

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  5. 论文《ImageNet Classification with Deep Convolutional Neural Networks》阅读及AlexNet的Tensorflow2复现

    论文<ImageNet Classification with Deep Convolutional Neural Networks>阅读及AlexNet的Tensorflow2复现 论文 ...

  6. ImageNet Classification with Deep Convolutional Neural Networks论文翻译——中英文对照

    文章作者:Tyan 博客:noahsnail.com  |  CSDN  |  简书 翻译论文汇总:https://github.com/SnailTyan/deep-learning-papers- ...

  7. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (1/3)

    文章目录 Authors and Publishment Authors Bibtex Abstract 1. Introduction 2. The Dataset Authors and Publ ...

  8. 《ImageNet Classification with Deep Convolutional Neural Networks》翻译

    1 引言 2 数据集 3 架构 3.1 ReLU 非线性 3.2 训练多个GPU 3.3 局部响应归一化 3.4 重叠池化 3.5 整体架构 4 减少过拟合 4.1 数据增强 4.2 Dropout ...

  9. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (2/3)

    文章目录 3. The Architecture 3.1. ReLU Nonlinearity 3.2. Training on Multiple GPUs 3.3. Local Response N ...

  10. 论文研读 —— 6. ImageNet Classification with Deep Convolutional Neural Networks (3/3)

    文章目录 6. Results 6.1. Qualitative Evaluations 7. Discussion References 6. Results Our results on ILSV ...

最新文章

  1. 【转】android自定义控件
  2. 【C 语言】数组与指针操作 ( 数组符号 [] 与 指针 * 符号 的 联系 与 区别 | 数组符号 [] 与 指针 * 符号 使用效果 基本等价 | 数组首地址 与 指针 本质区别 )
  3. 流量暴涨擒凶记(转)
  4. step3 . day8数据结构之算法
  5. 关于linux中的 秘钥认证 ,最清晰解读
  6. 河北省内计算机对口学校有哪些专业,河北省对口单招有哪些高校
  7. google 插件_google这4款插件我每天都用,省时无数
  8. jQuery 源码解析一:jQuery 类库整体架构设计解析
  9. andorid 回调的理解
  10. MAC OS 如何安装命令行工具:Command Line Tools
  11. 黑马博客——详细步骤(十)项目功能的实现之开发环境与生产环境
  12. UVALive-3713 Astronauts (2-SAT)
  13. ExtraMAME(mame模拟器)官方正式版V21.0下载 | ExtraMAME模拟器
  14. 测试开发进阶——常用中间件概念——线程与线程池理解
  15. linux 进程 cmd su,linux下常用管理命令
  16. IDEA常用的代码模板使用
  17. 逆向工程学习笔记#1——概况篇
  18. c语言地址符作用,C语言中指针和取地址符的关系
  19. 「杂谈」最有可能成为第五个一线城市,苏州 or 杭州?
  20. 数据丢包怎么修复_一种网络传输中实时音频数据丢包恢复的方法与流程

热门文章

  1. 10.2函数牛顿迭代
  2. 2021年全球主要国家数字治理发展动向:得到了许多国家的高度重视和大力推进,对行业前景充满期待[图]
  3. 一文学会如何使用缓存(一)
  4. 光的本质(一)之光的产生
  5. 改变eclipse的主题,使用IDEA的黑色主题
  6. 5月8日-5月14日
  7. 脚本执行报错 syntax error: unexpected end of file
  8. AI抠图产品落地-蝌蚪网课助手
  9. 【测试开发】掌握软件测试的概念及什么是BUG?
  10. mysql查找喜欢的女孩_喜欢一个女生,怎么追她?你要知道这四个阶段。