一、千川由来
得物的推荐场景,除了首页瀑布流等几个比较大的场景之外,还有很多长尾的小场景,包括:频道、会场、购中购后场景、品牌墙等。这类场景存在单个场景体量小(UV和GMV均偏小)、场景零散、类型多元的情况。如需对这类场景进行单独优化,涉及的成本投入远高于产出。而随着业务发展,这类长尾场景只会越来越多,对这类场景的优化亟待解决。因此,我们需要这样一个通用推荐平台,来承接住这些小场景,并能够持续优化,带来收益。“化零为整”、“兼容并包”、“统一平台”,这就是千川。
二、千川需要解决的难题
结合各类需求及定位,千川作为统一推荐系统,面临不少难题,至少需具备五种能力。
困难 | 能力 | 挑战 |
场景商品集不同 | 灵活圈选商品集 | 依据场景和商品集合的关系,实现不同场景不同商品的可推池 |
场景目标不一致 | 支持场景多元化目标调整 | 结合场景,以价值性导向及发现性导向调整多元化目标 |
场景策略差异大 | 分场景差异化策略配置 | 在业务需求基础上,完善各种策略并支持分场景差异化配置 |
推荐类型多样 | 兼顾多类型推荐 | 除具备商品排序能力外,对场景间、主题、会场、品牌等也具备推荐能力 |
资源空间有限 | 低成本、高效率、易扩展 | 在低成本前提下,实现相对高效率的提升,且便于扩展新场景 |
三、工程和算法解决方案
应对上述困难,千川提出统一推荐框架。在千川ID体系基础上,实现多场景推荐的统一优化。
千川推荐框架总体分五层
- APP服务层:对接各个长尾场景,目前接入了包括主题、频道、会场、购中购后独立流、出图等场景
- 千川接入层:目前提供两种接入方式,一种是通过商品投放服务接入,一种是注册千川直连。千川依据接入场景的差异建立千川ID体系,会为每个接入的场景提供特定的千川ID(或者千川ID集合)。
- 千川DPP层:提供多种DPP推荐模块,满足多类型推荐需求,包括商品推荐DPP,多类型推荐DPP,楼层推荐DPP,品牌推荐DPP。每个DPP模块框架基本一致,会根据推荐类型设计差异化推荐策略。
- 算法层:搭建完整推荐链路,在召回、粗排、精排、策略等全流程上进行效率和体验优化。
- 召回阶段:设计包括I2I、U2I等在内5类召回,尽可能处理场景、行为、兴趣偏差,召回用户喜好商品。
- 粗排阶段:在满足高性能要求上,提供单目标及多目标粗排能力,为后续精排提升空间。
- 精排阶段:针对场景差异、用户兴趣、多种目标、大促应用方面进行一系列模型迭代。
- 策略阶段:结合业务需求提供策略干预、场景差异化配置、流控调权、多样性重排、多类型分发等能力。
- 基建层:依托包括机器学习平台、索引平台、特征服务、流控平台等在内的强大能力支持,方可打造出整套千川推荐框架。
四、算法迭代过程
4.1 召回粗排演进
因千川多业务场景的特色,召回和粗排阶段面临一系列挑战,包括:场景行为偏好差异、多场景下用户兴趣偏差、场景目标定位差异。
挑战1:场景行为偏好差异
千川用户行为较为分散,不同场景下行为稀疏且差异较大。为处理这类偏差,千川汇集全场景下用户的长短期行为,设计I2I、重定向、Trigger选取、向量化等一系列策略。
- I2I、重定向捕获行为偏好
- 不同的Trigger选取策略兼顾长短期行为
- GraphEmb、RankI2I实现行为偏好的向量化
挑战2:多场景下用户兴趣偏差
不同场景下用户的兴趣不完全一致,具体表现如:男性用户A在主题落地页更多关注鞋、运动、3C等之类的商品,在送礼频道更关注化妆品相关商品;女性用户B在主题落地页更倾向于包袋、玩偶等,在送礼频道更关注篮球、休闲服之类的商品。用户在不同场景之间的兴趣表现既有共性又存在差异,千川通过实现全场景的DSSM向量表征与结合场景特征的MIND向量表征多场景下用户的兴趣偏差。
- DSSM引入全场景数据表征用户对商品的基础兴趣
- MIND结合场景特征扩展用户在多场景多兴趣上的表征
挑战3:场景目标定位差异
因场景定位不同,对应的目标也不一致。整体可归纳为dpv导向场景和uv价值导向场景。dpv导向场景对应的是对点击的预估,uv价值导向场景需要同时预估点击和转化。千川针对两类场景目标,设计了粗排双塔和粗排ESMM模型实现分目标差异化预估,消除场景目标定位差异。
- 粗排双塔模型实现点击预估
- 粗排ESMM实现点击与转化的多目标预估
4.2 排序模型迭代
挑战1: 用户兴趣建模
用户兴趣建模一直是推荐系统中重要的优化点之一,用户的历史行为则是用户潜在兴趣最直接的表达。
之前的工作主要针对用户实时和中短期行为进行建模,仅使用近期行为无法建模用户长期以来稳定的兴趣和周期性的行为,同时也会将推荐系统的数据反馈循环限制在局部的热门的内容中。
另一方面则是特征交叉的不足,模型从deepFM单目标范式迁移到基于dmt范式下的多目标模型,去掉了fm侧结构,虽然可以充分挖掘用户行为序列特征,但是对稀疏特征在模型上的交叉还较少,有一定的优化空间。
挑战2: 场景差异建模
由于不同的场景往往具备自身独特的定位,服务的用户、包含的商品都有较大的差异。而小场景本身的用户分布和行为偏好也随活动和运营策略等变化发生较大的波动。
新人落地页、新人频道等场景,新用户占比较高,点击率偏高而转化率明显偏低;补贴频道主要以性价比高商品为主,点击、转化的意向都不错,但是aov较整体有明显的下降;女性频道的受众基本是女性,这个场景的商品集较主流场景有着明显差异,女性用户在喜好上也有明显偏向,数据上看这个场景的女装、箱包占比有明显提升;而会场等场景,日常和大促用户分布和商品池变化很大,用户行为也有相应的变化,在预热期收藏意愿持续提升,直到大促当天集中实现转化。而对于购后、支付后等场景,由于用户需求已经部分满足,浏览深度就相应偏低。
迭代1: 用户兴趣建模
为了充分建模用户的兴趣的差异,我们在构建场景下用户、商品各种显式交叉统计特征的基础上,进一步通过优化对用户行为序列的充分建模和隐式的特征交叉方式,提升我们对用户偏好刻画的准确性。
- 首先我们增加了transformer的结构来处理用户的长短期用户行为序列,并对行为序列做了合并和去重处理来增大信息容量。
- 我们增加了显式的对用户统计特征、稀疏特征的交叉,提升模型效果。
- 增加千川id、商品、用户属性对用户行为的交叉特征,并利用co-action结构做隐式交叉。
- 用户行为序列作为Feed Feature, 复用attention之前的sequence embedding
- cspu、qcid、gender、brand等作为Induction Feature,构建3层mlp
- 做3次阶乘,增加高阶的特征交叉
迭代2: 多场景差异建模
为了充分建模不同场景的差异,我们在构建场景下商品、品牌、类目的交叉统计特征基础上,进一步通过模型结构的优化,充分学习用户在不同场景的偏好差异。
- 通过构建特征刻画场景偏好以及场景效率的差异
维度 | 区分 |
品牌偏好 | uvctr、pvctr、uvcvr、pvcvr... 场景下不同的【品牌|类目】商品聚合统计效率指标 |
类目偏好 | exp_uv_per、exp_pv_per... 同场景下,不同【品牌|类目】的【曝光|点击|收藏|订单】占比 |
时间 | 1d、3d、7d、14d、30d |
效率 | pvctr、uvctr、pvcvr、uvcvr、aov、uvv、dpv... |
指标 | gmv、exp_uv、exp_pv、clk_uv、clk_pv、ord_uv... |
- 通过构建特征刻画用户活跃度、用户生命周期标签等特征
- 用户标签-生命周期
- 用户-不同场景-活跃度 【exp|clk|buy|clickbuy && cspu|brand|cate】
- 用户-全场景-活跃度【exp|clk|buy|clickbuy && cspu|brand|cate】
- 通过mmoe结构,使得模型进一步学习到场景的差异。
- 尽管丰富了特征,但是不同场景的样本混合,只用一个模型会使得不同场景互相干扰覆盖,难以达到最优的效果,所以进一步对模型结构做了调整,复用了mmoe的结构。
- 为了凸显场景的差异性,需要对原始的MMoE的 Gate 网络的输入做调整,为此只选择千川id的本身信息作为特征,利用场景id的信息对experts进行选择,使得不同场景经过softmax输出不同的Gate 权重。
- 针对不同的场景,模型能够感知场景的差异,不同场景能够选择不同的experts子网络的组合,从而实现不同场景的差异化建模。
- 通过poso结构,使得模型能进一步学习到用户群的差异。
- 在初步使用用户特征时,发现新用户的特征因为数据稀少(新用户的样本只占所有样本的4.6%),并没有被网络充分学习利用,导致这些特征即使被MASK也几乎不影响网络参数分布。
- 为了解决不平衡分布的特征的处理,采用了POSO的结构,主要在Gate侧输入用户标签特征,例如是否新客、是否卖家、性别等特征。然后在全连接结构使用POSO时,全连接的每层输出和gate的输出按位相乘。
按照预估点击率分桶,可以看到模型在对新客的预估上,准确率明显提升,而且从整体的pcoc上看,模型建模效果也显著提升。
5、未来展望
5.1 业务
千川一如既往的支持各类业务发展:
- 规范对接流程,继续扩展新场景,做到准确高效,如:会场主图,金刚位出图等。
- 归纳业务诉求,提炼需求共性,进一步扩展能力,如:多类型分发能力、多样性重排能力等。
- 维护系统稳定,完善监控、神盾巡检,及时发现、处理相关问题。
5.2 算法
千川召回迭代会继续聚焦在处理场景、行为、兴趣偏差上:一方面从场景相关特征入手,围绕场景特征进行召回模型迭代,如:将场景特征作为独立塔引入,加入场景、用户、商品之间的特征交叉,探索SDM模型结构等;一方面持续深挖用户、商品特征,强化价格因素占比,丰富价格特征、加深价格与场景、用户、商品的关联,实现精准建模。
千川精排迭代会继续聚焦在多场景差异建模方向上,一方面探索现有建模范式的进阶方向,例如PepNet等。一方面继续挖掘特征,例如场景内的用户行为序列等,并探索与之适配的模型结构,如SAR-Net等。
另外在许多千川的实际应用中,有许多非瀑布流场景,K个商品可能一次性呈现给用户。例如金刚位、中通位、会场楼层内、商品分类等等场景。此时,这K个商品如同被呈现在一张卡片上,且这K个推荐位之间是相互影响的。会尝试探索生成重排等整屏优化的算法方向。
而千川会场商品推荐很容易受外界干预和大促日程节点的影响,排序模型常常出现日常表现优于基线,但是到了大促就效率大幅下滑的现象。这既是挑战也是算法技术创新的机遇。会进一步探索诸如持续学习、实时ODL、LTR等方向。
5.3 通用性
此外,我们会继续升级,将千川变得更加通用,争取做到组件化、构建算法库、灵活扩展和可复制。