小米移动搜索中的AI技术

2019 年 6 月 05 日

小米移动搜索中的AI技术

一、背景


以深度学习为代表的 AI 技术近年来在搜索推荐场景中得到广泛的应用,对用户 Query 和内容侧的理解不断深入,用户体验得到显著提升。


搜索是一种典型的 AI 应用,关键技术包括 Query 分析 、内容理解、文本相关性计算以及排序等。从统计机器学习到深度学习,算法结合大数据将搜索引擎精度不断的提升。本次分享以部分技术为例探讨小米移动搜索中应用的 AI 技术。



小米的移动搜索主要有两个场景,MIUI 的主搜索入口,以及浏览器中搜索提示。小米的移动搜索针对移动端搜索的特点,致力于为用户提供精准便捷的体验。实现了应用、内容、服务的直达。例如搜索视频时,直接够唤起爱奇艺/腾讯视频等 app 观看特定选集。


覆盖小米体系和外部合作方内容,以下是部分合作垂类内容提供方:



今天分享的技术内容分几个部分


  • 文本相关性

  • 意图识别和词权重

  • 点击模型排序


先介绍下搜索系统的典型结构:



最基本的搜索架构大体上也都有这样几个部分,百度、搜狗、神马、360 等各大搜索厂商采用的基本架构都是类似的,包括:


  • 前端模块

  • Query 分析模块,负责计算意图/词权重/同义词和 Query 改写等。

  • 取得 Query 分析结果后,发送请求到各索引中进行结果召回。包括关键词召回、向量召回等。通常还会在这个阶段完成低级别特征的计算和粗排。

  • 将上述结果进行高阶特征生成和重排序(精排),排序后对结果再做一些处理逻辑后返回给前端。


搜索与推荐系统的处理过程有不少类似的地方。


二、文本相关性计算


问答和新闻 Query 场景下,文本相关性计算的精度对搜索体验的影响显著。


2.1 问题的定义:以查询 Q 和文档 D 的标题为例,计算相关性分数。


2.2 挑战:缺词,多词,逆序,临近,同义词…


中文的文本相关性计算是一个比较复杂的问题。


例如:



举一个简单的例子,第一个问答中的两种表述存在差异;第二个例子中,在句子中插入不同的字符,对语义的影响也存在不同。


我们设计了两个基本模型解决文本相关性计算的问题,最终使用两个模型融合的结果。


2.3 相关性 GBDT 模型


首先介绍使用 GBDT 模型计算 query 和 document 文本相关性。通过特征工程从人工标注数据中进行学习。有如下几大类特征:



在图中的样本打分为 1 的样本,query 中的核心词 " 33 集 " 在查询结果中没有命中,核心词未命中是模型中很强的一个特征。这两句话在浅层语义上差异也很大。在 " 锦绣未央:唐嫣受伤 " 中主体有 " 锦绣未央 " 和 " 唐嫣 ",而在 query " 锦绣未央 33 集 " 中主体是 " 锦绣未央 " 和 " 33 集 " 。打分为 2 的样本,主体葱爆海参对海参做了限定,但没有超出海参的范畴。


在匹配特征设计中需要分析命中词权重、是否命中同义词、未匹配词是否为停动词等,例如 query 中的词没有在 document 中出现。在上图中标注 3 分的例子中,去掉不重要词 " : ",整个 query 依然是连续命中,该项特征得分就较高。还有就是同义词的处理,这里需要同构离线挖掘同义词的表。类似的特征还有编辑距离,逆序对的数量,考虑词权重的匹配等等。


相关性计算还有一种方法是使用用户行为日志,利用用户更多点击和未点击文档构建训练样本对。与经典的基于关键词匹配相关性算法相比,DNN 模型极大的提高了语义相关性的判断范围和准确性,对于长尾查询的效果也更好。DNN 模型使用的训练样本数据量比较大,我们的场景中目前用到亿级别样本。下图以 C-DSSM 为例 ( 基于微软的论文 ) 。中文与英文相比处理有一点差异,需要先分词之后是取单字和词的 embedding,另外这里推荐 trainable 的 embedding 。模型能够学习出查询与文档的量化表示,并计算相似度。我们还做了一些改进包括输入层增加额外信息。



获取 DSSM 模型处理的结果后,进行模型融合,利用好两种模型的优势。


人工标注样本的优点是精度高,交叉标注可以使得准确率达到 90%以上。从用户行为中收集的样本,样本精度大约只有 70%,优势是数据量大长尾覆盖度好,能将 query 与 document 的语义结果放在同一个向量空间。以下是两种方式比较具体结果:



三、意图识别与词权重


首先看下意图识别的例子,根据输入来识别出不同的意图:



输入是 " 男士用洗面奶洗脸的正确方法 ",在识别出意图后,放到 " jingyan " 、 " zhidao " 等垂类索引中去搜索,能够提升性能并为后续的排序等流程提供信息。


这个项目早期解决的方法是词典+规则的方式,这种方法是精度高、依赖人工挖掘,覆盖度有限,规则之间可能冲突,维护成本高。后来改进为在词典+规则的基础上,使用 LR 和 DNN 两个模型计算意图分数。


使用 FTRL 优化的 LR 模型做意图识别能获得在线学习的方法的好处,是因为意图是动态变化的过程,这使得线上模型能够快速的更新。这里将意图识别建模分为多个二分类问题;构建的特征有 N-Gram 、长度特征、首位位置特征等;单类别的样本量在千万级别。此外还使用了 DNN 模型做意图识别,把多类别的样本放到 DNN 模型中,需要数量保持一定程度的均衡。


在对 query 进行分词后,还需要计算分词结果的词权重,最容易想到的方法是 IDF,这种方法比较简单应用在工业级系统中效果不够理想。因为一个句子具有整体含义,是一个上下文相关的问题。传统的方法是使用 CRF 模型来进行计算,目前 SOTA 的方法是用 BiLSTM+CRF 的方法。



四、点击模型排序


用户的浏览和点击等行为数据除了计算相关性还可以用来改善排序的效果。


移动搜索业务与传统的网页搜索有一个明显的区别,传统的网页搜索结果,不同的网页之间有类似的结构,移动搜索排序面临的一个挑战是异构结果。比如搜索结果中其字段表述的含义跟视频跟应用是不同的,视频里面分级、主演,应用是有哪家厂商发布/应用类型,这些信息在不同结果之间是对不齐的,网页搜索场景中的排序一般是同构结果排序。业务中采用了点击模型进行异构结果的排序。下面介绍几种点击模型: PBM 、Cascade Model 、DBN 。



4.1 点击模型—PBM



PBM 是一个比较简单的基于位置模型,即结果与用户看的概率、实际看的概率来决定。


4.2 点击模型-CM


假设用户看结果是带有顺序的状态,过程如下:



4.3 点击模型-DBN


使用 DBN 的假设包括,第一点是用户点过,并不代表对结果完全满意,即这是概率事件。另外一个假设是给出的所有结果中,并不一定有用户满意的结果,用户可能都不太感兴趣而放弃搜索。DBN 的训练过程中用到了 EM 算法。



我们使用了多模型组合并对模型针对移动搜索场景做了额外的优化。模型中考虑是否有图以及结果的大小等带来的 bias 。


例如下图的 query = " 赵薇老公 ",改进效果对比:



五、总结


搜索推荐的整体架构:



作者介绍:


宫士敏,小米大数据部算法团队 Leader,带领团队构建了小米移动搜索算法体系。研究领域主要包括搜索引擎、机器学习、推荐系统等。对搜索中的相关性计算、排序、NLP 等相关技术有深刻理解,并对深度学习在搜索推荐领域应用有丰富的实践经验。毕业于中科院计算所,之前在搜狗搜索负责网页搜索算法相关工作。


对小米感兴趣的同学,欢迎投递简历至:gongshimin@xiaomi.com


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s/jJ93EpyMDxMC17fkVu2eVw


2019 年 6 月 05 日 08:0011819

评论

发布
暂无评论
发现更多内容

Oracle SQL调优系列之看懂执行计划explain

Nicky.Ma

sql

第三周总结

晨光

架构师训练营 第三周 命题作业

RZC

架构师是怎样炼成的-3-2-设计模式

闷骚程序员

第三周-设计模式-学习总结

吴建中

极客大学架构师训练营

太赞了!一份适合程序员的精选面试题清单。

JackTian

GitHub 编程 程序员 面试题 开源项目

架构师训练营第四周

Melo

基于阿里云服务网格(ASM)的GRPC服务部署实践

韩陆

Kubernetes gRPC Service Mesh

架构训练营第四周 - 作业

无心水

极客大学架构师训练营

极客大学架构师训练营 框架开发 第三次作业

John(易筋)

极客时间 设计模式 极客大学 极客大学架构师训练营 框架开发

一个汉字占几个字节你真的记住了吗?

Java旅途

[架构师训练营] Week01 -学习总结

谭方敏

第三周手写单例模式(饿汉模式)

吴建中

极客大学架构师训练营

极客大学架构师训练营 框架开发 模式与重构 JUnit、Spring、Hive核心源码解析 第6课

John(易筋)

spring 极客时间 极客大学 极客大学架构师训练营 JUnit

区块链改变数字营销与广告市场

CECBC区块链专委会

区块链技术 广告业 精准投放 去中介 公开透明

第三周作业

晨光

架构师训练营 第三周 学习总结

RZC

Zookeeper集群模式启动

tunsuy

zookeeper 源码分析 socket 分布式集群

架构师训练营第四周-总结

无心水

极客大学架构师训练营

rodert单排学习redis进阶【白银一】

JavaPub

Java nosql redis

Zookeeper通信协议详解

tunsuy

zookeeper TCP/IP 通信协议

Zookeeper的数据剖析

tunsuy

zookeeper 日志分析 事务 快照 数据恢复

架构师训练营第三周命题作业

lwy

极客大学架构师训练营

架构师训练营第三周作业和小记

tuuezzy

架构师 极客大学架构师训练营

极客大学架构师训练营 系统架构 第7课 听课总结

John(易筋)

极客时间 系统架构 高并发 极客大学 极客大学架构师训练营

抖音、腾讯、阿里、美团春招服务端开发岗位硬核面试(完结)

aoho

面试 后端 阿里

面向对象设计模式课程小结

行下一首歌

极客大学架构师训练营

良心推荐 | LeetCode(力扣),算法、数据结构的学习良伴

YoungZY

算法

组合设计模式编码&手写单例模式

吴建中

极客大学架构师训练营

【非原创】微服务设计

Arthur

架构师训练营第三周学习总结

lwy

小米移动搜索中的AI技术-InfoQ