华为AutoFIS模型总结

最近读了一些SIGKDD的论文,在这里做一个简单的总结,有错误的地方还请各位dalao指点

提出的目的和背景

        华为在2020kdd上提出了新的CTR预估方法。华为指出,很多CTR预估 算法都需要进行特征组合,但是传统的特征组合方式都是简单的暴力组合或者人工选择,人工选择的方式依赖于先验知识,而简单的暴力组合其实对模型的性能的提升并不是总有益的,有些组合方式其实对模型的性能提升并没有多少的帮助,甚至会损害模型的性能,而且大量无效的特征组合会形成很多的参数,降低内存的利用率,那么到底如何选择特征组合呢?根据最近大火的AutoML技术,华为提出了Automatic Feature Interaction Selection in Factorization Models,即AutoFIS,顾名思义,就是自动去找最佳的特征组合。最后,华为将Auto-DeepFM模型放在了华为App Store推荐系统中,经过10天的线上A/B测试,CTR和CVR的值分别提升了20.3%和20.1%(ps:这提升的也太夸张了。。。)

AutoFIS的基本思想和结构

        其实前深度学习时代,特征组合的方式总体上分为两大类,一种是多项式模型,例如:FM,FFM等,另一种就是树模型,例如:GBDT等,多项式模型的缺点就是之前提到的,枚举所有的特征组合方式,这样会引入噪声影响模型的性能,而树模型的特征组合能力是有限的,它无法找到所有可能的特征组合方式,另外还很容易过拟合(ps:这个过拟合可不是树太深,具体的解释可以看看这篇博客 GBDT+LR ,到了深度学习时代,直接就将样本扔进DNN,可以认为在非线性空间下特征之间做了自动的组合,但是简单的DNN模型其实效果并没有想象中的好,这下各路大神开始各显神通了,提出了很多基于FM和DNN结合的模型,但是这些模型在特征组合部分的方式依然还是暴力枚举,所以华为提出了“门”的概念,将一些没有意义的特征组合的“门”给它关上,这样这种特征组合方式就不会给模型带来噪声。
AutoFIS的想法如下图所示:
AutoFIS结构
        其实,这张图已经很明显了,华为将这些a(i, j)就定义为“门”, 所以以FM为例,加入“门”之后,公式就变成了:
l A u t o F I S = < w , x > + ∑ i = 1 m ∑ j > i m α ( i , j ) < e i , e j > l_{AutoFIS}=<w,x>+\sum_{i=1}^m{\sum_{j>i}^m{\alpha_{(i,j)} <ei,ej>}} lAutoFIS=<w,x>+i=1mj>imα(i,j)<ei,ej>
,训练的过程分为两个阶段,Search阶段和Re-train阶段。

  1. Search阶段:这个阶段就是为了找出哪些特征组合是有意义的,AutoFIS提出,正常情况下 a ( i , j ) ∈ 0 , 1 a(i, j) \in {0, 1} a(i,j)0,1,但是这样暴力搜索离散值就会形成组合爆炸问题,所以干脆直接就把这些权值看成连续的,然后用梯度下降去优化,“门”得0的特征组合就直接丢弃。这里涉及到一些细节,首先受DARTS启发,但是DARTS是bi-level的训练方式,DARTS把a和其他参数分开训练,同时它假设模型一次训练就可以做出最优的选择(就是一次梯度下降,就可以知道哪些特征组合最好),这样下一次就固定这些a训练其他的参数,反复如此(论文中这部分我没怎么弄明白,好像大概是这么个意思,不对的话请各位dalao指正),但是AutoFIS认为,这样会降低精确性,所以直接把a和其他参数放在一起训练,也就是论文中提出的one-level training。在训练过程中,在体系结构层的前面加一个BN层,论文中指出,a(i, j)和其对应的特征组合值<ei, ej>是有很大的耦合性的,为了降低这种耦合性,需要对当前Batch里同一种特征组合进行归一化处理。另外,在Search阶段,a(i, j)的优化方法和其他参数不同,文中指出其他参数使用adam优化方法,而为了筛选出稀疏的参数,a(i, j)使用GRDA的优化方法:
    在这里插入图片描述
  2. Re-train阶段,第一阶段训练好a(i, j)这个“门”之后,要对模型重新进行训练,此时Search阶段a为0的特征组合就被抛弃喽,而a不为0的特征组合将其对应的a值保留,作为attention score,这样可以衡量当前特征组合对最后结果的影响程度,在Re-train阶段,全部使用adam优化方法。

实验结果

在实验阶段,华为提出了5个问题:
RQ1:通过AutoFIS选择出来的特征组合能提升基于FM的模型性能吗?
RQ2:从简单的模型中选择一种特征组合方式,能否把它用在sota模型上,并提升它的性能(感觉优点像迁移学习)
RQ3:AutoFIS选择出来的特征组合是不是真的有效啊?RQ4:这种方法能提升现存的在线推荐系统的性能吗?
RQ5:AutoFIS中不同组件对最后模型的性能有何贡献?

首先,针对于第一个问题,华为在个人的数据集上做了对照实验,结果如下:在这里插入图片描述
对于第二个问题,华为改造了2阶特征融合的IPNN和3阶特征融合的IPNN,最后在Avazu和Criteo公开数据集上的结果如下图所示,确实在性能上提升很多:
在这里插入图片描述
对于第三个问题,华为在真实的数据集上进行分析。首先,定义了statistic_AUC是指某个特征组合的重要性,这个值越高,这个特征融合的重要型就越高,所以为了可视化最终模型的效果,华为将statistic_auc作为纵轴, α \alpha α的值作为横轴,最终效果如下:
在这里插入图片描述

可以看到,statistics_auc的值较大的特征组合对应的 α \alpha α也较大,但是有一些statistics_auc较大的特征组合并没有被选择,文中的解释是,这些特征组合的信息很可能已经被其他的特征组合所表征,也就是信息重叠了。

所以说不能只关注statistics_auc的大小,还要关注信息的重叠性,所以华为做了个实验,将只用statistics_auc作为指标选择的特征组合和利用autofis选出的特征组合分别重新进行训练FM模型,最后发现确实AutoFIS的效果更好一些:
在这里插入图片描述
然后为了进一步验证AutoFIS选择的特征组合的有效性,华为选择使用生成的数据,这样结果会更具一般性(也就是验证AutoFIS是不依赖于特定的数据集的),具体生成数据的方法在论文中提到了,这里不详细介绍,最后,AutoFM相对于传统的FM方法大获全胜,结果如下图所示:
在这里插入图片描述
对于第四个问题,华为直接选择在华为app store上线提出的AutoDeepFM模型,并且于之前部署很久的DeepFM一较高下,最后结果如下图:
在这里插入图片描述
前8天是没有上线新模型的,在这个期间可以看到系统很稳定,CTR和CVR的值围绕在8%范围内波动,从第8天到第17天,进行A/B测试,好家伙,提升非常明显,但是从第18天开始,将新模型下线,又回到了一开始的状态,这样足以验证AutoFIS选择特征组合的有效性。

对于第五个问题,为了验证AutoFIS各个部分的重要性,华为把重要的一些部分当作变量构建一个决策表,如下图所示:
在这里插入图片描述
在search阶段,对于是使用AutoFIS选择特征组合还是随机组合作出判断,同时在re-train阶段是否需要BN层和 α \alpha α作出判断,也就是说,一共就三个重要组成部分:选择特征组合、 α \alpha α、BN层。
最后结果如下图所示:
在这里插入图片描述
确实,各个部分还是缺一不可啊。
最后华为将各个模型的参数公布出来,为了方便大家复现(虽然我到现在还没写出来,唉,代码能力太菜了QAQ)
在这里插入图片描述
论文名称:AutoFIS: Automatic Feature Interaction Selection in Factorization Models for Click-Through Rate Prediction

论文地址:http://xxx.itp.ac.cn/pdf/2003.11235.pdf

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值