当前位置: 首页 > news >正文

安徽设计网站建设搜索引擎优化seo优惠

安徽设计网站建设,搜索引擎优化seo优惠,福步外贸论坛app下载,重庆市公路建设信息网官网facebook的社交网络检索与传统的搜索检索的差异是#xff0c;除了考虑文本#xff0c;还要考虑搜索者的背景。通用搜索主要考虑的是文本匹配#xff0c;并没有涉及到个性化。像淘宝#xff0c;youtube这些其实都是涉及到了用户自身行为的#xff0c;除了搜索还有推荐…facebook的社交网络检索与传统的搜索检索的差异是除了考虑文本还要考虑搜索者的背景。通用搜索主要考虑的是文本匹配并没有涉及到个性化。像淘宝youtube这些其实都是涉及到了用户自身行为的除了搜索还有推荐搜推一体。为了个性化搜索facebook构建了一套统一框架以及基于倒排索引 1. 介绍 搜索引擎帮助用户在海量的信息中进行检索google和bing开发了各种技术来提高搜索质量。由于语义和意图非常难以表征因此当前的搜索大多依赖于term匹配方法也就是关键字匹配。 语义匹配解决关键词不能完全匹配但是可以满足用户搜索意图所需要的结果 深度学习在语音机器视觉和自然语言理解中取得了重大的进展。embedding即表征被证明是一种有效的方法。本质上来说embedding是一种将ids的稀疏向量表征为密集向量的方法也被称为语义嵌入。一旦embedding建立好就可以作为query和doc的表示从而可以应用到搜索引擎的各个阶段。 一般来说搜索引擎分为召回和排序。embedding在这两部分都可以使用但是通常应用在召回层因为位于系统的底部而且也是瓶颈所在。基于embedding的检索通常称为EMR基于embedding来表征query和doc然后将检索问题转换为嵌入空间最邻的搜索问题。 召回以低延时和低计算成本来检索一组相关的文档称为recall 排序以更复杂的算法和模型在顶部对最想要的文档进行排名称为rank EBR在搜索引擎中的最大挑战就是数据量巨大的问题召回层需要处理数十亿或者万亿的文档。而且搜索引擎通常需要将基于embedding和term匹配的检索结合在一起在检索层对文档进行评分。 为了解决这个问题facebook提出了统一嵌入这是一个双塔模型其中一边是搜索请求包括queryencoder和context另一边则是doc。训练数据是从搜索日志中挖掘的并从encodequery和context提取特征。 将embedding和term匹配的方法合并在一起非常简单但是发现是次优的 2. 模型 给定一个query它的目标结果是T{t1,t2,...tN}T\{t_1,t_2,...t_N\}T{t1​,t2​,...tN​}模型返回的TopK个结果是D{d1,d2,...dK}D\{d_1,d_2,...d_K\}D{d1​,d2​,...dK​}模型想要最大化 recallK∑i1Kdi∈TNrecallK\frac{\sum_{i1}^{K}d_i \in T}{N}recallKN∑i1K​di​∈T​ 目标结果TTT是基于某些条件与query相关的doc例如用户点击的结果或者是基于人类评级的文档。将召回优化的问题定义为基于query和doc之间计算距离的排名问题。query和doc都通过编码器转换为向量使用余弦值作为距离度量损失函数使用triple loss。 对于facebook来说检索不仅需要考虑文本的内容而且还需要考虑搜索者的信息以及搜索的上下文以此来满足用户的个性化。以搜人为例虽然Facebook有数千个名为小王的用户但是用户的搜索目标通常是他们的熟人。 2.1 评价指标 线上AB测试离线是平均recallK query目标文档个数召回结果中有几个在目标文档中q1q_1q1​n1n_1n1​m1m_1m1​q2q_2q2​n2n_2n2​m2m_2m2​…qkq_kqk​nkn_knk​mkm_kmk​ recallKm1m2...mkn1n2...nkrecallK\frac{m_1m_2...m_k}{n_1n_2...n_k}recallKn1​n2​...nk​m1​m2​...mk​​ 2.2 损失函数 给定一个三元组(qi,di,d−i)(q^i,d^i_,d^i_-)(qi,di​,d−i​)其中qiq^iqi是querydid^i_di​和d−id^i_-d−i​分别是正样本和负样本。loss定义为 L∑i1Nmax(0,D(qi,di)−D(qi,d−i)m)L\sum_{i1}^{N}\text{max}(0,D(q^i,d^i_)-D(q^i,d^i_-)m)Li1∑N​max(0,D(qi,di​)−D(qi,d−i​)m) 其中D(u,v)D(u,v)D(u,v)两个向量的距离度量距离越近说明向量越接近也就是越匹配。我们的期望是qiq^iqi与正样本did^i_di​距离越小越好与负样本d−id^i_-d−i​的距离越大越好也就是说两个距离之间的差值越大越好。用下面这个表来说明假设m是5 query正样本负样本距离lossqqqd1100d^1_100d1​100d−190d^1_-90d−1​9010max(0,105)15max(0,105)15max(0,105)15qqqd18d^1_8d1​8d−11d^1_-1d−1​12max(0,25)7max(0,25)7max(0,25)7qqqd19.9d^1_9.9d1​9.9d−19.9d^1_-9.9d−1​9.90max(0,05)5max(0,05)5max(0,05)5qqqd180d^1_80d1​80d−177d^1_-77d−1​77-3max(0,−35)2max(0,-35)2max(0,−35)2qqqd110d^1_10d1​10d−113.5d^1_-13.5d−1​13.5-3.5max(0,−3.55)1.5max(0,-3.55)1.5max(0,−3.55)1.5qqqd10.8d^1_0.8d1​0.8d−12d^1_-2d−1​2-1.2max(0,−1.25)3.8max(0,-1.25)3.8max(0,−1.25)3.8qqqd18d^1_8d1​8d−111d^1_-11d−1​11-3max(0,−35)2max(0,-35)2max(0,−35)2qqqd14.9d^1_4.9d1​4.9d−110d^1_-10d−1​10-5.1max(0,−5.15)0max(0,-5.15)0max(0,−5.15)0qqqd10d^1_0d1​0d−15d^1_-5d−1​5-5max(0,−55)0max(0,-55)0max(0,−55)0qqqd19d^1_9d1​9d−119d^1_-19d−1​19-10max(0,−105)0max(0,-105)0max(0,−105)0qqqd11d^1_1d1​1d−1101d^1_-101d−1​101-100max(0,−1005)0max(0,-1005)0max(0,−1005)0 从上面这个表格可以看出如果loss为正说明query与正样本的距离比负样本的距离大这肯定不好当距离为负数说明负样本的距离更大。还做了一个margin 当负样本的距离远大于正样本的距离的时候其实其实已经不用过度惩罚了可以认为loss为0了。 当负样本的距离小于正样本的距离这个时候我们需要对模型进行惩罚即loss大于0 我仔细想了一下其实很简单如果正样本的距离大于负样本的距离那么越大惩罚的力度就越大反之如果小于负样本的距离是不是就不惩罚了呢不是的不仅要小于负样本的距离而且要足够小因此设置了一个margin但是小太多的话其实就不管了因此已经超过预期了。 目标不仅要小而且要足够小如果足够小那么就不用再小 调整margin的值是非常重要的不同的margin值会导致召回率有5%-10%的方差变化。通过对负样本进行随机采样triplet loss可以近似为recallK。对于每一个正样本如果随机采nnn个负样本模型优化的目标就是从nnn个样本中找出那111个正样本假设实际上的候选集为NNN近似优化召回recallKrecallKrecallK。 2.3 统一嵌入模型 模型由三部分组成 query编码器 EQf(Q)E_Qf(Q)EQ​f(Q)将查询query转变成向量embeddingdoc编码器EDg(D)E_Dg(D)ED​g(D)将文档doc转变成doc的向量embedding距离度量函数S(EQ,DD)S(E_Q,D_D)S(EQ​,DD​)查询query和文档doc之间的分数 编码器是一个神经网络将稀疏输入idsidsids输入转换成密集向量embeddingf(⋅)f(\cdot)f(⋅)和g(⋅)g(\cdot)g(⋅)是两个编码器形式上是两个分立的编码器实际上参数相同。距离度量函数使用cosin S(Q,D)cos(EQ,ED)EQ,ED∣∣EQ∣∣⋅∣∣ED∣∣S(Q,D)cos(E_Q,E_D)\frac{E_Q,E_D}{||E_Q||\cdot ||E_D||}S(Q,D)cos(EQ​,ED​)∣∣EQ​∣∣⋅∣∣ED​∣∣EQ​,ED​​ Q和Q的cos值越大说明两个向量越接近也就是距离越小反之值越小距离越大因此距离的定义为dist1−cos(EQ,ED)\text{dist}1-cos(E_Q,E_D)dist1−cos(EQ​,ED​) 传统的搜索输入只要文本信息而这里的输入包含其他的信息例如用户的位置社交网络等文档侧也是 双塔模型的一端是离线计算好的文档侧所有的输入信息都应是静态的不会随着query输入的变化而变化。 用户也会有静态特征通常是一些统计数据例如用户在某个类目话题下的点击率这样的特征不仅会随着用户变化而且也会随着文档变化。这样的特征有两种用法 在召回侧用户在各个类目下的点击率统一作为向量输入到编码器中表针的是这个用户的基础信息通过神经网络对这些特征做非线性映射 我们可以统计历史1个月内用户在不同类目下的点击率ctrtfidffreq均可 user类目1类目2类目3类目4类目5u1p11p_{11}p11​p12p_{12}p12​p13p_{13}p13​p14p_{14}p14​p15p_{15}p15​u2p21p_{21}p21​p22p_{22}p22​p23p_{23}p23​p24p_{24}p24​p25p_{25}p25​u3p31p_{31}p31​p32p_{32}p32​p33p_{33}p33​p34p_{34}p34​p35p_{35}p35​ 在召回层我们的输入可以变更为[e1,e2,...en,pi1,pi2,pi3,pi4,pi5][e_1,e_2,...e_n,p_{i1},p_{i2},p_{i3},p_{i4},p_{i5}][e1​,e2​,...en​,pi1​,pi2​,pi3​,pi4​,pi5​]将所有的信息拼接在一起作为输入即可。 在排序侧文档已经召回了根据文档类型和用户信息从属性库中可以获取用户在这个文档类型下的点击率作为一个特征输入 而到了排序侧doc都已召回了针对user,doc进行打分因此特征变为只是举个例子 pairdoc的类型用户embedding特征文档embedding特征用户在这个doc类型下的点击率特征u1,d1u_1,d_1u1​,d1​类目1eu1\bold{e}_{u1}eu1​ed1\bold{e}_{d1}ed1​p11p_{11}p11​[eu1,ed1,p11][\bold{e}_{u1},\bold{e}_{d1},p_{11}][eu1​,ed1​,p11​]u1,d2u_1,d_2u1​,d2​类目2eu1\bold{e}_{u1}eu1​ed2\bold{e}_{d2}ed2​p12p_{12}p12​[eu1,ed2,p12][\bold{e}_{u1},\bold{e}_{d2},p_{12}][eu1​,ed2​,p12​]u2,d3u_2,d_3u2​,d3​类目3eu2\bold{e}_{u2}eu2​ed3\bold{e}_{d3}ed3​p23p_{23}p23​[eu2,ed3,p23][\bold{e}_{u2},\bold{e}_{d3},p_{23}][eu2​,ed3​,p23​] 2.4 数据挖掘 正样本使用点击的doc 负样本有两种方式 随机采样对每个query都从doc池中随机抽取一些doc作为负样本曝光未点击在同一个session中随机抽取一些曝光未点击作为负样本 使用曝光未点击作为负样本效果明显更差这是因为曝光的负样本通常由于一个或多个因素匹配查询的结果也就是跟query强相关但是索引中的大多数文档于query并不怎么相关如果负样本都选择这种曝光未点击的难样本相当于改变真实数据的分布这会导致embedding学偏 3 特征引擎 统一嵌入模型的优点是可以融合文本以外的各种特征 文本特征 字符n-gram是一种常见的方法来表征文本的向量与单词n-gram相比他的优势有两个。1词汇数量是有限的而且embedding lookup会更小训起来会更快。2subword对oov会有更强的鲁棒性query侧的拼写错误也可以识别。相当于term匹配embedding召回有两个优点 模糊匹配。召回类似的词例如kind可以召回kinds等词汇扩增。搜索mini可能会召回mini cooper等 位置特征 位置匹配在本地搜索等业务中是非常有效额。为了让模型在生成向量的时候考虑位置信息将位置信息添加到了query和doc两端。对于query侧提取了城市地区国家和语言等对于doc端添加了公开可用的信息。社交网络特征 facebook有丰富的社交网络因此单独训练了一个graph模型将graph embedding作为特征输入到模型中 这种感觉非常的奇怪把个性化的单塔模型做成双塔模型我很难想想特征是如何确立的这样不是会导致双塔的两个模型参数不一致吗 4 服务 4.1 ANN 量化有两个部分组成一个是粗力度的量化通过K-means将embedding量化到粗簇中IVF另一个是乘积量化PQ进行细粒度的量化。 粗量化IMI和IVF是有效的调整num_cluster的数量是重要的对召回结果有影响PQ量化PQOPQ向量通过PCA转换再进行PQpq_bytes是需要调整的重要参数nprobenprobe决定扫描多少个簇直接影响召回的性能和精度 这几个参数调整的策略 由于簇是不平衡的例如分成了10个簇可能80%的文档都集中再一个簇中当簇不平衡的时候IMI算法大约一半的簇都只有几个样本。因此对于相同的num_cluster和nprobe来说得到的文档都是不同的。应用量化之前对数据进行转换通常很有用他们尝试了PCA和OPQ来转换数据观察到OPQ效果更好。选择pq_bytes为d/4d/4d/4。PQ量化将向量最终压缩成x个字节对于x的选择通常与维度d有关。较大的x会有更高的精度但代价是增加内存和延迟。从经验看xd/4xd/4xd/4之后精度提升是有限的 4.3 query和index选择 怎么来判断一个query是否需要启动emb查询呢 5. 后期优化 facebook的搜索排名系统非常的复杂每一层都是基于前一层进行的优化之前的召回层是基于布尔规则的所以排序模型也是基于布尔规则的召回doc来设计的如果直接将ebr召回的doc让当前的排序模型打分会导致emb召回的结果被排在后面有两种解决思路 本质就是老汤模型 embedding作为排序特征。将相似性分作为排序模型的一个特征不仅有助于精排识别基于ebr的doc而且还未所有结果提供了语义相似性的度量探索了余弦相似性Hadmard乘积和原始embedding向量实验角度来看余弦相似性比其他的要好。 本质就是做了特征补齐原来布尔规则召回的doc也会反查向量然后与query计算相似分而ebr召回的doc也会去反查布关键字匹配构建的特征例如tfidfbm25等。embedding作为特征的意思是可以直接把embedding作为特征也可以基于embedding构建一些其他特征作为精排的输入脑子活络一点看清问题的本质 训练数据反馈。基于embedding的方式可以提高检索召回但是与关键词召回相比精度较低为了解决精度问题建立了一个基于人类评级的pipeline。将基于embedding召回的记过发给人工去打分以此来标记是否相关。然后使用人工打分的数据重新训练模型。 老实讲看着很像是ANCE的方式在做训练 6. 高级话题 6.1 难样本挖掘 6.1.1 Hard negative mining(HNM). 分析人物搜索的EBR模型的时候发现给定query返回的前K个结果通常具有相同的名称但是模型不会把正确结果排到其他结果之前即使存在社交特征模型也不会把这样的doc排到其他的doc之前。这说明模型并没有学会如何正确的利用社交特征很有可能是因为负样本训练的太容易了因为负样本很多都是随机采样的通常与目标doc的名称不同。为了让模型更好的区分相似的结果可以在embeding空间使用更接近正例的样本作为训练中的难负样本。 负样本是随机采样的因此模型可以很容易区分出当前的正负但是无法进行更细粒度的区分。例如模型不仅要可以区分出用户喜欢手机还衣服还要区分出喜欢的是哪一款手机。 为什么即使拥有更多的特征正确的结果依然不会被排在最前面这些特征为什么没有被利用起来。这个分析的思路很好但是怎么想到是因为负样本的原因的 Online hard negative mining. 模型训练是基于mini-batch数据的每个mini-batch的输入是n个正样本对{qi,di}i1n\{q^i,d^i_\}_{i1}^n{qi,di​}i1n​将mini-batch中其他的pair对中的doc作为负样本随机采样优先选择相似度最高的负样本作为难负样本而且最好不要超过两个。因为负样本就是从全量的doc中随机抽取的。 positive pairquerydd-d-d-d-q1,d1q1d1d2d3d4d5q2,d2q2d2d1d3d4d5q3,d3q3d3d1d2d4d5q4,d4q4d4d1d2d3d5q5,d5q5d5d1d2d3d4 或者是 positive pairqueryd1d2d3d4d5q1,d1q1----q2,d2q2----q3,d3q3----q4,d4q4----q5,d5q5---- 此时每个query有一个正样本有n−1n-1n−1个负样本。我们在使用torch的dataloader的时候可以在collect_fn将mini-batch的转换成我们想要的格式 使用mini-batch中的与正样本分数最接近的doc作为hard negative。使用triplet loss后难负样本和非难负样本的差异是什么呢从损失函数里面好像没有表现出来呀。 其实有个疑惑mini-batch中的数据都是曝光且点击过的doc因为都是正样本。但是哪些曝光始终未点击的doc怎么办呢我有两点考虑1这些曝光但始终没有点击的doc或许就是垃圾也可以认为是噪音去掉反而会更好毕竟优质库是哪些曝光且历史有过点击的doc2要看数据分布如果doc池中大部分都是曝光未点击的那么mini-batch肯定是不好的因为与实际的分布不一致但这个时候其实要考虑的就是为什么这么多doc曝光未点击是不是因为资源池有问题。所以我觉得mini-batch其实是合理的。 Offline hard negative mining 在线的mini-batch负样本毕竟有限不一定能很好的选出难负样本而离线则可以从全量的库中进行采样。做法就是通过knn的方式筛选出top-k个负样本而且只需要从一个簇中抽取即可因为训练的过程中使用的其实就是semi-hard negative。 比较离线HNM和在线HNM一个看起来违反直觉的发现是单纯使用难负样本会导致模型变差分析之后发现单纯使用难负样本会导致模型在文本匹配上效果更差通过调整抽样策略最终得出了一个可以优于在线HNM模型的模型。 使用最难区分的负样本训练并不是最优的通过比较了来自不同排名位置的样本发现排名101-500之间的样本实现了最佳的模型召回 负样本是按照什么来排序的如果按照跟query的相似分或者正样本的相似分来计算这个打分模型又是哪里来的人工打分还是BM25这种无监督模型。而且一个query到底抽取了多少个负样本 0-100的样本只是用户未点击但是可能只是这一次没有点击而已并不一定就是负样本有可能还是正样本而位置靠后的更有可能是负样本。 训练数据中包含简单的负样本是必须的因为真实的数据就是会包含大量的easy样本 召回模型是从全量的数据中找到与query最接近的doc相关的doc必然是稀疏的大部分都是比较好区分的doc训练数据集的分布肯定是要跟实际分布一致的。在排序阶段所有的数据都是跟query极度相关的了数据分布于召回的数据分布肯定不一致了。 下面是两种抽样策略 使用难易样本混合训练难易样本的比例为1:100从“难”模型到“易”模型的迁移学习从易到难模型的迁移不会使模型更好但从难到易的迁移学习可以进一步增加模型的记忆能力 6.1.2 Hard positive mining 直接使用点击的样本作为正样本这样会导致训练数据很少所以从日志中挖掘出一些潜在转化的样本也作为正样本。例如可以有些浏览时长较长但未点击的样本
http://www.hkea.cn/news/14303291/

相关文章:

  • 蚌埠市做家教网站呼市地区做网站公司
  • 聊城集团网站建设多少钱云阳网站建设
  • 安防 光速东莞网站建设百度推广平台登录
  • 15年做哪个网站能致富遵义市建设局网站官网
  • 建网站需要学什么电子版证件照免费制作微信小程序
  • 建设部网站社保联网福建建筑人才网官网
  • 西安前端开发招聘wordpress seo 主题
  • 京东如何进行网站建设昆山做网站好的
  • 网站开发软件开发流程跨境电商个人可以做吗
  • 现代电子商务网站建设技术创建网站的目的
  • 网站开发基础知识中国住房和城乡建设部网站公文
  • 遵义网站开发哪家便宜任城网络推广教程
  • 怎么做农产品垂直网站个人网站备案注销
  • 做网站,图片显示不出来wordpress视频投票
  • 网站建设策划 优帮云怎样做企业宣传推广
  • 网站建设项目策划书做网站老板不发工资我拿尾款
  • 嘉兴高端建站公司做企业网站所需要的资料
  • 现在建网站多少钱营销推广技巧
  • 如何跟进psd做网站山东建设厅网站
  • 如何去掉Wordpress访问网站浏览器网站大全
  • 校园兼职网站建设2022最新新闻素材
  • 内网门户网站网站备案接入ip
  • 网站制作用什么语言永久免费网站系统
  • 中山网站建设哪家强注册公司如何提供注册地址
  • 小说网站开发技术实现做的视频发到哪个网站
  • 事业单位门户网站开发php网站权限设置
  • 宁波网站推广公司价格教育中介公司网站建设费用
  • 秘鲁网站后缀谷歌seo引擎优化
  • 济南哪里有做网站的公司新网站在谷歌上面怎么做推广
  • 做ppt的模板的网站有哪些市场推广和销售的区别