Skip to content

Latest commit

 

History

History
157 lines (138 loc) · 4.49 KB

aitm.md

File metadata and controls

157 lines (138 loc) · 4.49 KB

AITM

简介

在推荐场景里,用户的转化链路往往有多个中间步骤(曝光->点击->转化),AITM是一种多任务模型框架,充分利用了链路上各个节点的样本,提升模型对后端节点转化率的预估。

AITM

  1. (a) Expert-Bottom pattern。如 MMoE
  2. (b) Probability-Transfer pattern。如 ESMM
  3. (c) Adaptive Information Transfer Multi-task (AITM) framework.

两个特点:

  1. 使用Attention机制来融合多个目标对应的特征表征;
  2. 引入了行为校正的辅助损失函数。

配置说明

model_config {
  model_name: "AITM"
  model_class: "MultiTaskModel"
  feature_groups {
    group_name: "all"
    feature_names: "user_id"
    feature_names: "cms_segid"
    ...
    feature_names: "tag_brand_list"
    wide_deep: DEEP
  }
  backbone {
    blocks {
      name: "share_bottom"
      inputs {
        feature_group_name: "all"
      }
      keras_layer {
        class_name: 'MLP'
        mlp {
          hidden_units: [512, 256]
        }
      }
    }
    blocks {
      name: "ctr_tower"
      inputs {
        block_name: "share_bottom"
      }
      keras_layer {
        class_name: 'MLP'
        mlp {
          hidden_units: 128
        }
      }
    }
    blocks {
      name: "cvr_tower"
      inputs {
        block_name: "share_bottom"
      }
      keras_layer {
        class_name: 'MLP'
        mlp {
          hidden_units: 128
        }
      }
    }
    blocks {
      name: "cvr_aitm"
      inputs {
        block_name: "cvr_tower"
      }
      inputs {
        block_name: "ctr_tower"
      }
      merge_inputs_into_list: true
      keras_layer {
        class_name: "AITMTower"
        aitm {
          transfer_mlp {
            hidden_units: 128
          }
        }
      }
    }
    output_blocks: ["ctr_tower", "cvr_aitm"]
  }
  model_params {
    task_towers {
      tower_name: "ctr"
      label_name: "clk"
      loss_type: CLASSIFICATION
      metrics_set: {
        auc {}
      }
      dnn {
        hidden_units: 64
      }
      weight: 1.0
    }
    task_towers {
      tower_name: "cvr"
      label_name: "buy"
      losses {
        loss_type: CLASSIFICATION
      }
      losses {
        loss_type: ORDER_CALIBRATE_LOSS
      }
      metrics_set: {
        auc {}
      }
      dnn {
        hidden_units: 64
      }
      weight: 1.0
    }
    l2_regularization: 1e-6
  }
  embedding_regularization: 5e-6
}
  • model_name: 任意自定义字符串,仅有注释作用

  • model_class: 'MultiTaskModel', 不需要修改, 通过组件化方式搭建的多目标排序模型都叫这个名字

  • feature_groups: 配置一组特征。

  • backbone: 通过组件化的方式搭建的主干网络,参考文档

    • blocks: 由多个组件块组成的一个有向无环图(DAG),框架负责按照DAG的拓扑排序执行个组件块关联的代码逻辑,构建TF Graph的一个子图
    • name/inputs: 每个block有一个唯一的名字(name),并且有一个或多个输入(inputs)和输出
    • keras_layer: 加载由class_name指定的自定义或系统内置的keras layer,执行一段代码逻辑;参考文档
    • mlp: MLP模型的参数,详见参考文档
    • cvr_aitm: AITMTower组件,该组件块的input的顺序不能乱写,第一个input必须是当前tower的输入,后续的inputs是依赖的前驱模块
    • output_blocks: backbone的输出tensor列表,顺序必须与下面model_params里配置的任务tower一致
  • model_params: 多目标建模相关的参数

    • task_towers 根据任务数配置task_towers
      • tower_name
      • dnn deep part的参数配置
        • hidden_units: dnn每一层的channel数目,即神经元的数目
      • 默认为二分类任务,即num_class默认为1,weight默认为1.0,loss_type默认为CLASSIFICATION,metrics_set为auc
      • loss_type: ORDER_CALIBRATE_LOSS 使用目标依赖关系校正预测结果的辅助损失函数,详见原始论文
      • 注:label_fields需与task_towers一一对齐。
    • embedding_regularization: 对embedding部分加regularization,防止overfit

示例Config

参考论文

AITM: Modeling the Sequential Dependence among Audience Multi-step Conversions with Multi-task Learning in Targeted Display Advertising