推荐系统论文AutoFIS KDD2020

Title

推荐系统论文AutoFIS KDD2020

简介

来自华为Ark Lab和上交合作的一篇专注于CTR问题中factorization Models的特征选择问题。

本文提出了Auto feat interaction selection模型,可以自动的选择useful feat interaction,同时具有很好的表现。

Core problem

  1. 学习特征交叉在CTR问题中是非常重要的。
  2. 遍历所有的特征交叉项带来巨大的内存和计算消耗
  3. 贡献小的交叉项很可能引入噪声,导致训练的难度加大

Current Method

发展历史

POLY2 > FM > FFM > GBDT > DNN > DeepFM > xDeepFM > …

  1. 枚举所有的特征交叉
  2. 需要人工识别重要的interaction

导致两个比较大的缺陷,

  1. 内存和计算资源的浪费,很难扩展到高阶特征交叉
  2. 没用的交叉带来噪声

Thinking(1)

于是作者思考如下:

  1. 在factorization model之前就分辨出有用的交叉项
  2. 删除没用的交叉项

这样做的优势:

  1. 模型关注学习有用的信息
  2. 减少资源消耗

Thinking(2)

第二个思考就是,当我们考虑二阶交叉的特征空间的时候,也就是从这么大的一个空间选择最优的交叉项集合是Np-Hard问题。

解决方法:
提出两阶段的方法AutoFIS

Two-Stage

  1. search stage:

引入框架参数,每一个特征交互对应一个框架参数,然后来放宽选择的连续性。

重点:
将离散空间的选择转换为了多个α的参数的学习,使用梯度下降的方法进行优化,这就变为了一个连续性的问题。得到的α可以理解为每一个交互项的相对重要性。

这样就解决了刚才的第二个思考。

  1. retrain stage

此时我们已经通过search stage得到了每一个交互项的重要性,此时就可以删掉没有贡献的交互项,那么此时重新训练的时候框架参数就成为了attention units。

推荐系统论文AutoFIS KDD2020

Main Work

  • 提出两阶段算法——AutoFIS
  • 自动识别重要的特征交叉项
  • 计算量相当于训练目标模型收敛
  • 提升DeepFM 20.3% ,华为App Store线上测试提升20%

Factorization Models

FM——DeepFM——IPNN
推荐系统论文AutoFIS KDD2020
其中每一个都包含大致相同的几个个核心层:

  1. Embedding
  2. Interaction
  3. MLP

其中DeepFM和IPNN主要是MLP和Interaction的连接方式不同,一个是并行,一个是串行。

Search Stage

  1. 引入gate来判断是不是需要这个feat interaction
  2. 将gate转化为architecture param

推荐系统论文AutoFIS KDD2020
由此Interaction layer就变成了这个样子:

推荐系统论文AutoFIS KDD2020

NAS DARTS

DARTS是从DAG中找子图,并且同样采用了weight sharing,搜索算法则是采用了可微分的方式。DARTS也是搜cell然后按照一定的模式堆起来,在搜索算法上与之前的方法最大的区别在于DARTS选择某个操作的时是把所有操作都按照权重(不是直接加权,先将权重softmax归一化)加起来,那这样权重就在计算图里面了,在计算验证集loss之后就可以backward计算权重的梯度,直接通过梯度下降来优化权重。搜索的过程也就是优化权重的过程,最后保留权重最大的操作就是最后搜到的结构。

推荐系统论文AutoFIS KDD2020
离散的操作不好求导,所以需要引入连续松弛化这个概念。 具体地,实际上在搜索过程中,操作集的每个操作都会处理每个节点的特征图。之后,再对所有所有操作得到的结果加权求和,即

可以看到这里引入了新的符号
推荐系统论文AutoFIS KDD2020

,其含义为:第 i 个特征图到第 j 个特征图之间的操作 Oij 的权重。这也是我们需要搜索的架构参数

  • 训练
    推荐系统论文AutoFIS KDD2020

这里需要明确我们最后需要的是最优化的模型权重w,还有最优的架构参数α。

所以上面的损失函数就是说找到在训练集上表现最好的w,还有在验证集上表现最好的架构参数α。

coupling problem

因为α和<ei, ej>同时继续学习,所以同时进行scale肯定无法让α表示<ei, ej>的贡献度。所以去掉<ei, ej>的缩放影响,就用Batch Norm对<ei, ej>进行 处理。

推荐系统论文AutoFIS KDD2020

GRDA Optimizer

推荐系统论文AutoFIS KDD2020
推荐系统论文AutoFIS KDD2020
-α用来统一量纲
α^T相乘表示对应的交叉组合的重要性
然后用这个重要性就可以对feat interaction项进行剪纸

用类AFM是不是也可以达到这种效果

retrain -stage

此时不重要的已经被放弃了,

推荐系统论文AutoFIS KDD2020
因为此时推荐系统论文AutoFIS KDD2020
已经确定0还是1了。

然后α不再是gate,而是attention units进行重新训练

Experiments

推荐系统论文AutoFIS KDD2020
推荐系统论文AutoFIS KDD2020