• 最近在看迁移学习中的DANN算法和DAAN算法,二者都用到了GRL层,是一种梯度翻转层,这里主要想讲一下梯度翻转层为什么有用。
  • 以DANN为例,倘若梯度翻转层不存在,那么,算法在迭代过程中,在减少Ly的时候,Gf层的各个卷积层的参数会趋向于减少Ly损失,提高标签分类精度;在减少Lg的时候,Gf层的各个卷积层的参数会趋向于减少Lg损失,也就是使得源数据和目标数据通过Gf层后的区别愈加明显,即提高域分类精度,这不是我们想要的,我们的目标是让区别越来越小,从而达到生成的目标数据特征和源数据特征相似,从而缩小边缘分布差异。最终函数收敛的时候,参数会在提高标签分类精度和提高域分类精度之间平衡。
  • 如何平衡呢?Gf前的参数尽量向着提高域分类精度方向变化,而Gf后用于标签分类的全连接层参数会向着提高标签分类精度的方向变化,也就是说,后者参数逐渐适应前者参数,而前者参数的变化有利于提高Gf后用于域分类的精度,也就是说,Gf前的参数将就域分类,Gf后用于标签分类的全连接层参数将就Gf前的参数,Gf后用于域分类的全连接层的参数将就Gf前的参数从而提高域分类精度,最终二者达到平衡,使得域分类精度很高,标签分类精度也很高,但是一旦把目标数据用于标签分类,则由于它和源数据的区别太大了(因为域分类精度高,意味着目标数据和源数据二者存在明显的特征不同,即通过Gf层之后的边缘分布差异非常大),使得他们通过Gf层后生成的特征差异很大,那么目标数据特征再通过Gf后的标签分类全连接层时得到的分类结果差异将非常大!即测试精度非常低,别忘了我们的目标是使得目标数据通过后标签分类精度大。
  • 所以不能对域分类太仁慈,它不应该提高精度,所以我们反向梯度更新,当Gf后的域分类全连接层反向传播的时候,传播到Gf的时候,让它们反向更新层数(即梯度翻转层),从而使得Gf产生的特征向着增大域分类精度,也就是缩小目标数据和源数据特征差异的方向发展,这样的话才是我们的目标,然后Gf层后的标签分类层参数会将就Gf层参数,得到好的标签分类精度,而域分类器很蒙蔽啊,反向传播了反而精度下降了,所以再继续反向传播,殊不知由于梯度翻转层,你以为你在做对的事,其实是无用功,梯度全部反向更新了。这样的话每一次迭代,Gf参数都向着促使域分类精度下降的方向变化,而Gf后的标签分类全连接层的参数向着分类精度增大的方向发展,将就Gf层的参数。域分类器则依然努力反向传播,但是由于梯度翻转层,所以最终的结果是标签分类器精度高,全连接层的参数将就特征层(Gf前的层)的参数。而域分类器精度差,因为没次梯度更新都不会使特征层产生的源数据特征和目标数据特征更加有区分度,反而由于翻转层,它们的区别越来越小,进而达到了混淆目标数据和源数据的目的,所以最终源数据和目标数据几乎边缘分布相同。

关于梯度翻转层GRL的理解相关推荐

  1. [Tensorflow2] 梯度反转层(GRL)与域对抗训练神经网络(DANN)的实现

    文章目录 概述 原理回顾 (可跳过) GRL 层实现 使用 GRL 的域对抗(DANN)模型实现 DANN 的使用案例 !!! 后记 概述 域对抗训练(Domain-Adversarial Train ...

  2. 【深度域自适应】DANN梯度反转层(GRL)理解

    加入GRL的目的是为了让领域判别器和特征提取器之间形成一种对抗.先不管标签分类器,领域判别器就是GAN里的判别器,目的就是区分出real(目标域)与fake(源域),所以领域判别器的目的同样也是最小化 ...

  3. 【深度域适配】一、DANN与梯度反转层(GRL)详解

    CSDN博客原文链接:https://blog.csdn.net/qq_30091945/article/details/104478550 知乎专栏原文链接:https://zhuanlan.zhi ...

  4. 【深度域自适应】一、DANN与梯度反转层(GRL)详解

    前言 在当前人工智能的如火如荼在各行各业得到广泛应用,尤其是人工智能也因此从各个方面影响当前人们的衣食住行等日常生活.这背后的原因都是因为如CNN.RNN.LSTM和GAN等各种深度神经网络的强大性能 ...

  5. DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介、理解、代码实现、SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略

    DL之DNN优化技术:神经网络算法简介之GD/SGD算法(BP的梯度下降算法)的简介.理解.代码实现.SGD缺点及改进(Momentum/NAG/Ada系列/RMSProp)之详细攻略 目录 GD算法 ...

  6. 谈谈我对MVC的View层实现的理解

    谈谈我对MVC的View层实现的理解 MVC框架可以把应用清晰明了地分为三个部分:Model层–数据层,View层–视图层,Controller–逻辑层,Model层负责整合数据,View层负责页面渲 ...

  7. 由翻转字符窜再次理解递归

    要求:输入一个字符串,字符串反序输出. 比如:"hello" ⇒ "olleh" 首先就看代码是什么: #include <iostream> #i ...

  8. 关于BN层的一点理解

    一直以来对BN层两个学习参数belta和gamma不太理解,今天又在知乎问题上看到了"请问batch_normalization做了normalization后为什么要变回来?"这 ...

  9. pytorch实现梯度反转层(Gradient Reversal Layer)(正确代码)

    这里写自定义目录标题 欢迎使用Markdown编辑器 新的改变 功能快捷键 合理的创建标题,有助于目录的生成 如何改变文本的样式 插入链接与图片 如何插入一段漂亮的代码片 生成一个适合你的列表 创建一 ...

最新文章

  1. 云智易获上海CIO联盟“年度物联网云平台技术创新奖”
  2. 全文搜索技术——Lucene
  3. P2285 [HNOI2004]打鼹鼠
  4. dubbo-环境搭建,实现一个简单地dubbo实例(附github地址)
  5. 华为服务器存储系列,华为 服务器 存储相关资料(示例代码)
  6. 在大厂工作5年的大神,给前端初学者的四大建议
  7. oracle time model,通过案例学调优之--OracleTimeModel(时间模型)
  8. Linux 如何查看是否开启journal
  9. Ubuntu 安装绿联CM448无线网卡驱动
  10. AI如何在医疗中大显身手?
  11. TopoDOT | 基于三维激光LiDAR点云数据自动提取三维矢量特征信息——道路横断面
  12. 深度学习教程(11) | 经典CNN网络实例详解(吴恩达·完整版)
  13. 娱乐游戏及计算机动画论文,有关游戏美术设计论文
  14. 如何搞好公司和员工的关系二:以德服人才能口服心服
  15. 正则表达式数字、字母、中文、符号
  16. Android surfaceview 自定义相机 拍照(闪光灯、前后摄像头)
  17. 圆角半角数据库_数据库使用技巧——SQL 全角与半角切换
  18. 前端模板template-web简单使用
  19. 【深度学习模型】讲讲横扫nlp任务的BERT模型
  20. 论文:Pyramid Vision Transformer

热门文章

  1. 非正版win7升级win11教程
  2. 日事清「企业统计」使用详解 leader想看的数据都在这里
  3. 超实用4款办公应用,轻松提早下班时间
  4. 信创国产化的低代码平台,0元任君选购
  5. 简单开源java ssm_[VIP源码]【S006】SSM(Spring+Spring MVC+Mybatis) java开源博客管理系统项目源码...
  6. java code combat_「网易官方」极客战记(codecombat)攻略-森林-乡村漫游者-village-rover...
  7. 用QEMU模拟ARM开发板,搭建Linux kernel运行环境
  8. Android 根目录listFiles()文件列表返回值为null
  9. 基本排序算法python实现
  10. 锁屏界面的小锁图标UI异常,竖屏不居中,显示在右边。锁屏小锁图标在底部会与提示文字重叠。