热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

广义多目标算法探索实践

分享嘉宾:周建斌58同城算法高级架构师编辑整理:吴雪松小米出品平台:DataFunTalk导读:58部落是面向58同城同镇用

分享嘉宾:周建斌 58同城 算法高级架构师

编辑整理:吴雪松 小米

出品平台:DataFunTalk

导读:58部落是面向58同城同镇用户的内容社区,主要产品形态为PGC、UGC的信息流,样式丰富。基于业务和背景,如何提升定义信息流价值内容占比,提升点击率、留存率、互动率等多个目标?今天就和大家分享基于58部落业务目标,特色广义多目标算法的探索过程与实践。主要内容包括:① 58部落业务和背景;② 58部落的业务目标演化;③ 58部落特色广义多目标算法探索过程与实践。

01

58部落业务和背景

首先和大家分享下58部落的业务和背景。

58部落是面向58同城同镇用户的内容社区,它的主要产品形态是PGC、UGC的信息流,其中物料主要有图文、视频、语音等,主要的展现形式则为图中的信息流,可以看到样式是比较丰富的。

0c57ba70415e64e2a76ebbfeb888b6f2.png

58部落的业务使命是全链路打通58所有服务场景,连接用户的多维度需求,从使命也就自然而然的可以联想到部落的定位:部落和58的房产、招聘、汽车、本地生活是共存的关系,但是58部落也有其不同点,和几大业务相互关联,并在其中起到了桥梁的作用。

通过合作,为提升58APP的用户体验而努力。

4349696324e263e1c52c2d1236bfb80a.png

02

58部落业务目标演化

一开始的时候,58部落的业务目标比较简单,也比较明确,就是要提升信息流的点击率,通常的优化点为单目标的排序。

后来发现,作为一个内容社区来说,不光要考虑点击率,用户的互动、点赞、评论、回复等行为的影响因素会越来越高,产品也会更加关注互动率、点赞率这些指标。此时的目标特点是,虽然有多个目标,但是各个目标的Label是明确的,通常的优化点是采用多目标的排序模型,比如共享底层的ESSM或者基于多专家模型的MMOE等。

而58部落最先要关注的目标是:

  • 价值内容占比,产品希望占比提升的同时,点击率也要保持稳定;

  • 点击率互动率稳定的同时,保证用户留存率的提升。

这两个目标的特点在于,价值内容占比是一个事后数据统计的数据,很难明确找到目标对应的label;而用户的留存率更是一个长期的目标,很难通过一次点击或者互动去界定。

对于以上这两个目标在58部落的实现,就是我今天想要跟大家探索的主要内容。

397b3c4828e71b8d5f34b91ea839ec85.png

03

58部落特色广义多目标算法探索过程与实践

什么是价值内容?在这里定义为和58业务关系紧密的内容,包括标签体系也是按照这样进行划分的。如房、车、招聘、本地生活,定义为价值内容,都是和58的主业务线关系非常紧密的,所以产品把它定义为我们的价值内容。除此,价值内容之外还有如娱乐、心情、社会等其它内容,虽然在58部落上也有很高的用户接收度,但没有把这些划为价值内容。

为什么定这个作为目标呢,这是58部落的定位决定的,就是要作为58各个业务的桥梁,要和各个业务线进行合作,所以为各个业务导流直接决定个对于58大APP的贡献,价值占比这个目标也就应运而生了。

46e5f54e7f469905e759015e5ef3df1a.png

提升价值内容占比,通常有什么方式?

最简单的方式就是通过规则,强行提高价值内容的占比,但是缺点就是对点击率的影响较大。而我们认为理想的切入点是改进排序模型,把价值内容自然而然的排上来。思考点就是,利用跨域推荐的思想,把用户在58其他业务的行为作为目标域行为进行引入,相当于是增加了58其它业务和58部落的内在联系,基于这种假设,希望把价值内容排序上来。

3de4db1d73f3cddd3ea243be500256f7.png

具体做法:

首先介绍下58部落的主排序模型:是DeepFM+Din的融合模型,那如何在此基础上进行优化,快速引入其它业务的用户行为呢?

第一版朴素的想法是,借助Din序列进行特征工程的特征简化,减少了一定的工作量。然后将Embedding中的Concat改为Pooling,方便进行异构实体的Embedding对齐。

824aa6e355a815522478ecdde774e17e.png

第一版的朴素模型也暴露了不少问题,训练慢,也没有什么提升,虽然加了其它业务线的一些特征,但是训练之后,上层的特征权重是非常小的,也就是说整体上基本是不起作用的。针对于这个问题,我们思考了几个可能的原因:

新添加业务行为序列Item,和候选的Item差异较大。因为内容是完全不同的,候选的物品都是部落内容,业务线的点击序列却是各业务线帖子的访问序列。

业务线行为序列的Item非常的稀疏,统计过,20天有大约1亿,但是大部分Id就只有个位数的访问。

其它业务数据量的总和是部落数据量的将近10倍,如果只用部落的一些点击、未点击等数据,数据量是不太够的。

所以,我们的优化方向是尝试找到一个可以跨多个域的Embedding预训练方式,对DIN进行Embedding的初始化,学习到其它业务的一个向量关系。

8a017c890323eaa5237478c0a3ca5e48.png

为了训练学习到跨域的知识,我们调研了很多方式,从阿里的EGES模型获得了一些启发。EGES模型比较适合跨多域的预训练方式,模型的底层是非常常见的的embedding的表结构,通过加上权重的Pooling,最后得到Embedding的表达,使用到了属性值,对于冷启动和稀疏性的处理也非常的友好。

80cd164b5897c2355cbcf0a04d3f4c09.png

我们根据EGES的构造方法,进行了三个部分的改造:

第一,边缘信息如何获取?每个业务选取2-3个核心属性作为边缘信息。我们不可能对每个业务线进行特征工程,但是每个业务线的核心属性是能够找到的,来表达业务线的核心内容。

第二,参考Airbnb对于Id的处理方式,将几个属性值合在一起,作为新的Id,也可以称为压缩的Id,通过这种方式,可以把上亿的帖子Id,压缩到百万的量级,对应的稀疏性也就缩减了几个数量级。

第三,因为目标是比较明确的,就是为了训练出业务域到部落的关联行为。所以在构造图的时候,就会增加一些跳跃的采样方式,即业务到部落的前一个点也可以新加一次关联,这样在统计用户行为边权重的时候,也就会增加很多业务到部落的权重。

模型的训练就是参照论文,采用DeepWalk的训练方式,首先统计用户行为序列,把所有用户行为对统计频率,频率就作为用户边缘图的权重,接着使用随机的方法在这张图中进行随机的游走,产生新的用户行为序列,可以把新的行为序列想象成word2vec的那种方式,来训练出物品的embedding。另外,这样的好处是,在训练物品Item的时候,也一并把物品的边缘信息的Item也训练出来了,边缘信息的Item是在一个空间里面的,对于使用边缘信息的Embedding和物品的Embedding会非常友好,把这些预训练的Embedding迁移到DNN中也会非常的友好。

b390cfe2166c7024e1d3fec52d60f3a7.png

模型的版本二,就是用跨域的EGES训练生成的Embedding表示,替换版本一中序列Item Pooling的Embedding表示。通过这种预训练的方式,可以提前学习到业务线和部落的一些关联关系。最终,部落的点击率和价值内容占比都获得了一定的提升。

302332b674b256ae17b72cbd72d9761c.png

上线后的结果是价值内容点击占比从12%提升到28%,同时点击率也有小量的提升,满足产品的预设目标的。回顾一些这个方法的思路,模型融合了DeepFM、DIN、EGES,同时也借鉴了Airbnb中Id的处理技巧,使得价值内容占比和点击率获得了提升。其实这个模型的核心总结来看,是一种借助有交叉业务域用户行为提升目标域推荐效果的一种跨域推荐方法,刚好适合推荐的交叉业务域相关的内容,本事上可以理解为增加了相关域的特征,但即便抛开价值内容占比这个目标,对点击率的提升也是有促进的。

8155de133806936165502c1d477b6c83.png

第二个产品目标是用户留存率提升,同时点击率互动率稳定,这也是比较特殊的一个目标,因为这个是一个长期的目标,如果说次日留存第二天才能看到。而且用户留存率和很多目标都有一定的联系,比如说内容质量、多样性、互动等等,看似有很多地方需要做,但是如何找切入点呢?

963857d71de02bef2267bf5f4be18a11.png

下面是整理的一些思考方法:

想要用户的留存率提升,首先要进行留存分析,也就是通过数据或常识找到可能的特征,但是不能确定其影响程度;然后根据留存的分析进行策略的制定,来对结果进行干预,也就是通过某种方式达成留存分析中的特征,并能参数化;最后将制定的多个策略组合进行优化,用最终目标定义reward和约束,进行在线的参数优化,达到最终目标提升。

983d2163977b40fe93140ee3186333b5.png

具体是怎么做的?这里以信息流的场景为例:

首先通过数据分析,找到有过互动的用户,次日留存率会明显的高过没有互动过的用户,从数据上看是这样的,从常识上也是能理解的。然后2、3的指标是我们发现比较特殊的两点,分别为首访内容类型权重、尾访内容类型权重。比如尾访内容类型权重,就是前一天最后一次访问该内容类型今天又来的访问人数/前一天最后一次访问该类型内容的人数;首访内容权重就是使用前一天第一次访问。

为什么有这样的假设?我们使用了归因链的思想,通常在电商场景的购物车的转化上有应用。浏览了某个物品,同时加购物车,关注了,看了商家,到最后购买了。那行为链中哪个行为是影响用户最终转化的行为?确定这条行为链权重的方法目前来看有四种:

  • 直接取用户的最后一次行为,这次行为是造成他购买的原因,但这种方法不是很严谨。

  • 平均权重,任务这条行为链上的行为都对最后的购买有贡献。

  • 衰减权重,行为链上最近的行为影响最大,逐渐往前进行衰减。

  • 马鞍形式的权重,也是在产品上比较认同的。行为链最后一次和首次的用户意图是最强的,中间是最弱的。

通过使用这种归因链进行统计,对于留存来说,用户前一天最后一次访问的内容类型,和前一天第一次访问该的内容类型,对部落的用户留存有一定的相关性。比如某个新用户在58上第一天访问本地资讯类型的内容,会发现该用户过两天再来58的概率会高过看其它类型内容的新用户,所以我们把尾访内容类型权重、首访内容类型权重作为用户留存分析的两个重要特征。

最后一点是多样性,多样性在一定程度上会影响UV的转化率,但是其也会影响点击率,多样性太高或者太低,和点击率不一定成线性关系。

对于留存分析,我们将互动率、尾访内容类型权重、首访内容类型权重、多样性作为留存分析比较重要的四点。

1328143f1bdf377ff5fb7ce3ea46b453.png

有了这四个参数,如何来制定优化策略呢?

这里相当于定义了一种重排序的策略,通过重排的方法,照顾上述的四个因素,相关性分数=点击率预估分数+a*互动率预估分数+b*首访内容类型权重+c*尾访内容类型权重;有了相关性分数,参考Hulu laming老师的多样性dpp算法,使用多样性调节因子θ,以此调节相关性和多样性的程度,这里也就相当于定义了一个四个超参数(a,b,c,θ)的重排序算法。

bf701d76468aead2d4f1f23d501b03b7.png

定义了策略方案,我们需要定义一个评估或者说目标回报,因为目标是提升用户的留存率,所以把次日留存率权重设置为5,点击率提升率,互动率提升率也放到回报里面;同时也把点击率提升率、互动率提升率、次日留存率提升率作为约束放在里面,对于负向的提升也是有一定容忍的,因为目标是提升用户的留存率,所以次日留存率提升率是要大于0的。这样问题的转化就变成了找到使得reward最大的(a,b,c,θ)的组合方式。

ef6c8dac8a633e66f319f829cbc49112.png

如何找到这种组合方式?

设想如果是单参数的,可以使用abtest的方式,把参数都试一遍,找最优的参数;但如果是多参数,使用abtest的方式,实验数量要指数增长,会浪费大量流量,针对于这个问题,我们找到一种调参方式,使用CEM自动调参,优点就是可以直接优化线上目标,实现长期的迭代。

5fb15d083264537050013f116ae9368d.png

CEM算法是如何实现的呢,这里简单介绍下:

首先CEM是一个在线的自动调参方法,会使用线上数据快速对参数进行评估,进而实现自动化参数调节。首先,我们拍一组比较合适的参数作为初始化参数,我们这里使用的是高斯分布,根据均值或者方差会对参数做一个采样,然后采样出的多组参数在线上进行等比例的分流实验,两天后观察各个流量的收益,也就是reward,然后对reward进行从高到底进行排序,截取top-k的reward进行评估,同时参数也会进行相应的裁剪,最后将选出top-k的参数进行聚集。下面同样的重复这个过程,每次进行迭代的时候,会给方差加上一个量值,防止函数过早的收敛到局部的最优解。

c668cd20bc334309f00a5cca56ee3d33.png

具体实现:

使用线上大概10%的流量进行探测,参数采样是给定初始点和标准差,采样数量为15个,裁剪top5,每两天进行一次,因为优化目标是留存,所以在第二天的时候,可以知道用户留存的一些指标。

如图中右侧坐标图,最开始的时候参数范围可能比较大,但是随着每次采样并进行top5的裁剪,参数会收敛到比较小的区域,但是这个区域并不一定是稳定的,会随着迭代有不停的波动,可能是和正常的业务流量波动是有关系的,所以说参数调整不是一蹴而就的,调整完就放在那里不动的。最好就是常年有流量探测在线上,不停探测最优的权重。

有几个需要注意的点:

  • 探测流量的大小,如果流量太小,结果置信度会有影响。

  • 指标的波动性也会影响结果,所以说对于一些比较小的指标如互动率,比如几个回复、几十个回复,可能就会对互动率这个指标产生比较大的影响。

  • 我们会使用一些规则,如果指标的波动性太大,会进行剔除,以此增加鲁棒性。

828ba92d79ce2abd0980ac86ff198fff.png

经过差不多10轮迭代,使得用户次日留存提升了1%,同时点击率和互动率保持稳定,在这之中,用户的首访内容类型权重与尾访内容类型权重是起到一定作用的。我们发现,对于一个新用户来说的话,如果能提高对于本地资讯或者本地内容的权重,通过加权的方式,是能够提升该用户的留存的,这个例子就是验证出来的设想。

小结:基于CEM这种在线的组合优化的方式,最大的优点就是可以直接优化多个目标,可信度比较高,而且只需要定义策略参数和reward。但是也有几个隐藏的问题:1.组合参数中要求是连续形数值;2.不能随着有参数变化reward出现跳变,具体的比如有些策略和具体的取模相关,比如模5,数值达到6转为1,这样会导致对reward出现跳变,这种就不是很适合。

d5301703620120675e77ba89d5c9ff7b.png

04

总结与未来

总结:

  • 从跨域迁移学习的角度来看,我们兼顾了定义的价值内容占比和点击率两个目标的平衡。

  • 用在线优化组合的方式,对多样性、内容类型分发比例、互动进行组合优化,对长期留存的提升进行了探索。

未来,从推荐算法的角度来看,内容产品的长期收益,健康的生态,离不开多目标的平衡;在多目标的策略组合与长期收益优化上,强化学习的实践和我们的目标有很高的契合度,也是我们积极尝试的方向。

一起交流

想和你一起学习进步!『NewBeeNLP』目前已经建立了多个不同方向交流群(机器学习 / 深度学习 / 自然语言处理 / 搜索推荐 / 图网络 / 面试交流 / 等),名额有限,赶紧添加下方微信加入一起讨论交流吧!(注意一定要备注信息才能通过)

08ce2bd9668d68eb1d033ea35ea7f849.png

END -

d0b052c92816a6752f3d98936592e5b9.png

fbce7f0e9770cdab21d31a396e6a8e42.png

收藏 | 机器学习、深度学习面试知识点汇总

2021-09-17

3e6091515e11b430c3a5bf70a73a460d.png

NLP文本分类 落地实战五大利器!

2021-09-10

977702d635d8708b52c5d364684bbda8.png

研究生期间如何成为科研大佬?

2021-09-07

202b609ddafa8b8cdf45e7972a5120b8.png

跨越『时空』的难样本挖掘!

2021-09-03

5b1e596204bd94270f1c41874cf29bb5.png

25ca0da4a21d56f22c61ab1bec6f6106.gif



推荐阅读
  • 干货 | 携程AI推理性能的自动化优化实践
    作者简介携程度假AI研发团队致力于为携程旅游事业部提供丰富的AI技术产品,其中性能优化组为AI模型提供全方位的优化方案,提升推理性能降低成本࿰ ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 「爆干7天7夜」入门AI人工智能学习路线一条龙,真的不能再透彻了
    前言应广大粉丝要求,今天迪迦来和大家讲解一下如何去入门人工智能,也算是迪迦对自己学习人工智能这么多年的一个总结吧,本条学习路线并不会那么 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 深度学习与神经网络——邱锡鹏
    深度学习与神经网络——邱锡鹏-一、绪论人工智能的一个子领域神经网络:一种以(人工))神经元为基本单元的模型深度学习:一类机器学习问题,主要解决贡献度分配问题知识结构:路线图:顶 ... [详细]
  • 基于神经网络的智能对话系统(二)——机器学习背景知识
    2.机器学习背景知识本章简要回顾了深度学习和强化学习,这些学习与后续章节中的会话AI最相关。2.1机器学习基础Mitchell(1997)将机器学习广义地定义为包括任何计算机程序, ... [详细]
  • 拯救万千学子于水深火热之中!Facebook开源无梯度优化工具
    乾明发自凹非寺量子位出品|公众号QbitAI机器学习啥最苦?十有八九找参数!不少研究生,都被卡在这个环节上,久久不能毕业。现 ... [详细]
  • 聊聊 中国人工智能科技产业 区域竞争力分析及趋势
    原文链接:聊聊中国人工智能科技产业区域竞争力分析及趋势最近看了一个关于国内AI的报告《中国新一代人工智能科技产业区域竞争力评价指数(2021ÿ ... [详细]
  • 浏览器中的异常检测算法及其在深度学习中的应用
    本文介绍了在浏览器中进行异常检测的算法,包括统计学方法和机器学习方法,并探讨了异常检测在深度学习中的应用。异常检测在金融领域的信用卡欺诈、企业安全领域的非法入侵、IT运维中的设备维护时间点预测等方面具有广泛的应用。通过使用TensorFlow.js进行异常检测,可以实现对单变量和多变量异常的检测。统计学方法通过估计数据的分布概率来计算数据点的异常概率,而机器学习方法则通过训练数据来建立异常检测模型。 ... [详细]
  • GPT-3发布,动动手指就能自动生成代码的神器来了!
    近日,OpenAI发布了最新的NLP模型GPT-3,该模型在GitHub趋势榜上名列前茅。GPT-3使用的数据集容量达到45TB,参数个数高达1750亿,训练好的模型需要700G的硬盘空间来存储。一位开发者根据GPT-3模型上线了一个名为debuid的网站,用户只需用英语描述需求,前端代码就能自动生成。这个神奇的功能让许多程序员感到惊讶。去年,OpenAI在与世界冠军OG战队的表演赛中展示了他们的强化学习模型,在限定条件下以2:0完胜人类冠军。 ... [详细]
  • plt python 画直线_机器学习干货,一步一步通过Python实现梯度下降的学习
    GradientDescent-梯度下降梯度下降法(英语:Gradientdescent)是一个一阶最优化算法,通常也称为最速下降法。要使用梯度下降法找 ... [详细]
  • NLP如何进阶?你应该先掌握四大基本任务!
    “语言理解是人工智能领域皇冠上的明珠。”——比尔盖茨自然语言处理是一门综合性的学问,它远远不止机器学习算法。相比图像或语音,文本的变化更加复杂ÿ ... [详细]
  • bat大牛带你深度剖析android 十大开源框架_请收好!5大领域,21个必知的机器学习开源工具...
    全文共3744字,预计学习时长7分钟本文将介绍21个你可能没使用过的机器学习开源工具。每个开源工具都为数据科学家处理数据库提供了不同角度。本文将重点介绍五种机器学习的 ... [详细]
  • NLP简单的数据增强方法
    NLP简单的数据增强方法当训练数据量不充分,或者分布单一的情况下,数据增强可以快速扩充语料以避免过拟合的问题,同时,数据增强 ... [详细]
  • 机器学习毫无争议的是如今学术界和工业界最热的领域,它涵盖计算机视觉(CV)、自然语言处理(NLP)、深度学习(DL)等多种技术,在图像识别、知识图谱以及最近非常火热的无人驾驶等诸多领 ... [详细]
author-avatar
风流小姑-娘
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有