物料冷启的推荐实践

来源:之家技术


1. 物料冷启定义

推荐系统致力于解决用户的信息过载、内容的精准投放和公司的目标最大化问题。在汽车之家,每天有数万至数十万的新物料产生,新物料代表了新的内容、新的资讯、新的事件和新的趣闻。而这些新物料加入推荐池后,由于其缺乏用户-物料的行为交互,较难发现其目标用户从而进行有效投放,在行为数据主导的推荐场景更是如此。为了解决新物料的分发慢、效果差问题,之家进行了一系列的策略和算法尝试,显著提升了新物料的分发速率和分发效果。

图1. 物料推荐状态变化


2. 物料冷启优化

在汽车之家首页推荐场景,新物料被定义为24小时内的部分业务线的非商业物料,为提供足够的数据以供模型学习,新物料需要在24小时内积累产生足够的用户-物料交互。由于冷启定义的时效较短,因此推荐系统的各个链路都需要有较强的时效性保证。新内容进入推荐池后,会先后经历:标签生产、索引入池、内容召回、模型排序、引擎重排、内容曝光等阶段,如图1所示。其中任何一个环节出现异常,都会影响物料的曝光,如标签的实时性、索引的实时性、排序分、调权策略的有效性等。因此,冷启的优化,很大一部分是推荐链路的优化,除此之外,还包括策略层面的优化和算法层面的优化。

图2. 新物料的曝光链路

2.1

链路优化

新物料生产后,首先会通过正排系统接入,录入物料的基本信息,包括推荐时间、业务标签、物料推荐状态等;随后内容理解服务将进行标签生产,包括车系、关键词、分类、话题、情感等;正排系统与内容理解标签都完成校验后,物料将会被实时索引接入,实时索引代表了所有可推荐物料的集合,物料若不在实时索引中,则无法进行后续推荐;随后新物料召回模型将根据物料的标签、标题相似度、后验表现等进行内容召回;召回的物料进入排序模型进行打分,排序打分完成后,引擎将会根据重排策略对物料进行重排;当新物料被排到用户的可见曝光范围内时,则被认为是一次成功的曝光。


在这个曝光链路中主要存在以下几种类型的要求:

1. 各链路的实时性:要求标签生产、索引入池的实时性。标签生产的延迟将会导致内容召回的延迟和模型排序的劣势,而索引入池的延迟将直接压缩物料冷启时间,导致冷启失败;

2. 内容的分发限制:不同业务线内容,具有不同的分发限制,如地域限制、重复限制、内容类型限制等,为保证冷启的效率,需要提前对此类有限制物料进行过滤或降低曝光目标;

3. 排序链路的精简:大多数推荐系统在排序阶段同时存在粗排和精排阶段,而新物料由于其部分静态特征、离线统计特征的缺失,在排序阶段容易被打上极低的分数,因此新物料的排序链路越长,则曝光的概率越低,因此需要精简新物料的排序链路。在之家场景新物料不经过粗排,保证了所有新物料都会输出一个排序分;

4. 重排方式的有效性:新物料在排序阶段容易被打上极低的分数,使用简单的乘法调权公式,容易出现过度曝光和无法精准控制的情况,因此需要设计更加有效和可控的调权方式。

2.2

算法优化

当上述链路的要求都保证之后,物料冷启动优化的工作就已经完成了一大半,或者说优化的工作将会变得更加顺畅和有效。在算法优化方面,主要的工作集中在物料召回、精排模型和引擎重排上。

► 物料召回

为保证新物料的曝光,则首先必须保证新物料的召回。新物料由于其后验数据的缺失,在绝大多数的行为召回中不占优势,其召回的概率较低,因此必须新增召回单独对新物料进行召回。而新物料由于其内容的多样性,需要使用多路召回进行召回。此外使用强化学习进行召回参数配置,为对于行为丰富物料进行热度召回,对行为稀疏物料进行探索召回。在汽车之家首页推荐场景,当前一共有7路冷启召回,按照类型可分为标签召回、相似度召回、补量召回。

标签召回:包含车系、品牌、作者、概念标签、二级分类召回,根据物料的标签进行召回,召回的顺序使用beta分布进行随机生成,beta分布可根据优化目标进行设定,包括点击、时长、互动等,beta分布的公式参考,以点击为例,beta分布的公式如下:

其中click_base,sight_base分别代表点击、曝光的偏置项,需根据业务场景进行配置;
相似度召回:使用OpenAi的text-embedding-ada-002使用标题进行向量生成,随后使用faiss进行向量检索,从而进行召回;
补量召回:对于上述使用标签召回、相似度召回仍不能达成曝光目标的新物料,使用补量召回进行召回,召回的概率依据曝光缺口进行。
► 精排模型

精排模型在很大程度上决定了物料的曝光效率与曝光效果。新物料由于其统计特征与部分静态特征的缺失,在精排打分上容易过低;此外在精排模型学习中由于其样本较少,容易在学习过程中被淹没;因此需要在模型和样本层面上对新物料的排序进行优化。在样本上,之家使用了统计特征dropout的策略,对于物料的天级别统计特征按照一定概率进行随机置0,随后输入模型进行训练;在模型训练内部,使用物料的发布时间的衰减参数对损失进行加权,让新物料相比老物料有更高的损失。

其中item_publish_time是物料发布至今的时长,单位为十分钟。

引擎重排

新物料由于其静态特征、统计特征的缺失,在排序打分中往往会比较占劣势,此外精排模型由于其打分范围分布交广(10e-7到1.0),使用乘法公式要保证物料的曝光,则最大需要调整10e7倍。其参数范围太广,此外存在倍率太高曝光激增的可能。因此,为从引擎上优化新物料的曝光,需要在引擎重排公式上进行优化。当前之家使用的新物料重排公式如下:

其中,rank_score代表精排输出的分数,weight代表调权系数,score代表重排后的得分。在这个调权公式下,调权系数的范围将会变成0-100,保证了调权系数的有效性。

除此之外,为保证物料能够在24小时内达成目标曝光量,之家场景按照正常的每日曝光量分布,为每个物料设定当前时刻的目标曝光下限,目标达成则不进行调权控制,使得物料冷启的速率尽量平滑,且尽可能自然曝光以保证新物料的分发效果。

2.3

策略优化

算法是在当前策略框架下的优化,而策略更像是修建一条新的运河,能够引导水流的流向,以达成优化目标。因此,在冷启优化中,策略在很多程度是更重要的一个优化方式。在之家首推,冷启侧的策略优化主要包括以下几个方面。

1. 量控打散:为防止用户首页冷启物料曝光数量过多,控制用户每刷曝光的新物料数量及间隔条数;

2. 特征覆盖:新物料由于其特征缺失,在排序阶段不占优势,使用业务线的平均统计特征数值来进行覆盖;

3. 策略轮询:冷启策略离线运行,5分钟一批轮询,同步更新召回、调权、冷启列表以供下游使用;

4.调权限制:若当前轮询物料的调权系数过小,则将该物料从冷启列表移除,使其自然曝光,若再次超过该阈值,则重新加入列表;

5. 召回限制:为提升冷启个性化召回的召回占比,提升冷启分发效果,冷启补量召回延迟启动;

6. 人群限制:为保证新用户和低活跃用户的分发效果,提升冷启物料的分发效果,新物料的冷启动主要在活跃人群上进行;

7. 冷启补丁:除了以上策略外,冷启策略中还包含诸多的补丁,如修复作者等级的变化、推荐时间的变化、物料入池过晚等补丁,这些问题都会影响新物料的统计和分发。


3. 效果及展望

之家内物料冷启优化自2022年中旬开始,到撰稿的时候已去一年,冷启的成功率(达到目标曝光量的物料比例)从一开始的27%左右上升到99%+,冷启CTR从一开始的5%上升到14%+,效果有了显著的提升。

对于后续冷启的优化,笔者认为主要集中在2个方向上:

1. 新物料的定义放宽,如进而优化3天内、5天内的新物料,从物料的曝光曲线上进行优化,让后期热门物料更快的达到热门推荐状态,加速优胜劣汰进程;

2. 从物料特征上,当前物料特征包含实时和离线特征两部分,融合实时与离线特征,加速特征生产;

3. 从模型算法上,放宽新物料的定义,从模型角度上对此类物料进行优化,提升业务目标。


请使用浏览器的分享功能分享到微信等