Unsupervised Domain Adaptation by Backpropagation

文章目录

Ganin Y. and Lempitsky V. Unsupervised Domain Adaptation by Backpropagation. ICML 2015.

监督学习非常依赖标签数据, 但是获得大量的标签数据在现实中是代价昂贵的一件事情, 这也是为何半监督和无监督重要的原因.
本文提出一种利用GRL来进行domain adaptation的方法, 感觉本文的创新点还是更加偏重于结构一点.

主要内容

image-20210214090228048

接下来的叙述的方式可能和原文的有一点点的出入.

首先整个网络的框架包括一个用于提取特征的 G f G_f Gf, 可见其是共享的, 提取的到的特征会分别进入上下两个 G c , G d G_c, G_d Gc,Gd.
其中, G c G_c Gc 是普通的分类器, 当然这要求最开始的输入我们是有对应的标签的, G f + G c G_f + G_c Gf+Gc也就是我们最后所需要的整个网络.
G d G_d Gd的最后是一个二分类器, 用于区别输入的样本是来自有标签的数据集还是目标数据集.

我们来看一下损失

∑ i = 1 ⋯ N , d i = 0 L y i ( θ f , θ c ) + λ ⋅ ∑ i = 1 ⋯ N L d i ( θ f , θ d ) \sum_{i=1\cdots N, d_i=0} \mathcal{L}_y^i (\theta_f, \theta_c) + \lambda \cdot \sum_{i=1\cdots N} \mathcal{L}_{d}^i (\theta_f, \theta_d) i=1N,di=0Lyi(θf,θc)+λi=1NLdi(θf,θd)

首先关于 G f , G c G_f, G_c Gf,Gc最小化 L y \mathcal{L}_y Ly, 关于 G d G_d Gd则是最小化 L d \mathcal{L}_d Ld, 同时关于 G f G_f Gf最大化 L d \mathcal{L}_d Ld.

直观上讲就是, 我们要求 G f G_f Gf提取的特征使得分类器能够区分出输入的类别, 而下半部分则是一种对抗的思想, G f G_f Gf提取的特征希望 G d G_d Gd不能够区别出输入来自有标签的域还是目标域, 对应的 G d G_d Gd是努力去区别开来.

为了实现这一点, 本文利用了一种GRL的技术, 即梯度从 G d G_d Gd回传到 G f G_f Gf的时候会变换梯度的方向.

代码

import torch
from torch.autograd import Function

class RevGrad(Function):

    @staticmethod
    def forward(ctx, inputs):
        return inputs

    @staticmethod
    def backward(ctx, grad_outputs):
        return grad_outputs.neg()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值