DIN-DIEN-DSIN笔记

DIN

image.png
  • 思路
    从输入特征中获取用户历史行为,并筛选出对预估任务有效的特征进行权重分配,进而对当前商品广告与用户历史行为商品的局部兴趣进行打分(注意力得分)。
    // 方法:
    在embedding与MLP之间加入注意力机制。===》不同场景,特征权重分配不一样;筛选出有用特征,划分好哪些是重要特征。


    image.png
  • 特征


    image.png
  • 网络结构
    base model
    image.png

    缺陷:
    image.png
  1. 喂入模型前,history与ad无交互。
  2. 喂入模型后,将会丢失交互信息,不仅如此,还将无关特征带来的冗余信息作为噪音进入模型训练。
image.png

Activation Unit输出Activation Weight,输入包括用户行为User-Embedding和候选广告Candidate Ad-Embedding。相当于得到Attention分数,将candidate Ad与历史行为的每个商品进行交互,还考虑了他们两个的外积(在三维几何中,向量a和向量b的叉乘结果是一个向量,更为熟知的叫法是法向量,该向量垂直于a和b向量构成的平面)。


image.png

对于不同的candidate ad,得到的用户行为表示向量也不同:


image.png

最后输出标量权重。
image.png

几个问题
// why sum-pooling?
https://zhuanlan.zhihu.com/p/365999532
对长度不等的embedding向量进行维度统一。pooling目的是为了保持某种不变性(旋转、平移、伸缩等)。
mean-pooling,即对邻域内特征点只求平均,max-pooling,即对邻域内特征点取最大。根据相关理论,特征提取的误差主要来自两个方面:(1)邻域大小受限造成的估计值方差增大;(2)卷积层参数误差造成估计均值的偏移。一般来说,mean-pooling能减小第一种误差,更多的保留图像的背景信息,max-pooling能减小第二种误差,更多的保留纹理信息。Stochastic-pooling则介于两者之间,通过对像素点按照数值大小赋予概率,再按照概率进行亚采样,在平均意义上,与mean-pooling近似,在局部意义上,则服从max-pooling的准则。
可以看出,base model的pooling策略是不考虑特征重要度差异化的,activation环节主要是解决差异化区分的问题,以此优化pooling使模型从特征中get到更多信息。
// 如何实现attention?
这个讲得比较清楚:https://zhuanlan.zhihu.com/p/339754431

image.png

Paper认为:softmax只能证明用户对哪个商品感兴趣的概率最大。比如,长history归一化后,各个权重会变得很小,尤其是差异特别小。Attention Weight如果不做归一化处理,就能很好地保留用户的兴趣强度。

  • Mini-batch Aware Regularization
    模型训练中的问题
  1. 防止过拟合过程中,由于embedding参数矩阵更新导致的参数过度庞大。


    image.png
  2. 用户数据符合长尾定律,出现次数很多的往往是一小部分特征,大部分特征比较稀疏,考虑其权重,容易过拟合。
    如何解决?
    a)利用特征稀疏性,小批量数据下,部分列由于全0,不用更新,减小计算。
    image.png

    b)正则自适应:对于高频特征,给予小的正则化强度减小惩罚;对于低频特征,给予大的正则化强度增大惩罚。
    那正则化尺度在哪呢?
    按照每个batch样本统计频率进行正则化。
    // 公式
    image.png

    image.png

    image.png

    image.png
  • Data Adaptive Activation Function
    面临的问题:
    ICS问题
    https://www.bilibili.com/video/BV1zK4y137Se?spm_id_from=333.999.0.0
    https://blog.csdn.net/mao_xiao_feng/article/details/54317852
    why 数据分布变了?分布变了有啥影响?
    参数更新引起的Covariate Shift导致同分布假设被破坏。造成:
  1. 独立同分布假设破坏(训练数据和测试数据分布一致性被破坏),影响模型准确性。
  2. 下层输入变化导致进入激活函数的饱和区,导致梯度消失。
  3. 上层不断需要适应分布变化,影响学习速率。
    每层输入数据分布发生变化,变得不可控。那如何使分布可控呢?
    两种思路:
    a) 改变数据分布,适应激活函数。
    b) 改变激活函数,适应分布变化。(Dice)


    image.png

    // Dice数据自适应激活函数


    image.png

    p(s)控制激活函数左右移动,适应数据分布,临界值控制临界点;还要使p(s)取值得到的激活函数足够平滑。
    image.png

    如何优化p(s)?
    均值取代临界值;sigmoid取代阶跃函数(细节优化:E(s)控制左右平移,var控制带宽,方差与带宽正相关)。
  • 评价系统


    image.png

    gauc距0.5的偏移度,越大越好。

  • DIN实现
    这个过程拆解的比较好,但是看看就好:
    https://zhuanlan.zhihu.com/p/338050940
    image.png

    实际应用建议deepctr项目。

DIEN

https://arxiv.org/pdf/1809.03672.pdf
仍然是面向阿里电商广告提出的,算是DIN升级版,但是模型结构比较复杂,实践当中没有DIN那么经典,但不失为一种探索思路。

  • 思路
    与DIN的差异在于对于兴趣的建模方式不一样,将用户兴趣的先验知识引入建模过程。DIEN最大的特点是不但要找到用户的interest,还要抓住用户interest的进化过程
    如何表达兴趣?
    image.png

    以往的模型认为用户行为即兴趣,但这种思路不严谨,真正的用户兴趣包含在用户行为之中(当然无交互的并不意味着用户一定不感兴趣,毕竟推荐系统本身就是个非充分激励系统),二者并非等价,文章在寻找一种用户兴趣演进的一种表达。
    问题:
  1. 行为!=兴趣。
  2. 显示行为难以表达用户潜在兴趣。
  3. 用户潜在行为如何获取并表达兴趣?
  4. 用户“下一次购买”,不同于在历史序列中综合推荐。
    兴趣?什么是兴趣?如何表达?


    image.png

    ps:原文中用RNN来实现兴趣表达,实际上,我感觉用HMM应该也可以。

  • 网络结构


    image.png

    // 行为序列层
    就用户行为序列embedding,没啥花头。

  • 兴趣抽取层
  1. GRU记忆性网络,参数少,获取序列关系,缓解梯度消失。
  2. 多输入多数出结构,提取每一个时刻的兴趣状态。
  3. 辅助损失函数,通过二分类的方式计算兴趣抽取准确性,有监督学习,防止兴趣状态失真。(下一时刻真实行为正例,负采样得到的行为作为负例,与抽取兴趣h分别喂到辅助网络中,计算加权loss作为总的loss的调整项)
image.png
  • 兴趣进化层
  1. attention筛选与target ad相关的兴趣演化路径。
  2. 加权层将注意力操作嵌入GRU更新门,构造AUGRU结构。(DIN就是加权组合)
    // GRU
    https://zhuanlan.zhihu.com/p/32481747
image.png

// AUGRU为什么这么选?

  1. 与target不相关状态,也可能影响状态演化,状态保持。


    image.png
  2. 保持更新门向量各个维度重要性。


    image.png

DSIN模型

这个模型,结构复杂,实践中的意义可能不如研究意义大,大概了解下。
https://arxiv.org/pdf/1905.06482.pdf

  • 思路
    用户的行为sequences其实是由多个sessions组成,其中多个sessions是通过用户的点击时间来区分。采用会话建模的方式,刻画不同session用户兴趣演化。
  • 模型结构


    image.png

    1)序列切分层session division layer
    2)会话兴趣抽取层session interest extractor layer
    3)会话间兴趣交互层session interest interacting layer
    4)会话兴趣激活层session interest acti- vating layer

  • 实现
    https://github.com/shenweichen/DSIN/blob/ffe2d0b4f7d8d507cf32fa6c9d583d5b9486e17f/code/models/dsin.py

仅供学习

attention机制 :https://zhuanlan.zhihu.com/p/339754431
https://arxiv.org/pdf/1706.06978.pdf
https://zhuanlan.zhihu.com/p/51623339
https://blog.csdn.net/u010352603/article/details/80590152
https://zhuanlan.zhihu.com/p/71695849
https://www.bilibili.com/video/BV1eV41147oi?from=search&seid=11155975345295308253&spm_id_from=333.337.0.0
https://zhuanlan.zhihu.com/p/54838663
https://www.bilibili.com/video/BV1wK4y1u7zN?spm_id_from=333.999.0.0
https://zhuanlan.zhihu.com/p/48601882
https://zhuanlan.zhihu.com/p/89700141

你可能感兴趣的:(DIN-DIEN-DSIN笔记)