四、DeepCrossing

  1. 人工特征组合在很多模型中扮演非常重要的角色,但对于 web-scale 任务而言,由于特征数量非常庞大,人工组合特征不太现实。

    论文 “Deep Crossing: Web-Scale Modeling without Manually Crafted Combinatorial Features” 提出了 Deep Crossing 模型,该模型利用深度神经网络来自动组合特征从而生成高阶特征。

  2. 虽然 Deep Crossing 模型能够自动组合原始特征,但是收集原始数据并提取原始特征仍需要用户的大量精力。

4.1 原始特征

  1. 在搜索广告sponsored search 任务中,我们有大量的原始特征,每个原始特征都用一个向量表示。论文考察的原始特征包括:

    • 用户 Query:用户的搜索文本。

    • 广告主竞价 Keyword:广告主的竞价关键词。

    • 广告 Title:广告的标题文本。

      对于 Query,Keyword,Title 等文本特征,论文通过将文本字符串转换为字符级的 3-gram 的形式,得到一个 49292 维的向量。其中 49292 为 3-gram 词典大小。

    • MatchType:广告主指定的关键词匹配类型,分为 exact,phrase,broad,contextual 四种。

      论文将其转换为一个 4 维的 one-hot 向量。

    • CampaignID:营销 campaignID

  2. 由于广告系统中可能有百万级的 campaign,因此经过 one-hot 之后的 campaign 特征维度非常高,这会导致模型尺寸非常大。

    论文的解决方案是:使用一组特征来描述 campaign 特征:

    • CampaignID 特征:进行 one-hot,但是 ont-hot 向量仅仅包含点击次数最多的 10000campaignID,剩余的所有 campaign 被分配到第 10001slot
    • CampaignIDCount 特征:对于分配到第 10001slot 的剩余 campaign,提供每个 campaign 的统计特征(如曝光次数、平均CTR 等),该特征是计数特征 counting feature
  3. 用到的特征如下图所示:

    四、DeepCrossing - 图1

4.2 模型

  1. DeepCrossing 模型的输入是原始特征,模型有四种类型的Layer

    • Embedding Layer:将原始特征映射成 embedding 向量。

      假设原始特征 one-hot 向量为 四、DeepCrossing - 图2field i 在向量中的起始位置为 四、DeepCrossing - 图3、终止位置为 四、DeepCrossing - 图4(包含)。则 embedding 层的输出为:

      四、DeepCrossing - 图5

      其中 四、DeepCrossing - 图6 为参数, 四、DeepCrossing - 图7 为第 四、DeepCrossing - 图8embedding 的维度。

      • 通常有 四、DeepCrossing - 图9 ,这使得 embedding 之后的维度大大小于原始特征维度。

      • 对于某些维度较小的原始特征(如:维度小于 256),无需进行 embedding 层,而是直接输入到 Stacking Layer 层。如图中的 Feature #2

        这是在模型大小和信息保留程度之间的折衷:

        • 完全保留信息(原始输入),则可能使得模型过大
        • 全部使用 embedding,则可能信息丢失太多
    • Stacking Layer:所有 embedding 特征和部分原始特征拼接成一个向量:

      四、DeepCrossing - 图10

      其中 四、DeepCrossing - 图11 表示特征拼接,四、DeepCrossing - 图12 为原始特征的数量,四、DeepCrossing - 图13embedding 向量。如果是直接输入的原始特征,则 四、DeepCrossing - 图14 表示该原始特征的 one-hot 向量。

    • Residual Unit Layer:基于残差单元 Residual Unit 构建的残差层,其输出为:

      四、DeepCrossing - 图15

      其中 四、DeepCrossing - 图16 为残差单元:

      四、DeepCrossing - 图17

      注意:在一个 DeepCrossing 网络中可以有多个残差层。

      四、DeepCrossing - 图18

    • Scoring Layersigmoid 输出层。其输出为:

      四、DeepCrossing - 图19

      其中 四、DeepCrossing - 图20 为参数, 四、DeepCrossing - 图21 为前一层的隐向量,四、DeepCrossing - 图22 为总的层数。

    四、DeepCrossing - 图23

  2. 模型的损失函数为负的 Logloss

    四、DeepCrossing - 图24

  3. DSSM 模型也可以认为是执行了特征交叉。DSSM 模型有两路输入:QueryAd Text 。模型分别抽取特征,最后计算二者的 cosin 距离,该距离就代表了二者的特征交叉。

    DeepCrossing 相比,DSSM 的特征交叉发生的时间比较靠后。从效果上讲,DeepCrossing 的特征交叉发生时间靠前的效果更好。

4.3 实验

  1. 实验结果表明:是否包含某些原始特征对模型效果影响较大。

    • 下图比较了引入不同特征的情况下,每个训练 epoch 结束时的验证集 logloss。该 logloss 除以 All_features 模型的最低 logloss 来归一化。

      • All_features :使用所有的特征。
      • Without_Q_K_T:不使用 counting特征,且不使用 Query,Keyword,Title 等文本特征。
      • Only_Q_K:仅使用 Query,Keyword 特征。
      • Without_position:不使用 counting 特征,且不使用广告的位置信息。

      四、DeepCrossing - 图25

    • 下图比较了是否包含 counting 特征的效果。logloss 除以 All_without_counting 模型的最低 logloss 来归一化。

      • All_with_counting:使用包含 counting 在内的所有特征
      • All_without_counting:使用剔除counting 后的所有特征。
      • Counting_only:仅仅使用 counting 特征。

      四、DeepCrossing - 图26

  2. DeepCrossingDSSM 的比较:评估指标为 AUC,其中以 DSSM 的结果作为基准来归一化。

    text_cp1_tn_stext_cp1_tn_b 为论文构造的两个训练集,text_cp1_tn_s 1.94亿样本,训练集 text_cp1_tn_b 29.3亿样本。

    评估在对应的测试集上进行:验证集 0.49亿样本,测试集 0.45亿样本。

    四、DeepCrossing - 图27