四、DeepCrossing
人工特征组合在很多模型中扮演非常重要的角色,但对于
web-scale
任务而言,由于特征数量非常庞大,人工组合特征不太现实。论文
“Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features”
提出了Deep Crossing
模型,该模型利用深度神经网络来自动组合特征从而生成高阶特征。虽然
Deep Crossing
模型能够自动组合原始特征,但是收集原始数据并提取原始特征仍需要用户的大量精力。
4.1 原始特征
在搜索广告
sponsored search
任务中,我们有大量的原始特征,每个原始特征都用一个向量表示。论文考察的原始特征包括:用户
Query
:用户的搜索文本。广告主竞价
Keyword
:广告主的竞价关键词。广告
Title
:广告的标题文本。对于
Query,Keyword,Title
等文本特征,论文通过将文本字符串转换为字符级的3-gram
的形式,得到一个 49292 维的向量。其中 49292 为3-gram
词典大小。MatchType
:广告主指定的关键词匹配类型,分为exact,phrase,broad,contextual
四种。论文将其转换为一个 4 维的
one-hot
向量。CampaignID
:营销campaign
的ID
。
由于广告系统中可能有百万级的
campaign
,因此经过one-hot
之后的campaign
特征维度非常高,这会导致模型尺寸非常大。论文的解决方案是:使用一组特征来描述
campaign
特征:CampaignID
特征:进行one-hot
,但是ont-hot
向量仅仅包含点击次数最多的10000
个campaign
的ID
,剩余的所有campaign
被分配到第10001
个slot
。CampaignIDCount
特征:对于分配到第10001
个slot
的剩余campaign
,提供每个campaign
的统计特征(如曝光次数、平均CTR
等),该特征是计数特征counting feature
。
用到的特征如下图所示:
4.2 模型
DeepCrossing
模型的输入是原始特征,模型有四种类型的Layer
:Embedding Layer
:将原始特征映射成embedding
向量。假设原始特征
one-hot
向量为 ,field i
在向量中的起始位置为 、终止位置为 (包含)。则embedding
层的输出为:其中 为参数, 为第 个
embedding
的维度。通常有 ,这使得
embedding
之后的维度大大小于原始特征维度。对于某些维度较小的原始特征(如:维度小于 256),无需进行
embedding
层,而是直接输入到Stacking Layer
层。如图中的Feature #2
。这是在模型大小和信息保留程度之间的折衷:
- 完全保留信息(原始输入),则可能使得模型过大
- 全部使用
embedding
,则可能信息丢失太多
Stacking Layer
:所有embedding
特征和部分原始特征拼接成一个向量:其中 表示特征拼接, 为原始特征的数量, 为
embedding
向量。如果是直接输入的原始特征,则 表示该原始特征的one-hot
向量。Residual Unit Layer
:基于残差单元Residual Unit
构建的残差层,其输出为:其中 为残差单元:
注意:在一个
DeepCrossing
网络中可以有多个残差层。Scoring Layer
:sigmoid
输出层。其输出为:其中 为参数, 为前一层的隐向量, 为总的层数。
模型的损失函数为负的
Logloss
:DSSM
模型也可以认为是执行了特征交叉。DSSM
模型有两路输入:Query
、Ad Text
。模型分别抽取特征,最后计算二者的cosin
距离,该距离就代表了二者的特征交叉。与
DeepCrossing
相比,DSSM
的特征交叉发生的时间比较靠后。从效果上讲,DeepCrossing
的特征交叉发生时间靠前的效果更好。
4.3 实验
实验结果表明:是否包含某些原始特征对模型效果影响较大。
下图比较了引入不同特征的情况下,每个训练
epoch
结束时的验证集logloss
。该logloss
除以All_features
模型的最低logloss
来归一化。All_features
:使用所有的特征。Without_Q_K_T
:不使用counting
特征,且不使用Query,Keyword,Title
等文本特征。Only_Q_K
:仅使用Query,Keyword
特征。Without_position
:不使用counting
特征,且不使用广告的位置信息。
下图比较了是否包含
counting
特征的效果。logloss
除以All_without_counting
模型的最低logloss
来归一化。All_with_counting
:使用包含counting
在内的所有特征All_without_counting
:使用剔除counting
后的所有特征。Counting_only
:仅仅使用counting
特征。
DeepCrossing
和DSSM
的比较:评估指标为AUC
,其中以DSSM
的结果作为基准来归一化。text_cp1_tn_s
、text_cp1_tn_b
为论文构造的两个训练集,text_cp1_tn_s
1.94亿样本,训练集text_cp1_tn_b
29.3亿样本。评估在对应的测试集上进行:验证集 0.49亿样本,测试集 0.45亿样本。