论文精读8:AutoPooling
1 背景
推荐系统中有很多多值特征,文中假设所有特征字段都是多值的,定义为以下形式:
传统的池化对所有特征使用统一的池化算子来压缩信息,忽略了特征分布之间的差异。因此,需要更多区分不同领域的池化方法。
因此提出了 AutoPooling 来自适应学习合适的池化算子,提升模型对于多值特征的学习能力。
2 AutoPooling
可以自动搜索每个特征的最佳池化算子,这个过程可以看作是搜索池化层的最佳子结构,这个子结构是搜索空间中预定义的池化算子。
AutoPooling(图 1 的上半部分)为池化层构建了一个池化算子搜索空间 $\mathscr{P}$,并设计了一种搜索策略来为每个字段找到最佳搜索空间。所以,最佳子结构的搜索转换为架构参数的搜索。通过这种方式,将各种池化层集成到加权和中:
通过优化架构参数 $\alpha$ 找到最佳池化算子。
AutoPooling 使用两阶段的方法进行训练,分为搜索阶段和重训练阶段(AP-2stage)。
2.1 搜索阶段
将整个系统的参数分为超参数 $\alpha$ 和模型可学习的参数 $W$,搜索阶段的主要目的是得到超参数 $\alpha$ 的较优值。使用可微架构搜索 (DARTS) 技术。根据 DARTS,可以优化训练集中的主网络参数 $W$,并在验证集上优化架构参数 $\alpha$。
因此将损失函数定义为两部分:训练集的损失 $\mathcal{L}{\text {train }}(W, \boldsymbol{\alpha})$ 和验证集的损失 $\mathcal{L}{v a l}(\boldsymbol{\alpha}, W(\boldsymbol{\alpha}))$,其中 $W(\boldsymbol{\alpha})$ 表示固定 $\alpha $ 后的网络参数 $W$。
直接对公式11进行求解计算代价比较高,因此可以采用近似的方法:
其中 $\beta$ 是学习率,整个过程描述如下:
输入:feature 和 label
输出:学习到的架构参数 $\alpha^{*}$
- 若未收敛:
- 获取一小批验证数据
- 通过下降 $\nabla \alpha \mathcal{L}_{v a l}\left(W^{*}, \alpha\right)$ 更新 $\alpha$
- 获取一小批训练数据
- 模型输出预测的值 $\hat{y}$
- 通过下降 $\nabla W \mathcal{L}_{\text {train }}(W, \alpha)$ 更新 $W$
训练结束后,为每一个特征选择权重最大的池化方法。
2.2 重训练阶段
基于上述训练得到的最优池化算子,重新训练模型参数。
可以发现,两阶段的方法是比较耗时的,在第二阶段只选择一个池化算子。在此基础上提出 AP-Hybrid 方法,
2.3 AP-Hybrid
AP-Hybrid 只执行 AP-2 阶段的第一阶段,仅将 Softmax 函数应用于等式 8。然后,APHybrid 在训练阶段结束时混合由 DARTS 过程(算法 1)优化的架构参数 $\alpha$。通过这种方式,AP-Hybrid 可以研究多值特征的分布,并自适应地混合来自不同池化算子的信息。
3 模型结构图
主要的改进是在池化层,因此可以很很方便的应用于不同的模型架构中。
1 | graph TD |