前段时间在业务中用POSO做了一些工作,有一些尝试和思考,将从这篇开始分享,主要包括两部分: (1) POSO原理; (2) 实际应用中的尝试、效果和分析思考。 由于内容比较多,将分为两篇分享,这一篇先分享POSO原理,下一篇再分享实际运用过程中的尝试、优化和思考。
多说一句:初看论文和在业务中应用的时候,觉得这个思路简单优雅,并未深入体会其中的精妙,在写这篇分享的时候,多次看论文中的一些细节,不得不惊叹作者的巧思。
目录
- 1 提出背景
- 1.1 行为数据稀少
- 1.2 样本分布极度不均衡
- 1.3 用户行为模式差异
- 2 POSO方法
- 2.1 原理
- 2.1.1 基础设计思路
- 2.1.2 用户分群表征
- 2.1.3 已有模型利用
- 2.1.4 按位乘近似等价
- 2.2 模型结构
- 2.2.1 全连接结构
- 2.2.2 multi-head attention结构
- 2.2.3 MMoE结构
- 2.3 优缺点
推荐领域常用的方法是监督学习,本质是拟合数据的分布,不管是简单还是复杂的监督学习模型,数据限定了其效果的天花板。因此,监督学习的方法,存在一个共同的问题,对训练集中从未出现过的分布,拟合效果大打折扣。在推荐场景,新用户和新物品非常常见,他们没有历史数据,模型在训练过程中缺少对应样本,因此难以学到其分布,从而可发挥的作用有限。这类问题,在推荐领域是一个很大也很重要的方向,即冷启动。
用户的冷启关系到用户留存,而用户留存是业务最核心的目标,没有用户留存,业务就开始萎缩走下坡路;另一方面,当业务发展到一定程度后,高活用户可提升的空间将变得有限,而冷启用户可挖掘的空间非常大,就像从95分到满分100分很难,而从20分到60分则容易很多;因此做好用户冷启对业务的发展非常重要。
针对用户冷启问题,快手于2021年提出POSO(Personalized Cold Start Modules)[1]模型,以一种优雅的方式缓解冷启用户样本稀疏的问题,在对冷启用户带来显著效果的同时,对非冷启用户也有一定效果。
1 提出背景
推荐场景中,新用户的留存对业务发展非常重要,新用户留存依赖于新用户冷启效果,而由于新用户的一些特点,用户冷启一直是业界的难点问题。
1.1 行为数据稀少
新用户的特点包括:(1) 历史行为数据非常稀少,导致模型难以捕捉其兴趣,从而难以进行有效的个性化推荐;(2) 耐心差,对推荐结果敏感,给系统试错的机会少,初期一两次不好的推荐结果有很高的概率导致用户停止在该场景继续消费,从而造成用户流失。
已有的用户冷启方法大致可分为两类:(1) 元学习(meta learning),这种方法的思路是利用先验知识的共性,通过多个数据集学习f,使其可以用于新的场景,从而实现利用非冷启用户的数据来得到适用于冷启用户的模型;(2) id embedding生成,这种方法利用其他特征生成id embedding,从而缓解冷启用户历史数据稀少的问题。
1.2 样本分布极度不均衡
上述方法虽然可以一定程度解决冷启用户缺少数据带来的问题,但忽略了 冷启问题中样本分布极度不均衡的问题,导致模型受主体样本的影响 。推荐场景中,冷启用户的样本在全量样本中占比不足5%,绝大多数样本来自非冷启用户。
1.3 用户行为模式差异
冷启用户和非冷启用户的行为模式存在明显差异,其行为模式差异的后验数据如图1所示,以非冷启用户行为的后验数据为原点,冷启用户行为的后验数据和原点存在明显偏差。在样本分布极度不均衡的情况下,模型受非冷启用户主导,而非冷启用户和冷启用户的行为模式差异明显,导致模型无法捕捉到冷启用户的行为模式。
图1 冷启用户行为后验数据对非冷启用户行为后验数据的偏差
对于样本分布不均衡问题,直观的做法是在特征中使用相关的特征,在冷启问题中,该特征可以用是否为冷启用户表示,从而帮助模型学到其偏差。实际上,论文通过实验验证,模型很难利用这类特征捕捉到不同样本之间的偏差。图2表示了在模型中分别mask掉(置0)非均衡和均衡特征之后各个task最后一层dense层输出的平均值,可以看出,mask掉是否为新用户这个特征,dense层输出基本不变,而mask掉country这个特征,dense层输出变化明显。由于是否为新用户这个特征分布极度不均衡,当mask掉这个特征后(原模型新用户该特征值为1,非新用户特征值为0),仅有不到5%的样本受影响,对模型的影响非常有限,导致模型更新基本不变;而mask均衡分布的特征则不一样,大量样本受到影响,导致模型也受到较大影响。
图2 模型对均衡分布和非均衡分布特征的敏感性
针对冷启用户样本稀疏导致的样本分布极度不均衡问题,POSO采用 对每个用户学习其模型 的思路,从模型层面加强非均衡特征的学习,从而缓解冷启面临的模型被主体样本主导的问题。
2 POSO方法
POSO的思路非常朴素,即对每个用户学习对应的模型,不受其他用户样本的影响,做到完全基于用户自己的个性化。基于此思路,进行简化和近似等价,在基础的单个模型中引入个性化模块,使模型对每个用户在模型结构层面进行个性化响应,实现模型结构的个性化。
2.1 原理
2.1.1 基础设计思路
POSO设计的出发点是对每个用户学习其模型,如式子(1)所示,其中u表示用户,x为输入,y为输出, 表示该用户对应的模型。这个思路直观简单,但由于推荐场景用户量庞大,因此在落地层面不可行。
2.1.2 用户分群表征
沿着模型最初设计思路,对用户分群,每个用户群学习其对应模型,则可解决单个用户对应一个模型带来的数据量庞大而无法落地实现的问题。单个用户可以看成是不同用户群的组合,比如一个用户可以看成是活跃用户和非活跃用户的组合。式子(2)表示了该思路,其中N表示用户群数量, 表示第i个用户群对应模型对用户u的权重, 通过gate网络计算得到,如式子(3)所示,其中 表示用户的个性化编码特征(Personalization Code),如用户群属性、是否新用户之类的特征,这类特征在全局样本中分布不均衡。
2.1.3 已有模型利用
通过用户分群的方法,虽然实际落地可行,但依然需要学习N个模型,参数量随着用户群数量线性增长,因此巧妙利用gate的作用,对模型数量简化,仅使用业务当前模型即可。既然需要不同用户群模型,那就以业务当前模型为基础,通过加权得到某个用户群的模型,再进行加权得到某个用户的模型,两次加权可以通过一个gate网络合并。这种简化方式不仅减少了模型数量,而且由于使用业务当前模型,无需重新训练模型,对落地非常友好。
利用gate作用简化后,再对当前模型按模块拆解,则可表示为式子(4),其中f表示业务当前所使用的模型, 和 分别表示模型某层的输入和输出,C为修正因子,引入C的原因是gate求和没有归一化的约束,输出期望存在缩放偏移。
2.1.4 按位乘近似等价
模型中的主要模块是全连接层,将式子(4)运用在全连接层,则可表示为式子(5),对于输表征的第p维,计算过程可表示为式子(6),其中 为输入x的维度, 为输出 的维度, 表示全连接层对应输入输出在维度(p, q)的参数。对式子(6)中的参数进行适当的设置,则可对其进行有效的简化,当 , 在 时取0, 时保持原值时,式子(6)则可表示为式子(7),其中 表示按位乘。
这种参数设置巧妙地对式子进行了简化和等价, 通过gate输出和原有模型输出按位乘则实现了模型结构层面的用户个性化 ,计算简单、效率高,可以称得上实现优雅。
2.2 模型结构
从POSO 的朴素设计思路出发,经过一系列的简化和近似操作,最终通过在全连接层点乘的方式,实现了模型结构的个性化。 这种方式使得模型在使用POSO思路时结构简单清洗,且各种模型结构均适用,也适用于模型中单个或多个模块,包括但不限于简单的全连接结构、multi-head attention结构、MMoE结构。
2.2.1 全连接结构
全连接结构使用POSO时,全连接的每层输出和gate的输出按位相乘,如图3所示。
图3 全连接结构使用POSO
2.2.2 multi-head attention结构
multi-head attention中,单head的attention计算如式子(8)所示,使用POSO的原始计算过程如式子(9)所示,这种计算方式复杂,因此把对attention最后结果引入gate,转化到对attention中Q, K, V上。
根据Q, K, V的角色不同,引入gate的程度也不同。由于快手在实现时,qurey的输入为除用户历史行为外的所有特征,包括了个性化编码特征在内,因此对其不引入gate;对于V,其值对attention的结果影响大,因此对V中的每个元素都引入gate;对于K,为了方便计算,仅引入一个gate,可以和Q直接计算进行softmax操作。单head的attention使用POSO的计算最终可表示为式子(10),其结构如图4所示。
图4 multi-head attention结构使用POSO
2.2.3 MMoE结构
MMoE结构中使用POSO的原始计算如式子(11)所示,其中i、j、t分别为个性化gate、expert和task的下标。可以看出,所有expert共享个性化gate,对此不妨令每个expert有其各自的个性化gate,因此计算过程可表示为式子(12);令 ,则计算过程可表示为式子(13), 取N时,则可利用按位乘提高计算效率,此时模型结构如图5所示。在实际使用过程中,可根据式子(11)对MMoE进行非简化的POSO方式,也可使用图5所示的方式。
图5 MMoE结构使用POSO
论文以全连接、multi-head attention和MMoE为例,对其使用POSO思路,业界还有很多其它模型结构和模块,都可采用类似的推导过程,得到使用POSO后的计算方式。
2.3 优缺点
POSO的设计和实现简单优雅,具备以下优点:
- 实现了模型结构的个性化;
- 不仅对用户冷启问题有效,还可扩展到其它业务维度带来的非均衡分布样本问题;
- 灵活性好,适用于各种模型结构和模型中单个或多个模块;
- 实现成本低,可复用业务当前使用的模型,且通过按位乘实现,代码实现简单,计算消耗资源少;
- 对上下游友好,其输入输出和原有模型保持一致,不需要进行模型架构的调整。
至于POSO的缺点,我还没想到什么明显的点,欢迎有想法的朋友补充。
我在业务中应用POSO,直接应用时没有明显效果,做了一些尝试和调整之后,取得了明显的效果。
下一篇分享将介绍这个过程中的实现细节、改进和思考。
Reference
[1] POSO: Personalized Cold Start Modules for Large-scale Recommender Systems https://arxiv.org/abs/2108.04690.
交流群:点击“联系作者”--备注“研究方向-公司或学校”
欢迎|论文宣传|合作交流
往期推荐
[NIPS'22「牛津+剑桥」利用迁移学习在异构空间中估计干预效果
2022-10-30
[ICLR'23 LightGCL: 简单而有效的图对比学习推荐系统
2022-10-30
[深度点击率预估模型的过拟合现象剖析
2022-10-22
[「阿里」SCI:基于子空间学习的个体干预效果(ITE)估计方法
2022-10-15
长按关注,更多精彩
点个在看你最好看