本文是针对数值型特征做embedding的方法。较长的公式可以左右滑动查看
背景
图1
常用的数值型embedding方法可以分为以下三类:
No Embedding
这类方法不做embedding,而是直接用原始的数值作为特征,或者在数值上面做一些改进,例如youtube对于数值型特征分别做平方和平方根得到
例如facebook的DLRM直接用DNN对数值特征建模
直接用DNN提取。以上这些No Embedding方法无法捕获数值型特征域中的高阶信息,只是粗暴的直接利用了这些特征值。
Field Embedding
Field Embedding方法将一个域(field)内的数值型特征共享一个field embedding,简单理解就是同一个域内的特征采用同一个向量来转换。公式如下:
其中
表示第i个域对应的转换向量,d为转换后的维度。由于每一个域共享了单个embedding向量使得这种方式的表达能力也是受限的。
Discretization
离散化的方式就是将连续特征转换为离散特征(例如分桶)。将域内的特征进行离散化,然后在进行转换。
表示第j个域对应的embedding矩阵,
就是第j个域内离散化后的桶的个数。
就是离散化函数。常用的离散化函数有以下三种:
EDD/EFD(Equal Distance/Frequency Discretization)
等距or等频离散化。
等距就是每个区间大小一样,将原始特征划分为
个等宽的桶。找到最大、最小值,然后根据桶的个数进行等分
,通过下式得到每个区间内的值对应的离散值。
等频就是希望每个区间内的特征数得一样。
LD (Logarithm Discretization)
log离散化也是比较常用的离散化方法,公式如下:
TD (Tree-based Discretization).
基于树模型的离散化(例如GBDT),树本身可以通过节点的划分对不同特征值划分到不同的节点,从而对其进行离散化。虽然上述方法应用很广泛,但是存在以下三个问题:
- TPP (Two-Phase Problem):上述方法如果要用到ctr模型中都得是两阶段的,即先做离散化,然后在做模型训练,无法同模型一起优化训练。
- 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,将这三部分结合起来可用公式表示为
其中
表示第j个域对应的meta embedding矩阵,
表示automatic discretization自动离散化方法,最终的f()表示aggregation将他们融合到一起。
Meta Embedding
最直接的方式是将对每一个数值型特征值都赋予embedding,但是这会导致参数特别多。而field embedding的方式对每一个域内直接用单个向量进行转换,导致表达能力差。为了平衡该参数量和表达能力,本文设计了Meta embedding对第j个域内进行分桶后得到Hj个桶,对每个桶对应一个embedding。
Automatic Discretization
自动离散化。上述离散化方法我们可以称之为硬离散化(hard discretization),是完全限定好条件,然后将值固定划分到一个区域内。而本文所提方法可以称之为软离散化(soft),采用网络学习的方法。
将第j个特征输入到两层神经网络中,具体计算方式如上式所示,
为超参数,控制结合比例,
,
,因此计算后得到
维的向量,在通过softmax标准化得到该向量属于每一个桶的概率。
其中温度系数
控制离散化后的分布情况。硬离散化后,得到的是具体分到哪一个桶中,而这里的软离散化是分到各个桶的概率
。当温度系数接近无穷大时,离散化后的整体分布接近均匀分布;而当系数接近0时,整体分布接近one-hot。因此调整到合适的温度系数对最终结果影响很大,而本文提出了自适应的方法,将温度系数的计算和模型融合到一起。
其中W为可学习参数,而x为特征,
表示统计特征(均值,累积分布cdf)
Aggregation Function
通过自动离散化,我们可以得到对应每个分桶的概率,而每个分桶都会对应meta embedding中的一个embedding,现在需要用一些方法将这两个部分结合起来。
- Max-Pooling:选择概率最大的桶对应的embedding,这种就是之前的硬离散化
- Top-K-Sum:将最大的前K个概率对应的embedding求和,无法根本上解决DBS问题,并且没有考虑到embedding之间的相互关系
- Weighted-Average:很久分桶的概率对embedding进行加权平均,其实也很好理解,一方面,所有embedding都考虑到了;另一方面,权重大的占比大,更重要。