论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L...

论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第1张图片
meta-embedding-title.jpg
论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第2张图片
meta-embedding-fig3.jpg

论文地址:https://arxiv.org/abs/1904.11547

官方代码:https://github.com/Feiyang/MetaEmbedding

一 为什么读这篇

最近在做提高时效性的工作,范围放大点就是解决所谓item冷启动问题,恰逢读完DIN,看到参考DIN的论文有这么一篇,题目就很扣题了,正是瞌睡遇上枕头,第一时间读下,参考一下思路,看看对于解手头问题有没有帮助。

二 截止阅读时这篇论文的引用次数

2019.9.29 1次。毕竟今年4月才出,另外解决的问题域也确实更细分点,所以引用很少。

三 相关背景介绍

19年4月挂到arXiv上,中了19年的SIGIR。中科院出品,也有清华的唐平中老师加持,一作“肥羊”就有意思了,玩kaggle时各种屠榜,现在是中科院的博士生,也在蚂蚁实习,估计阿里星没跑了。

四 关键词

CTR

Embedding

Cold Start

meta-learning

learning to learn

五 论文的主要贡献

1 引入元学习来解决冷启动问题

2 给ID Embedding更好的初始化

六 详细解读

0 摘要

为了解决冷启动问题,本文提出Meta-Embedding,这是一种基于元学习的方法,可以习得为新广告ID生成理想的初始化Embedding。该方法通过基于梯度的元学习,利用之前习得过的广告来为新广告ID训练Embedding生成器,即本文方法是学习如何更好的学习Embedding。当遇到一个新广告时,训练生成器通过输入它的内容和属性来初始化Embedding。接着,生成的Embedding可以加速模型在warm up阶段(当有很少的标签样本可用时)的拟合。

1 介绍

在工业界,相比没有ID输入的方法,一个被学得很好的广告ID Embedding能极大提升预测准确率。尽管有许多成功的方法,但它们都需要相当多的数据来学习Embedding向量。而且对于一些只有很少训练样本的“小”广告来说,它们训练得到的Embedding很难和“大”广告一样出色,这些问题就是业界所谓的冷启动问题。

如图1所示,KDD2012的数据,5%的广告占据了超过80%的样本。

论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第3张图片
meta-embedding-fig1.jpg

本文方法的主要理念包括,利用广告特征的参数函数作为ID Embedding生成器,通过两阶段模仿在旧ID上训练生成器,使用基于梯度的元学习来提升冷启动和warm-up阶段的效果。

本文的两个目标:

  1. 在冷启动阶段更好
  2. 在warm-up阶段更快

为了达到这两个目标,针对手中的“大”广告设计了冷启动和warm-up两个阶段的模拟。在冷启动阶段,需要为没有标签的ID赋Embedding初值,在有少量标签样本的warm-up阶段,通过模拟模型拟合过程来更新Embedding,用这种方式来学习如何学习。

本文方法的本质就是将CTR预估问题转化为元学习问题,将学习每个广告视为任务。提出的基于梯度的训练算法有着“与模型无关的元学习”(Model-Agnostic Meta-Learning MAML)的优势。MAML在许多领域快速适应上是成功的,但它对每个任务都训练一个模型,所以当有上百万个任务(广告)时不能直接用于CTR预估。为此,本文将MAML泛化为一个基于内容的Embedding生成器。同时构建同统一的优化目标来平衡冷启动和warm-up的效果。本文方法易于实现,可以应用在离线和在线环节。也可以应用在其他ID特征的冷启动,如用户ID,广告主ID。

本文方法也可以扩展应用在E&E和active learning这两个领域。

本文贡献主要如下:

1 提出Meta-Embedding来学习如何学习新广告的Embedding

2 提出一个简单有效的算法来训练Meta-Embedding生成器,它通过利用反向传播时的二阶导数来使用基于梯度的元学习

3 本文方法可以很容易的在在线冷启动实现。一旦Embedding生成器训练好,它就可以代替简单的随机初始化来进行新ID的Embedding

4 在3个大规模真实数据集上验证了本文方法的有效性。6个SOTA的CTR模型都在冷启动上得到了极大的提升。

2 背景和公式

输入特征x可以划分为三部分,包括

1 表示广告ID

2 表示特定广告的特征和属性,可能有多个字段

3 表示不是必须与广告关联的特征,如用户特征,上下文信息

密集矩阵通常被称为Embedding矩阵,或者查找表。给定Embedding矩阵和ID i的Embedding ,我们就能得到作为判别模型的参数化函数:

图2a展示了该模型的基本结构

论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第4张图片
meta-embedding-fig2.jpg

和用SGD同时更新。

如果一个ID 从未在系统中出现过会发生什么?因为从没有见过该广告的标签数据,所以Embedding矩阵对应的行仍然是初始状态,例如是零值附近的随机数。为了解决这个问题,本文设计的Embedding生成器结构如图2b所示,它的初始化用公式表示如下:

问题来了。

1 如何训练这种Embedding生成器

2 更新参数的目标函数是什么

3 学习如何学习新广告的ID Embedding

3.1 将CTR预估转化为元学习

以元学习的视角来看,本文会引入新的符号,对于给定的ID ,将预测模型写为:

注意实际上和是一样的,参数都是和。用这种方式,可以看到通过将学习问题视为每个广告ID的一项任务,就可以将CTR预估视为元学习的一个实例。对于ID ,相应的任务是学习特定任务的模型。它们共享来自基模型的参数,同时有自己任务相关的参数

考虑可以访问ID 的先前任务,这个集合是已知ID的集合,及每个任务的训练样本。这个数据上原始的(预)训练可以提供一组已经学习好的共享参数,以及对于所有先前的ID 特定任务的参数。然后对于新的ID ,无法得知,因此可以考虑从那些老的ID中学习如何学习。这就是以元学习的视角考虑CTR预估的冷启动问题。

3.2 Meta-Embedding

因为共享参数通常通过相当多的历史数据去训练,我们对它的效果是有信心的,所以当训练Meta-Embedding时,可以在整个过程中冻结,不用去更新它。本文只考虑如何学习新ID的Embedding。

对于一个新ID ,另

作为生成的初始Embedding。此时通过生成的Embedding,模型可以表示为
g_{\text {meta }}\left(\mathbf{u}_{\left[\mathbf{i}^{*}\right]}, \mathbf{v}\right)=f_{\boldsymbol{\theta}}\left(\phi_{\left[\mathbf{i}^{*}\right]}^{\text {init }}, \mathbf{u}_{\left[\mathbf{i}^{*}\right]}, \mathbf{v}\right)
所以这的是一个模型(元学习器),输入为特征,输出为预测,并且不涉及Embedding矩阵。可训练参数是来自的元参数。

考虑每个旧ID 的任务,会有这么多训练样本,其中是给定ID的样本个数。

开始的时候,随机选择,两个不相交的minibatch标签数据,每个都有K个样本。假设K相当小,例如

3.2.1 冷启动阶段

首先在第一个minibatch 上使用做预测,如下式所示:

其中下标表示来自batch 的第j个样本,接着计算这些样本上的平均损失:

到这里也就完成了冷启动阶段:通过生成器生成了的Embedding,并在第一个batch上评估它得到损失

3.2.2 Warm-up阶段

接着用第2个batch 模拟Warm-up阶段的学习过程。

通过计算初始Embedding损失的梯度,以及一步梯度下降,可以得到更新的Embedding:

接着可以在第2个batch上用最小数量的数据训练得到的新Embedding评估。与之前类似,做预测如下:

同时计算平均损失:

3.2.3 统一优化目标

从两方面来评估初始Embedding的好坏:

1 对于新广告的CTR预估错误应尽可能小

2 在收集一小部分标签数据后,一点梯度更新就应该有很快的学习

惊喜的是,本文发现,两个损失可以分别完美地适配这两个方面。在第1个batch,因为用生成的初始Embedding做预测,是一个评估冷启动阶段生成器的天然指标。在第2个batch,因为Embedding已经更新过一次,所以在warm-up阶段用评估样本效率就相当直接了。

为了统一这两个损失,这里提出Meta-Embedding的最终损失函数,即和的加权和:

其中系数用于平衡两个阶段。

因为是初始Embedding的函数,可以通过链式法则来做元参数的梯度反向传播:
\frac{\partial l_{\text {meta }}}{\partial w}=\frac{\partial l_{\text {meta }}}{\partial \phi_{[i]}^{\text {init }}} \frac{\partial \phi_{[i]}^{\text {init }}}{\partial w}=\frac{\partial l_{\text {meta }}}{\partial \phi_{[i]}^{\text {init }}} \frac{\partial h_{w}}{\partial w}
其中:
\frac{\partial l_{\text {meta }}}{\partial \phi_{[\text {i }]}^{\text {init }}}=\alpha \frac{\partial l_{a}}{\partial \phi_{[i]}^{\text {init }}}+(1-\alpha) \frac{\partial l_{b}}{\partial \phi_{[i]}^{\prime}}-a(1-\alpha) \frac{\partial l_{b}}{\partial \phi_{[\text {il }}^{\prime}} \frac{\partial^{2} l_{a}}{\partial \phi_{[i]}^{\text {init }}}
尽管有二阶导Hessian-vector存在,也可以很有效的在TensorFlow中实现。

训练算法如下图所示,一个ID的训练过程如图4所示。

论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第5张图片
meta-embedding-alg1.jpg
论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第6张图片
meta-embedding-fig4.jpg

3.3 架构和超参

3.3.1 的架构

如图5所示

论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第7张图片
meta-embedding-fig5.jpg

不同字段的Embedding可以用不同的pooling方式。最后用于输出的密集层是生成器唯一需要训练的部分。

通过在最后一层使用三个trick,可以获得数值稳定的输出:

1 使用tanh激活

2 不要增加偏置项

3 使用L2正则惩罚权重

3.3.2 超参

因为实践上warm-up阶段比冷启动阶段需要更多的步数,因此推荐将设置为一个小值,使得元学习器更注意warm-up阶段来加速收敛。本文所有实验将该值设置为0.1。

4 实验

4.1 数据集

MovieLens-1M

腾讯2018社交广告比赛

KDD Cup 2012

4.2 基本模型

FM

Wide & Deep

PNN

DeepFM

每个输入字段的Embedding维度固定为256。对于NLP特征,首先将每个token(word)转化为256维的word-embedding,然后使用AveragePooling来得到字段(句子)级别的表示。

4.3 实验设置

4.3.1 数据集划分
论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第8张图片
meta-embedding-table1.jpg
4.3.2 实验pipeline

开始时先使用老的广告预训练基础模型,用于训练Meta-Embedding的样本个数可见表1。完成训练后,在新广告上进行测试。对于每个新广告,一个接一个的训练3个mini-batch,就好像它们是warm-up的数据,分别命名为batch-a,batch-b,batch-c,每个batch有K个实例,新广告的其他实例用于测试。具体实验步骤如下:

  1. 用老广告数据预训练基模型(1 epoch)
  2. 用训练数据训练Meta-Embedding(2 epoch)
  3. 用随机初始化或Meta-Embedding生成新广告的初始Embedding
  4. 在测试集上评估冷启动效果
  5. 用batch-a更新新广告的ID Embedding,同时计算在测试集上的评估指标
  6. 用batch-b更新新广告的ID Embedding,同时计算在测试集上的评估指标
  7. 用batch-c更新新广告的ID Embedding,同时计算在测试集上的评估指标
4.3.3 评估指标

用LogLoss和AUC,同时用百分比公式来展示相对提升:

4.4 实验结果

论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L..._第9张图片
meta-embedding-table2.jpg

一个有趣的发现是相对提升在越小的数据集上越显著。

5 相关工作

5.1 解决冷启动问题的方法

有两种类型的方法,一种是通过设计决策策略,例如使用contextual-bandits,或通过为冷item或user设计interview来收集信息。本文属于第二种类型,是将冷启动视为在线监督学习,它通常使用side information用于冷启动阶段,例如使用user属性,item属性,关系数据等等。但是这些方法即没有考虑使用ID,也没有在warm-up阶段对它们做优化。本文不仅使用了全部可用特征,此外目的也是同时提升冷启动阶段和warm-up阶段的效果。

Dropout-Net通过在深度协同过滤模型上应用dropout来处理缺失输入,可以被视为一种用于预训练基础模型的成功训练方法。

5.2 元学习

本文研究的是如何warm-up冷启动广告,在元学习领域相关的问题就是few-shot learning和fast adaptation。本文受到MAML的启发,用基于梯度的元学习方法来学习共享模型参数。

七 小结

本文最大的亮点就是引入元学习来解决CTR预估中的冷启动问题,meta-learning,few shot learning,这些概念已经在CV里有不少应用,现在也迁移到推荐广告领域了。看了第三节感觉写的是真繁琐,说的很玄乎,看起来也很累,得一个字一个字扣,但看完后回味下,好像也没说什么啊,就是交替训练更新参数?另外本文第五节相关工作的梳理很值得一看。

素质四连

要解决什么问题

item冷启动问题

用了什么方法解决

引入元学习,用Meta-Embedding替代随机初始化Embedding

效果如何

离线效果都有提升,这个某种程度上应该也是,专门优化过的Embedding肯定优于随机初始化

还存在什么问题

实验结果那一小节,作者也提到,在腾讯的数据集上,Wide&Deep的对比实验并没有提升,反而有轻微下降,推测原因可能是Wide部分直接使用了原始输入。另外只给出相对提升,没给出原始值。还有对于线上效果如何,没有提到。

算法背后的模式和原理

引入元学习解决CTR问题,借花献佛

八 补充

Model-Agnostic Meta-Learning (MAML)模型介绍及算法详解 https://zhuanlan.zhihu.com/p/57864886

什么是meta-learning? https://www.zhihu.com/question/264595128/answer/743067364

你可能感兴趣的:(论文笔记 | SIGIR2019 | Warm Up Cold-start Advertisements: Improving CTR Predictions via Learning to L...)