算法小白菜

DIN-DIEN-DSIN笔记

2022-02-09  本文已影响0人  林桉

DIN

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如果不做归一化处理,就能很好地保留用户的兴趣强度。
  1. 防止过拟合过程中,由于embedding参数矩阵更新导致的参数过度庞大。


    image.png
  2. 用户数据符合长尾定律,出现次数很多的往往是一小部分特征,大部分特征比较稀疏,考虑其权重,容易过拟合。
    如何解决?
    a)利用特征稀疏性,小批量数据下,部分列由于全0,不用更新,减小计算。
    image.png
    b)正则自适应:对于高频特征,给予小的正则化强度减小惩罚;对于低频特征,给予大的正则化强度增大惩罚。
    那正则化尺度在哪呢?
    按照每个batch样本统计频率进行正则化。
    // 公式
    image.png
    image.png
    image.png
    image.png
  1. 独立同分布假设破坏(训练数据和测试数据分布一致性被破坏),影响模型准确性。
  2. 下层输入变化导致进入激活函数的饱和区,导致梯度消失。
  3. 上层不断需要适应分布变化,影响学习速率。
    每层输入数据分布发生变化,变得不可控。那如何使分布可控呢?
    两种思路:
    a) 改变数据分布,适应激活函数。
    b) 改变激活函数,适应分布变化。(Dice)


    image.png

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


    image.png
    p(s)控制激活函数左右移动,适应数据分布,临界值控制临界点;还要使p(s)取值得到的激活函数足够平滑。
    image.png
    如何优化p(s)?
    均值取代临界值;sigmoid取代阶跃函数(细节优化:E(s)控制左右平移,var控制带宽,方差与带宽正相关)。

DIEN

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

  1. 行为!=兴趣。
  2. 显示行为难以表达用户潜在兴趣。
  3. 用户潜在行为如何获取并表达兴趣?
  4. 用户“下一次购买”,不同于在历史序列中综合推荐。
    兴趣?什么是兴趣?如何表达?


    image.png

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

  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

仅供学习

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

上一篇 下一篇

猜你喜欢

热点阅读