zoukankan      html  css  js  c++  java
  • 深度神经网络多任务学习(Multi-Task Learning in Deep Neural Networks)

    MTL 有很多形式:联合学习(joint learning)、自主学习(learning to learn)和带有辅助任务的学习(learning with auxiliary task)等。一般来说,优化多个损失函数就等同于进行多任务学习。即使只优化一个损失函数(如在典型情况下),也有可能借助辅助任务来改善原任务模型。

    两种深度学习 MTL 方法

    1、参数硬(hard)共享

    在实际应用中,通常通过在所有任务之间共享隐藏层,同时保留几个特定任务的输出层来实现。

    共享 Hard 参数大大降低了过拟合的风险。这很直观:我们同时学习的工作越多,我们的模型找到一个含有所有任务的表征就越困难,而过拟合我们原始任务的可能性就越小。

    2、参数软(soft)共享

    在软参数共享中,每个任务都有单独的模型,每个模型包含各自的参数。模型参数之间的距离会作为正则项来保证参数尽可能相似。

    推荐系统CTR(CVR)预估模型(多任务学习)之ESMMhttps://arxiv.org/abs/1804.07931

    ESMM(Entire Space Multi-Task Model,ESMM)模型创新地利用用户行为序列数据,在完整的样本数据空间同时学习点击率和转化率(post-view clickthrough&conversion rate,CTCVR),解决了传统CVR预估模型难以克服的样本选择偏差(sample selection bias)和训练数据过于稀疏(data sparsity )的问题。

    传统的CVR模型使用有点击行为的样本集来训练,同时训练好的模型又需要在整个样本空间做预测推断,即训练样本从整体样本空间的一个较小子集中提取,而训练得到的模型却需要对整个样本空间中的样本做推断预测。【样本选择偏差】

    ESMM模型两个主要的特点:

    1、在整个样本空间建模

    2、共享特征表示。ESMM模型借鉴迁移学习的思路,两个子网络的embedding层共享embedding向量(特征表示)词典。网络的embedding层把大规模稀疏的输入数据映射到低维的表示向量,该层的参数占了整个网络参数的绝大部分,需要大量的训练样本才能充分学习得到。由于CTR任务的训练样本量要大大超过CVR任务的训练样本量,ESMM模型中特征表示共享的机制能够使得CVR子任务也能够从只有展现没有点击的样本中学习,从而能够极大地有利于缓解训练数据稀疏性问题。

    ESMM模型的损失函数由两部分组成,对应于pCTR 和pCTCVR 两个子任务,其形式如下:

    在CTR任务中,有点击行为的展现事件构成的样本标记为正样本,没有点击行为发生的展现事件标记为负样本;在CTCVR任务中,同时有点击和购买行为的展现事件标记为正样本,否则标记为负样本。

    模型的实现

    ESMM模型由两个结构完全相同的子网络连接而成,我们把子网络对应的模型称之为Base模型。

    base 模型:在Base模型的网络输入包括user field和item field两部分。user field主要由用户的历史行为序列构成,具体地说,包含了用户浏览的产品ID列表,以及用户浏览的品牌ID列表、类目ID列表等;不同的实体ID列表构成不同的field。网络的Embedding层,把这些实体ID都映射为固定长度的低维实数向量;接着之后的Field-wise Pooling层把同一个Field的所有实体embedding向量求和得到对应于当前Field的一个唯一的向量;之后所有Field的向量拼接(concat)在一起构成一个大的隐层向量;接着大的隐层向量之上再接入诺干全连接层,最后再连接到只有一个神经元的输出层。

    定义损失函数:

    y = labels['cvr']
    cvr_loss = tf.reduce_sum(tf.keras.backend.binary_crossentropy(y, prop), name="cvr_loss")
    ctr_loss = tf.reduce_sum(tf.nn.sigmoid_cross_entropy_with_logits(labels=labels['ctr'], logits=ctr_logits), name="ctr_loss")
    loss = tf.add(ctr_loss, cvr_loss, name="ctcvr_loss")

    损失函数的设计:

    https://www.zhihu.com/question/268105631

    http://xudongyang.coding.me/esmm/

    http://xudongyang.coding.me/esmm-1/

  • 相关阅读:
    数据库操作,内外联查询,分组查询,嵌套查询,交叉查询,多表查询,语句小结
    重复控件Repeater和数据列表控件DataList
    网格视图控件GridView (2)
    用好VS2005之扩展membership服务(1)
    5.4 网格视图控件GridView (1)
    数据源控件
    ASP.NET程序中常用的三十三种代码
    在DataSet和DataReader之间选择
    自定义ASP.net 2.0 Membership的步骤,和entry 'AspNetSqlMembershipProvider' has already been added错误的解决
    INNER JOIN
  • 原文地址:https://www.cnblogs.com/ljygoodgoodstudydaydayup/p/10282277.html
Copyright © 2011-2022 走看看