DIEN

亮点

    1. 引入辅助 Loss:利用 GRU 的 hidden state 与下一个点击的商品做一个
    1. 一般模型把用户行为直接当成兴趣,dien 认为用户兴趣是隐藏在行为中,需要去挖掘

image.png

  • feature 分成四类:User Profile, User Behavior, Ad and Context

  • [[interest extractor layer]] 作用 :-> 兴趣抽取层,用 GRU 抽取序列信息

  • [[interest evolving layer]] 作用 :-> 兴趣进化层,将Target Attention引入GRU,过滤掉与待排序的广告不相关的信息。

  • [[AUGRU]] 计算方法 #card

    • 这里是先用序列中Item的隐状态和待排序的广告Embedding计算一个Attention标量,再将该标量乘以更新门控向量。

    • 最终隐藏状态和候选状态,以及每一个维度的重要性,由当前Item隐状态,待排序广告,前一Item隐状态,当前Item原特征(后两者用于计算更新门)共同决定。

源码阅读

  • train.py 指定模型

  • model 中包含对模型的实现

  • 数据

    • uid_voc.pkl: 用户名对应的id

    • mid_voc.pkl: item对应的id

    • cat_voc.pkl:category对应的id

    • item-info:item对应的category信息

    • reviews-info:用于进行负采样的数据

    • local_train_splitByUser:训练数据,一行格式为:label、用户名、目标item、 目标item类别、历史item、历史item对应类别。

    • local_test_splitByUser:测试数据,格式同训练数据

  • 网络设置

    • embeeding 18

    • hidden size 18*2

    • attention_size 18*2

    • fcn: 200-80-2

    • dice

    • prelu

  • 需要分析代码:

    • aux 网络

    • gru 改造

    • din_fcn_attention

[[Ref]]


DIN

[[Attachments]]

Embedding & MLP 模型

  • embedding layer (for learning the dense representation of sparse features)

  • MLP (for learning the combination relations of features automatically).

Feature Representation

  • 所使用的特征如下图,没有使用组合特征,所以避免了特征工程。

  • multi-hot 经过 embedding 层组成一个 embedding list,然后通过 pooling 层(sum pooling or average pooling)变成固定长度的向量。

损失函数:$$L=-\frac{1}{N} \sum_{(x, y) \in S}(y \log p(x)+(1-y) \log (1-p(x)))$$

Deep Interest NetWork

  • base model 中所有的历史行为最后通过 sum pooling 得到固定长度的向量,没有考虑 和候选商品的关系 。固定长度的向量表达能力有限。

  • 用户特征的特点:diverse and locally activated

  • User Behaviors 通过 SUM Pooling 转化成为定长的向量。

  • 考虑到用户兴趣不是 严格时间关系 ,所以 User Behaviors 没有考虑序列关系。

  • 通过 local acvtivation unit 学习用户历史行为和候选广告的权重 [[target attention]]

    • vU(A)=f(vA,e1,e2,,eH)=j=1Ha(ej,vA)ej=j=1Hwjejv_{U}(A)=f\left(\boldsymbol{v}_{A}, \boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \ldots, \boldsymbol{e}_{H}\right)=\sum_{j=1}^{H} a\left(\boldsymbol{e}_{j}, \boldsymbol{v}_{A}\right) e_{j}=\sum_{j=1}^{H} w_{j} \boldsymbol{e}_{j}

      • 历史行为和候选广告做叉乘反映两者的 相关性 ,早期版本使用 embedding 差。
      • 和传统的 attention 相比,没有使用 softmax 去进行归一化,用来表达用户信息的强烈程度? #card
        • 赋予和候选广告相关的历史兴趣更高的weight
  • 商品特征包括 goods_id shop_id cate_id(分类)

  • 网络结构 #card
    image.png
    [[mini-batch aware regularization]]

[[data adaptive activation function]]

Attention 权重可视化 #card
image.png

[[Group AUC]]

问题

  • DIN 模型提出的动机是什么?是否适合自己公司当前的场景和数据特点?#card

  • DIN 模型的模型结构是什么?具体实现起来有那些工程上的难点?#card

    • 用户对应行为序列的获取
  • DIN 模型强调的注意力机制是什么?#card

    • 候选商品和用户行为序列的关系
  • [[为什么在推荐系统中引入注意力机制能够有效果上的提升?]]#card

    • 动态权重分配,替代平均池化。长短期分配

    • 引入行为序列表达用户兴趣

    • 可解释性与鲁棒性

  • DIN 模型将用户和商品进行了 Embedding,在实际使用中,应该如何实现 Embedding 过程?#card

  • 与DIN类似的模型有哪些,是否适合当前的使用场景。#card
    [[Ref]]

  • 详解 Deep Interest Network: 为阿里创造更多广告收入 - 知乎

  • 推荐系统中的注意力机制——阿里深度兴趣网络(DIN) - 知乎


@Learning Piece-wise Linear Models from Large Scale Data for Ad Click Prediction

[[Abstract]]

  • CTR prediction in real-world business is a difficult machine learning problem with large scale nonlinear sparse data. In this paper, we introduce an industrial strength solution with model named Large Scale Piece-wise Linear Model (LS-PLM). We formulate the learning problem with L1 and L2,1 regularizers, leading to a non-convex and non-smooth optimization problem. Then, we propose a novel algorithm to solve it efficiently, based on directional derivatives and quasi-Newton method. In addition, we design a distributed system which can run on hundreds of machines parallel and provides us with the industrial scalability. LS-PLM model can capture nonlinear patterns from massive sparse data, saving us from heavy feature engineering jobs. Since 2012, LS-PLM has become the main CTR prediction model in Alibaba’s online display advertising system, serving hundreds of millions users every day.

[[Attachments]]

分片线性方式对数据进行拟合,将空间分成多个区域,每个区域使用线性的方式进行拟合,最后的输出变为多个子区域预测值的加权平均。

相当于对多个区域做一个 [[Attention]]

结构与三层神经网络类似

Model

处理大规模稀疏非线性特征

LS-PLM 模型学习数据的非线性特征。

question 为什么 LR 模型不能区分下面的数据,如何区分数据?[[SVM]][[FM]]

p(y=1x)=g(j=1mσ(ujTx)η(wjTx))p(y=1 | x)=g\left(\sum_{j=1}^{m} \sigma\left(u_{j}^{T} x\right) \eta\left(w_{j}^{T} x\right)\right)

u 和 w 都是 d 维向量

m 为划分 region 数量

一般化使用:

p(y=1x)=i=1mexp(uiTx)j=1mexp(ujTx)11+exp(wiTx)p(y=1 | x)=\sum_{i=1}^{m} \frac{\exp \left(u_{i}^{T} x\right)}{\sum_{j=1}^{m} \exp \left(u_{j}^{T} x\right)} \cdot \frac{1}{1+\exp \left(-w_{i}^{T} x\right)}

可以把上面的模型看成是三层神经网络

Regularization

  • argminΘf(Θ)=loss(Θ)+λΘ2,1+βΘ1\arg \min _{\Theta} f(\Theta)=\operatorname{loss}(\Theta)+\lambda\|\Theta\|_{2,1}+\beta\|\Theta\|_{1}

  • L1 和常规一样,保持参数的稀疏性。

  • L2 如下面的公式,对每一个 feature 的参数进行二阶正则,然后累加。最优化的过程中,L2 项越来越小,相当于做特征选择。每一个特征不止一个参数,只有某一个特征的全部参数都为 0 ,代表这个特征是没有用的。

  • Θ2,1=i=1dj=12mθij2\|\Theta\|_{2,1}=\sum_{i=1}^{d} \sqrt{\sum_{j=1}^{2 m} \theta_{i j}^{2}}

  • 正则后的效果:

-w839

@wait 后面如何求解这损失函数以及工程实现待看。

[[Ref]]