DIN模型

·2158·5 分钟
AI摘要: 本文介绍了DIN模型,它通过注意力机制来衡量用户历史中每个物品与目标物品的相关性。文章详细阐述了DIN的原理、注意力机制的计算方法、初始化模型参数的策略以及解决冷启动和数据不平衡问题的方法。

主要思想:

用户的兴趣是多样化的,而当前用户的兴趣仅与部分历史行为相关。

DIN通过注意力机制来衡量用户历史中每个物品与目标物品的相关性。相关性高的历史行为会获得更高的权重,而不相关的历史行为则可以被忽略。

原理

具体来说,模型接收三类输入:用户特征(如年龄、性别等)、用户历史行为(曾经点击过的item)以及目标Item的特征(商品信息)。

以下是一个示例,假设有用户(u)和目标物品(i):

  • 用户(u)的特征可能是 ([age:25,gender:male,location:Shanghai])([age: 25, gender: male, location: Shanghai])
  • 用户(u)的历史行为序列可能是 ([item1,item2,item3])([item_1, item_2, item_3])
  • 目标物品(i)的特征可能是 ([category:electronics,brand:Samsung,price:5000])([category: electronics, brand: Samsung, price: 5000])
  • 如果用户(u)点击了物品(i),标签为1;未点击则为0

首先,系统将所有特征转换为稠密嵌入向量。

注意力机制

通过注意力机制,系统计算每个历史行为与目标item的相关性。用户历史行为序列[item1, item2, item3]中的每个元素都代表一次用户行为,每个行为都转换为嵌入向量[e1,e2,e3][e_1, e_2, e_3],然后计算每个eie_i与目标ItemiItem_i的相关性分数。将这些相关性分数与原始历史行为embedding相乘并求和,得到用户兴趣表示vU(A)\boldsymbol{v}*{U}(A)

计算公式如下:vU(A)=f(vA,e1,e2,,eH)=j=1Ha(ej,vA)ej\boldsymbol{v}*{U}(A)=f\left(\boldsymbol{v}_{A}, \boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \ldots, \boldsymbol{e}_{H}\right)=\sum_{j=1}^{H} a\left(\boldsymbol{e}_{j}, \boldsymbol{v}_{A}\right) \boldsymbol{e}_{j}

其中e1,e2,,eH{ \boldsymbol{e}_{1}, \boldsymbol{e}_{2}, \ldots, \boldsymbol{e}_{H}}是用户U的历史行为特征embedding,vA\boldsymbol{v}_{A} 表示候选广告A的embedding向量,a(ej,vA)=wja(e_j,v_A)=w_j表示历史行为商品与当前广告A的相关性程度。a()a(\cdot)代表前馈神经网络,即注意力机制。

值得注意的是,输入除了包含历史行为向量和候选广告向量外,还包括它们的外积操作,这有助于模型进行显式的相关性建模。

需要特别说明的是,这里的权重之和不是1。准确地说,这里使用的不是标准化权重,而是直接使用相关性分数作为权重(即softmax之前的scores值),这样可以保留用户兴趣的强度信息。

另外需要注意的是,这种历史行为具有序列性质,且不同用户的历史行为特征长度可能不同。由于神经网络要求序列等长,我们通常会通过padding操作(用0填充)使序列达到最长长度。在具体计算时,使用mask掩码来标记填充位置,以确保计算准确性。

Dice

公式:

dice(X)=p(X)X+(1p(X))αX(其中,p(X)=11+exp(XE(X)Var(X)+ϵ))=sigmoid(BN(X))X+(1sigmoid(BN(X)))αX\begin{align} dice(X) &= p(X) \cdot X + (1 - p(X)) \cdot \alpha X (其中,p(X) = \frac{1}{1 + \exp(- \frac{X - E(X)}{\sqrt{Var(X)} + \epsilon})})\\ & = sigmoid(BN(X)) \cdot X + (1 - sigmoid(BN(X))) \cdot \alpha X \end{align}

就是在BN的基础上继续做了变换。

初始化模型参数

这是深度学习模型普遍面临的问题。通常通过Xavier初始化或He初始化来缓解梯度消失或爆炸问题。

  • Xavier初始化:从N(0,σ)N(0, \sigma)分布中采样权重矩阵,其中σ=2nin+nout\sigma = \sqrt{2}{n_{in} + n_{out}}
  • He初始化:为缓解ReLU的梯度消失问题而提出,从N(0,σ)N(0, \sigma)分布中采样权重矩阵,其中σ=2nin\sigma = \sqrt{2}{n_{in}}ninn_{in}表示矩阵的输入节点数。由于ReLU在小值区域容易产生零梯度,因此通过增大权重标准差来缓解这一问题。

冷启动

解决方案是先使用基于内容的推荐或规则based推荐,待累积足够数据量后再切换到DIN。

数据不平衡问题

在搜索广告推荐领域,用户点击物品通常表示确实感兴趣,但未点击并不一定代表不感兴趣——可能只是漏看了。在收集的数据中,正样本(感兴趣)往往远少于负样本(不感兴趣)。解决方案包括:过采样/欠采样,或在损失函数中对多数类样本施加较小权重,对少数类样本施加较大权重。

Kaggle学习赛初探