Involution Hell
AI 知识库Recommender systems

王树森推荐系统学习笔记_特征交叉

王树森推荐系统学习笔记_特征交叉

特征交叉

Factorized Machine (FM)

线性模型

  • dd 个特征,记作 x=[x1,,xd]\mathbf{x} = [x_1, \cdots, x_d]

  • 线性模型

    p=b+i=1dwixip = b + \sum_{i=1}^{d} w_i x_i。
  • 模型有 d+1d + 1 个参数w=[w1,,wd]\mathbf{w} = [w_1, \cdots, w_d]bb

  • 预测是特征的加权和。(只有加,没有乘。

二阶交叉特征

  • dd 个特征,记作 x=[x1,,xd]\mathbf{x} = [x_1, \cdots, x_d]

  • 线性模型 + 二阶交叉特征

    p=b+i=1dwixi+i=1dj=i+1duijxixjp = b + \sum_{i=1}^{d} w_i x_i + \sum_{i=1}^{d} \sum_{j=i+1}^{d} u_{ij} x_i x_j。
  • 模型有 O(d2)O(d^2) 个参数

线性模型 + 二阶交叉特征

p=b+i=1dwixi+i=1dj=i+1duijxixjp = b + \sum_{i=1}^{d} w_i x_i + \sum_{i=1}^{d} \sum_{j=i+1}^{d} u_{ij} x_i x_j。 uijviTvju_{ij} \approx v^T_iv_j

矩阵 UU dddd 列,矩阵 VV ddkk 列,矩阵 VTV^T kkdd 列。

  • Factorized Machine (FM)

    p=b+i=1dwixi+i=1dj=i+1d(viTvj)xixjp = b + \sum_{i=1}^{d} w_i x_i + \sum_{i=1}^{d} \sum_{j=i+1}^{d} \left( \mathbf{v}_i^T \mathbf{v}_j \right) x_i x_j。
  • FM 模型有 O(kd)O(kd) 个参数。(kdk \ll d

Factorized Machine

  • FM 是线性模型的替代品,能用线性回归、逻辑回归的场景,都可以用 FM。
  • FM 使用二阶交叉特征,表达能力比线性模型更强。
  • 通过做近似 uijviTvju_{ij} \approx \mathbf{v}_i^T \mathbf{v}_j,FM 把二阶交叉权重的数量从 O(d2)O(d^2) 降低到 O(kd)O(kd)

深度交叉网络(DCN)

召回、排序模型

双塔模型和多目标排序模型只是结构,内部的神经网络可以用任意网络。

交叉层(Cross Layer)

利用 Resnet 思想,防止梯度消失

交叉网络 (Cross Network)

深度交叉网络 (Deep & Cross Network)

DCN 的实际效果优于全连接,可以用于双塔模型中的用户塔和物品塔,多目标排序模型中的 shared bottom 神经网络,以及MMoE中的专家神经网络。

Learning Hidden Unit Contributions (LHUC)

神经网络中的结构为[多个全连接层] ➝ [Sigmoid 乘以 2],这样神经网络的输出向量中都是 0 到 2 之间的数。

SENet & Bilinear Cross

  • SENet 对离散特征做 field-wise 加权。

  • Field

    • 用户 ID Embedding 是 64 维向量。
    • 64 个元素(即一个特征的 embedding 向量)算一个 field,获得相同的权重。
    • 特征越重要,获得的权重越大。
  • 如果有 mm 个 fields,那么权重向量是 mm 维。

Field 间特征交叉

内积

xiTx^T_ixjx_j 都是特征的 embedding 向量,fijf_{ij} 是一个实数,如果有 mm 个 field,他们之间两两内积,就会有 m2m^2 个实数。

哈达玛乘积

xiTx^T_ixjx_j 都是特征的 embedding 向量,fijf_{ij} 是一个向量,如果有 mm 个 field,他们之间两两哈达玛乘积,就会有 m2m^2 个向量。量太大,需要人工指定一部分向量做交叉,而不是所有向量都交叉。

Bilineard Cross(内积)

如果有 mm 个 field,就会有 m2m^2 个实数 fijf_{ij}m2/2m^2/2 个参数矩阵 WijW_{ij}

Bilineard Cross(哈达玛)

如果有 mm 个 field,就会有 m2m^2 个向量 fijf_ijm2/2m^2/2 个参数矩阵 WijW_{ij}

FiBiNet

行为序列

用户行为序列建模

LastN 特征

  • LastN:用户最近的 nn 次交互(点击、点赞等)的物品 ID。
  • LastN 物品 ID 做 embedding,得到 nn 个向量。
  • nn 个向量取平均,作为用户的一种特征。
  • 适用于召回双塔模型、粗排三塔模型、精排模型。

DIN 模型

DIN 模型

  • DIN 用 加权平均 代替 平均,即注意力机制(attention)。
  • 权重:候选物品与用户 LastN 物品的相似度。

DIN 模型

  • 对于某候选物品,计算它与用户 LastN 物品的相似度。
  • 以相似度为权重,求用户 LastN 物品向量的加权和,结果是一个向量。
  • 把得到的向量作为一种用户特征,输入排序模型,预估(用户,候选物品)的点击率、点赞率等指标。
  • 本质是注意力机制(attention)。

简单平均 v.s 注意力机制

  • 简单平均 和 注意力机制 都适用于精排模型。
  • 简单平均 适用于双塔模型、三塔模型。
    • 简单平均 只需要用到 LastN,属于用户自身的特征。
    • 把 LastN 向量的平均作为用户塔的输入。
  • 注意力机制 不适用于双塔模型、三塔模型。
    • 注意力机制 需要用到 LastN + 候选物品
    • 用户塔看不到候选物品,不能把 注意力机制 用在用户塔。

SIM模型

DIN 模型

  • 计算用户 LastN 向量的加权平均。
  • 权重是候选物品与 LastN 物品的相似度。

DIN 模型的缺点

  • 注意力层的计算量 n\propto n(用户行为序列的长度)。
  • 只能记录最近几百个物品,否则计算量太大。
  • 缺点:关注短期兴趣,遗忘长期兴趣。

如何改进 DIN

  • 目标:保留用户长期行为序列(nn 很大),而且计算量不会过大。

  • 改进 DIN

    • DIN 对 LastN 向量做加权平均,权重是相似度。
    • 如果某 LastN 物品与候选物品差异很大,则权重接近零。
    • 快速排除掉与候选物品无关的 LastN 物品,降低注意力层的计算量。

SIM 模型

  • 保留用户长期行为记录,nn 的大小可以是几千。
  • 对于每个候选物品,在用户 LastN 记录中做快速查找,找到 kk 个相似物品。
  • LastN 变成 TopK,然后输入到注意力层。
  • SIM 模型减小计算量(从 nn 降到 kk)。

第一步:查找

  • 方法一:Hard Search

    • 根据候选物品的类别,保留 LastN 物品中类别相同的。
    • 简单,快速,无需训练。
  • 方法二:Soft Search

    • 把物品做 embedding,变成向量。
    • 把候选物品向量作为 query,做 kk 近邻查找,保留 LastN 物品中最近的 kk 个。
    • 效果更好,编程实现更复杂。

第二步:注意力机制

使用时间信息

  • 用户与某个 LastN 物品的交互时刻距离今为 δ\delta
  • δ\delta 做离散化,再做 embedding,变成向量 d
  • 把两个向量做 concatenation,表征一个 LastN 物品。
    • 向量 x 是物品 embedding
    • 向量 d 是时间的 embedding

为什么 SIM 使用时间信息

  • DIN 的序列短,记录用户近期行为。
  • SIM 的序列长,记录用户长期行为。
  • 时间越久远,重要性越低。

结论

  • 长序列(长期兴趣)优于短序列(近期兴趣)。
  • 注意力机制 优于 简单平均。
  • Soft search 还是 Hard search?取决于工程基建。
  • 使用时间信息有提升。

贡献者