ctr

[TOC]

ctr 模型

有用的资料

https://zhuanlan.zhihu.com/p/39439947 【阿里的DIN】

历史

CTR预估是一个比较窄的研究领域,但是模型性能一点点的提升,在实际应用中都非常关键,真金白银毫不含糊。随着深度学习在CV、NLP等领域取得突破性进展,一些研究也开始尝试将DNN应用于CTR预估,比如:Wide&Deep, DeepFM等。

这些做法一般分为两部分:

  1. 在输入上面加一层embeding层,把最原始高维度、稀疏的数据转换为低维度的实值表示上(dense vector)。

  2. 增加多个全连接层,学习特征之间的非线性关系。 Sparse Features -> Embedding Vector -> MLPs -> Output

这些方法的优点在于:相比于原来的Logistic Regression方法,大大减少了人工特征工程的工作量。

**缺点:在电子商务领域中,用户的历史行为数据(User Behavior Data)中包含大量的用户兴趣信息,之前的研究并没有针对Behavior data特殊的结构(Diversity + Local Activation)**进行建模

这就是DIN要改进的地方!** DIN同时对Diversity和Local Activation进行建模。

针对Diversity: 针对用户广泛的兴趣,DIN用an interest distribution去表示。

针对Local Activation: DIN借鉴机器翻译中的Attention机制,设计了一种attention-like network structure, 针对当前候选Ad,去局部的激活(Local Activate)相关的历史兴趣信息。和当前候选Ad相关性越高的历史行为,会获得更高的attention score,从而会主导这一次预测。

阿里推荐系统工作流程

  1. 检查用户历史行为数据
  2. 使用matching module产生候选ads
  3. 通过ranking module得到候选ads的点击概率,并根据概率排序得到推荐列表
  4. 记录下用户在当前展示广告下的反应(点击与否)

特征工程

2.1 训练数据

前面提到,电子商务领域,充分利用User Behavior Data非常关键,而它又有着非常显著的特点:

  • Diversity. 兴趣爱好非常广泛
  • Local Activation. 历史行为中部分数据主导是否会点击候选广告

还有的特点,就是CTR中输入普遍存在的特点:

  • 高纬度
  • 非常稀疏

CTR中一旦涉及到用户行为数据,还有一个特点:

  • 特征往往都是multi-hot的稀疏ids。

也就是:多值离散特征。比如:用户在YouTube上看的视频和搜索过的视频。无论是看过的还是搜索过的,都不止一个,但是相对于所有的视频来说,看过和搜索过的数量都太小了(非常稀疏)。 在电子商务上的例子就是:用户购买过的good_id有多个,购买过的shop_id也有多个,而这也直接导致了每个用户的历史行为id长度是不同的。

为了得到一个固定长度的Embedding Vector表示,原来的做法是在Embedding Layer后面增加一个Pooling Layer。Pooling可以用sum或average。最终得到一个固定长度的Embedding Vector,是用户兴趣的一个抽象表示,常被称作User Representation。缺点是会损失一些信息。

DIN使用Attention机制来解决这个问题。Attention机制来源于Neural Machine Translation(NMT)。DIN使用Attention机制去更好的建模局部激活。在DIN场景中,针对不同的候选广告需要自适应地调整User Representation。也就是说:在Embedding Layer -> Pooling Layer得到用户兴趣表示的时候,赋予不同的历史行为不同的权重,实现局部激活。从最终反向训练的角度来看,就是根据当前的候选广告,来反向的激活用户历史的兴趣爱好,赋予不同历史行为不同的权重。

2.2 特征处理

总结

  1. 用户有多个兴趣爱好,访问了多个good_id,shop_id。为了降低纬度并使得商品店铺间的算术运算有意义,我们先对其进行Embedding嵌入。那么我们如何对用户多种多样的兴趣建模那?使用Pooling对Embedding Vector求和或者求平均。同时这也解决了不同用户输入长度不同的问题,得到了一个固定长度的向量。这个向量就是用户表示,是用户兴趣的代表。
  2. 但是,直接求sum或average损失了很多信息。所以稍加改进,针对不同的behavior id赋予不同的权重,这个权重是由当前behavior id和候选广告共同决定的。这就是Attention机制,实现了Local Activation。
  3. DIN使用activation unit来捕获local activation的特征,使用weighted sum pooling来捕获diversity结构。
  4. 在模型学习优化上,DIN提出了Dice激活函数自适应正则 ,显著的提升了模型性能与收敛速度。