推荐系统实战(八)-冷启动(上)

一、冷启动基本描述

(一)冷启动与新用户新物料

冷启动针对的是对缺少消费记录的新用户、新物料的推荐。

新用户不仅包含初次使用应用的用户,还包含安装很久但是处于低活跃状态的用户。

(二)部分经典算法无法支持新用户新物料

比如Item2Vec中,没有在训练集出现过的物料无法给出embedding。

再比如DIN和SIM,基于用户历史行为序列做attention,在新用户上就无用武之地。

(三)经典简单的策略解决冷启动

针对新用户,根据用户属性推荐或者推荐最热门的物料。

二、Bandit算法

Bandit算法不是单一算法,而是一个庞大的算法家族。

思路简单描述就是通过一系列实验,将新用户的兴趣和优质的新物料挖掘出来。

(一)多臂老虎机问题

Bandit算法得名于多臂老虎机Multi-Armed Bandit(MAB)。

1、Bandit之于新用户

对于新用户来说,不同的兴趣分类相当于MAB的手杆,而用户的反馈、点击就相当于MAB吐出来的金币。希望通过有限次的拉动手杆(与兴趣交互),得到足够多的正反馈,摸清用户兴趣。

2、Bandit之于新物料

对于新物料而言,候选物料集中的每个物料相当于MAB的手杆,用户的反馈、点击就相当于MAB吐出来的金币。通过有限次的物料交互,挖掘出能够得到最多正反馈的物料,确定为优质物料。

3、Bandit最简单最朴素的做法

Bandit最简单、最朴素的做法就是将N次“拉动”的机会划分成探索(explore)和开发(exploit)两类。

①探索

探索就是给予每个手柄n次拉动机会,统计每个手柄n次拉动的平均收益。

②开发

开发就是找出每个手柄n次拉动的平均收益最大的那个手柄,剩下的机会全部用来拉动该手柄。

而这样做的缺点也很明显。当探索次数过少时,统计出来的平均收益误差较大;当探索次数过多时,留给开发的“拉动”机会就少了。

(二)Eplison Greedy

1、Eplison Greedy思想

Eplison Greedy不再是划分前后两个阶段,而是将探索和开发按照一定概率交替进行

探索的概率是\epsilon,那么开发的概率就是1-\epsilon。随机生成一个数和\epsilon进行比较,比\epsilon大就进行开发,比\epsilon小就进行探索。

衰减\epsilon的实验中,\epsilon的大小会在实验后期逐渐变小,保证前面探索,后期注重于学习到的知识。

固定\epsilon的实验中,\epsilon的大小会在实验过程中不变,保持探索和开发的平衡。

2、Decay Eplison Greedy

Decay Eplison Greedy就是1中描述的衰减Epsilon。

  • 前期\epsilon较大,有助于探索各拉杆的平均收益。
  • 后期\epsilon较小,这时候各拉杆的平均收益已经比较稳定了,找到的最大平均收益的置信度更高,鼓励算法充分利用探索出来的最大平均收益的拉杆赚取收益。

(三)UCB

1、UCB思想核心

考虑到以平均收益为指标并不全面,因此推出了Upper Confidence Bound(UCB,最大置信区间上界)算法。

UCB思想核心是,为每个选择计算出上置信区间的宽度,最后再选择置信区间上界最大的选项。这一方法将探索和利用结合起来,使得既有可能性选择了当前看似最优的选项,又不忽视对其他选项的探索。

第i根手柄的收益上限如下所示:

第一项是第i个手柄的平均收益,第二项是上置信区间的宽度。

t是总尝试次数,n_i是第i个拉杆的尝试次数。第二项能体现出来收益潜力,n_i越小,不确定性越高,越值的探索。

c是平衡收益均值和收益潜力之间的权重,后期逐渐减小(探索减少)。

从上述公式能看出来一个拉杆的收益上限高只有两种可能:平均收益高(此时选择上限高的拉杆,是在开发)或收益潜力高(此时选择上限高的拉杆,是在探索)。

2、UCB伪代码流程描述

①初始化每个选项的尝试次数(次数为1)还有总收益(只进行1次的总收益)。

②设置N次尝试,每轮尝试遍历所有选项,找到收益上界最高的选项进行一次交互反馈。

③更新上一步找出的选项的尝试次数(+1)和总收益(加上新的交互反馈得到的收益)。

UCB算法示意

(四)概率匹配

概率匹配probability matching也将开发和探索合二为一。

1、主要思想

某个手柄被选择的概率与该手柄当前的平均收益成正比。

2、公式

\tau是调节探索和开发的温度系数。当\tau比较小的时候,公式的结果越集中于平均收益最大的手柄,倾向于开发;当\tau比较大的时候,公式的结果越倾向于平均分布,倾向于探索。

(五)Bayesian Bandit

选择Beta分布来描述每个选项的平均收益的Bayesian Bandit算法被叫做thompson sampling(汤普森采样)。

1、Bayesian Bandit主要思想

假定每个选项的平均收益遵守先验概率p(\overline R(i)),若干次实验以后,每个选项收到反馈组成了反馈序列D_i;则第i个选项的平均收益的后验概率p(\overline R(i)|D_i) \propto p(D_i|\overline R(i))p(\overline R(i))。从每个选项的后验概率中抽样,选择数值最大的那个选项去拉动。

2、Bayesian Bandit流程描述

  • 首先初始化每个选项的平均收益遵守先验概率分布为Beta(1,1)(是平均分布)。

  • 开始若干次尝试,每次尝试都从每个选项的Beta分布中采样一个随机数,选择数值最大的那个选项中的物料进行交互,将交互反馈结果记录,修改相应选项的Beta分布。

3、Bayesian Bandit具体例子

  • 假定平均收益为平均点击率,初始化每个兴趣分类(拉杆)的先验概率分布为Beta(1,1)。Beta(α,β)中α表示点击次数,β表示未点击次数。初始化为Beta(1,1)是均匀分布,此时从该分布中采样一个随机数的概率是相等的,可能是0.1,可能是0.9,都有可能。
  • 开始若干次尝试。每次尝试都从每个兴趣分类的分布中采样一个随机数,比如从兴趣A中随机采样的数值大小为0.4(代表可能的点击率),从兴趣B中随机采样的数为0.5。于是选择数值大的兴趣B拉动,按照人工筛选或者大数据统计等方式,筛选出兴趣B中的优质物料推荐给用户交互,记录下用户的反馈。
  • 利用用户的反馈更新相应兴趣选项的Beta分布,比如用户点击了上一步推荐的物料,那么此时兴趣B类的点击次数更新为2,概率分布更新为Beta(2,1)。此时随机采样B的beta分布,获取的数值大小偏大(代表更可能点击)。
Thompson Sampling示意

(六)上下文Bandit 

1、上下文无关Bandit与上下文Bandit

  • 上下文无关Bandit:是指在做出选择时,不考虑任何额外的上下文信息(如用户特征、时间或位置等),仅根据手柄(或选项)本身的历史表现来进行决策。换句话说,每个手柄的收益分布只与该手柄相关,而与其他外部因素无关。
  • 上下文Bandit(Contexual Bandit):认为每个手柄的平均收益分布并非是固定不变的,会根据上下文的不同而改变。

2、LinUCB

LinUCB是一种上下文Bandit算法,被Yahoo用来推荐新闻。每个新闻被当做一个手柄,而手柄的平均收益分布会根据用户的不同而变化。

①公式

r_t,a是第t次推荐新闻a时的收益(比如点击与否,阅读时长等)。

x_t,a是第t次推荐新闻a时的上下文,包括用户特征、物料特征、环境特征等。

θ_a是新闻a独有的权重,是根据其交互历史单独训练出来的。

②求解最优权重θ_a

在获取新闻a若干次的上下文特征和真实反馈后,利用真实反馈与期望收益做一次岭回归,求导后可解得最优权重θ_a。

为了平衡探索和开发,引入α,第二项是上置信区间长度。最后找到收益置信区间上界最大的新闻进行推荐。

三、元学习Meta Learning

(一)元学习简介

喂入元学习的基本数据不再是一条条样本,而是一个个Task。每个Task包含一个训练集(support set)和一个测试集(query set)。

每个任务训练好模型后,测试得到该任务的loss(这被称为任务内学习)。所有任务的loss之和是总损失,这用到了一个batch内的所有数据,被称为跨任务学习。

Meta Learning示意

(二)MAML

1、MAML的两个特点

  • 模板配置仅限于初值,MAML 不关心具体任务的模型配置,而是专注于找到一个通用的参数初值 θ,从这个初值出发,模型可以快速适应不同的新任务。
  • 损失函数要求对模板配置的参数初值可导,从而能够通过梯度下降求解出最佳θ,使得模型在这个初始点上能够通过少量的梯度更新迅速适应新任务。换句话说,MAML 不直接学习解决某个特定任务的参数,而是学习如何为多个任务提供一个好的起点。

2、MAML解决小样本训练问题的两个思路

  • 通过若干组任务学习出一套高质量的参数初值θ。
  • 当面对一个新任务,由这段高质量的参数初值出发,经过少量样本的迭代,得到适合新任务的最优参数。

3、MAML两阶段优化

  • 任务级优化:通过几次迭代优化,从初始参数θ开始,得到每个任务的最优参数。
  • 元任务优化:元任务优化的目标就是从初始参数θ开始迭代优化,使它在每个任务上表现都良好。元任务损失是各任务损失之和。

4、MAML具体例子

如下图所示,第一个批次是任务A。此时先完成任务级优化,任务A从初始参数\phi_0开始,梯度下降得到当前任务A的最优参数\theta^*_A

接下来进入第二个阶段,完成元任务优化,元任务从初始参数\phi_0开始,进行元梯度下降,更新初始参数的新值\phi_1。第二个批次任务是任务B,过程以此类推。

MAML训练迭代过程示意

5、MAML与冷启动问题

MAML面对新用户时,将新用户当做一个task;面对新物料时,将新物料当做一个task。元学习利用老用户和老物料训练出来一套最优参数初值,此时应用于新用户新物料可以快速收敛到最佳状态。

(三)MAML针对推荐场景的改造

1、应用范围改造

  • 直接复用的参数:DNN权重和常规特征(比如性别等)的embedding,可以直接复用老用户/老物料的。
  • 需要学习的最优初值:只有每个新用户的userID和新物料的ItemID,是需要学习出一套最优初值的。

2、优化目标改造

MAML在推荐场景下的唯一任务就是学习出ID embedding的参数初值\phi

以新用户举例的两阶段:

①cold-start:新用户第一次对系统发出服务请求,此时系统中没有该用户的ID embedding,因此相应的参数初值\phi就代替该用户的ID embedding喂给模型。

②warm-up:在第一次交互反馈的基础上,以参数初值为起点,经过一次梯度下降得到了新用户ID embedding的新值。

如下图所示,虽然经过一次梯度下降,在任务1和任务2上优化得到的参数和损失比较满意,但是对于参数初值而言并未达到最佳初值状态。

因此要做的第二个改进就是要同时兼顾模型在\phi\theta^*处的性能。

 MAML损失函数曲线

3、生成方式改造

对于新用户、新物料的ID embedding,传统的MAML倾向于生成一个全局向量作为参数初值。

但是在实际场景中,新用户可以通过一些问卷调查的方式获取其兴趣爱好、性格等信息,新物料也可以通过内容分析获得一些标签信息,并非一张白板。

因此,可以通过设置一个用户/物料基本信息的函数,来对用户和物料的ID embedding进行初始化。

(四)Meta-Embedding

以新物料的Meta-Embedding举例。

主要分为两个阶段:预训练阶段和元学习阶段。

在预训练阶段,利用老物料信息训练出一个CTR模型F。e_i是ItemID embedding,a_i是常规特征embedding,u是用户。

需要优化F的参数包括以下两个方面:

  • ID embedding,需要一个获得一个最佳参数初值。
  • 常规特征的embedding和DNN权重。

进入元学习阶段,利用老物料模拟冷启动阶段寻找最佳初值。

1、应用范围改造

对预训练得到的模型参数θ保留,但是预训练阶段的ItemID Embedding e_i要丢弃。在元学习阶段,要通过参数初值\phi的函数得到ItemID Embedding,G_i表明不同类型的物料有不同类型的映射方式。

2、优化目标改造

冷启动分为cold-start和warm-up两个阶段。

(1)随机取样

在物料i的训练集中,随机采样两个大小为K的样本集。

(2)cold-start

cold-start阶段由于没有物料i的item ID embedding信息,因此采用参数初值和相应的映射函数得到物料的embedding,再计算相应的BCE loss。优化的是模型在参数初值\phi的表现,也就是优化物料在系统中的第一次体验。

(3)warm-up阶段

warm-up阶段是在第一次的基础上,经过梯度下降得到新的embedding,再计算二元交叉熵损失。

元学习的总损失是上述两阶段的损失加权和。

3、生成方式改造

对于新物料而言,一些常规特征是可以加以利用来获得ID embedding最优初值的。

通过一个映射函数实现:

要优化的参数就变成了w。

实现流程如下:

  • 将物料i的常规特征a_i中各个feature field先embedding,再pooling成一个向量。
  • 将各个field的embedding拼接成一个大向量。
  • 将拼接成的向量喂入上面的浅层网络进行简单的线性映射(权重是w),就得到了ID embedding的个性化初值。

其中比较特别的是,各个feature field的embedding矩阵直接复用预训练模型中的,无需再次训练。

个性化初值生成函数

4、部署

Meta-Embedding训练完成后,单独部署成一个服务,用于在线预测和训练。

  • 预测:新物料没有ID embedding信息,个性化的最优初值可以充当cold-start阶段的embedding,给用户较好的新使用体验。
  • 训练:第一次,个性化的最优初值可以充当cold-start阶段的embedding;第二次,根据一次梯度下降可以得到新的ID embedding,优化新物料第二次被服务的体验。

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值