推荐算法论文:DIN网络

DIN(Deep Interest Network)是一种推荐算法,旨在解决用户兴趣多变和历史行为难以准确表征的问题。它通过局部激活单元动态地根据广告调整用户向量,从而更好地捕捉用户兴趣。论文介绍了DIN的特征处理、基础模型和训练技巧,包括embedding、加权池化以及激活权重网络。实验表明,DIN在点击率预测上表现出优于传统方法的效果,特别是在处理大规模稀疏数据时。
摘要由CSDN通过智能技术生成

简介

  1. 将用户各个维度的稀疏特征压缩成embedding向量,然后将这些向量拼接在一起作为用户向量,这会导致无论输入什么样的广告,用户向量都不变,就很难捕捉到用户在各个广告上的偏好。DSSM模型的时候,用户向量不就是固定的吗,然后输入不同ad的时候,去计算相似度,deepmatch也是的,为什么说不能很好补货用户偏好呢,而且我们可以获取用户的实时行为,每时每刻用户的embedding应该是不一样的吧,还是说这样不一致会导致模型不收敛,所以才要求用户向量必须是稳定的???

介绍

  1. 用户的历史行为被压缩到同一个向量中,这就会导致用户的多种兴趣也被压缩到一起,这就限制了MLP的表达能力,如果增加了embedding的维度,使得参数增加,有可能会导致过拟合,还会增加线上的压力。个人觉得,当用户所有兴趣被压缩到一起的时候,学习到的是不是相当于是平均爱好,这在youtobe论文中有说到

  2. 影响用户点击的可能只与部分历史信息有关,所以无需将用户所有的历史压缩到一起。例如,一个女生点了裙子,可能只是跟他历史点击过鞋子有关,而不是点击过的手机有关。DIN通过局部激活单元的方式,软性搜索与推荐广告相关的历史信息,之后再通过加权池化来表示用户向量。这个想法有点奇怪,之前是将用户所有信息进行平均池化,现在是通过局部激活的方式来加权池化,得到的用户向量再与商品向量进行交互。相当于用户点击的时候,判断哪些信息影响了这次点击,哪些历史影响的小。这样用户向量就会随着广告变化而变化了。真的是不太明白这是什么意思,为什么要用户向量随着广告变化而变化呢?输入了一个裙子,就要把鞋子的向量给加权,这样的意义在哪里呢,讲道理不是应该商品去匹配用户的向量吗?

  3. 大规模的稀疏网络训练起来是非常困难的,SGD只会去调整那些非零的输入,如果再加入L2正则化就变的更加复杂了,对于每个batch都需要去计算所有参数的 ∑ w 2 \sum w^2 w2

  4. 在训练语言模型的时候,seq2seq在编码阶段,将输入的所有信息压缩成一个向量 c c c,在预测的时候将这个向量进行解码。这就会导致信息无法很好的表达出来,但是使用attention的时候,解码时是将输入向量进行加权池化的,有的输入与输出有更强的相关性,因此增加权重,有的与输入相关性较小,就减小权重
    这种加权池化的方式是为了让模型学习到相关性,即这次点击的商品与用户历史信息的相关性,并不是为了让用户向量每次变的不同

3. 背景

  1. 一个用户的兴趣是多种多样的,例如一个年轻的母亲历史点击了羊毛大衣、T恤、耳环、手提包、皮革手提包和儿童外套等商品,当我们推荐一个手提包的时候可能只是触发了这位母亲的部分兴趣。推荐算法解决的是统计的问题,我们无法预估用户的点击,只能根据用户的历史点击进行猜测,通过大量的数据和复杂的模型,学习到整体用户的点击行为。

4.deep interest network

1. 特征

DIN主要使用的都是类别特征,每个类别特征算是一个特征组,例如性别,类目,广告等,然后将这些类别特征进行onehot编码。假如有 M M M个特征组,每个特征组用 t i \bold{t_i} ti表示,每个特征组onehot之后有 K i K_i Ki维。最终用户向量可以表示为 x = [ t 1 T , t 2 T . . . t M T ] \bold{x}=[\bold{t}_1^T,\bold{t}_2^T...\bold{t}_M^T] x=[t1T,t2T...tMT]。可以看到user behavior features是multi-hot类型,这是因为用户历史有多个点击,这很好理解。但是这里并不是直接就muilt-hot的表示形式,而是会对这些历史进行加权池化,这个特征正式din考虑的。
在这里插入图片描述

2. 基础模型(embedding&MLP)

  1. embedding层。embedding还是非常好理解的,将onehot后的每个特征训练得到一个embedding的向量,如果这个特征onehot后只有一个值为1,例如性别这个特征,那么就是 e i \bold{e_i} ei,如果这个特征是multi-hot编码,那么就是 [ e i 1 , e i 2 . . . e i k ] [\bold{e_{i_1}},\bold{e_{i_2}}...\bold{e_{i_k}}] [ei1,ei2...eik]
  2. 池化层。因为全连接层只能处理固定尺寸的输入,对于multi-hot的特征,通过池化的方式融合成一个 e i = p o o l i n g ( e i 1 , e i 2 . . . e i k ) \bold{e_i}=pooling(\bold{e_{i_1}},\bold{e_{i_2}}...\bold{e_{i_k}}) ei=pooling(ei1,ei2...eik)
  3. MLP.最后就是将用户特征与商品特征拼接到一起,然后接入到一个mlp网络中,用户学习用户向量和商品向量的交互特征
  4. LOSS,点击就是正样本,曝光未点击就是负样本。
    L = 1 N ∑ ( x , y
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值