• Partial Transfer Learning with Selective Adversarial Networks学习笔记


    Partial Transfer Learning with Selective Adversarial Networks学习笔记

    Abstract

    作者针对部分预适应,提出了选择性对抗网络(SAN),它通过分离源域非共享类别的样本来避免负迁移,同时通过最大程度地匹配共享类别空间中的样本分布来促进正迁移

    introduce

    本文介绍了选择性对抗网络,它极大地扩展了深度对抗适应的能力,以解决从大规模域到小规模域的部分迁移学习。SAN将共享类别空间中的源域样本分布和目标域样本分布对齐,更重要的是,将源域中非共享类别中的样本分离。与以前的方法相比,该方法一个关键的改进是能够同时促进相关数据的正向迁移和减轻不相关数据的负向迁移,还可以在端到端框架中进行训练。

    Partial Transfer Learning

    本文作者提出部分域适应,源域表示为(D_s={(x_i,y_i)}^{n_s}_{i=1}),其中(n_s)表示源域样本的数量,源域拥有类别的个数为(|C_s|)。目标域表示为(D_t={x_i}^{n_s+n_t}_{i=n_s+1}),其中(n_t)表示目标域未标注样本的数量,目标域拥有类别的个数为(|C_t|)。目标域的类别空间是源域类别空间的子集:(C_tsub C_s),即(|C_s|>|C_t|).源域与目标域的概率分布分别由p与q表示,且$p_{C_t} eq q (,其中)p_{C_t}(表示源域中属于目标域类别空间)C_t(的样本的分布。本文的目标就是设计一个深度神经网络模型,通过学习可迁移的特征)f=G_f(x)(以及适应分类器)y=G_y(f)$来减小域间差异。

    在部分域适应中存在两大难点:

    • 由于目标域的样本未标注,源域域目标域的概率分布不同,所以在源域(D_s)训练的分类器(G_y)不能直接运用到目标域(D_t)
    • 无法得知源域类别空间(C_s)中的哪部分与目标域类别空间(C_t)共享,因为(C_t)在训练中是无法访问的。

    一方面,该方法要减轻由源域中非共享类别(C_s/C_t)造成的负迁移;另一方面,减少(p_{C_t})(q)之间的分布差异,促进正向迁移,实现共享类别空间(C_t)中的知识迁移。

    Domain Adversarial Network

    对抗网络能够有效地提取可迁移特征,其中包括一个域分类器(G_d)来区别源域与目标域,还有一个特征提取器经过微调后来欺骗域分类器。

    为了得到域不变性特征(f),通过最大化域分类器(G_d)的损失来学习特征提取器(G_f)的参数( heta_f),通过最小化域分类器的损失来学习(G_d)的参数( heta_d)的参数。同时还要最小化标签分类器(G_y)的损失。

    则对抗网络的目标函数为:

    [C_0( heta_f, heta_y, heta_d)=frac{1}{n_s}sumlimits_{x_iin D_s}L_y(G_y(G_f(x_i)),y_i)-frac{lambda}{n_s+n_t}sumlimits_{x_i in D_scup D_t}L_d(G_d(G_f(x_i)),d_i)(1) ]

    其中的(lambda)参数为权衡参数。当训练收敛后,参数(hat{ heta}_f,hat{ heta}_y,hat{ heta}_d)表达公式(1)的鞍点:

    [(hat{ heta}_f,hat{ heta}_y)=argminlimits_{ heta_f, heta_y}C_0( heta_f, heta_y, heta_d) ]

    [(hat{ heta}_d)argmaxlimits_{ heta_d}C_0( heta_f, heta_y, heta_d) ]

    Selective Adversarial Network

    由于源域的非共享类别(C_s/C_t)会造成负迁移,所以要将属于非共享类别的样本分离。

    作者将域分类器分为(|C_s|)个类别级的域分类器(G^k_d,k=1,...|C_s|),每个分类器负责类别为k的源域样本与目标域样本的匹配。但是由于目标域的样本未标注,所以对于一个目标域的样本来说,我们不知道应该使用哪个域分类器(G^k_d)。于是作者将类别预测器(hat{y}_i=G_y(x_i))的输出作为该目标域样本(x_i)属于对应源域类别空间(C_s)中某个类别的概率

    即可以使用(hat{y}_i)的输出来表示每个目标域样本使用(|C_s|)个域分类器(G^k_d)的概率。这个概率加权域鉴别器损失为:

    [L'_d=frac{1}{n_s+n_t}sumlimits^{|C_s|}limits_{k=1}sumlimits_{x_iin D_scup D_t}hat{y}_i^kL^k_d(G^k_d(G_f(x_i)),d_i) ]

    (L^k_i)为对应第k个(G^k_d)域分类器的交叉熵损失,(d_i)表示为样本(x_i)的域标签。

    与公式(1)中的单一域分类器相比,这里的多级域分类器拥有细粒度适应性,这个细粒度适应性拥有以下好处:

    1. 它避免了将每个样本强硬分配给一个域分类器,这对于目标域样本来说往往是不准确的
    2. 它避免了负迁移,因为每个样本只与一个或几个最相关的类对齐,而不相关的类被概率加权域分类器损失过滤掉
    3. 概率加权域分类器损失将不同的损失放在不同的域分类器上,它自然地学习具有不同参数( heta^k_d)的多个域分类器;这些具有不同参数的域分类器可以促进每个样本的正向迁移。

    image-20201112103252605

    SAN模型架构图:其中f表示提取出来的特征,(hat{y})表示预测的样本标签,(hat{d})表示预测的域标签,(G_f)表示特征提取器,(G_y)(L_y)表示标签预测器与其损失,(G^k_d)(L^k_d)表示域分类器和它的损失。蓝色部分表示类别级对抗网络。

    除了上面的实例级权重机制,作者还提出了另外一个类别级权重方法来进一步减小源域非共享类别样本造成的负迁移影响。

    作者观察到只有负责目标域类别的域分类器对促进正迁移有效,而其他负责源域非共享类别的分类器仅引入噪声并恶化共享类别空间中源域和目标域之间的正迁移。因此,需要对负责源域非共享类别的域分类器进行降权,这可以通过对这些域分类器进行类级权重衡量来实现。

    如果一个目标域样本不属于非共享类别,那么它的概率(y^k_i,kin C_s/C_t)就会很小,于是作者这样来对域分类器进行降权

    [L_d=frac{1}{n_s+n_t}sumlimits_{k=1}limits^{|C_s|}[(frac{1}{n_t}sumlimits_{x_iin D_t}hat{y}^k_i) imes(sumlimits_{x_iin(D_scup D_t)}hat{y}^k_iL^k_d(G^k_d(G_f(x_i)),d_i)](4) ]

    其中((frac{1}{n_t}sumlimits_{x_iin D_t}hat{y}^k_i))表示每个类别的类别级权重。

    尽管公式(4)可以选择性的进行知识的迁移,但是它依赖于概率(hat{y}_i=G_y(x_i)).所以作者进一步使用熵最小化原理来进行标签预测器(G_y)的精炼。这个准则是通过在目标域(D_t)上最小化概率(hat{y}^k_i)上的熵E来实现的:

    [E=frac{1}{n_t}sumlimits_{x_tin D_t}(H(G_y(G_f(x_i))))(5) ]

    其中(H(·))表示条件熵损失函数,(H(G_y(G_f(x_i)))=-sumlimits^{|C_s|}limits_{k=1}hat{y}^k_iloghat{y}^k_i)

    通过最小化公式(5),标签预测器(G_y(x_i))可以直接访问目标域未标注样本,并且将修改自身以通过目标低密度区域,从而以最小的预测不确定性给出更准确的概率(hat{y}_i)

    总的目标函数为:

    image-20201112115253734

    找到参数(hat{ heta_f},hat{ heta_y},hat{ heta_d^k})满足:

    image-20201112115318657
  • 相关阅读:
    五子棋算法
    记录2个算法知识(常见面试题)
    python基础面试题之类型转换(字典篇)
    Python中的多线程和多进程的应用场景和优缺点。
    python基础面试题之输入年月日,判断这个日期是这一年的第几天。
    Python装饰器(面试题)
    linux终止进程
    nest_asyncio出现错误
    sanic 相关的插件
    linux如何配置nginx全局变量
  • 原文地址:https://www.cnblogs.com/Jason66661010/p/13966173.html
Copyright © 2020-2023  润新知