Press "Enter" to skip to content

京东李欣如:从单目标排序到多目标模型,显着提升多业务效果!

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

分享嘉宾:李欣如 京东 算法工程师

 

编辑整理:Hoh

 

出品平台:DataFunTalk

 

本文来自早些时候,李欣如老师在DataFun的分享。

 

导读: 个性化推荐在电商领域的作用不言而喻,推荐算法直接影响产品体验、用户留存和平台收益。本次分享结合电商推荐和广告营销两个领域,介绍复杂业务形态下的算法技术应用,以及如何打通业务领域的壁垒,达到整体收益更优的目的。

 

主要内容包括:

 

业务介绍:场景、目标、架构;

 

召回优化:几个召回的优化点;

 

多任务探索: 排序的多任务探索,迭代路径以及一些小的trick;

 

推荐、广告结合: 推荐和广告产品形态以及能力的一些结合复用。

 

01

 

业务介绍

 

 

业务场景:包括分期商城推荐页、楼层推荐页、京东出众、营销推荐等页面,中间两栏为app截图。

 

业务指标:主要是CTR、GMV、ARPU(用户价值)、单量、加购、收藏、浏览时长、分享等。

 

用户的决策路径:如,从曝光(看到) > 点击 > action > 支付。

 

右图是推荐系统的架构图,流量通过接入层到推荐系统中控,中控依次取画像、带画像调多个召回服务,汇总召回结果,分发到排序服务进行特征加工,进行线上预测; 预测结果经过重排后,将展示列表的特征快照数据经MQ落库,如画像、商品特征及一些实时特征,落库后拼接接入层落的label数据,形成最终样本,进行模型迭代、测试、推到线上完成模型更新。

 

02

 

召回优化

 

1. 画像召回-优化

 

 

首先我们在常规的画像召回上进行了优化。常规画像召回的流程是取画像、取对应倒排索引,根据索引分用规则打分,返回topN。

 

这里我们采用画像预召回+模型的方式,主要可以解决画像召回量大,召回内部人工规则排序效果差,难以迭代的问题。

 

模型选型:

 

从LR模型迭代到FFM,挖掘特征交叉信息,离线效果FFM优于LR、FM,常规的思路是使用排序的样本,但这样未能考虑从未曝光过的样本,和推断空间有差异,因此负样本不仅采用曝光数据,也加入了部分召回数据,上线后取得不错的效果;后面又迭代到更复杂的NN模型。

 

FFM模型主要是特征对不同的field有不同的embedding表达,如图所示,由于引入了field,无法像FM那样降低计算复杂度。在FFM隐向量的长度为k,特征数为n时,预测的计算复杂度为o(kn2)。

 

右下图是画像+模型的流程,通过spark生成样本及特征,在docker上训练,把画像预召回结果根据模型分排序截断,返回topN。

 

2. 相似召回&评测

 

 

相似召回的基本思想是根据行为序列,推荐相似的item,实时性好。 线上常规使用的几类相似召回,典型的代表是itemCF ,我们根据不同周期、过滤方法、相似度计算方式,活跃用户降权等进行迭代优化。后来使用embeding方式解决泛化性问题,embedding的发展过程,由最早的MF、ALS发展到word2vec,再到多对1的tag2vec,以及近几年的randomWalk、line、node2vec,item的embedding表征能力也逐渐增强。

 

我们通过构建用户和商品的graph,利用randomwalk的方式得到一系列item序列; 这里容易控制序列长度和以每个节点开始的序列个数,将该序输入word2vec得到item对应的embeding向量,完成对复杂关系链路建模。

 

接下来是怎样评估embedding的好坏:

 

比较直接的是将i2i召回上线,上线评估核心指标,适合快速迭代等场景;

 

离线评测,将embedding输入到排序模型,看对离线loss和AUC的一个收益; 也可以离线生成U2I的推荐列表,评估召回的精确率、召回率、F1值等;

 

第三种,使用排序模型对U2I列表进行打分,评估均值、分布。

 

但这几种评测成本较高,i2i的相似关系怎幺评测,以及相似阈值怎幺确定没有解决。

 

我们采用的方式是,先找一路线上效果较好的相似召回,比如ICF,使用item pair的内容特征、统计特征去拟合ICF的物品相似关系,离线生成模型。这个模型可以离线评估embedding生成的i2i相似列表,例如相似分均值等;

 

另外,我们使用该模型将线上相似召回汇总成一路。一般召回系统中有多路相似物品召回,每路相似召回,线上预测压力较大,我们使用得到的模型离线对所有ICF结果汇总后离线评分,输出一路相似召回,在效果略涨的前提下,也缓解了在线推断压力。

 

03

 

排序优化

 

 

问题和挑战:有CTR、单量、GMV等多个目标,多个目标会此消彼长、转化数据稀疏,影响建模。

 

任务迭代的过程: 主要经过单模型loss加权,多模型独立学习,单模型hard share+联合训练,soft share以及调优探索等过程。下面为大家详细介绍下:

 

1. 样本调权

 

 

先看样本调权,样本调权是解决正负样本比例不均衡的一种方法。 由于业务中考虑多个目标,我们将转化相关的行为样本进行不同程度的加权,同时根据转化金额、根据点击后转化时间对部分样本进行调权,这里可使用log平滑等方式。

 

另外尝试使用了focus loss,缓解正负样本不均,相比交叉熵,放大了分错样本的loss影响,也取得一些提升。

 

总而言之,调loss权重,会干预学习的梯度,严格来讲还是单目标优化,这种过采样方式兼顾了其他目标指标;其 优点是,可以复用线上整套流程,无需改动,实现简单,效果明显。缺点是AB成本较高,线上需维护多个模型,加权权重难定义,调节成本大,周期较长,模型分含义不好解释,对线上转化相关收益,难以达到全局最优。

 

右图是使用的特征,除了上下文、用户、商品侧等常规特征外,hash类特征交叉,匹配类特征交叉都对最终效果有正向影响。

 

2. 多模型集成

 

 

第二种方式,是多模型独立训练,然后集成的方式。

 

线上按订单和GMV导向时,分别采用右图的公式, 追求订单是,使用CTR*CVR, 会对price做些特殊处理;优点是任务解耦,模型独立,缺点也很明显,模型多维护成本高,参数共享困难,数据稀疏问题; 同时由于线上使用期望成交额排序,也就是说乘了price,这里需要pCTR pCVR预估的准确性要求较高,且分布要和实际分布相似,这样才能保证期望成交额的准确性。

 

那为什幺要预估校准?前面的模型,考虑到性能和训练效果,一般会对负样本抽样、正样本加权等方式训练模型, 从左图的预估CTR(横轴)和真实CTR(纵轴)的散点分布,可以看到预估CTR高于真实CTR,尤其是预估CTR高的那部分,偏差更大。

 

首先对采样进行校准,校准的公式在sigmoid的入参中加入了ln(r),r为负采样率,比如说5%;

 

对预估使用保序回归去校准;保序回归是一个加权最小二乘的二次规划问题 。举个具体例子,把测试样本按预测值降序排列,依次计算每1w样本的CTR统计均值,使用保序回归,输出一个非递减序列,也就是图中的橘色这条线,最小化预估值和真实统计值的MSE误差。线上维护pCTR和真实统计值的映射关系,查表使用。 保序也就意味着正负样本的相对序不变,AUC也就不变,但交叉熵和均方误差均有大幅降低。

 

右图是在对样本使用不同分桶大小时,校准前后,预估值和真实值的MSE的大小,蓝色这条线是pCTR和真实值的MSE,红色线是校准后,保序值和真实值的MSE,可以看出,在各分桶大小下,MSE下降都非常明显的,在我们场景下,下降了约88%,在实际中根据业务规模采用不同分桶大小,一般分桶在几百、几千这个量级,logloss也由0.1499降低至0.1234,降低了17%的。

 

3. 多任务模型

 

 

首先我们使用hard share,同时训练ctr和ctcvr的方式,既类似ESMM的方式训练神经网络模型 。遇到的问题是ctcvr的AUC,GAUC偏低,如左图所示,我们尝试调节了网络结构,也观察俩个塔训练过程中指标的变化。具体是,ctr侧的loss随着训练降低,AUC提升;ctcvr侧的loss虽然在降低,但auc在0.5附近。

 

这里考虑,交叉熵作为损失函数,auc作为评估函数,模型在优化过程对数据进行迭代训练,使loss达到最小,当loss为0极端值时,auc为1,但在不同数据训练的中间过程时,loss的优化降低和auc的提升不一定成正比。在实际的业务数据中,曝光到转化过于稀疏,原始比值约10000:1,即使对曝光数据进行负采样也无法缓解极低比例。因此结合上图具体训练过程中ctcvr的loss明显比ctr的loss小一个数量级这个情况,当pctcvr预估值都在0附近时,loss能达到很低,但ctcvr的auc只在0.5附近,同时调出模型训练过程中ctr侧和ctcvr侧fc层权重的变化,可以看到CTR侧参数分布有明显变化,ctcvr侧fc层的参数分布没有明显变化,fc层的参数没有充分学习出来,导致AUC较低。我们对ctcvr的loss加强正样本错误的惩罚力度,可以直接对转化样本进行过采样或对ctcvrloss进行加权,是会影响点击样本的分布,进而影响ctr侧的学习,尝试发现对ctcvr侧发生转化的样本学习错误l的oss进行常数量倍加大解决了此问题,ctr和ctcvr都进行了充分学习。

 

我们后面又探索了几种hard share的优化,例如后期固定CTR侧的参数,只学习CTCVR侧;在CTCVR侧,将曝光样本的反传梯度置为0,防止影响CTR学习,尝试使用swish激活函数,提升模型学习能力。

 

由于特征在点击阶段和转化阶段的表征,及用户关注差异的不同,像这个图所示,又尝试了softshare ,即MMOE+转化序列的方式,加attention网络,考虑到用户购买的决策过程,将加购、下单未支付等也当做正样本来训练,只是设置较小的权重;这里列了加购到转化间隔天数的一个分布,当天加购当天下单,和之后下单的比例约符合8:2的关系,加购一天及之后的转换比例,如图所示。

 

预估GMV也引入了pAVR这个任务。还有是关于position bias的一些探索实践,将postion置为0,使用PAL塔预测曝光概率等,减小bias。

 

04

 

推荐+广告业务概览

 

1. 推荐+广告业务

 

 

首先介绍下两块营销业务,目前我们营销算法主要在优化万川RTA和DSP的投放。RTA是19年左右新兴的广告投放模式,其集广告主自身数据、算法能力以及媒体的画像数据,两方两阶段预估,联合投放,实现广告效益最大化。

 

但很多广告主没有足够的数据和算法能力,为优化广告投放效果,就将该工作委托给专业的第三方平台,我们的产品万川RTA就是这幺一个投放平台,孵化于20年初。对外提供投放引擎、算法预估、参竞动态控制、分桶效果展示等一系列能力DSP投放,这里列了个简单示意图,RTB是一种利用预估技术在数以十亿计的流量上,针对每个流量进行质量评估以及出价的竞价技术。在该模式的广告投放中,DSP提供流量接入、反作弊、CTR/CVR预估及智能出价技术,采买流量,在ADX平台成交,以最大化投入产出为目标,为众多广告主提供优质服务。推荐+广告结合,指的是:

 

第一,一些广告聚合页,页内是活动推荐或者相关推荐,这里和推荐很类似;比如我们采用CPM方式引流,推荐页内部使用CPC结算的方式,这种模式也在探索。

 

第二,推荐能力在广告上的复用,例如RTA深层转化预估模型,CPC、ROI约束下的智能出价问题,这些都复用了推荐算法能力。

 

2. 冷启动投放

 

 

RTA客户一般转化成本较高,转化样本数量过少,模型难以学习充分,前期效果一般,但广告主又想尽快看到效果; 还有,媒体不回传曝光数据。

 

这里我们采用部分参竞争样本作为曝光数据,复用推荐的多任务建模能力,辅助学习转化模型,受RTA模式限制,RTA无法决策出哪个广告创意,这里仅用CVR在线预估; 因为样本量过下,我们先后尝试了几种方式对样本进行增广,达到提升线上指标的目的,使用了样本融合的方式,即融合客户提供或其他场景的一些正负样本,效果一般。

 

我们还使用了SMOTE线性插值的方式对连续特征进行扰动增广,取得一定效果; 但mixup及类似的增广方法与随机噪声的增广方法可扩展性较弱,后来使用GAN进行增广。

 

难点:

 

如果生成embedding形式的样本,由于模型训练时,其embedding的权重也在改变,会出现二者不在一个空间的问题。

 

如果生成真实样本,由于使用了类别特征,对GAN非常不友好,其梯度的稀疏程度较高。(在这里使用该方法,并使用onehot方式降低梯度的稀疏程度)

 

生成的样本不像图片一样可以肉眼检查有效性,只能看样本的大致情况,或者重新训练模型,或者将正样本替换成增广的正样本并查看训练好的模型的auc。

 

主要方法:

 

使用WGAN即基于W距离的GAN,提高训练GAN的稳定性。

 

判别器同时预测样本的真实性和转化概率,即将先增广样本再分类,改为同时预测,即端到端的训练。

 

条件GAN强制生成不平衡类别的样本,比如转化样本,防止模式崩塌。

 

不只增广单一类别的样本,为了防止不同类别的样本存在“包裹” 问题,比如正样本的空间包裹负样本的空间,那幺通过正样本空间增广得到的样本很有可能是负样本。

 

利用半监督学习的方法将增广样本打上soft伪标签,从而一定程度上指导判别器解决转化的分类问题。

 

3. CPC控制

 

 

DSP主要有三类客户,CPM跑量不跟单客户、CPC投放客户、ROI效果客户。

 

根据用户真实的ROI或期望值,ROI由客户指定,根据投放,ROI不断调整,如果设置ROI不合理,投不出去;算法预测用户的转化价值,得到CPM出价,会投很多外部流量,无法按ECPM出价; 流量价值的预估也复用了推荐的多任务能力;我们的挑战是流量按CPM采买,但按照CPC与客户结算,这里同时需要保证对CTR的精准预估和CPC的稳定控制, 其中CPC是否稳定会影响客户的预算决策, 这里采用了控制理论中经典的PID算法去解决这个事;像无人机定高悬停、温室控制都用到了该技术。

 

PID是比例、积分、微分单词的首字母缩写,公式如上图所示,err(t)代表t时刻的差值,Kp代表对差值的放大幅度。第一项是目标值和实际值的差值,然后是差值的积分和变化率,也就是微分。

 

举个例子说明这几项的作用,比如说通过加热的方式使水温保持在60度,每秒钟使用传感器采集下水温,比如第一次采集是20度。

 

根据差值决定加热幅度,加热过快容易将水温烧过60,加热较慢时,根据实时反馈差值调节加热力度,会进入到加热和散热持平,水温一直保持在比如50度以下不变了,这个叫做静态误差。

 

解决的方法是对误差进行积分,也就是这些部分,也用来干预加热力度。 为了减小震荡,这里引入微分,也就是提前减速,更平稳的接近目标值。

 

右上图是根据目标成本调控出价以及成交价,线上通过误差监控不断的调整出价,进而调整成交价;右1是出价和成交价的一个拟合关系; 右下图是几个价格之间的关系,橘色代表出价,蓝色代表成交价,最后调控结果实际成交均价等于目标成交价。

 

调控公式如左下图,UT为误差,经过函数变换后作用到CPM出价公式。

 

4. 转化反馈延迟

 

 

因为用户在下单前有决策时间,延迟转化这中情况在推荐和广告中都有,但由于广告的归因周期较长,一般为30天跟单,尤为明显; 由于客户属于周期性投放,每天新增计划较多,这是每日新增计划的一个占比。

 

图二是广告主日订单占比的情况,大约在10天左右能跟到60%的订单,这个广告主间还是有差异的; 我们根据网上论文,采用同时建模转化概率和第几天转化的方式,对转化时间做了个指数分布的假设; 做广告的朋友应该对这个比较熟。

 

公式1即为转化概率,公式2是转化,且在第d天转化的概率; 在右图,Y=1,代表label。这里分别推导出了d天转化,以及负样本的概率,使用交叉熵损失函数,学习wc,wd参数。 推荐中也能借鉴使用,感兴趣的同学可以研究下。

 

05

 

成果与规划

 

 

看下业务成果:

 

在推荐业务,从单目标切换到多目标模型,点击率和UV价值具有明显提升,尤其是UV价值,第二个图是我们推荐场景GMV,场景GMV上升趋势显着;

 

在DSP的广告业务上,点击率提升显着,同时降低了引流成本CPC,ROI数据也有稳步提升;

 

万川RTA,对外部客户的产品的转化率提升累计到达15%,主要基于数据挖掘和算法能力。

 

右图是算法能力矩阵,是我们之后重点打磨建设对象,包括算法总控,画像、检索、预估能力,分层实验,预算分配能力,结合NLP和CV多模态特征,对外输出算法能力,并承接上游的多个业务。

 

这里的预算分配是指,DSP业务分桶实验,一般是指按device或请求id分桶,但AB时会有预算消耗不均的问题,即一个分桶效果好,但预算被其他分桶抢去,扩量后效果变差,我们采用对预算进行切分,分桶到计划下的单元维度。

 

后续攻克方向,例如uplift这类增量模型、转化时延模型、多任务+ROI精准预估, 参数自动寻优(CEM、遗传算法),行业特征挖掘等。

 

今天的分享就到这里,谢谢大家。

 

在文末分享、点赞、在看,给个3连击呗~

 

嘉宾介绍:

 

 

Be First to Comment

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注