​众所周知,在搜索引擎领域,无论你是用户还是内容生产者,搜索引擎的结果排序对你来说都是至关重要的。对于用户而言,一个好的排序会给你一个非常好的搜索体感,你无需查看更多结果就能找到你的答案。对于内容生产者而言,无论是大搜还是垂搜,排序结果的好坏直接影响你内容的流量和点击。调查显示,搜索引擎结果的点击主要集中在top10的结果中, 可以参考下图:

从上图可看到,第一页top10的总点击率是57%,也就是说43%的用户要么往后面翻页,要么什么也没点击。这也是为什么企业争相做SEO的原因,这也是为什么会衍生出搜索引擎的竞价排名机制的原因,如下图。那么今天我们就来讲讲搜索排序是如何实现。

搜索结果排序是搜索引擎最核心的部分,之前我们说过召回决定了搜索引擎质量的上限,而排序算法则是最大限度的拟合这个上限。

评估用户输入的query与引擎中的内容doc的相关性大小,这依赖于搜索引擎所采用的的检索模型。检索排序从信息检索学科建立之初就一直是研究重点,发展至今,已经有了很多较为成熟的模型。按照搜索排序的流程分为,召回粗排,精排层和重排序,重排序阶段主要考虑到相关业务诉求和多样性要求,偏业务端,所以本文只介绍召回粗排和精排模型。

召回粗排模型

【布尔模型】

检索模型中最简单的一种,其数学基础是集合论。在布尔模型中,query和文档doc的相关性通过布尔代数运算来判定。布尔代数运算也就是所谓的"与/或/非",“and/or/not”,通过这些逻辑连接词将用户的查询词串联作为用户需求的表达。

【向量空间模型】

向量空间模型最初由信息检索领域奠基人Salton教授提出,经过信息检索学科多年的探索,目前已经是非常基础并且成熟的检索模型了。向量空间模型把用户的query和每一个文档doc都表示成t维特征组成的向量,特征权重计算可使用TF-IDF(在《索引技术》中有详细讲过)。

在实际查询过程中,将query的向量与文档doc的向量进行余弦相似度计算,它认为,值越大,夹角越小就代表query和doc越相似,故而可以用此相似度计算结果作为排序因素。向量空间模型发展至今,不仅仅在搜索领域,在NLP及文本挖掘等诸多领域也是普遍采用的有效工具。

【概率模型】

概率检索模型是从概率排序原理推导出来的,其基本思想是:用户输入一个query,搜索引擎能够在搜索结果排序时按照文档doc集合和用户输入的query的相关性由高到低排序,那么这个搜索系统的准确性是最优的,而在文档doc集合的基础上尽可能准确地对这种相关性进行评估则是其核心。

按照如下思路进行思考:首先,我们可以对查询后得到的文档进行分类:相关文档和非相关文档。这个可以按照朴素贝叶斯的生成学习模型进行考虑。如果这个文档属于相关性的概率大于非相关性的,那么它就是相关性文档,反之属于非相关性文档。最经典的就是BM25排序模型,而这也是开源搜索引擎ElasticSearch的默认相关性排序算法。

机器学习精排模型

【LR-逻辑回归】

LR模型是广义线性模型,从其函数形式来看,LR模型可以看做是一个没有隐层的神经网络模型(感知机模型)。公式如下:

LR模型一直是CTR预估问题的benchmark模型,而CTR预估问题本身就是排序问题的结果,排序做得越好,CTR则会越高。LR可以处理大规模的离散化特征、易于并行化、可解释性强。同时LR有很多变种,可以支持在线实时模型训练(FTRL)。然而由于线性模型本身的局限,不能处理特征和目标之间的非线性关系,因此模型效果严重依赖于算法工程师的特征工程经验。

【GBDT+LR】

既然特征工程很难,那能否自动完成呢?模型级联提供了一种思路,典型的例子就是Facebook 2014年的论文中介绍的通过GBDT(Gradient Boost Decision Tree)模型解决LR模型的特征组合问题,结构如下:

此方案可以看成利用GBDT替代人工实现连续值特征的离散化,而且同时在一定程度组合了特征,可以改善人工离散化中可能出现的边界问题,也减少了人工的工作量。GBDT本质是对历史的记忆,而GBDT+LR则强化了GBDT细粒度的记忆能力

【FM/FFM】

FM(Factorization Machine)是由Konstanz大学Steffen Rendle(现任职于Google)于2010年最早提出的,旨在解决稀疏数据下的特征组合问题。

与传统的简单线性模型不同的是,因子分解机考虑了特征间的交叉,对所有嵌套变量交互进行建模(类似于SVM中的核函数),因此在搜索推荐和计算广告领域关注的点击率CTR(click-through rate)和转化率CVR(conversion rate)两项指标上有着良好的表现,故而可以很好的作用于结果排序。此外,FM的模型还具有可以用线性时间来计算,以及能够与许多先进的协同过滤方法(如Bias MF、svd++等)相融合等优点。

公式如下:

其中,n 代表样本的特征数量,xi 是第 i 个特征的值,w0、wi、wij 是模型参数。

FFM(Field Factorization Machine)是在FM的基础上引入了“场(Field)”的概念而形成的新模型。不详细赘述,后面会详细讲每一个算法和实践。

【深度学习DNN】

此前我们讲过使用DNN来做召回,DNN的能力不止如此,也可以用于排序场景。在前面的精排模型中,绝大多数的特征都是大规模离散化的特征,而且交叉类的特征十分重要,尽管GBDT,FM等具有一定交叉特征能力型,但交叉的能力十分有限,仍然脱离不了特征工程。而dnn类的模型拥有很强的模型表达能力,而且其结构也是“看上去”天然具有特征交叉的能力。利用基于dnn的模型做排序主要有两个优势:

  • 模型表达能力强,能够学习出高阶非线性特征。
  • 容易扩充其他类别的特征,比如在特征拥有图片,文字类特征的时候。

不过现在也有很多场景结合DNN+GBDT+FM融合模型实现排序,总体结构是:

  • DNN模型:使用全连接网络,共三个隐藏层。DNN能从具有良好数学分布的特征中抽取深层信息,比如embedding特征,归一化后统计特征等等
  • GBDT模型:单独进行训练,输入包含归一化和未归一化的稠密特征。能处理未归一化的连续和离散特征。能根据熵增益自动对输入特征进行离散和组合。
  • FM融合层:FM模型与DNN模型作为同一个网络同时训练。将DNN特征,GBDT输出和稀疏特征进行融合并交叉。

【深度模型之DeepFM模型】

DeepFM是哈工大与华为诺亚实验室联合提出的一种深度学习方法,它基于Google的经典论文Wide&Deep基础上,通过将原论文的wide部分(LR部分)替换成FM,从而改进了原模型依然需要人工特征工程的缺点,得到一个end-to-end 的深度学习模型。结构如下:

【深度模型之Bert模型】

BERT预训练模型既可用于召回也可用于排序,其最主要的优势在于其语义特征的表达,在排序任务中,将BERT和Learning To Rank的思想进行结合,将原始模型使用Pointwise Approach的模式改为Pairwise Approach模式,Pairwise Approach相当于BERT只考虑用户输入的query和两个候选文档之间的相关程度,而不考虑用户输入query与单个候选文档的相关度,所以改为PairWise模式,优化的目标任意两个候选文档的排序位次,这样更适合排序场景。

  • 训练样本形式:Pointwise模式下样本是按照<Query,Doc,Label>形式构造输入,Pairwise模式下样本按照<Query,Doc1,Doc2>形式进行构造,其中Query与Doc1的匹配程度大于与Doc2的匹配程度。如图所示:

  • 损失函数:Pointwise模式下模型使用的Cross Entropy Loss作为损失函数,优化目标是提升分类效果,而Pairwise模式下模型使用Hing Loss作为损失函数,优化目标是加大正例和负例在语义空间的区分度。

后续会针对每种算法进行详解,排序模型还有很多,如果想了解其他模型算法,记得留言,下回分享。

最后欢迎关注微信公众号:药老算法(yaolaosuanfa),带你领略搜索、推荐等数据挖掘算法魅力。

深入理解搜索引擎-排序算法相关推荐

  1. 理解计数排序算法的原理和实现

    计数排序(Counting sort)是一种稳定的线性时间排序算法,其平均时间复杂度和空间复杂度为O(n+k),其中n为数组元素的个数,k为待排序数组里面的最大值.同样具有线性时间排序的算法还有桶排序 ...

  2. 【zz】如何去理解 拓扑排序算法

    from http://www.cnblogs.com/shanyou/archive/2006/11/16/562861.html 查看Castle的代码,在Castle.Core中内部的数据结构采 ...

  3. “深入理解”—选择排序算法

    选择排序算法有两种:直接选择排序和堆排序 1.直接选择排序(Straight Select Sort)算法思想:第一趟从n个元素的数据序列中选出关键字最小/大的元素并放在最前/后位置,下一趟从n-1个 ...

  4. 如何理解拓扑排序算法(转)

    对于一条有向边(u,v),定义u < v:满足所有这样条件的结点序列称为拓扑序列.拓扑排序就是求一个有向图的拓扑序列的算法. 一个有向图顶点的拓扑序列不是惟一的.并不是任何有向图的顶点都可以排成 ...

  5. 搜索引擎网页排序算法

    2.1基于词频统计--词位置加权的搜索引擎 利用关键词在文档中出现的频率和位置排序是搜索引擎最早期排序的主要思想,其技术发展也最为成熟,是第一阶段搜索引擎的主要排序技术,应用非常广泛,至今仍是许多搜索 ...

  6. 深入理解搜索引擎——搜索技巧

    搜索引擎发展至今已经覆盖了各个行业,无论在什么领域,我相信大家想要了解某个事物.或找到某个问题答案,都会使用到搜索引擎这个工具,越来越多的人每天都在使用搜索引擎,但又有多少人能用好搜索引擎呢? 在我们 ...

  7. [经典排序算法][集锦]

    经典排序算法 经典排序算法,以下文章参考了大量网上的资料,大部分都给出了出处 这一系列重点在理解,所以例子什么的都是最简单的情况,难免失误之处,多指教 大多数排序算法都给出了每一步的状态,以方便初学者 ...

  8. 时间复杂度为on的排序算法_排序算法amp;时间复杂度计算

    对于排序算法而言,有几个重要的点: 理解此种排序算法是怎么运行的 理解算法的时间复杂度与空间复杂度计算 递推公式(关乎时间复杂度的计算) 递推公式主要为以下的形式(递归使用的复杂度也这么算): 具体推 ...

  9. 算法小白——基本排序算法入门

    计算的 时间复杂度(最差.平均.和最好性能),依据列表(list)的大小(n).一般而言,好的性能是O(n log n),且坏的性能是O(n^2).对于一个排序理想的性能是O(n).仅使用一个抽象关键 ...

  10. 数据结构与算法--经典10大排序算法(动图演示)【建议收藏】

    十大经典排序算法总结(动图演示) 算法分类 十大常见排序算法可分为两大类: 比较排序算法:通过比较来决定元素的位置,由于时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序 非比较类型排 ...

最新文章

  1. socket开发:一台服务器同一端口同时在多个网卡上开启listen的误区理解。
  2. discussion function on the github system
  3. VTK序列图像的读取
  4. iphone储存空间系统怎么清理_如何清理iPhone的缓存,释放更多存储空间,这些方法你知道吗...
  5. python预测发展趋势_Python预测算法哪家强?权游龙妈是生还是凉凉?
  6. 苹果iOS 13概念曝光 音量UI大改鼠标即时配对
  7. cocos3 动作回调函数
  8. csv文件转换成utf-8格式乱码
  9. couchbase php,轻松搞定|将PHP和Couchbase应用部署为Docker
  10. 在英文论文写作中,什么时候该用斜体?
  11. 网络与系统安全笔记------访问控制
  12. 会声会影X5捕获视频失败
  13. Redis 开机自启
  14. 批量输出dwg文件中的文本
  15. ASP连接Excel的方法
  16. BLDC电机的dome列子
  17. linux下网站平台的搭建——apache +PHP+mysql
  18. 西安Android软件工程师,西安安卓软件工程师培训封闭班
  19. 编程复制文件到system32文件夹中
  20. 布局优化工具Hierarchy Viewer

热门文章

  1. logit回归怎么看显著性_[转载]spss logistic回归方程检验
  2. CTFSHOW 愚人节欢乐赛WP
  3. 分治法求最大值c语言思想,整数的除法 分治思想 求最大子向量和
  4. 机器学习——马氏距离
  5. 数字IC设计verilog编写——6脉冲同步器
  6. Windows 7各版本的主要功能区别是什么 有何不同
  7. Leetcode应该怎么刷?【笔试】
  8. 入职两个月的一些感受
  9. vscode 显示/设置隐藏文件夹
  10. oracle修改dbf文件,如何修改Oracle的dbf文件位置