搜推算法介绍和模型积淀
搜寻和举荐能够说无处不在,最次要的特点就是个性化,能依据不同用户不同的爱好给用户举荐不同的物品。举荐的实质是建设 user 与 item 的匹配关系,搜寻的实质是建设 user 与 query 与 item 的匹配关系。
演进路线
为了达到最佳的匹配关系,整个解决方案也在一直摸索和提高。但不论是什么样的场景,咱们解决这类问题的演进路线都是相似的。初始阶段根本以人工经营和热门榜单为主,因为新的零碎是没有数据积攒的,咱们对用户还没有数据上的认知,通常会应用全局或者是行业最热的物品来进行展现。第二个阶段,咱们在之前的根底上引入一些简略的模型来做举荐,这时的算法模型是从 0~1 的,成果晋升也是最显著的。第三个阶段,简略的模型曾经没有方法充分利用现有的数据,就须要思考在现有的数据根底上,怎么样去设计更简单的模型,达到更好的举荐成果。举荐的根底有两点,一是信息要过载,二是必须有可利用的数据。
常见链路
常见的链路比拟相似,分为数据和算法模型局部。整个算法的链路分为召回层、排序层和重排层,数据局部咱们会利用一些实时数据、准实时数据或者离线数据,通过特色工程产生 user 维度、item 维度和 context 维度的特色。这些特色是咱们的算法模型进行训练和预估的输出,这样从数据到模型,整个链路就串联起来。
召回算法
召回是升高后续链路排序压力的重要环节,同时能够保障肯定的相关性,防止咱们在排序预估的时候,给用户展现出 bad case。召回中样本的设计是非常重要的,因为在召回与排序中,咱们对于模型样本的设计要区别对待,所以对于召回须要重点刻画它的正负样本。
惯例个性化召回有热门召回,LBS、u2tag2i、协同过滤、新品召回等。目前罕用的召回都是基于 Embedding 的框架,如 YouTube 的召回是以用户点击的 item 作为标签,做视频的召回。Airbnb 对于民宿的召回也是基于 Embedding 框架,同时做了很多的 trick。FM、DSSM 都会产生用户的 Embedding 向量和 item 的 Embedding 向量,这两个 Embedding 向量产生进去之后,咱们能够做一些向量类似度的计算,对用户召回比拟感兴趣的 item。在向量类似度计算中会用到向量引擎,哈啰向量搜索引擎是 Milvus。
用户有关键词的召回后面还有 query parse,须要对用户的关键词做一些解决,包含预处理、分词、纠错、实体辨认等。次要目标是保障文本相关性,咱们实现的模型是基于 BERT,晋升实体辨认的精确度,目前曾经用在了酒店的关键词搜寻中。比方用户输出的 query 是维也纳上饶高铁站,这时咱们须要去辨认出用户目标,相当于用户搜的维也纳是酒店名称,上饶高铁站是地理位置,上饶是城市名称。咱们根据这三类的实体再别离进行召回,能够满足用户输出的 query 需要。
精排模型演变门路
精排模型其实就是数据加特色加模型,同时在精排的链路里,咱们常常会用到的是一些大规模的离散特色和间断特色,并利用一些比较复杂的模型,因为这时咱们要保障精确度。对于精排模型,特色决定了排序的天花板,所以咱们要做的第一步是设计合乎业务场景的特色,这里就不开展。
咱们次要介绍一下哈啰的模型演变门路,后期是一些小规模的 DNN 模型,模型的参数绝对较小,之后咱们实现了大规模离散的 DNN 模型,如 DeepFM、DCN、DIN 等。目前 DeepFM 和 DCN 模型仍然是新场景会优先思考的模型,这类模型简略高效,个别在简略的场景下能够拿到比拟好的成果。但随着场景接入越来越简单,咱们须要兼顾多指标多场景的举荐问题,所以咱们做了一些 ESMM、MMOE、MBN 等模型,并且也在尝试用元学习做跨域的举荐。
重排算法
重排的定位是晋升用户体验、保障内容的多样性,同时有一些业务经营的逻辑。尽管这一环节不会很简单,但它其实最贴近业务,对最终的排序成果影响最大,所以这里的设计须要尽量保障咱们模型的后果不会被大范畴扭转,同时去兼顾用户体验和经营策略。比如说打散,咱们去把同类目标商品进行打散;还有曝光过滤,用户屡次看过的就不让持续展现。同时对新品做提权等,须要依据不同的业务需要进行设计。
搜推一体化引擎和算法组件设计
咱们面临的问题是新业务的场景越来越多,如果从 0 到 1 实现整个链路,须要破费很大的人力老本。如何将现有的算去迅速扩大到新增场景,同时还能够去继续优化咱们重点的场景,咱们就提出了搜推一体化引擎和算法组件,彻底改变之前单个场景独自定制接入的形式。
一体化引擎设计思路
常见的解决方案是搜索引擎和举荐引擎离开,但一体化是业界比拟先进的趋势。搜寻从纯文本相干逐步走向个性化,举荐从轻内容了解到重内容了解,它们的架构和算法越来越趋同。局部头部大厂如阿里云曾经开始尝试一体化的架构设计,但因为历史包袱较重很难彻底。哈啰作为新兴平台类的业务具备后发优势,间接一体化会缩小很多反复建设,能够进行局部链路的合并。
一体化引擎能够交融搜索引擎和举荐引擎的次要模块,蕴含通用的排序模块、召回模块和内容了解的模块。这样一体化引擎有本人独特的局部,也有不同链路之间共用的局部,能大大减少反复的工作,同时提供给业务方能够通过低代码量进行接入。
数据标准化
一体化引擎须要去兼容多种简单场景,具备很大的挑战。咱们思考到如果要做标准化的引擎,第一步就是要做数据标准化。离线的数据须要去通过数据映射字段映射成规范的数据,实时的数据须要在曝光、点击、下单的事件中做一些埋点标准化的工作,这样到咱们算法中的数据都是一些绝对规范的数据,就能够做一些规范的解决。
一体化引擎
一体化引擎有两个重要的局部,一是配置管理核心,二是线上的链路。它依靠于数据的标准化和接入的标准化,会提供服务编排的配置核心,整体的线上链路以 QP、召回、排序、重排阶段作为流程的编排骨架,进行各阶段组件的组合。对于新接入的业务零碎,它的工作量就很小了,只有去配合引擎做相应的输出以及 es 数据源的提供,就能够接入咱们的举荐能力。
配置核心
离线局部咱们通过 SQL 的映射,产生一些规范的字段,这些规范的字段通过一些通用的逻辑,去产生用户维度或 item 维度的特色。而这些特色对于咱们的模型,相当于是提供了绝对比拟规范的输出。召回环节也是一样的,利用这些映射好的字段,进行召回通道的计算,这样通过映射会让不同的场景映射到雷同的字段上,咱们产生的后果和计算逻辑是一样的。
线上局部召回池咱们能够去配置召回的通道及召回的个数,排序咱们去配置决策流 ID,配置文件能够主动把整个链路包含 QP、召回、排序串联起来,离线和在线的组件和服务编排能够依靠于配置文件进行主动生成。
智能算法组件
目前算法通过数据标准化和智能组件池曾经实现了很多组件。数据标准化咱们通过一些字段的映射以及通用的埋点,能够产生规范的用户画像特色、item 画像、用户统计的特色、item 统计的特色,这些规范的特色进入用意辨认组件池或召回组件池以及排序组件池里,相当于有规范的输出,这些组件池提供了不同的模型以及离线的工作,这些离线的工作能够疾速利用到其余的场景中。
咱们的用意辨认组件池实现了分词和实体辨认,召回组件池有热门、标签、query 召回、item2vec,排序组件池有 DeepFM、XdeepFM、MBN 等,重排组件池有提权、曝光过滤、打散等。这样业界支流的算法组件都曾经具备,整个链路基本上笼罩,接下来咱们会持续去开发一些更高阶的组件,最终实现标准化的接入形式,让业务方接入搜寻举荐算法能力的效率有很大的晋升。
搜推一体化算法在哈啰的利用
一是商品类的举荐,具备促成成交的属性,咱们笼罩了金融借贷、哈啰好物、电动车商城等,晋升 CTR、GMV 等。二是 feeds 流类的举荐,带有促成用户沉闷属性,包含逛逛、电动车社区、电动车用车页等。三是搜寻排序,有用户强志愿,须要满足相关性,召回全,咱们笼罩了租车、酒店等。总体上咱们笼罩了十多个场景,获得了不同水平的成果晋升,并且场景还在一直减少中。
(本文作者:侯亚伟)
本文系哈啰技术团队出品,未经许可,不得进行商业性转载或者应用。非商业目标转载或应用本文内容,敬请注明“内容转载自哈啰技术团队”。