【领域适应】训练梯度反向层(gradient reversl layer, GRL)

写在前面:本文纯属个人项目需用到GRL,特此记录调试过程的一些经验,如有问题欢迎指正。
本文不对GRL做介绍,了解学习概念可往:GRL (其中第二高赞的问题令人深思,个人觉得很有道理)
下面进如正文:

  1. 验证分类器有效:在调试GRL前,先单独对分类器进行训练,确保网络能够进行分类;
  2. 验证GRL是否工作:在输出结果层(最后一层)后面加上GRL,令整个梯度都是反向的,并且将GRL参数设置为常数1,观察训练loss是否越来越大;
  3. 以上功能确保正常后,即可将GRL加到网络进行训练。理想的网络分类器损失先下降后增加的趋势,最后网络无法对其分类。
    然而,实验中出现了分类器损失一直保持不变,既开始分类器一直学不到东西,通过修改学习率、优化器等皆无果,后面想起GRL还有一个参数,对其进行调整,网络终于开始能学着分类。所以很重要的是GRL的参数 α \alpha α(既反向梯度所乘系数),我采用的是原论文的系数设置,随着迭代次数的增加, α \alpha α由0增加到1。但是在调试时,发现 α \alpha α设置为0.001是能满足前面第3点提到的趋势,大一点则损失不降,因此最后设置是 α \alpha α由0增加到0.002。所以不止分类器和GRL是否有效工作很重要,GRL的参数 α \alpha α也很重要,但发现分类器损失一动不动时,试着把 α \alpha α减小一个数量级在跑跑看。

题外话:在调试时,可以选择val set或者少量数据进行训练,这样更快能看出方法是否有效,而不是一整个数据集丢进去跑,太浪费时间了!毕竟迭代的次数多了,才能看得出网络损失的趋势。同时,在进行实验时,一定要对数据集和标签进行可视化(我做的是图像的目标检测),粗略的过一遍,确保数据集的处理没有问题。
做了好几个项目,还总是没有吸取教训,希望说的点能帮到大家。

  • 19
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值