KDD‘21华为数值型特征做embedding,An Embedding Learning Framework for Numerical Features in CTR Prediction
2023-11-01
本文是针对数值型特征做embedding的方法。
背景
图1 常用的数值型embedding方法可以分为以下三类:
No Embedding
这类方法不做embedding,而是直接用原始的数值作为特征,或者在数值上面做一些改进,例如youtube对于数值型特征分别做平方和平方根得到
e
YouTube
=
[
x
~
1
2
,
x
~
1
,
x
~
1
,
x
~
2
2
,
x
~
2
,
x
~
2
,
…
,
x
~
N
2
,
x
~
N
,
x
~
N
]
\mathrm{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] 例如facebook的DLRM直接用DNN对数值特征建模
e
D
L
R
M
=
[
D
N
N
(
[
x
1
,
x
2
.
.
.
,
x
N
]
)
]
e_DLRM=[DNN([x_1,x_2...,x_N])]
eDLRM=[DNN([x1,x2...,xN])]直接用DNN提取。 以上这些No Embedding方法无法捕获数值型特征域中的高阶信息,只是粗暴的直接利用了这些特征值。
Field Embedding
Field Embedding方法将一个域(field)内的数值型特征共享一个field embedding,简单理解就是同一个域内的特征采用同一个向量来转换。公式如下:
e
E
F
=
[
x
1
⋅
e
1
,
.
.
.
,
x
N
⋅
e
N
]
e_{EF}=[x_1 \cdot e_1,...,x_N \cdot e_N]
eEF=[x1⋅e1,...,xN⋅eN] 其中
e
i
∈
R
d
e_i \in R^d
ei∈Rd表示第i个域对应的转换向量,d为转换后的维度。由于每一个域共享了单个embedding向量使得这种方式的表达能力也是受限的。
Discretization
离散化的方式就是将连续特征转换为离散特征(例如分桶)。将域内的特征进行离散化,然后在进行转换。
e
j
=
E
j
⋅
d
j
(
x
j
)
e_j=E_j \cdot d_j(x_j)
ej=Ej⋅dj(xj)
E
j
∈
R
H
j
×
d
E_j \in R^{H_j \times d}
Ej∈RHj×d表示第j个域对应的embedding矩阵,
H
j
H_j
Hj就是第j个域内离散化后的桶的个数。$d_j $就是离散化函数。常用的离散化函数有以下三种:
EDD/EFD(Equal Distance/Frequency Discretization)
等距or等频离散化。 等距就是每个区间大小一样,将原始特征划分为
H
j
H_j
Hj个等宽的桶。找到最大、最小值,然后根据桶的个数进行等分
w
j
=
(
x
j
max
−
x
j
min
)
/
H
j
w_{j}=\left(x_{j}^{\max }-x_{j}^{\min }\right) / H_{j}
wj=(xjmax−xjmin)/Hj,通过下式得到每个区间内的值对应的离散值。
x
^
j
=
d
j
E
D
D
(
x
j
)
=
floor
(
(
x
j
−
x
j
m
i
n
)
/
w
j
)
\widehat{x}_{j}=d_{j}^{E D D}\left(x_{j}\right)=\text { floor }\left(\left(x_{j}-x_{j}^{m i n}\right) / w_{j}\right)
xj=djEDD(xj)= floor ((xj−xjmin)/wj) 等频就是希望每个区间内的特征数得一样。
LD (Logarithm Discretization)
log离散化也是比较常用的离散化方法,公式如下:
x
^
j
=
d
j
L
D
(
x
j
)
=
floor
(
log
(
x
j
)
2
)
\widehat{x}_{j}=d_{j}^{L D}\left(x_{j}\right)=\text { floor }\left(\log \left(x_{j}\right)^{2}\right)
xj=djLD(xj)= floor (log(xj)2)
SBD (Similar value But Dis-similar embedding):这些划分方法可能存在将相似的值划分到不同的组,从而导致最终的embedding表征相差很大,比如一些边界值。例如5和6,而当时的分界条件刚好是5.5的话,5和6就会被分到不同的组。
DBS (Dis-similar value But Same embedding):同一个桶中可能会包含两个相差很大的值,但是他们却被分到一组,导致他们的embedding表征最后就是很相似。
方法
AutoDis总体框架
AutoDis主要包含三部分:meta embeddings, automatic discretization and aggregation,将这三部分结合起来可用公式表示为
e
j
=
f
(
d
j
Auto
(
x
j
)
,
M
E
j
)
\mathrm{e}_{j}=f\left(d_{j}^{\text {Auto }}\left(x_{j}\right), \mathrm{ME}_{j}\right)
ej=f(djAuto (xj),MEj) 其中
M
E
j
ME_j
MEj表示第j个域对应的meta embedding矩阵,
d
j
A
u
t
o
(
)
d_j^{Auto}()
djAuto()表示automatic discretization自动离散化方法,最终的f()表示aggregation将他们融合到一起。
Meta Embedding
最直接的方式是将对每一个数值型特征值都赋予embedding,但是这回导致参数特别多。而field embedding的方式对每一个域内直接用单个向量进行转换,导致表达能力差。为了平衡该参数量和表达能力,本文设计了Meta embedding对第j个域内进行分桶后得到
H
j
H_j
Hj个桶,对每个桶对应一个embedding。
Automatic Discretization
自动离散化。上述离散化方法我们可以称之为硬离散化(hard discretization),是完全限定好条件,然后将值固定划分到一个区域内。而本文所提方法可以称之为软离散化(soft),采用网络学习的方法。
h
j
=
L
e
a
k
y
R
e
L
U
(
w
j
x
j
)
x
~
j
=
W
j
h
j
+
α
h
j
\begin{array}{l} \left.\mathbf{h}_{j}=LeakyReLU( \mathbf{w}_{j} x_{j}\right) \\ \widetilde{\mathbf{x}}_{j}=\mathrm{W}_{j} \mathrm{~h}_{j}+\alpha \mathbf{h}_{j} \end{array}
hj=LeakyReLU(wjxj)xj=Wjhj+αhj 将第j个特征输入到两层神经网络中,具体计算方式如上式所示,
α
\alpha
α为超参数,控制结合比例,
w
j
∈
R
1
×
H
j
w_j \in R^{1 \times H_j}
wj∈R1×Hj,
W
j
∈
R
H
j
×
H
j
W_j \in R^{H_j \times H_j}
Wj∈RHj×Hj,因此计算后得到
H
j
H_j
Hj维的向量,在通过softmax标准化得到该向量属于每一个桶的概率。
x
^
j
h
=
e
1
τ
x
~
j
h
∑
l
=
1
H
j
e
1
τ
x
~
j
l
\widehat{x}_{j}^{h}=\frac{e^{\frac{1}{\tau} \widetilde{x}_{j}^{h}}}{\sum_{l=1}^{H_{j}} e^{\frac{1}{\tau} \widetilde{x}_{j}^{l}}}
xjh=∑l=1Hjeτ1xjleτ1xjh 其中温度系数
τ
\tau
τ控制离散化后的分布情况。硬离散化后,得到的是具体分到哪一个桶中,而这里的软离散化是分到各个桶的概率
x
^
j
=
d
j
Auto
(
x
j
)
=
[
x
^
j
1
,
…
,
x
^
j
h
,
…
,
x
^
j
H
j
]
\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]
xj=djAuto (xj)=[xj1,…,xjh,…,xjHj]。当温度系数接近无穷大时,离散化后的整体分布接近均匀分布;而当系数接近0时,整体分布接近one-hot。因此调整到合适的温度系数对最终结果影响很大,而本文提出了自适应的方法,将温度系数的计算和模型融合到一起。
τ
x
j
=
S
i
g
m
o
i
d
(
W
j
2
L
e
a
k
y
R
e
L
U
(
W
j
1
[
n
ˉ
j
∥
x
j
]
)
)
\tau_{x_{j}}=Sigmoid\left(\mathbf{W}_{j}^{2} LeakyReLU \left(\mathbf{W}_{j}^{1}\left[\bar{n}_{j} \| x_{j}\right]\right)\right)
τxj=Sigmoid(Wj2LeakyReLU(Wj1[nˉj∥xj])) 其中W为可学习参数,而x为特征,
n
j
n_j
nj表示统计特征(均值,累积分布cdf)