鲁棒核函数的一点拙见

前言

今天在调试强化学习代码时,之前在gym-CartPole环境下运行良好的代码,在MountainCar环境下怎么也学不好,其实仔细观察loss函数,会发现一个规律性存在的问题:每个几代,就会有一个特别大的loss值出现。这一问题刚开始时我没有引起重视,后来仔细思考这极有可能是导致算法错误学习的关键原因——一些过大的误差覆盖了整个学习过程

方法

这个时候,我想到了鲁棒核函数的掩盖作用,这里我们使用了一个更为简单粗暴的方法,那就是凡是loss超过某个阈值,这一样本就不参与下降过程了(因为我是单样本下降,所以实现起来是很方便的,如果是批量下降,则要从pytorch着手实现了)

对比

我们做一个很简单的对比实验,看一看如上所述的掩盖后,究竟有无改善
做掩盖处理(阈值=100)的网络在4000代学习后,学到的play模式如GIF所示:
在这里插入图片描述
未做掩盖处理的网络在4000代学习后,学到的play模式如GIF所示:
在这里插入图片描述

很神奇,掩盖的部分使得小车忘记了前行,未掩盖的时候前行力量覆盖后退的学习,也就是说,我们的掩盖过了头,下面放宽掩盖力度(阈值=250),再来一次实验

实验进行到4000代的时候,不是特别明显的改善,不过确实让小车突破了“左右”的限制,我又让算法跑到了10000代,结果如下:
在这里插入图片描述

是不是特别顺畅了,为了保证严谨性,我将重新对掩盖和不掩盖的情形进行10000次迭代,记录结果如下

首先是不掩盖情形下进行的10000次迭代,其结果如下所示:
在这里插入图片描述
好家伙,越学越回去了,再看看完全掩盖(阈值=100)的情形下,10000代后会怎样
在这里插入图片描述
有左右之分,但是幅度还太小,接近我们阈值为250时迭代4000代时候的效果

以上实验表明,鲁棒核函数在MountainCar中有很好的效应,目前来说阈值为250是比较合适的值

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值