AI 科技评论按:本文作者为阿里巴巴搜索事业部总监欧文武,经阿里巴巴授权发布。
以深度学习为代表的人工智能在图像、语音和 NLP 领域带来了突破性的进展,在信息检索和个性化领域近几年也有不少公开文献,比如 wide & deep 实现了深度模型和浅层模型的结合,dssm 用于计算语义相关性,deepfm 增加了特征组合的能力,deep CF 用深度学习实现协同过滤,rnn recommender 采用行为序列预估实现个性化推荐等。工业级的信息检索或个性化系统是一个复杂的系统工程,深度学习的工业级应用需要具备三个条件:强大的系统计算能力,优秀的模型设计能力和合适的应用场景,我们梳理了过去一年多搜索在深度学习方向上的探索,概要的介绍了我们在深度学习系统、深度学习算法和搜索应用落地的进展和思考,希望对大家有所启发。
深度学习在搜索的应用概括起来包括 4 个方面:
首先是系统,强大的深度学习训练平台和在线预测系统是深度学习应用的必要条件,目前我们的离线深度学习框架、在线深度学习框架和在线预测框架统一到 tf,并实现了日志处理,特征抽取,模型训练和在线服务部署端到端的流程,极大提升了算法迭代效率;
其次是搜索应用,包括智能交互,语义搜索,智能匹配和智能决策四个技术方向,这四个方向的协同创新实现了搜索全链路的深度学习技术升级,并具备从传统的单场景单目标优化到多场景多目标联合优化的能力;
再次是在性能优化上做的工作,包括模型压缩、量化、低秩分解再到二值网络,大量的技术调研和论证,为未来提高深度模型预测性能和软硬件协同优化做了很好的技术铺垫;
最后是排序平台化,实现了 PC 商品搜索、无线商品搜索、店铺内搜索搜索和店铺搜索的搜索服务统一,通过特征和模型复用,实现了多条业务线技术的快速升级。下面我会简要的概括下在四个方向上取得的主要进展和背后的思考。
下面是搜索系统和算法的简图。系统包括:
a. 离线数据平台 ODPS,负责离线日志 join、特征抽取和离线模型预估产出排序特征,时效性不强的特征都是通过离线数据平台产出的,比如用户性别标签,商品关键字等;
b. 离线机器学习平台 PAI,底层是主流的 parameter server 和 TF 深度学习框架,平台实现了大部分机器学习算法模型的并行训练和预测,在搜索应用中主要作用是离线模型训练产出离线排序特征模型;
c. 流式计算和在线学习平台 Porsche,流式计算是基于 blink 负责实时日志解析和特征 join 生成实时排序特征,在线学习和离线学习底层框架可以相同,差别主要是依赖数据源和部分优化方法不同,由于用户行为和市场环境变化快,流式计算和在线学习在搜索应用非常广泛,并积累了不少在线学习和强化学习算法;
d. 在线服务平台,包括引擎、排序服务和搜索平台组成,负责在线的服务分发、索引查询、排序服务和结果合并等功能,搜索的排序策略、相关性、个性化等模型主要通过在线预测服务生效。经过多年发展我们已经具备了非常完善的商品搜索排序算法体系,包括知识图谱、分词、tagging、类目预测、意图预测、拼写纠错、query 推荐、query 语义改写、相关性、商品标签、商品质量、店铺分层、用户 profile、用户偏好、用户感知、召回策略、个性化模型、多样性策略、异构服务混排策略、多目标联合优化策略、多场景联合排序策略等,并平台化的方式赋能相关业务团队。
搜索系统和算法简图
机器学习平台。搜索训练样本主要来自用户行为,由于用户行为是流式数据,适合做在线深度学习,但当模型参数非常庞大需要海量的样本时在线学习需要很长的时间才能收敛,这时一般是先做离线预训练再结合增量或在线学习,另外有些模型离线预训练后在线只需要对接近输出层的网络做 fine-tuning。搜索在实际应用的有离线机器学习平台 PAI 和在线机器学习平台 Porsche,两个平台深度学习框架目前都统一到了 tf-pai,tf-pai 对原生 tf 做了一些优化,比如底层通讯,稀疏参数存储、优化方法、GPU 显存优化等,比原生 tf 训练深度有较大的提升,训练上千亿样本和上百亿参数的深度模型毫无压力。虽然 Porsche 和 PAI 都支持 GPU,但在搜索应用中 CPU 依然是主流,GPU 应用比较少,原因主要是个性化相对图像或语音简单,特征抽取网络比较浅,维度相对较低,GPU 的稠密矩阵计算能力得不到充分发挥,同时离在线混布后流量低谷期间腾出了大量的在线服务闲置 CPU,把临时闲置的 CPU 利用起来做深度学习训练是一个非常好的思路。
在线预估 RTP,搜索排序算分服务。由于每次搜索请求有上千个商品需要计算排序分数,深度模型应用对 RTP 服务的压力是非常大的,RTP 通过采用异构计算,计算算子化和模型分片等方式解决了深度模型 inference 计算和存储问题,深度模型用 GPU,浅层模型用 CPU,今年双 11 期间搜索 RTP 服务用到了 550 张 GPU 卡。另外,RTP 还实现了离线/在线训练模型/数据和在线预测服务部署的无缝衔接,算法训练好的模型或数据可以很轻松的部署都在线服务,提升了算法迭代效率。
智能交互。商品搜索就是带交互的商品推荐,用户通过关键字输入搜索意图,引擎返回和搜索意图匹配的个性化推荐结果,好的交互技术能够帮助到用户更好的使用搜索引擎,目前搜索的交互主要是主动关键字输入和关键字推荐,比如搜索框中的默认查询词和搜索结果中的文字链等,推荐引擎根据用户搜索历史、上下文、行为和状态推荐关键字。
和商品推荐的区别是,关键字推荐是搜索链路的中间环节,关键字推荐的收益除了关键字的点击行为外,还需要考虑对整个购物链路的影响,包括在推荐关键字的后续行为中是否有商品点击、加购和成交或跳转到另外一个关键字的后继行为,这是一个典型的强化学习问题,action 是推荐的关键字候选集合,状态是用户当前搜索关键词、上下文等,收益是搜索引导的成交。除了被动的关键字推荐,我们也在思考搜索中更加主动的交互方式,能够做到像导购员一样的双向互动,主动询问用户需求,挑选个性化的商品和给出个性化的推荐理由,目前阿里搜索团队已经在做智能导购和智能内容方向的技术原型及论证,智能导购在技术上主要是借鉴对话系统,通过引导用户和引擎对话与关键字推荐方式互为补充,包括自然语言理解,对话策略,对话生成,知识推理、知识问答和商品搜索等模块,功能主要包括:
a. 根据用户搜索上下文生成引导用户主动交互的文本,比如搜索「奶粉」时,会生成「您宝宝多大?0~6 个月,6 个月到 1 岁….」引导文案,提示用户细化搜索意图,如果用户输入「3 个月」后,会召回相应段位的奶粉,并在后续的搜索中会记住对话状态「3 个月」宝宝和提示用户「以下是适合 3 个月宝宝的奶粉」。
b. 知识导购,包含提高售前知识问答或知识提示,比如「3 个月宝宝吃什么奶粉」回答「1 段」。目前对话技术正在提高中,尤其是在多轮对话状态跟踪、知识问答和自动评价几个方面,但随着深度学习、强化学习和生成对抗学习等技术在 NLP、对话策略、阅读理解等领域的应用,越来越多的训练数据和应用场景,domain specific 的对话技术未来几年应该会突飞猛进。智能内容生成,包括生成或辅助人工生成商品和清单的「卖点」,短标题和文本摘要等,让淘宝商品表达更加个性化和多元化。
语义搜索。语义搜索主要是解决关键字和商品内容之间的语义鸿沟,比如搜索「2~3 周岁宝宝外套」,如果按照关键字匹配召回结果会远小于实际语义匹配的商品。
语义搜索的范围主要包括:
a. query tagging 和改写,比如新品,年龄,尺码,店铺名,属性,类目等搜索意图识别和归一化,query tagging 模型是用的经典的序列标注模型 bi-lstm + CRF,而标签分类(归一化)作为模型另外一个任务,将序列标注和分类融合在一起学习。
b. query 改写,主要是计算 query 之间相似度,把一个 query 改写成多个语义相似的 query,通常做法是先用不同改写策略生成改写候选 query 集合,比如词替换、向量化后 top k、点击商品相似度等,然后在用 ltr 对后续集合排序找出合适的改写集合,模型设计和训练相对简单,比较难的是如何构建高质量的训练样本集合,线上我们用 bandit 的方法探测部分 query 改写结果的优劣,离线则用规则和生成对抗网络生成一批质量较高的样本。
c. 商品内容理解和语义标签,通过商品图片,详情页,评价和同义词,上下位词等给商品打标签或扩充商品索引内容,比如用 image tagging 技术生成图片的文本标签丰富商品内容,或者更进一步用直接用图片向量和文本向量融合,实现富媒体的检索和查询。
d. 语义匹配,经典的 DSSM 模型技术把 query 和商品变成向量,用向量内积表达语义相似度,在问答或阅读理解中大量用到多层 LSTM + attention 做语义匹配,同样高质量样本,特别是高质量负样本很大程度上决定了模型的质量,我们没有采样效率很低的随机负采样,而是基于电商知识图谱,通过生成字面相似但不相关的 query 及相关文档的方法生成负样本。
从上面可以看到 query tagging、query 相似度、语义匹配和语义相关性是多个目标不同但关联程度非常高的任务。下一步计划用统一的语义计算框架支持不同的语义计算任务,具体包括
1. 开发基于商品内容的商品表征学习框架,为商品内容理解,内容生成,商品召回和相关性提供统一的商品表征学习框架,重点包括商品标题,属性,详情页和评价等文本信息抽取,图像特征抽取和多模信号融合。
2. query 表征学习框架,为 query 类目预测,query 改写,query 推荐等提供统一的表征学习框架,重点通过多个 query 相似任务训练统一的 query 表征学习模型。
3. 语义召回,语义相关性等业务应用模型框架。语义搜索除了增加搜索结果相关性,提升用户体验外,也可以一定程度上遏制淘宝商品标题堆砌热门关键词的问题。
智能匹配。这里主要是指个性化和排序。内容包括:
a. ibrain (深度用户感知网络),搜索或推荐中个性化的重点是用户的理解与表达,基于淘宝的用户画像静态特征和用户行为动态特征,我们基于 multi-modals learning、multi-task representation learning 以及 LSTM 的相关技术,从海量用户行为日志中直接学习用户的通用表达,该学习方法善于「总结经验」、「触类旁通」,使得到的用户表达更基础且更全面,能够直接用于用户行为识别、偏好预估、个性化召回、个性化排序等任务,在搜索、推荐和广告等个性化业务中有广泛的应用场景,感知网络超过 10B 个参数,已经学习了几千亿次的用户行为,并且会保持不间断的增量学习越来越聪明。
b. 多模学习,淘宝商品有文本、图像、标签、id 、品牌、类目、店铺及统计特征,这些特征彼此有一定程度的冗余和互补,我们利用多模学习通过多模联合学习方法把多维度特征融合在一起形成统一的商品标准,并多模联合学习中引入 self-attention 实现特征维度在不同场景下的差异,比如女装下图片特征比较重要,3C 下文本比较重要等。
c. deepfm,相对 wide & deep 模型,deepfm 增加了特征组合能力,基于先验知识的组合特征能够应用到深度学习模型中,提升模型预测精度。
d. 在线深度排序模型,由于行为类型和商品重要性差异,每个样本学习权重不同,通过样本池对大权重样本重复 copy 分批学习,有效的提升了模型学习稳定性,同时通过融合用户状态深度 ltr 模型实现了千人千面的排序模型学习。
e. 全局排序,ltr 只对单个文档打分然后按照 ltr 分数和打散规则排序,容易导致搜索结果同质化,影响总页效率,全局排序通过已知排序结果做为上下文预测下一个位置的商品点击概率,有效提升了总页排序效率。
f. 另外工程还实现了基于用户和商品向量的向量召回引擎,相对倒排索引,向量化召回泛化能力更强,对语义搜索和提高个性化匹配深度是非常有价值的。以上实现了搜索从召回、排序特征、排序模型、个性化和重排的深度学习升级,在双 11 无线商品搜索中带来超过 10% (AB-Test) 的搜索指标提升。
搜索中个性化产品都是成交最大化,导致的问题是搜索结果趋同,浪费曝光,今年做的一个重要工作是利用多智能体协同学习技术,实现了搜索多个异构场景间的环境感知、场景通信、单独决策和联合学习,实现联合收益最大化,而不是此消彼长,在今年双 11 中联合优化版本带来的店铺内和无线搜索综合指标提升 12% (AB-Test),比非联合优化版本高 3% (AB-Test)。
性能优化。在深度学习刚起步的时候,我们意识到深度模型 inference 性能会是一个瓶颈,所以在这方面做了大量的调研和实验,包括模型压缩 (剪枝),低秩分解,量化和二值网络。
通过以上技术,今年双 11 期间在手淘默认搜索、店铺内搜索、店铺搜索等均取得了 10% (AB-Test) 以上的搜索指标提升。
通用用户表征学习。前面介绍的 DUPN 是一个非常不错的用户表征学习模型,但基于 query 的 attention 只适合搜索,同时缺少基于日志来源的 attention,难以推广到其他业务,在思考做一个能够适合多个业务场景的用户表征模型,非搜索业务做些简单 fine tuning 就能取得比较好的效果;同时用户购物偏好受季节和周期等影响,时间跨度非常大,最近 K 个行为序列假设太简单,我们在思考能够做 life-long learning 的模型,能够学习用户过去几年的行为序列;
搜索链路联合优化。从用户进入搜索到离开搜索链路中的整体优化,比如 搜索前的 query 引导(底纹),搜索中的商品和内容排序,搜索后的 query 推荐(锦囊)等场景;
跨场景联合优化。今年搜索内部主搜索和店铺内搜索联合优化取得了很好的结果,未来希望能够拓展在更多大流量场景,提高手淘的整体购物体验;
多目标联合优化。搜索除了成交外,还需要承担卖家多样性,流量公平性,流量商业化等居多平台和卖家的诉求,搜索产品中除了商品搜索外还有「穹顶」,「主题搜索」,「锦囊」,「内容搜索」等非商品搜索内容,不同搜索目标和不同内容(物种)之间的联合优化未来很值得深挖。
智能交互。「搜索排序做的再好搜索也只是一个工具」,如何把搜索从工具做成私人导购助手,能够听懂你的语言,了解你的情绪,能够对话和多轮交互,解决售前售后困惑,推荐更加个性化的商品应该是搜索未来的另外一个主要发展方向。