强化学习训练过程中的过度拟合(overfitting)
相关:
A.I. Learns to Drive From Scratch in Trackmania
本文讨论的是强化学习中的过度拟合问题,要知道强化学习中的过拟合和其他的监督、无监督学习的过拟合不太一样,主要是因为强化学习中的过拟合情况复杂、场景多样,难以用简单语言描述,而监督、无监督学习中的过拟合情况单一容易描述,所以在强化学习中对于过拟合的问题都是极少的,或者是要针对特定情况给出举例的,而本文就依照这个赛车游戏问题给出一种情况的强化学习过拟合问题。
在这个游戏中(A.I. Learns to Drive From Scratch in Trackmania)是使用DQN进行训练的,由于这个这个游戏环境比较复杂,因此DQN训练的agent的episode的长度增长十分的缓慢,由于episode长度增长缓慢反之导致agent对新场景见的频率极低,而这反过来加剧了agent的episodes的长度的训练困难性,于是陷入到循环困难中导致DQN难以有很好的效果和算法性能,可以看到这种问题的出现就是因为游戏难度大导致agent长期陷入到较短episodes环境中从而出现了对较短路径的过拟合于是更难以探索更长episode了。
为了解决这里的过拟合问题,原作者使用随机生成赛车出发点的方式进行训练,结果发现很好的克服了过拟合问题,使agent的性能在训练过程中有了明显提升。在这里使用随机生成出发点的方法和随机生成不同的小地图进行训练时同样的作用的,都是克服agent的过拟合的。
这时候可能有人会问,为什么在DQN运行在atari游戏环境下没有出现过拟合,而在这个赛车游戏中出现了过拟合了呢?其实答案很简单,那就是因为这里的这个赛车游戏难度明显高于大部分的atari游戏,导致agent的episode长度很短,并且难以增长,所以导致大部分的训练数据(采集到的数据)都停滞在较短的episodes的背景下,由此产生了大量的相似训练数据,于是导致出现了这里的过拟合问题;而atari游戏相对简单些,DQN在atari游戏中可以保持一个比较好的episode长度的增长速率,这样随着agent在atari游戏中episode的长度增加自然就避免了agent陷入过拟合问题中。可以认为这里的赛车游戏出现的过拟合就是因为agent陷入了较差的局部最优解中,导致大量的低质量的探索数据,从而产生了过拟合,反过来导致agent在局部最优中更加难以跳出,如此陷入反复恶化的情景中。








强化学习算法library库:(集成库)
https://github.com/Denys88/rl_games
https://github.com/Domattee/gymTouch
个人github博客地址:
https://devilmaycry812839668.github.io/
强化学习训练过程中的过度拟合(overfitting)的更多相关文章
- 深度学习训练过程中的学习率衰减策略及pytorch实现
学习率是深度学习中的一个重要超参数,选择合适的学习率能够帮助模型更好地收敛. 本文主要介绍深度学习训练过程中的6种学习率衰减策略以及相应的Pytorch实现. 1. StepLR 按固定的训练epoc ...
- TensorFlow之tf.nn.dropout():防止模型训练过程中的过拟合问题
一:适用范围: tf.nn.dropout是TensorFlow里面为了防止或减轻过拟合而使用的函数,它一般用在全连接层 二:原理: dropout就是在不同的训练过程中随机扔掉一部分神经元.也就是让 ...
- 从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化
从有约束条件下的凸优化角度思考神经网络训练过程中的L2正则化 神经网络在训练过程中,为应对过拟合问题,可以采用正则化方法(regularization),一种常用的正则化方法是L2正则化. 神经网络中 ...
- 如何使用自对弈强化学习训练一个五子棋机器人Alpha Gobang Zero
前言 2016年3月,Alpha Go 与围棋世界冠军.职业九段棋手李世石进行围棋人机大战,以4比1的总比分获胜,在当时引起了轩然大波.2017年10月,谷歌公布了新版五子棋程序 AlphaGo Ze ...
- 关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录)
关于HTML中,绝对定位,相对定位的理解...(学习HTML过程中的小记录) 作者:王可利(Star·星星) HTML中 相对定位:position:relative; 绝对定位:position ...
- 利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录)
利用JQ实现的,高仿 彩虹岛官网导航栏(学习HTML过程中的小记录) 作者:王可利(Star·星星) 总结: 今天学习的jQ类库的使用,代码重复的比较多需要完善.严格区分大小写,在 $(" ...
- html/css 盒子布局 Margin 、Padding 、border 以及 清除浮动的知识 (学习HTML过程中的小记录)
html/css 盒子布局 Margin .Padding .border 以及 清除浮动的知识 (学习HTML过程中的小记录) 作者:王可利(Star·星星) width 是"宽 ...
- (转)理解YOLOv2训练过程中输出参数含义
最近有人问起在YOLOv2训练过程中输出在终端的不同的参数分别代表什么含义,如何去理解这些参数?本篇文章中我将尝试着去回答这个有趣的问题. 刚好现在我正在训练一个YOLOv2模型,拿这个真实的例子来讨 ...
- tensorflow训练过程中内存溢出
罪魁祸首是训练过程中给模型传值时的如下语句:
- 理解YOLOv2训练过程中输出参数含义
原英文地址: https://timebutt.github.io/static/understanding-yolov2-training-output/ 最近有人问起在YOLOv2训练过程中输出在 ...
随机推荐
- Java抽象类 小白版
什么是抽象 抽象就是从多个事物中将共性的,本质的内容抽象出来. 什么是抽象类 Java语言中,用abstract关键字修饰的类叫作抽象类.类本身是不存在的,所以抽象类无法创建对象无法实例化. 在面向对 ...
- C++17新特性
C++17新特性 语言特性 使用auto声明非类型模板参量 折叠表达式 提供模板参数包的折叠 template <typename... Args> bool logicalAnd(Arg ...
- 国产化适配——人大金仓V8R6(1)
本文主要记录kingbase安装及存储过程修改相关内容,或有错漏,请指正. 原数据库:Mysql8.0.31 现数据库:KingbaseES V008R006C008M001B0030 on x86_ ...
- 😶🌫️ SpringBoot中MongoDB的骚操作用法
不知道大家在工作项目中有没有使用MongoDB,在哪些场景中使用.MongoDB作为NoSQL数据库,不像SQL数据库那样,可以使用Mybatis框架. 如果需要在SpringBoot中使用Mongo ...
- C#/.NET/.NET Core优质学习资料,干货收藏!
前言 今天大姚给大家分享一些C#/.NET/.NET Core优质学习资料,希望可以帮助到有需要的小伙伴. 什么是 .NET? .NET 是一个免费的.跨平台的.开源开发人员平台,用于构建许多不同类型 ...
- TreeMap源码详解—彻底搞懂红黑树的平衡操作
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对后者做了一层包装,也就是说TreeSet里面有一个TreeMap(适配器模式). Java TreeMap实现了Sorted ...
- JavaScript – Proxy
参考 阮一峰 – Proxy 介绍和使用 Proxy 的作用是代理对象, 消费者不直接使用对象, 而是使用代理对象. 一般上做代理的目的就是想拦截对象访问做一些别的事情. 比如当对象改变以后, 同步 ...
- QT6框架也能开发Web浏览器应用程序:QT6框架如何编译运行测试WebAssembly应用程序?
QT6框架也能开发Web浏览器应用程序:QT6框架如何编译运行测试WebAssembly应用程序? 简介 本文将介绍如何使用QT6框架开发Web浏览器应用程序,并介绍具体的编译运行测试WebAssem ...
- Adobe Acrobat XI Pro 合并多个PDF文件时弹出Flash提示
事件起因: 某知名同事在使用 Acrobat XI Pro 软件合并多个PDF文件时弹出Flash提示报错,需要安装 FlashPlayer 解决办法: 合并文件的时候右上角选项-文件类型,选择& ...
- 14. 迭代器、生成器、模块与包、json模块
1.迭代器 1.1 迭代器介绍 迭代器是用来迭代取值的工具 每一次迭代得到的结果会作为下一次迭代的初始值,单纯的重复并不是迭代 # while循环实现迭代取值 a = [1, 2, 3, 4, 5, ...