文章目录
Title
简介
来自华为Ark Lab和上交合作的一篇专注于CTR问题中factorization Models的特征选择问题。
本文提出了Auto feat interaction selection模型,可以自动的选择useful feat interaction,同时具有很好的表现。
Core problem
- 学习特征交叉在CTR问题中是非常重要的。
- 遍历所有的特征交叉项带来巨大的内存和计算消耗
- 贡献小的交叉项很可能引入噪声,导致训练的难度加大
Current Method
发展历史
POLY2 > FM > FFM > GBDT > DNN > DeepFM > xDeepFM > …
- 枚举所有的特征交叉
- 需要人工识别重要的interaction
导致两个比较大的缺陷,
- 内存和计算资源的浪费,很难扩展到高阶特征交叉
- 没用的交叉带来噪声
Thinking(1)
于是作者思考如下:
- 在factorization model之前就分辨出有用的交叉项
- 删除没用的交叉项
这样做的优势:
- 模型关注学习有用的信息
- 减少资源消耗
Thinking(2)
第二个思考就是,当我们考虑二阶交叉的特征空间的时候,也就是从这么大的一个空间选择最优的交叉项集合是Np-Hard问题。
解决方法:
提出两阶段的方法AutoFIS
Two-Stage
- search stage:
引入框架参数,每一个特征交互对应一个框架参数,然后来放宽选择的连续性。
重点:
将离散空间的选择转换为了多个α的参数的学习,使用梯度下降的方法进行优化,这就变为了一个连续性的问题。得到的α可以理解为每一个交互项的相对重要性。
这样就解决了刚才的第二个思考。
- retrain stage
此时我们已经通过search stage得到了每一个交互项的重要性,此时就可以删掉没有贡献的交互项,那么此时重新训练的时候框架参数就成为了attention units。
Main Work
- 提出两阶段算法——AutoFIS
- 自动识别重要的特征交叉项
- 计算量相当于训练目标模型收敛
- 提升DeepFM 20.3% ,华为App Store线上测试提升20%
Factorization Models
FM——DeepFM——IPNN
其中每一个都包含大致相同的几个个核心层:
- Embedding
- Interaction
- MLP
其中DeepFM和IPNN主要是MLP和Interaction的连接方式不同,一个是并行,一个是串行。
Search Stage
- 引入gate来判断是不是需要这个feat interaction
- 将gate转化为architecture param
由此Interaction layer就变成了这个样子:
NAS DARTS
DARTS是从DAG中找子图,并且同样采用了weight sharing,搜索算法则是采用了可微分的方式。DARTS也是搜cell然后按照一定的模式堆起来,在搜索算法上与之前的方法最大的区别在于DARTS选择某个操作的时是把所有操作都按照权重(不是直接加权,先将权重softmax归一化)加起来,那这样权重就在计算图里面了,在计算验证集loss之后就可以backward计算权重的梯度,直接通过梯度下降来优化权重。搜索的过程也就是优化权重的过程,最后保留权重最大的操作就是最后搜到的结构。
离散的操作不好求导,所以需要引入连续松弛化这个概念。 具体地,实际上在搜索过程中,操作集的每个操作都会处理每个节点的特征图。之后,再对所有所有操作得到的结果加权求和,即
可以看到这里引入了新的符号
,其含义为:第 i 个特征图到第 j 个特征图之间的操作 Oij 的权重。这也是我们需要搜索的架构参数
- 训练
这里需要明确我们最后需要的是最优化的模型权重w,还有最优的架构参数α。
所以上面的损失函数就是说找到在训练集上表现最好的w,还有在验证集上表现最好的架构参数α。
coupling problem
因为α和<ei, ej>同时继续学习,所以同时进行scale肯定无法让α表示<ei, ej>的贡献度。所以去掉<ei, ej>的缩放影响,就用Batch Norm对<ei, ej>进行 处理。
GRDA Optimizer
-α用来统一量纲
α^T相乘表示对应的交叉组合的重要性
然后用这个重要性就可以对feat interaction项进行剪纸
用类AFM是不是也可以达到这种效果
retrain -stage
此时不重要的已经被放弃了,
因为此时
已经确定0还是1了。
然后α不再是gate,而是attention units进行重新训练
Experiments