DIN模型介绍

DIN模型主要用于解决用户历史行为中部分行为与当前推荐物品相关性不强的问题,通过注意力机制对不同行为赋予不同的权重。文章介绍了DIN的基本原理,包括注意力机制的实现方式,并对源码进行了分析,特别是激活单元的设计,以及输入数据处理和attention模块的细节。
摘要由CSDN通过智能技术生成

简介

场景:根据用户历史行为序列给用户推荐物品
例如:根据用户最近买了鞋子,裙子,现在要预估一件女性大衣的CTR
或者音乐场景中,用户最近在听rap,给他推荐一些中国新说唱的歌曲的CTR

  1. 普通做法,对用户历史行为的item embedding做average pooling
  2. 但是实际中,用户行为中有些跟当前推荐物品有关,有些跟当前物品无关,比如女性偶尔给男朋友买了球鞋,偶尔听到一首热门歌曲,其实跟用户当前想要的物品关联度不高,而女性又一次买了高跟鞋,可能这次买口红的关联行酒更大
    这就是attention机制的意义。

Attention机制

注意力机制顾名思义,就是模型在预测的时候,对用户不同行为的注意力是不一样的,“相关”的行为历史看重一些,“不相关”的历史甚至可以忽略。那么这样的思想反应到模型中也是直观的
在这里插入图片描述
Vu是用户兴趣表达,Vi是历史物品embedding,Va是当前物品embedding
wi是每个历史物品和当前物品的相关性权重,可以由Vi,Va的相关性函数表示。g(Vi, Va)由Activation Unit表示
在这里插入图片描述

传统的Attention机制中,给定两个item embedding,比如u和v,通常是直接做点积uv或者uWv,其中W是一个|u|x|v|的权重矩阵,但这篇paper中阿里显然做了更进一步的改进,着重看上图右上角的activation unit,首先是把u和v以及u v的element wise差值向量合并起来作为输入,然后喂给全连接层,最后得出权重,这样的方法显然损失的信息更少

源码分析

输入数据处理:
lookup history embedding
lookup song embedding 和 song category embdding

hidden_units = 128

user_emb_w = tf.get_variable("user_emb_w", [user_count, hidden_units])
item_emb_w = tf.get_variable("item_emb_w", [item_count, hidden_units // 2])
item_b = tf.get_variable("item_b", [item_count],
                         initializer=tf.constant_initializer(0.0))
cate_emb_w = tf.get_variable("cate_emb_w", [cate_count, hidden_units // 2])
cate_list = tf.co
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值