神经网络中的数值特征Embedding化方法


今天刷到了一篇华为诺亚方舟实验室发表在KDD 2021上的工作,论文标题《An Embedding Learning Framework for Numerical Features in CTR Prediction》,顾名思义,该方法应用于CTR预估,提出了一种针对数值特征的Embedding学习框架 AutiDis。本文主要汇总了论文中的四种数值特征使用方法。

No Embedding

该方法直接使用特征原始值或者经过转化后(非Embedding转化,通常使用归一化)的特征值,例如Google Play中的Wide&Deep,京东的DMT。除此之外,Youtube的DNN对经过标准化后的特征值 x ~ j \tilde{x}_{j} x~j进行平方、开根号转换:
e YouTube  = [ x ~ 1 2 , x ~ 1 , x ~ 1 , x ~ 2 2 , x ~ 2 , x ~ 2 , … , x ~ N 2 , x ~ N , x ~ N ] \mathbf{e}_{\text {YouTube }}=\left[\tilde{x}_{1}^{2}, \tilde{x}_{1}, \sqrt{\tilde{x}_{1}}, \tilde{x}_{2}^{2}, \tilde{x}_{2}, \sqrt{\tilde{x}_{2}}, \ldots, \tilde{x}_{N}^{2}, \tilde{x}_{N}, \sqrt{\tilde{x}_{N}}\right] eYouTube =[x~12,x~1,x~1 ,x~22,x~2,x~2 ,,x~N2,x~N,x~N ]

Field Embedding

学术界常用的方法是Field Embedding,其中同一Field中的所有数值特征共享同一个Field Embedding,然后将该Field Embedding与其特征值相乘:
e F E = [ x 1 ⋅ e 1 , x 2 ⋅ e 2 , … , x N ⋅ e N ] \mathbf{e}_{F E}=\left[x_{1} \cdot \mathbf{e}_{1}, x_{2} \cdot \mathbf{e}_{2}, \ldots, x_{N} \cdot \mathbf{e}_{N}\right] eFE=[x1e1,x2e2,,xNeN]

Discretization

对于数值特征 x j x_{j} xj,其特征嵌入 e j e_{j} ej可以通过两阶段操作获得:离散化和嵌入查找。
e j = E j ⋅ d j ( x j ) e_{j}=\mathbf{E}_{j}·d_{j}(x_{j}) ej=Ejdj(xj)
其中, E j \mathbf{E}_{j} Ej表示第 j j j个数值特征的Embedding矩阵。 d j ( ⋅ ) d_{j}(·) dj()是手动设置的离散化方法,通常包含以下方法:

  1. EDD/EFD(Equal Distance/Frequency Discretization)
    Equal Distance Discretization也就是数据处理中的等宽分箱,意味着每个桶的大小一致。Equal Frequency Discretization表示等频分箱,每个桶中元素个数相同。
  2. LD(Logarithm Discretization)
    Logarithm Discretization是2014年Kaggle竞赛Criteo advertiser prediction冠军方案中使用到的方法,先对特征值取对数,再向上取整,公式如下:
    x ^ j = d j L D ( x j ) = f loor ⁡ ( log ⁡ ( x j ) 2 ) \widehat{x}_{j}=d_{j}^{L D}\left(x_{j}\right)=f \operatorname{loor}\left(\log \left(x_{j}\right)^{2}\right) x j=djLD(xj)=floor(log(xj)2)
  3. TD(Tree-based Discretization)
    除了深度学习模型外,基于树的模型(如GBDT)由于能够有效处理数值特征而广泛用于推荐领域。因此,许多基于树的方法被用于离散数值特征。
    尽管离散化在工业中得到广泛应用,但它们仍然受到三个限制(如下图所示):
    离散化缺陷
  • TPP(两阶段问题):离散化过程由启发式规则或另一个模型确定,因此无法与CTR预测任务的最终目标一起优化,从而导致次优性能。
  • SBD(相似值但不相似嵌入):这些离散化策略可能将相似特征(边界值)分离到两个不同的桶中,因此它们的后续嵌入显著不同。例如,常用的年龄字段离散化是将确定为青少年,将确定为中年,这导致数值40和41的嵌入显著不同。
  • DBS(不相似值但相同嵌入):现有的离散化策略可能会将显著不同的元素分组到同一个桶中,导致无法区分的嵌入。使用相同的示例,18到40之间的数值在同一个桶中,因此分配了相同的嵌入。然而,18岁和40岁的人可能具有非常不同的特征。基于离散化的策略不能有效地描述数值特征变化的连续性

AutoDis

为了保持高模型容量端到端训练独特的表示特性,我们在AutoDis中设计了三个核心模块:元嵌入(meta-embedding)自动离散化(automatic discretization)聚合(aggregation)。对于第 j j j个数值域特征,AutoDis可以学习每个数值特征 x j x_{j} xj的唯一表示:
e j = f ( d j Auto  ( x j ) , M E j ) \mathbf{e}_{j}=f\left(d_{j}^{\text {Auto }}\left(x_{j}\right), \mathbf{M E}_{j}\right) ej=f(djAuto (xj),MEj)
AutoDis的整体框架图如下所示:
AutoDis

Meta-Embeddings

原文翻译:

一种简单的解决方案是将数值特征视为类别特征,并为每个数值特征分配一个独立的embedding。显然,该方法存在严重缺陷,例如参数爆炸,低频特征训练不足,这在实践中不可取的。相反,为了节省参数,Field Embedding方法在Field内的所有特征值之间共享一个Embedding,由于容量低,降低了模型性能。为了平衡模型容量和复杂性,对于第 j j j个字段,我们设计了一组meta-embedding M E j ∈ R H j × d \mathbf{M E}_{j} \in \mathbb{R}^{H_{j} \times d} MEjRHj×d 由该字段内的特征共享,其中 H j H_{j} Hj是元嵌入的数量。元嵌入有助于学习场内共享的全局知识。每个元嵌入可以被视为潜在空间中的子空间,以提高表达能力和容量。通过结合这些元嵌入,学习的嵌入比场嵌入方法信息更丰富,因此可以很好地保持高模型容量。此外,所需参数由 H j H_{j} Hj确定。因此,模型复杂度高度可控,使我们的方法具有可扩展性。

个人理解:

就是每个数值特征都预定义一个元嵌入矩阵 M E j ∈ R H j × d \mathbf{M E}_{j} \in \mathbb{R}^{H_{j} \times d} MEjRHj×d,不同特征的矩阵大小 H j H_{j} Hj自定义。

Automatic Discretization

为了捕捉数值特征值和设计的元嵌入之间的复杂相关性,我们精心提出了一个可微自动离散化模块 d j A u t o ( ⋅ ) d_{j}^{Auto}(·) djAuto()。具体来说,利用具有跳跃连接的两层神经网络来离散特征值 x j x_{j} xj H j H_{j} Hj桶:
h j = LeakyReLU ( w j x j ) , x ~ j = W j h j + α h j x ^ j h = e 1 τ x ~ j h ∑ l = 1 H j e 1 τ x ~ j l x ^ j = d j Auto  ( x j ) = [ x ^ j 1 , … , x ^ j h , … , x ^ j H j ] \mathbf{h}_{j}= {\text{LeakyReLU}} ( \mathbf{w}_{j} x_{j} ) , \\ \widetilde{\mathbf{x}}_{j}=\mathbf{W}_{j} \mathbf{h}_{j}+\alpha \mathbf{h}_{j} \\ \widehat{x}_{j}^{h}=\frac{e^{\frac{1}{\tau} \tilde{x}_{j}^{h}}}{\sum_{l=1}^{H_{j}} e^{\frac{1}{\tau} \tilde{x}_{j}^{l}}} \\ \widehat{\mathrm{x}}_{j}=d_{j}^{\text {Auto }}\left(x_{j}\right)=\left[\widehat{x}_{j}^{1}, \ldots, \widehat{x}_{j}^{h}, \ldots, \widehat{x}_{j}^{H_{j}}\right] hj=LeakyReLU(wjxj),x j=Wjhj+αhjx jh=l=1Hjeτ1x~jleτ1x~jhx j=djAuto (xj)=[x j1,,x jh,,x jHj]
其中, τ \tau τ表示温度系数,用于控制离散化分布。当 τ ⟶ ∞ \tau \longrightarrow \infty τ时,离散分布 x ^ j \widehat{\mathrm{x}}_{j} x j趋近于均匀分布;当 τ ⟶ 0 \tau \longrightarrow 0 τ0时,分布趋向于one-hot;所以该参数的设置至关重要。 此外,特征在不同领域的分布是相反的,因此非常有必要学习不同的 τ \tau τ 针对不同的特征。具体来说,我们提出了一种温度协同高效的自适应网络,该网络同时考虑了全局场统计特征和局部输入特征,如下所示:
τ x j =  Sigmoid  ( W j 2  LeakyReLU( W j 1 [ n ‾ j ∥ x j ] ) ) \left.\tau_{x_{j}}=\text { Sigmoid }\left(\mathbf{W}_{j}^{2} \text { LeakyReLU(} \mathbf{W}_{j}^{1}\left[\overline{\mathbf{n}}_{j} \| x_{j}\right]\right)\right) τxj= Sigmoid (Wj2 LeakyReLU(Wj1[njxj]))
其中, n ‾ j \overline{\mathbf{n}}_{j} nj是第 j j j 个Field的全局统计特征向量,包括采样累积分布函数(CDF)和平均值。 x ^ j \widehat{\mathrm{x}}_{j} x j 表示meta-embedding中每个embedding向量的权重分布。

Aggregation Function

  • Max-Pooling
    选择具有最高概率 x ^ j h \widehat{x}_{j}^{h} x jh 的最相关元嵌入:
    e j = ME ⁡ j k , where  k = argmax ⁡ h ∈ { 1 , 2 , . . . , H j } x ^ j h \mathbf{e}_{j}=\operatorname{ME}_{j}^{k} \text {, where } k=\operatorname{argmax} _{h \in \{1,2,...,H_{j} \} } \widehat{x}_{j}^{h} ej=MEjk, where k=argmaxh{1,2,...,Hj}x jh

  • Top-K-Sum
    将相关性最高的 top-K 元嵌入 x ^ j h \widehat{x}_{j}^{h} x jh 相加 :
    e j = ∑ l = 1 K M E j k l ,  where  k l = arg ⁡ top ⁡ l h ∈ { 1 , 2 , … , H j } x ^ j h , \mathbf{e}_{j}=\sum_{l=1}^{K} \mathrm{ME}_{j}^{k_{l}}, \text { where } k_{l}=\underset{l}{\arg \operatorname{top}} \quad h \in\left\{1,2, \ldots, H_{j}\right\} \widehat{x}_{j}^{h}, ej=l=1KMEjkl, where kl=largtoph{1,2,,Hj}x jh,

  • Weighted-Average
    Meta-Embedding相当于Value,Automatic Discretization得到的 x ^ j \widehat{\mathrm{x}}_{j} x j 相当于权重。本文采用最后这种方式进行聚合。

最后,为了稳定训练过程,我们在数据预处理阶段采用特征归一化技术将数值特征值缩放为[0, 1]。

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值