自动特征组合——微软deep crossing模型

提出动机

deep crossing是微软bing ad团队提出的,用来解决大规模特征组合问题的模型,避免了人工进行特征组合,并使用了当年提出的残差神经网络。模型主要结构如下(搞不懂这图为啥画的这么随意)。
在这里插入图片描述
主要分为embedding layer,stacking layer,residual unit 和scoring layer。
deep crossing模型中输入的部分用得是原始的单个特征,不进行手动特征组合,完全靠模型自己去学。

Embedding layer

对于sparse特征x,通过embedding方式将其转化为dense特征,表达式如下:
X j O = max ⁡ ( 0 , W j X j I + b j ) X_{j}^{O}=\max \left(\mathbf{0}, \mathbf{W}_{j} X_{j}^{I}+\mathbf{b}_{j}\right) XjO=max(0,WjXjI+bj)这里 X j 表 示 第 j 个 特 征 X_{j}表示第j个特征 Xjj, W j W_{j} Wj表示的j个特征对应filed的参数矩阵,没理解错的话作者通过将特征分成不同的field,来减少embedding层的参数。

论文中作者提到了一种场景,对于维度非常高的特征,比如CampaignID(一个ID是一个推广计划,一个推广计算中有若干个广告)有数万种,可以将这些CampaignID按照历史的点击率(所有在一起算不区分用户)进行排名,选前n个特征比如前1000个,保留其真实值,剩下的若干个算作others,特征值用统计特征比如平均点击率。

Stacking layer

通过将embedding的结果横向拼接得到stacking层的结果:
X O = [ X 0 O , X 1 O , ⋯   , X K O ] X^{O}=\left[X_{0}^{O}, X_{1}^{O}, \cdots, X_{K}^{O}\right] XO=[X0O,X1O,,XKO]作者将sparse特征embedding到256维向量上,而对于维度不到256维的特征,直接添加到stacking层即可,如上图中的Feature #2。

Residual unit

残差单元示意如下,当年(2016)年何凯明大神提出,使得深层神经网络至少能与浅层神经网络相持平。
在这里插入图片描述
表达式为
X O = F ( X I , { W 0 , W 1 } , { b 0 , b 1 } ) + X I X^{O}=F\left(X^{I},\left\{W_{0}, W_{1}\right\},\left\{b_{0}, b_{1}\right\}\right)+X^{I} XO=F(XI,{W0,W1},{b0,b1})+XI

Scoring layer

该层利用交叉熵作为损失函数,可以替换为其他任意的损失函数
logloss = − 1 N ∑ i = 1 N ( y i log ⁡ ( p i ) + ( 1 − y i ) log ⁡ ( 1 − p i ) ) \text {logloss}=-\frac{1}{N} \sum_{i=1}^{N}\left(y_{i} \log \left(p_{i}\right)+\left(1-y_{i}\right) \log \left(1-p_{i}\right)\right) logloss=N1i=1N(yilog(pi)+(1yi)log(1pi))

小结

该模型在当时用了特征拼接以及当时的残差单元,虽然现在看来很一般,不过论文对不同特征按照filed来使用参数矩阵,以及对基数巨多的特征的一些特殊处理还是非常值得借鉴的

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页