一、冷启动基本描述
(一)冷启动与新用户新物料
冷启动针对的是对缺少消费记录的新用户、新物料的推荐。
新用户不仅包含初次使用应用的用户,还包含安装很久但是处于低活跃状态的用户。
(二)部分经典算法无法支持新用户新物料
比如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不再是划分前后两个阶段,而是将探索和开发按照一定概率交替进行。
探索的概率是,那么开发的概率就是1-。随机生成一个数和进行比较,比大就进行开发,比小就进行探索。
在衰减的实验中,的大小会在实验后期逐渐变小,保证前面探索,后期注重于学习到的知识。
在固定的实验中,的大小会在实验过程中不变,保持探索和开发的平衡。
2、Decay Eplison Greedy
Decay Eplison Greedy就是1中描述的衰减Epsilon。
- 前期较大,有助于探索各拉杆的平均收益。
- 后期较小,这时候各拉杆的平均收益已经比较稳定了,找到的最大平均收益的置信度更高,鼓励算法充分利用探索出来的最大平均收益的拉杆赚取收益。
(三)UCB
1、UCB思想核心
考虑到以平均收益为指标并不全面,因此推出了Upper Confidence Bound(UCB,最大置信区间上界)算法。
UCB思想核心是,为每个选择计算出上置信区间的宽度,最后再选择置信区间上界最大的选项。这一方法将探索和利用结合起来,使得既有可能性选择了当前看似最优的选项,又不忽视对其他选项的探索。
第i根手柄的收益上限如下所示:
第一项是第i个手柄的平均收益,第二项是上置信区间的宽度。
t是总尝试次数,n_i是第i个拉杆的尝试次数。第二项能体现出来收益潜力,n_i越小,不确定性越高,越值的探索。
c是平衡收益均值和收益潜力之间的权重,后期逐渐减小(探索减少)。
从上述公式能看出来一个拉杆的收益上限高只有两种可能:平均收益高(此时选择上限高的拉杆,是在开发)或收益潜力高(此时选择上限高的拉杆,是在探索)。
2、UCB伪代码流程描述
①初始化每个选项的尝试次数(次数为1)还有总收益(只进行1次的总收益)。
②设置N次尝试,每轮尝试遍历所有选项,找到收益上界最高的选项进行一次交互反馈。
③更新上一步找出的选项的尝试次数(+1)和总收益(加上新的交互反馈得到的收益)。
(四)概率匹配
概率匹配probability matching也将开发和探索合二为一。
1、主要思想
某个手柄被选择的概率与该手柄当前的平均收益成正比。
2、公式
是调节探索和开发的温度系数。当比较小的时候,公式的结果越集中于平均收益最大的手柄,倾向于开发;当比较大的时候,公式的结果越倾向于平均分布,倾向于探索。
(五)Bayesian Bandit
选择Beta分布来描述每个选项的平均收益的Bayesian Bandit算法被叫做thompson sampling(汤普森采样)。
1、Bayesian Bandit主要思想
假定每个选项的平均收益遵守先验概率,若干次实验以后,每个选项收到反馈组成了反馈序列D_i;则第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分布,获取的数值大小偏大(代表更可能点击)。
(六)上下文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内的所有数据,被称为跨任务学习。
(二)MAML
1、MAML的两个特点
- 模板配置仅限于初值,MAML 不关心具体任务的模型配置,而是专注于找到一个通用的参数初值 θ,从这个初值出发,模型可以快速适应不同的新任务。
- 损失函数要求对模板配置的参数初值可导,从而能够通过梯度下降求解出最佳θ,使得模型在这个初始点上能够通过少量的梯度更新迅速适应新任务。换句话说,MAML 不直接学习解决某个特定任务的参数,而是学习如何为多个任务提供一个好的起点。
2、MAML解决小样本训练问题的两个思路
- 通过若干组任务学习出一套高质量的参数初值θ。
- 当面对一个新任务,由这段高质量的参数初值出发,经过少量样本的迭代,得到适合新任务的最优参数。
3、MAML两阶段优化
- 任务级优化:通过几次迭代优化,从初始参数θ开始,得到每个任务的最优参数。
- 元任务优化:元任务优化的目标就是从初始参数θ开始迭代优化,使它在每个任务上表现都良好。元任务损失是各任务损失之和。
4、MAML具体例子
如下图所示,第一个批次是任务A。此时先完成任务级优化,任务A从初始参数开始,梯度下降得到当前任务A的最优参数。
接下来进入第二个阶段,完成元任务优化,元任务从初始参数开始,进行元梯度下降,更新初始参数的新值。第二个批次任务是任务B,过程以此类推。
5、MAML与冷启动问题
MAML面对新用户时,将新用户当做一个task;面对新物料时,将新物料当做一个task。元学习利用老用户和老物料训练出来一套最优参数初值,此时应用于新用户新物料可以快速收敛到最佳状态。
(三)MAML针对推荐场景的改造
1、应用范围改造
- 直接复用的参数:DNN权重和常规特征(比如性别等)的embedding,可以直接复用老用户/老物料的。
- 需要学习的最优初值:只有每个新用户的userID和新物料的ItemID,是需要学习出一套最优初值的。
2、优化目标改造
MAML在推荐场景下的唯一任务就是学习出ID embedding的参数初值。
以新用户举例的两阶段:
①cold-start:新用户第一次对系统发出服务请求,此时系统中没有该用户的ID embedding,因此相应的参数初值就代替该用户的ID embedding喂给模型。
②warm-up:在第一次交互反馈的基础上,以参数初值为起点,经过一次梯度下降得到了新用户ID embedding的新值。
如下图所示,虽然经过一次梯度下降,在任务1和任务2上优化得到的参数和损失比较满意,但是对于参数初值而言并未达到最佳初值状态。
因此要做的第二个改进就是要同时兼顾模型在和处的性能。
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要丢弃。在元学习阶段,要通过参数初值的函数得到ItemID Embedding,G_i表明不同类型的物料有不同类型的映射方式。
2、优化目标改造
冷启动分为cold-start和warm-up两个阶段。
(1)随机取样
在物料i的训练集中,随机采样两个大小为K的样本集。
(2)cold-start
cold-start阶段由于没有物料i的item ID embedding信息,因此采用参数初值和相应的映射函数得到物料的embedding,再计算相应的BCE loss。优化的是模型在参数初值的表现,也就是优化物料在系统中的第一次体验。
(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,优化新物料第二次被服务的体验。