热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

深入解析梯度反转层(GRL)的工作原理与应用

近期研究了迁移学习领域中的DANN和DAAN算法,发现这两种方法均采用了梯度反转层(GRL)。本文将重点探讨GRL的工作机制及其在DANN中的具体应用,解释其如何通过反向传播过程中的梯度反转,实现源域和目标域之间的特征解耦,从而提升模型的泛化能力。
  • 最近在看迁移学习中的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前的层)的参数。而域分类器精度差,因为没次梯度更新都不会使特征层产生的源数据特征和目标数据特征更加有区分度,反而由于翻转层,它们的区别越来越小,进而达到了混淆目标数据和源数据的目的,所以最终源数据和目标数据几乎边缘分布相同。

推荐阅读
author-avatar
有海的地方最美_171
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有