• multi-domain 优化


    《One Model to Serve All: Star Topology Adaptive Recommender for Multi-Domain CTR Prediction 》

    2018年阿里巴巴应用在广告系统上的推荐架构。同时预估19个domain的ctr 任务。

    论文大概内容翻译

    Abstract

    1. 传统工业做法是每一个domain单独训练一个ctr模型。但是在大型应用场景里,会有多domain的预测任务。

    2. 不同domain的用户有异有同, data distribution may be different in different domains. 很难用一个模型预测好所有 domain。

    3. 这篇论文提出用一个 STAR 模型 serve all domains effectively。

    4. STAR 有星结构,有 shared parameters 也有 domain-specific parameters。

    5. 这个结构已经应用于阿里巴巴的广告系统里,带来了 8%的 ctr 提升,6% 的收入提升。(这篇论文有多处笔误,后面又写了 6%ctr 提升)

    Introduction

    1. 淘宝的CTR 预测需要应用到不同的场景里,最具代表性的有首页banner的店铺推荐,还有猜你喜欢,以及只有少量数据的天猫农场。

    2. 不同的domain有重合的用户,share information between domains 有利于模型学习。

    3. 但是同一个用户在不同的domain也会有不同的表现。result in domain-specific data distributions

    4. 如果将所有 domain数据混在一起训练,可能无法提升所有的 domain。

    5. 如果每个domain训练单独的模型:无视domain之间的共性,让数据量少的domain学习不充分;线上维护多目标性有成本。

    6. 本论文中,我们定义 (x, y, p ):

      其中x 是 common feature,例如 user profile, item feature, user historical behavior, context feature等。

      y 是 0,1 的 click label

      p 是 domain indicator,代表是哪一个 domain。

      已知 (x, y) 不同的 domain 有不同的分布。

    7. 常见解决此类问题的方法是 multi-task learning

      mt 和 md 的主要区别在于是否预测的同一个目标

      "directly adapting multi-task approaches to multi-domain ctr prediction cannot sufficiently exploit the domain relationship in the label space to enhance learning"

      我的理解是:常见的 mt 是底层 share-embedding,上层过不同的任务。缺少让所有 examples一起 update的unit。

    8. 本论文提出的STAR

      centered parameters 用来学习 common knowledge

      domain-specific parameters capture specific behaviors

      每层都是 element-wise product of STAR

      考虑到参数大多数来源于 embedding layer,新添加的参数可以忽略不计。

    9. 本文主要贡献

      a. 提出 STAR 结构用来学习 multi-domain ctr prediction

      b. partitioned normalization

      c. auxiliary netowrk 

      考虑到 domain_indicator 很重要,于是单独用一个简单的2层fully-connected 网络学习它的 embedding。(我觉得论文这里笔误了,因为它说 embeddings are fed to then auxilary network 不可能是个循环网络呀)

     

    Related Work

    single-domain ctr prediction

    multi-task learning

    multi-domain learning

    Proposed Approach

    3.1 Multi-Domain CTR Prediction

    首先 embedding layer: 将 raw feature(user_features, item_features, context features) => dense vecotr (我们的 rosseta 做的事情)

    aggregate: 将不定长的 dense vectors aggregate 成 fixed-length vectors(我们的hermes 会将 slot 一致的 embedding 进行 sum-pooling)

    fed into multi-layer neural network

    final ctr predictor

    3.2 Architecture Overview

    为了参数量考量,所有domain share feature embeddings. 

    embedding layers -> pooled to get fixed sizes -> partitioned normalization layer -> fed into star FCN (consist of shared centered FCN and domain-specific FCN) -> 结合 auxiliary network 给出最后 prediction。

    (1) PN

    有两个参数,scaler/bias 都是 global scaler/bias 和当前 domain 的结合。

    (2) STAR TOPOLOGY fully-connected neural network 

    假设有M个 domain,则一共有  M+1  FCN,1指的是 centered FCN。

    (3) auxiliary network 

    传统方法中,all features all treated equally。于是可能很难让模型自己捕捉到 domain indicator。

    auxiliary network: take domain indicator as ID input, map to embedding, concate with other features => 2 layer fully connected network => output as sa

    最终和 FCN 的输出取一个 softmax as the final prediction. 

    loss function: minimize cross entropy for all domains

    4 EXPERIMENTS

    data:19 domains in Alibaba production data. 一天训练,一天测试。不同domain的ctr 差距很大, 1.27% ~ 12.03%

    models: 所有的methods 都使用了 auxiliary network。

    metrics: impression weighted gauc

    论文里面的几点结论:

    - 多目标会损伤某些domain的auc指标

    - top layers sharing information 也很重要

    - explicitly model domain informations 比 implicitly modeling domain relationship 要好

    4.3 Ablation Study

    1. PN VS BN , PN 胜利

    2. FCN VS no FCN,  FCN 胜利

    3. FCN + PN boost performance

    4. BN VS LN VS PN: 

      这里的 LN 是 instance-based, 区分channel。发现 LN,PN 都比 BN 好。说明只要区分 channel 就会比base好。

      说明:layer normalization是以 instance 维度,归一化所有特征。

           bn 是以 batch维度,归一化相同特征。

    5. auxiliary network improves all methods consistently. 

    6. 用 predicted_ctr / true_ctr in all domains,可以看出是否学习到了 domain info。

    4.4 Production

    有些domain has traffic peaks, domain的数据分布在不同时刻会不一致 =》 causing model instable。

    阿里解决办法:keep a buffer, shuffled first, then sampled to construct a mini-batch.  

    push也有一样的问题,发送push的阶段,数据就多。可以统计每个小时训练数据占比。

    补充:

    看了阿里的另一篇 DIEN 以后,对 auxiliary -network 有了另一个想法。

    https://zhuanlan.zhihu.com/p/181685769

    虽然都是18年的,但是应该 multi-domain 在这篇之后。DIEN 是 base line。

    Multilayer Perceptron (MLP) 首先,对一类embedding向量做pooling操作,然后不同类的pooling向量进行聚合,最后,聚合的向量输入到MLP中做最后的预测。

    首先,所有的特征通过embedding layer进行转换;然后,DIEN采取两步刻画兴趣演进:interest extractor layer基于行为序列抽取兴趣序列,interest evolving layer建模与目标商品相关的兴趣的演进过程。最后,兴趣的表示和广告、用户、上下文特征的embedding vectors拼接后,输入到MLP进行最后的预测。

    之前一直不懂 auxiliary-network 为什么描述成:

    the domain indicator is first mapped into embedding and then fed with other features depicting the domain to the auxiliary network. 实际上是代表的意思应该是说,domain indicator 先通过 embedding layer 映射成了 embedding(学习到的),然后再 concat 一些 (0,1)的特征,最终输入给 auxiliary network。

    但是在我们模型里面,没有办法将 bias,vec 连接在一起。但是本质上可以看做,复杂网络和 auxiliary network 都 share domain_indicator 这个特征。所谓的 other features,应该是 domain * topic64 之类的。。。

     
  • 相关阅读:
    第4周课前测试考试题
    第3周课前测试考试题
    200行自定义异步非阻塞Web框架
    Web框架之Tornado
    redis总结
    Django之ModelForm组件
    Rabbitmq队列
    Git分布式版本控制系统
    Django REST framework
    python之路1
  • 原文地址:https://www.cnblogs.com/toonice/p/14898785.html
Copyright © 2020-2023  润新知