深度兴趣网络-din/dien

深度兴趣网络

  • 背景
  • 论文概要
  • 代码实现
    • attention实现
    • AUGRU实现
  • 业务思考

背景

ctr预测在在线广告,推荐系统,信息流展示等业务中占有重要地位。阿里在广告ctr预测问题中,结合业务场景,分析了用户行为,提出了新的ctr模型结构。主要有深度兴趣网络(din)和深度兴趣进化网络(dien),对用户的行为序列和预测商品进行了特殊的结构设计。本文主要从论文出发,分析模型结构,并进行业务思考。

论文概要

两篇论文贡献点:
din:

  1. 引入attention
  2. dice激活函数
  3. 自适应正则化
    dien:
  4. 引入GRU
  5. 设计AUGRU融合attention
    本文不考虑激活函数和自适应正则化的分析,着重于模型结构。

代码实现

din:https://github.com/zhougr1993/DeepInterestNetwork
dien:https://github.com/princewen/tensorflow_practice

attention实现

attention中的论文形式将embedding后的结果从sum_pooling改为了attention计算加权求和,主要分为下面3个部分:
深度兴趣网络-din/dien_第1张图片
深度兴趣网络-din/dien_第2张图片
深度兴趣网络-din/dien_第3张图片

AUGRU实现

tf中的dynamic_rnn提供了lstm/gru等基础rnn模块,AUGRU在原来rnn实现上进行修改,设计一个新的VecAttGRUCell结构,相比于GRUCell,修改的地方如下:
深度兴趣网络-din/dien_第4张图片
上图中左侧是GRU的源码,右侧是VecAttGRUCell的代码,主要修改了call函数中的代码,在GRU中,hidden state的计算为:

new_h = u * state + (1 - u) * c

AUGRU中,hidden state的计算为:

u = (1.0 - att_score) * u
new_h = u * state + (1 - u) * c

业务思考

1)论文中和github demo中使用的特征,只用用户序列特征来评估的效果的提升。然后在实际生产中,我们除了使用序列特征外,还有user/item的其他统计类特征,削弱了序列特征的作用。
2)din中attention的计算,是序列中不同特征可以并行计算。但dien中用到的gru是串行顺序的,计算时间会长很多,工程系统很难支撑。
3) din中对序列的顺序不敏感,可以看到交换user行为顺序对输出不会有变化,但dien中对前后顺序敏感,当线上生产日志有丢失时会对结果影响很大。

你可能感兴趣的:(推荐系统,深度学习)