神经网络中的数值特征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=[x1⋅e1,x2⋅e2,…,xN⋅eN]
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=Ej⋅dj(xj)
其中,
E
j
\mathbf{E}_{j}
Ej表示第
j
j
j个数值特征的Embedding矩阵。
d
j
(
⋅
)
d_{j}(·)
dj(⋅)是手动设置的离散化方法,通常包含以下方法:
- EDD/EFD(Equal Distance/Frequency Discretization)
Equal Distance Discretization也就是数据处理中的等宽分箱,意味着每个桶的大小一致。Equal Frequency Discretization表示等频分箱,每个桶中元素个数相同。 - 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) - 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的整体框架图如下所示:
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} MEj∈RHj×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} MEj∈RHj×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[nj∥xj]))
其中,
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=1∑KMEjkl, 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]。