DCN

简介

Deep&Cross Network(DCN)是在DNN模型的基础上,引入了一种新型的交叉网络,该网络在学习某些特征交叉时效率更高。特别是,DCN显式地在每一层应用特征交叉,不需要人工特征工程,并且只增加了很小的额外复杂性。

deepfm.png

配置说明

model_config: {
  model_class: 'DCN'
  feature_groups: {
    group_name: 'all'
    feature_names: 'user_id'
    feature_names: 'cms_segid'
    feature_names: 'cms_group_id'
    feature_names: 'age_level'
    feature_names: 'pvalue_level'
    feature_names: 'shopping_level'
    feature_names: 'occupation'
    feature_names: 'new_user_class_level'
    feature_names: 'adgroup_id'
    feature_names: 'cate_id'
    feature_names: 'campaign_id'
    feature_names: 'customer'
    feature_names: 'brand'
    feature_names: 'price'
    feature_names: 'pid'
    feature_names: 'tag_category_list'
    feature_names: 'tag_brand_list'
    wide_deep: DEEP
  }
  dcn {
    deep_tower {
      input: "all"
      dnn {
        hidden_units: [256, 128, 96, 64]
      }
    }
    cross_tower {
      input: "all"
      cross_num: 5
    }
    final_dnn {
      hidden_units: [128, 96, 64, 32, 16]
    }
    l2_regularization: 1e-6
  }
  embedding_regularization: 1e-4
}
  • model_class: ‘DCN’, 不需要修改

  • feature_groups: 配置一个名为’all’的feature_group。

  • dcn: dcn相关的参数

  • deep_tower

    • dnn: deep part的参数配置

      • hidden_units: dnn每一层的channel数目,即神经元的数目

  • cross_tower

    • cross_num: 交叉层层数,默认为3

  • final_dnn: 整合wide part, fm part, deep part的参数输入, 可以选择是否使用

    • hidden_units: dnn每一层的channel数目,即神经元的数目

  • embedding_regularization: 对embedding部分加regularization,防止overfit

示例Config

DCN_demo.config

参考论文

DCN