简介
- 将用户各个维度的稀疏特征压缩成embedding向量,然后将这些向量拼接在一起作为用户向量,这会导致无论输入什么样的广告,用户向量都不变,就很难捕捉到用户在各个广告上的偏好。
DSSM模型的时候,用户向量不就是固定的吗,然后输入不同ad的时候,去计算相似度,deepmatch也是的,为什么说不能很好补货用户偏好呢,而且我们可以获取用户的实时行为,每时每刻用户的embedding应该是不一样的吧,还是说这样不一致会导致模型不收敛,所以才要求用户向量必须是稳定的???
介绍
-
用户的历史行为被压缩到同一个向量中,这就会导致用户的多种兴趣也被压缩到一起,这就限制了MLP的表达能力,如果增加了embedding的维度,使得参数增加,有可能会导致过拟合,还会增加线上的压力。
个人觉得,当用户所有兴趣被压缩到一起的时候,学习到的是不是相当于是平均爱好,这在youtobe论文中有说到
-
影响用户点击的可能只与部分历史信息有关,所以无需将用户所有的历史压缩到一起。例如,一个女生点了裙子,可能只是跟他历史点击过鞋子有关,而不是点击过的手机有关。DIN通过局部激活单元的方式,软性搜索与推荐广告相关的历史信息,之后再通过加权池化来表示用户向量。
这个想法有点奇怪,之前是将用户所有信息进行平均池化,现在是通过局部激活的方式来加权池化,得到的用户向量再与商品向量进行交互。相当于用户点击的时候,判断哪些信息影响了这次点击,哪些历史影响的小。
这样用户向量就会随着广告变化而变化了。真的是不太明白这是什么意思,为什么要用户向量随着广告变化而变化呢?输入了一个裙子,就要把鞋子的向量给加权,这样的意义在哪里呢,讲道理不是应该商品去匹配用户的向量吗?
-
大规模的稀疏网络训练起来是非常困难的,SGD只会去调整那些非零的输入,如果再加入L2正则化就变的更加复杂了,对于每个batch都需要去计算所有参数的 ∑ w 2 \sum w^2 ∑w2
-
在训练语言模型的时候,seq2seq在编码阶段,将输入的所有信息压缩成一个向量 c c c,在预测的时候将这个向量进行解码。这就会导致信息无法很好的表达出来,但是使用attention的时候,解码时是将输入向量进行加权池化的,有的输入与输出有更强的相关性,因此增加权重,有的与输入相关性较小,就减小权重
这种加权池化的方式是为了让模型学习到相关性,即这次点击的商品与用户历史信息的相关性,并不是为了让用户向量每次变的不同
3. 背景
- 一个用户的兴趣是多种多样的,例如一个年轻的母亲历史点击了羊毛大衣、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)
- 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]
- 池化层。因为全连接层只能处理固定尺寸的输入,对于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)。
- MLP.最后就是将用户特征与商品特征拼接到一起,然后接入到一个mlp网络中,用户学习用户向量和商品向量的交互特征
- LOSS,点击就是正样本,曝光未点击就是负样本。
L = 1 N ∑ ( x , y