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
  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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,133评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,682评论 3 390
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,784评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,508评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,603评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,607评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,604评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,359评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,805评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,121评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,280评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,959评论 5 339
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,588评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,206评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,442评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,193评论 2 367
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,144评论 2 352

推荐阅读更多精彩内容