王树森推荐系统学习笔记_特征交叉
特征交叉
Factorized Machine (FM)
线性模型
-
有 个特征,记作 。
-
线性模型:
-
模型有 个参数: 和 。
-
预测是特征的加权和。(只有加,没有乘。)
二阶交叉特征
-
有 个特征,记作 。
-
线性模型 + 二阶交叉特征:
-
模型有 个参数。
线性模型 + 二阶交叉特征:
矩阵 行 列,矩阵 行 列,矩阵 行 列。
-
Factorized Machine (FM):
-
FM 模型有 个参数。()
Factorized Machine
- FM 是线性模型的替代品,能用线性回归、逻辑回归的场景,都可以用 FM。
- FM 使用二阶交叉特征,表达能力比线性模型更强。
- 通过做近似 ,FM 把二阶交叉权重的数量从 降低到 。
深度交叉网络(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,获得相同的权重。
- 特征越重要,获得的权重越大。
-
如果有 个 fields,那么权重向量是 维。
Field 间特征交叉
内积
和 都是特征的 embedding 向量, 是一个实数,如果有 个 field,他们之间两两内积,就会有 个实数。
哈达玛乘积
和 都是特征的 embedding 向量, 是一个向量,如果有 个 field,他们之间两两哈达玛乘积,就会有 个向量。量太大,需要人工指定一部分向量做交叉,而不是所有向量都交叉。
Bilineard Cross(内积)
如果有 个 field,就会有 个实数 , 个参数矩阵 。
Bilineard Cross(哈达玛)
如果有 个 field,就会有 个向量 , 个参数矩阵 。
FiBiNet
行为序列
用户行为序列建模
LastN 特征
- LastN:用户最近的 次交互(点击、点赞等)的物品 ID。
- 对 LastN 物品 ID 做 embedding,得到 个向量。
- 把 个向量取平均,作为用户的一种特征。
- 适用于召回双塔模型、粗排三塔模型、精排模型。
DIN 模型
DIN 模型
- DIN 用 加权平均 代替 平均,即注意力机制(attention)。
- 权重:候选物品与用户 LastN 物品的相似度。
DIN 模型
- 对于某候选物品,计算它与用户 LastN 物品的相似度。
- 以相似度为权重,求用户 LastN 物品向量的加权和,结果是一个向量。
- 把得到的向量作为一种用户特征,输入排序模型,预估(用户,候选物品)的点击率、点赞率等指标。
- 本质是注意力机制(attention)。
简单平均 v.s 注意力机制
- 简单平均 和 注意力机制 都适用于精排模型。
- 简单平均 适用于双塔模型、三塔模型。
- 简单平均 只需要用到 LastN,属于用户自身的特征。
- 把 LastN 向量的平均作为用户塔的输入。
- 注意力机制 不适用于双塔模型、三塔模型。
- 注意力机制 需要用到 LastN + 候选物品。
- 用户塔看不到候选物品,不能把 注意力机制 用在用户塔。
SIM模型
DIN 模型
- 计算用户 LastN 向量的加权平均。
- 权重是候选物品与 LastN 物品的相似度。
DIN 模型的缺点
- 注意力层的计算量 (用户行为序列的长度)。
- 只能记录最近几百个物品,否则计算量太大。
- 缺点:关注短期兴趣,遗忘长期兴趣。
如何改进 DIN?
-
目标:保留用户长期行为序列( 很大),而且计算量不会过大。
-
改进 DIN:
- DIN 对 LastN 向量做加权平均,权重是相似度。
- 如果某 LastN 物品与候选物品差异很大,则权重接近零。
- 快速排除掉与候选物品无关的 LastN 物品,降低注意力层的计算量。
SIM 模型
- 保留用户长期行为记录, 的大小可以是几千。
- 对于每个候选物品,在用户 LastN 记录中做快速查找,找到 个相似物品。
- 把 LastN 变成 TopK,然后输入到注意力层。
- SIM 模型减小计算量(从 降到 )。
第一步:查找
-
方法一:Hard Search
- 根据候选物品的类别,保留 LastN 物品中类别相同的。
- 简单,快速,无需训练。
-
方法二:Soft Search
- 把物品做 embedding,变成向量。
- 把候选物品向量作为 query,做 近邻查找,保留 LastN 物品中最近的 个。
- 效果更好,编程实现更复杂。
第二步:注意力机制
使用时间信息
- 用户与某个 LastN 物品的交互时刻距离今为 。
- 对 做离散化,再做 embedding,变成向量 d。
- 把两个向量做 concatenation,表征一个 LastN 物品。
- 向量 x 是物品 embedding。
- 向量 d 是时间的 embedding。
为什么 SIM 使用时间信息?
- DIN 的序列短,记录用户近期行为。
- SIM 的序列长,记录用户长期行为。
- 时间越久远,重要性越低。
结论
- 长序列(长期兴趣)优于短序列(近期兴趣)。
- 注意力机制 优于 简单平均。
- Soft search 还是 Hard search?取决于工程基建。
- 使用时间信息有提升。