1 背景
推荐系统中有很多多值特征,文中假设所有特征字段都是多值的,定义为以下形式:

传统的池化对所有特征使用统一的池化算子来压缩信息,忽略了特征分布之间的差异。因此,需要更多区分不同领域的池化方法。
因此提出了 AutoPooling 来自适应学习合适的池化算子,提升模型对于多值特征的学习能力。
2 AutoPooling

可以自动搜索每个特征的最佳池化算子,这个过程可以看作是搜索池化层的最佳子结构,这个子结构是搜索空间中预定义的池化算子。

AutoPooling(图 1 的上半部分)为池化层构建了一个池化算子搜索空间 P,并设计了一种搜索策略来为每个字段找到最佳搜索空间。所以,最佳子结构的搜索转换为架构参数的搜索。通过这种方式,将各种池化层集成到加权和中:

通过优化架构参数 α 找到最佳池化算子。
AutoPooling 使用两阶段的方法进行训练,分为搜索阶段和重训练阶段(AP-2stage)。
2.1 搜索阶段
将整个系统的参数分为超参数 α 和模型可学习的参数 W,搜索阶段的主要目的是得到超参数 α 的较优值。使用可微架构搜索 (DARTS) 技术。根据 DARTS,可以优化训练集中的主网络参数 W,并在验证集上优化架构参数 α。
因此将损失函数定义为两部分:训练集的损失 Ltrain (W,α) 和验证集的损失 Lval(α,W(α)),其中 W(α) 表示固定 $\alpha $ 后的网络参数 W。

直接对公式11进行求解计算代价比较高,因此可以采用近似的方法:

其中 β 是学习率,整个过程描述如下:
输入:feature 和 label
输出:学习到的架构参数 α∗
- 若未收敛:
- 获取一小批验证数据
- 通过下降 ∇αLval(W∗,α) 更新 α
- 获取一小批训练数据
- 模型输出预测的值 y^
- 通过下降 ∇WLtrain (W,α) 更新 W
 
训练结束后,为每一个特征选择权重最大的池化方法。

2.2 重训练阶段
基于上述训练得到的最优池化算子,重新训练模型参数。
可以发现,两阶段的方法是比较耗时的,在第二阶段只选择一个池化算子。在此基础上提出 AP-Hybrid 方法,
2.3 AP-Hybrid
AP-Hybrid 只执行 AP-2 阶段的第一阶段,仅将 Softmax 函数应用于等式 8。然后,APHybrid 在训练阶段结束时混合由 DARTS 过程(算法 1)优化的架构参数 α。通过这种方式,AP-Hybrid 可以研究多值特征的分布,并自适应地混合来自不同池化算子的信息。
3 模型结构图
主要的改进是在池化层,因此可以很很方便的应用于不同的模型架构中。
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 
 | graph TDsubgraph 输入层
 A1[单值特征<br>userId/movieId/year]
 A2[多值特征<br>user_genre/urb/movie_genre/movie_tag]
 end
 
 subgraph Embedding层
 B1[单值Embedding<br>size=16]
 B2[多值Embedding<br>size=16]
 A1 --> B1
 A2 --> B2
 end
 
 subgraph 池化层
 C1[多种池化方式]
 C2[Sum池化]
 C3[Mean池化]
 C4[Max池化]
 C5[Min池化]
 C6[K阶池化]
 C7[注意力池化]
 B2 --> C1
 C1 --> C2
 C1 --> C3
 C1 --> C4
 C1 --> C5
 C1 --> C6
 C1 --> C7
 end
 
 subgraph 权重融合
 D1[Softmax权重]
 D2[加权池化结果]
 C2 & C3 & C4 & C5 & C6 & C7 --> D1
 D1 --> D2
 end
 
 subgraph DNN层
 E1[特征拼接<br>单值+多值]
 E2[FC层 64]
 E3[FC层 32]
 E4[FC层 1]
 B1 --> E1
 D2 --> E1
 E1 --> E2
 E2 --> E3
 E3 --> E4
 end
 
 subgraph 输出层
 F1[Sigmoid]
 F2[预测概率]
 E4 --> F1
 F1 --> F2
 end
 
 |