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

主要内容包括:

01业务介绍

京东月度运营计划表格 从单目标排序到多目标模型(1)

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

02召回优化

1. 画像召回-优化

京东月度运营计划表格 从单目标排序到多目标模型(2)

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

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

模型选型:

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

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

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

2. 相似召回&评测

京东月度运营计划表格 从单目标排序到多目标模型(3)

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

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

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

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

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

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

03排序优化

京东月度运营计划表格 从单目标排序到多目标模型(4)

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

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

1. 样本调权

京东月度运营计划表格 从单目标排序到多目标模型(5)

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

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

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

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

2. 多模型集成

京东月度运营计划表格 从单目标排序到多目标模型(6)

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

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

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

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

3. 多任务模型

京东月度运营计划表格 从单目标排序到多目标模型(7)

首先我们使用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. 推荐 广告业务

京东月度运营计划表格 从单目标排序到多目标模型(8)

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

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

2. 冷启动投放

京东月度运营计划表格 从单目标排序到多目标模型(9)

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

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

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

难点:

主要方法:

3. CPC控制

京东月度运营计划表格 从单目标排序到多目标模型(10)

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. 转化反馈延迟

京东月度运营计划表格 从单目标排序到多目标模型(11)

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

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

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

05成果与规划

京东月度运营计划表格 从单目标排序到多目标模型(12)

看下业务成果:

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

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

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

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

嘉宾介绍:

京东月度运营计划表格 从单目标排序到多目标模型(13)

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

编辑整理:Hoh

出品平台:DataFunTalk

,