推荐系统冷启问题的解决方案

推荐系统整体框架

推荐系统从算法的视角可以分成:模型训练和模型部署阶段;而为了提供模型所需的特征,整个推荐系统可以分为:

  • 在线部分(实时训练/实时预估)
  • 近线部分(提供实时特征——为特征提供索引,以便模型特征能够实时查询)
  • 离线部分(离线模型训练/离线特征挖掘)
    在这里插入图片描述
    推荐系统详情见:https://www.zhihu.com/tardis/bd/art/641176648?source_id=1001

推荐系统存在的冷启问题

随着推荐系统的发展,推荐系统面对的问题越来越细化,面对一个新的推荐场和存量推荐场,存在着模型冷气问题。冷启问题主要分为:

  • 用户冷启:新用户/低活用户在推荐场上的表现
  • item冷启:新的item在推荐场上的优化
  • 系统冷启动:新的推荐场(eg:支付宝临时的分会场),涉及到新用户以及新item

冷启问题的解决方案

概览

 针对冷启情况的解决方案非常多,一般可以分为以下三类冷启方案:
 1、基于策略的冷启动方案。eg:通过用户在其他场景的离线偏好特征挖掘,引入具有专家经验的position_bias等操作;
 2、基于特征的冷启动方案,建立更多通用性的特征。eg:特别是大语言模型的浪潮下,利用语义信息来购进啊推荐系统的通用模型已经越来越受到关注;
 3、模型结构&训练方式的探索。eg:主动学习和迁移学习的使用,设计各种跨域融合的模型逻辑;

两种冷启思路详解

相关论文:

  • 基于用户分层的推荐系统 ( poso&mgain ):https://arxiv.org/abs/2108.04690
  • 基于通用化特征的推荐系统 ( usrlrecom ):https://github.com/RUCAIBox/UniSRec

基于用户分层的冷启解决方案——POSO

  • poso的算法思想:利用推荐系统中新老用户的差异性特征,通过子网路的引入,扩大推荐系统中不同用户的差异性。更加朴素的思想:不同类型的用户使用不同的函数 f ( x ) f(x) f(x)进行拟合。
poso详解
  • 在推荐领域中,新用户和其他用户往往在行为表现较大差异。如下图所示,若以老用户行为的后验数据为0点,新用户的后验数据和原点存在较大差距;对于大部分成熟的推荐场,新用户往往是比较少的,这种情况下,模型往往无法捕捉到新用户的行为差异;同时mask掉新用户的特征,发现模型在高维输出上并没有太多的差异性(高维度对低纬度特征捕获的消散性)。
    在这里插入图片描述
  • poso模型的公式推导
    1、针对不同的用户使用不同的函数进行表征
    y u = f u ( x u ) y^u = f^u(x^u) yu=fu(xu)
    2、对于每个用户使用不同的函数难以达到,但可以对于不同类型的用户采用不同的函数,在公式中每一层用户的表征,可以用gate网络来进行捕获
    y u = ∑ ( w i f i ( x ) ) y^u = \sum(w_if^i(x)) yu=(wifi(x))
    w i w_i wi的表征为: w i = [ g ( x p c ) ] w_i = [g(x^{pc})] wi=[g(xpc)],pc表示用户处于的用户分层的层级(或群体),则公式转化为(考虑到多层结构):
    x n e x t l a y e r = C ∑ i N [ g ( x p c ) ] i f i ( x ) x^{next_{layer}} = C\sum_{i}^{N}[g(x^{pc})]_if^i(x) xnextlayer=CiN[g(xpc)]ifi(x)
    3、上面主要全连接网络,上面公式可以进行简化
    x n e x t l a y e r = C ∑ i N [ g ( x p c ) ] i f i ( x ) = C . [ g ( x p c ) ] p ∑ q = 1 d i m W p , q x q = C ⋅ g ( x p c ) ⊙ W X x^{next_{layer}} = C\sum_{i}^{N}[g(x^{pc})]_if^i(x)=C.[g(x^{pc})]_p\sum_{q=1}^{dim}W_{p,q}x_q = C\cdot{g(x^{pc})\odot{WX}} xnextlayer=CiN[g(xpc)]ifi(x)=C.[g(xpc)]pq=1dimWp,qxq=Cg(xpc)WX
  • poso模型的网络结构
    通过上面公式推导,poso的网络结构可以视作为:利用一个辅助网络,来保存和传播用户差异性特征,保证网络最终输出层,能够保留区分用户群体的特征,从而达到不同用户群体的模型输出具有较大的差异性,从而解决新用户的冷启用户。
    在这里插入图片描述
poso模型解决用户冷启问题的关键
poso模型有效的关键在于:Gating Network入参的用户特征是否真的具有用户群体的区分性;若区分度不高,引入poso的思想,反而会给最后模型推荐的效果带来负面的影响。

基于poso的整体思路,在解决推荐系统的冷启问题时,需要进行必要的数据分析,挖掘出新老用户差异度较大的特征,一般挖掘维度:

  • 用户行为特征的差异性:某些域的高活/低活;过去一段时间在推荐域的行为统计学表现;软件使用时长等
  • 用户基础特征的差异性:年龄、收入等分箱处理后的差异性
  • 用户的交互行为差异性等
poso相关思考
  • 既然挖掘到冷启过程的新用户,不使用poso,对新用户进行单独建模?
    针对新用户量大的场景,使用该方法能够解决部分冷启问题。但是会带来两个新问题:
    1、一个成熟的推荐域新用户的占比往往不到1层,这会带来建模数据量不足等问题
    2、新用户在域内的行为特征太少,单独建模老用户的一些交互特征如何对新用户带来“指导”作用。
  • 将能够区分用户群体的特征,直接作为position_bias带入到模型的输出层进行concat?
    一般区分用户群体差异性的特征维度 d < < o u t p u t d i m s d<<output_{dims} d<<outputdims,即:差异性特征维度远远小于模型输出层的维度,这样就会在进行sigmoid的时候,使得差异性特征未得到捕获。

基于跨域融合的冷启动解决方案——LLM相关

  • LLM冷启相关的思路:用户得序列特征是推荐系统得重要特征,但是新的item_id往往不会出现在任何用户得序列特征中;那么产生一种基于语义的思想,是否能够将item的通用特征提取出来,从而泛化用户的特征。简单来说:用户A买过牛排,那么新品羊排是否也在推荐系统中靠前。
  • LLM在冷启过程中存在的问题:
    1、跨域问题:LLM的目的是提取用户item_id序列的通用特征,但是用户的item序列在不同域中语义特征存在偏差。
    2、特征维度选择问题:商品在不同域中的表达呈现方式存在不同。eg:支付宝会员频道中的商品名和主页频道中的商品名存在不同。
特征维度选择问题
  • 推荐系统中,商品语义特征的表达方式多种多样;但是在商品入库时一般时有着不同维度的标签的,那么在建模过程中可以充分利用上商品的标签。

一般推荐系统中,用户历史item序列[item_id1,item_id2,item_id3,…,item_idn],这些item_id来自于用户的不同域,而每个item_id均使用商品的某一维度标签进行表征。可以根据独有的标签体系进行更新,一般可选择维度:
i t e m     : [ 行业 , 品牌 , 品类 , 折扣力度 , 目标用户 , 载体 ] item ~~~ : [行业,品牌,品类,折扣力度,目标用户,载体] item   :[行业,品牌,品类,折扣力度,目标用户,载体]
其中,目标用户一般为婴儿、老人或学生等粗粒度的标签;载体一般根据公司的营销工具,一般有卡、券或商品等。

跨域问题的解决方案
  • 跨域问题:针对该问题其实存在不同思路的解决方案(eg:交叉attention—用另一个域的q和替换当前域的v等、迁移学习等思路),本小节主要介绍论文UniSRec中的方案

UniSrec利用“对比学习”解决用户在不同“域”序列中的偏向性问题。基本思想是:利用一个batch内用户自身的序列信息以及batch内其他用户的序列信息,利用对比学习的思想建立“无监督”训练模型,优化每个item的语义表征,使得item的语义的embeding具有一定的通用性。UniSrec提到了两种对比学习任务:

  • Seq-item的对比任务
    目标:捕捉序列上下文和交互序列中潜在下一个item之间的内在相关性。其负样本的构建方式:使用跨域的item作为负样本(使用batch内其他用户的item作为负样本),从而增强跨域的语义融合和自适应性。
    在这里插入图片描述

  • Seq-Seq的对比任务
    目标:在原始序列中随机删除固定比例的item,类似于word2vec的训练方案;目的是获取同一用户在不同域上的通用表征
    在这里插入图片描述

  • 两个任务进行目标融合

模型网络结构

在这里插入图片描述

总结

在推荐系统的冷启问题中,主要有两种解决思路:

  • 对用户分层建模
  • 利用LLM大模型实现特征(无论用户侧还是item侧)的通用高维特征表达
    但是每种思路都有大量的研究,而且随着大语言模型的崛起,整个推荐领域的产品方案也存在很大的变更可能。
  • 20
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值