回顾·搜索引擎算法体系简介——排序和意图篇
本文根据刘老师在DataFun Talk算法架构系列活动“人工智能典型场景算法应用解析”中所分享的《搜索引擎算法体系介绍——排序和意图篇》编辑整理而成,在未改变中心思想的基础上稍做修改。https://v.qq.com/txp/iframe/player.html?vid=e0631gnz9q5&width=500&height=375&auto=0
请在WiFi环境下服用,土豪随意~~
前面讲的搜索引擎框架都是基于产品的,现在从开发的角度讨论下搜索引擎,分为线上和线下。线下主要就是抓取、分类、聚类、打标签,然后这种图谱的实体识别、关系挖掘等操作,数据处理完后就给线上不同模块使用。图中中层就是对应前面说的几个阶段,最上层有一个模块对所有的模块返回的结果做一个整合,最后作为一个完整搜索页返回给用户。还有如查询词分析、意图识别都是在这里面完成,各个搜索引擎都是这种结构,当前是搜狗开发框架。
第三部分我们主要进入算法部分,主要集中于排序和意图识别两个方向。下图展示了排序和意识算法这些年的发展。
文章排序方面可能涉及更多,第一条线是LTR,首先是各种线性模型、统计相关性和决策树,在辅助人工规则(搜狗11年前就是这种技术)。然后就是LTR,搜狗使用的是lambda Mart,在LTR之下还有一整套特征体系(如page rank、trust rank来计算相关性);另外一条线就是点击模型这块,直接利用用户的点击信息,然后来进行挖掘,他把用户的浏览行为做了一些假设(如顺序浏览,点击某一条结果不满意是否可以浏览下一条结果),目的是去掉排序位置的偏置;第三条体系类似于淘宝做的个性化,目前是LR模型,以及其他的深度模型。
规则识别算法,我们先来看一个例子“北京高清地图”,“北京”是一个地名,表明我要查哪的实体词,“地图”是一个类别倾向的词,“北京”是中心词“高清”是可有可无的部分“地图”就是一个pattern。这种模型可以进行扩展,如“双中心词+pat”或“中心词+属性”。大家可以觉得这个算法简单,在搜狗中可以覆盖60%的query,所占类别90%,应用范围广,精度高,反应速度快,聊天机器人用的很多。具体思路:首先要一个中心词(种子)的集合,其次查询词的大集合。比如“让子弹飞”,拿到这个查询词做切分划分为不同的前后缀,然后加上实体词本身,切分的前后缀可以计算词频信息、左右熵、可信度等。经过第一次扩展就可以得到一pat候选集合,如导演、演员表、影评这些热门词就可以挖到,然后根据候选词再返回查询词集合做切分,又可以得到一些前后缀,经过若干次迭代得到一些扩展后的中心词列表以及pat表,这是二分图概念。我们再加一些可有可无词又生成一个表,类似于三分图概念。
再来看一个FaceBook的FastText模型,这个模型只有一个隐层,下面就是各种embedding,上面就是softmax输出。主要特点计算速度快,几十万的词,几十万的类别很快就能跑出来。而且Facebook在这方面有开源的代码,有兴趣的可以试试。模型架构有点类似cbow模型,只是不是用的加法而是用一个隐层,最后用了一个层次化的softmax对其进行加速。
接下来是搜索排序,其体系还是比较复杂的。从底层数据的处理和挖掘、各种标签特征提取、计算,最后在线上在顶层用各种模拟拟合,打分,最后得到最终的打分进行排序。模型改进也是这个思路。
首先介绍一个顶层的LTR模型,右边是搜索排序指标,上边一引擎线下的一些排序指标,主要是进行人工评测的。NDCG整体想法就是:一个相关的文章排在越靠前,NDCG打分越高。LTR模型整体分为左边的三种,大多数引擎选用的是listwise或pairwise,微信中Lambda Mart引入了NDCG变化因子,直接优化最终评测指标。
FM模型是主要做顶层特征的方法,这种模型适合对各种标签0/1特征的融合,然后进行一个交叉,比传统的LTR拟合强度更好。例如计算query和Title间的一个成本,去把他们分词,然后学习他的点击,具体特征就是查询词分词后term还有文档title分词后的term,用这些term对是否点击进行一个拟合。使用FM实现,主要是逻辑回归+二次项,然后用embedding向量做一个优化。
另外我们可能需要去做个性化建模,我们最开始使用的是逻辑回归,然后现在也在用WDL模型,具体模型的思路就是结合线性模型的记忆能力和DNN的泛化能力,同时训练2组参数,达到整体模型最优。这个是网上美团点评使用WDL后的效果对比,AUC大概提升了3个点。
Click Modle对用于浏览行为进行建模:(1)简单点击模型,假设用户在浏览排序结果的时候是顺序浏览一旦点击这次浏览就结束,这样只能对一次点击进行建模,缺点好多数据无法处理。(2)DBN模型允许用户浏览发生多次点击,如果用户点击后发现不满意可以继续浏览,这其实也是顺序浏览的过程,并且对用户点击满意度也进行建模。(3)UBM允许用户跳转浏览,如从第一条跳到第三条结果,再继续浏览,可以消除用户浏览的偏置。
接下来这张图就是比较了下不同的点击模型在线下不同指标的评测情况,在附录页的论文有更详细的对比,大家可以去看一下。
下面我们看一下稍微新一点的思路和算法:(1)首先就是Ubias LTR,大多应用在人工标注的数据里做训练。比如一条结果分为5个档次,然后人工标注,机器再做拟合,这样成本很高,很多人是在用户点击行为中挖掘一些打分信息,比如有些文章用户点击次数较多,浏览时长较长,这样就可以给一个比较高的分档,就可以生成训练数据,这样容易常点击就排在前面。有的将“点击模型+LTR”使用,假设每个排序都有一个被浏览到的概率,通过概率进行剔除来还原用户真实点击意愿。
(3)IRGAN对抗网络,也可以做推荐。有一个生成模型和一个判别模型,前者生成干扰项(负例),判别模型进行排序,如果判别模型能判别出生成模型生成的干扰项,可以得到更好的效果,学习的过程也是一个迭代的过程。
下面是一些论文的推荐。
如果您觉得这篇文章还不错,帮忙转发分享哈~~
DataFun社区是一个关注大数据、人工智能技术主题的社区,主要形式以组织线下的技术沙龙活动为主、线上运营为辅。希望将行业内资深从业者拉到大家面前,和大家进行一对一的面对面交流,促进同行间的沟通交流,推动大数据、人工智能技术在不同场景下的交流融合、共同进步。DataFun的愿景是:为广大数据从业者和爱好者打造一个公益免费的分享、交流、学习、成长的平台。
目前我们的活动已经覆盖了北京、深圳、上海等城市,希望大家多多支持,后期持续为大家推出更多干货的线下沙龙活动。
技术品牌推广,活动举办等商务合作请联系:
手机:137-1612-3521、微信:tianmuqu
最新活动、更多分享,请关注DataFunTalk公众号: