深度强化学习实验室
官网:http://www.neurondance.com/
来源:https://zhuanlan.zhihu.com/p/328287119
作者:网易伏羲实验室
编辑:DeepRL
在深度学习中,模型很容易过拟合到参与训练的数据集。因此,深度学习训练模型的时候通常会将数据集分成训练集和测试集,保证训练的模型在测试集上仍然有很好的性能,即模型的泛化能力。在深度强化学习的应用中,模型的泛化能力也同样重要。本文将介绍最近深度强化学习领域中提高模型泛化能力的一些方法,如域随机化、正则等。
一、泛化
什么是泛化(generalization)呢?
这里引用维基百科上关于泛化的定义:
A generalization is a form of abstraction whereby common properties of specific instances are formulated as general concepts or claims. Generalizations posit the existence of a domain or set of elements, as well as one or more common characteristics shared by those elements (thus creating a conceptual model). As such, they are the essential basis of all valid deductive inferences (particularly in logic, mathematics and science), where the process of verification is necessary to determine whether a generalization holds true for any given situation.
在机器学习任务中,泛化能力被认为是在训练集上训练后,在“未见过”的数据集上的性能。当然,这里常常有一个假设,训练的数据集和测试的数据集是同分布的,即来自于同一个领域(domain)的同一个任务(task)。
二、领域和任务
这里引用万引迁移学习[1]中关于领域(domain)和任务(task)的定义:
领域D={X, P(X)}由两个部分组成:特征空间X和特征空间的边缘分布P(X)。如果两个领域不同,它们的特征空间或边缘概率分布不同。
A domain is a pair D={X, P(X)}, which consists of two components: a feature space X and a marginal probability distribution P(X). In general, if two domains are different, then they may have different feature spaces or different marginal probability distributions.
任务T={Y, P(Y|X)}组成:给定一个领域D={X, P(X)}的情况下,一个任务也包含两个部分:标签空间Y和一个目标预测函数f(.)。目标预测函数不能被直接观测,但可以通过训练样本学习得到。从概率论角度来看,目标预测函数f(.)可以表示为P(Y|X)。
A task is defined as a pair T={Y, P(Y|X)}. Given a specific domain, D={X, P(X)}, a task consists of two components: a label space Y and an objective predictive function f(.), which is not observed but can be learned from the training data. From a probabilistic viewpoint, f(x) can be written as p(y|x).
三、泛化和迁移
如下图所示,本文讨论的是来自同一个领域同一个任务的模型泛化能力,红色框中的部分。而那些领域不同或者任务不同的情况被认为是迁移学习的范畴,蓝色框中的部分。
![](https://i-blog.csdnimg.cn/blog_migrate/581216a93ddfe4dc704a2d1139c174c5.png)
对于强化学习来说,泛化能力指的是:对于同一个领域中的同一个任务,强化学习模型在训练环境训练,在测试环境验证的模型的性能。
四、强化学习的泛化
因为机器学习中的泛化能力一般是指同分布的不同数据集上的模型的性能。
这里,主要考虑两种情况来说明强化学习模型的泛化能力:在场景A(训练集)中训练,在场景B(测试集)中测试。
1. 场景A的状态集和场景B的状态集S不一样,状态转移矩阵P一样。比如对手风格A中训练,对手风格B中泛化测试。
2. 场景A的状态集和场景B的状态集S类似,状态转移矩阵P不一样。比如游戏版本A中训练,游戏版本B中泛化测试。
强化学习的数据是有模型与环境交互过程中产生的,所以普遍认为强化学习中的泛化能力弱,模型较容易过拟合到当前的训练环境。目前比较常见的提高强化学习模型泛化能力的方式主要有两种:Regularization和Randomization。
Regularization-CoinRun
这里,首先介绍一篇2019年发表在ICML上的论文,Quantifying generalization in reinforcement learning[2]。
首先,如图所示,这篇文章中开源了一个用来验证深度强化学习算法泛化性能的游戏环境——CoinRun。这个游戏环境拥有上百万不同的关卡,每个关卡都有相应的难度等级(从难度1-难度3),因此可以用来验证强化课程学习的算法性能。
![](https://i-blog.csdnimg.cn/blog_migrate/5ef7caafc70e9dc73467d449f7c10b0b.png)
文章中还进行了很多基准实验:
对模型架构的评估
通过调整模型的构架,对比不同容量大小的模型的泛化能力。文章中采取了3中不同的模型架构:
Nature-CNN: PPO+3 CNNs
IMPALA-CNN: IMPALA+3 residual blocks
IMPALA-Large: IMPALA+5 residual blocks
如图所示,可以看出,模型容量越大,算法的泛化能力越强。
![](https://i-blog.csdnimg.cn/blog_migrate/49188e8004383507059db49c8e73a1a9.png)
对正则项的评估
通过调整模型正则项,对比不同的正则项对模型泛化能力的影响。文章中进行了5种不同的消融实验,baseline算法为IMPALA-CNN。从图中可以看出,正则项对模型的泛化能力都是有积极的作用的。
![](https://i-blog.csdnimg.cn/blog_migrate/8883c1867cedd4de698c152d91427cb0.png)
Regularization-Information Bottleneck
文章Dynamics Generalization via Information Bottleneck in Deep Reinforcement Learning[3]认为,深度强化学习模型可以分为两个部分,感知层和决策层。感知层的作用是将环境观测转换为状态表示,而决策层负责从状态表示中学习控制策略。但是感知层比较容易过拟合到当前的训练环境,文章提出了一种信息瓶颈(Information Bottleneck),尽可能地限制从环境观测传递到状态标识的信息,鼓励神经网络去学习一些高维地特征,算法可以有效的泛化到未见过的环境。如下是文章中的主要框架图。
![](https://i-blog.csdnimg.cn/blog_migrate/96dbc322f7924d592eae22ad7cd639cb.png)
这是文章中主要用到的KL散度公式,和相应的正则和梯度计算方式。
![](https://i-blog.csdnimg.cn/blog_migrate/e7f0d05fc67df11ff82ef1b787307faa.png)
文章中声明信息瓶颈比基线算法和其他正则化技术(如L-2正则和Dropout)拥有更好的泛化能力。
Randomization-Domain Randomization
文章Domain randomization for transferring deep neural networks from simulation to the real world[4]提出了一种样本增强的新方式——域随机化。在一些难以直接采样的环境中,比如机器人的抓取任务,真实环境交互学习代价非常高。文章中提出利用域随机化的方式在仿真环境中进行大量实验可以很好的迁移到正式环境。
![](https://i-blog.csdnimg.cn/blog_migrate/3213df7573464cb88909b0cf96ce6482.png)
域随机化的方向有以下几个方面:
![](https://i-blog.csdnimg.cn/blog_migrate/2fb92b20f5f13eaba92a5de493af2685.png)
从实验结果的表格中可以看出:
训练的时候加入干扰物是至关重要的。
随机相机位置也能提供一点帮助,但是对最终性能的影响不大。
在预处理中加入随机噪声没什么效果,但是少量的噪声可以帮助收敛。
![](https://i-blog.csdnimg.cn/blog_migrate/d204509f192d86f59d94ae8ef864685a.png)
仿真环境实验的时候可以采用域随机化的方式,缓解神经网络过拟合到单一环境的问题。可以让特征提取网络不关注低维的环境动态参数,更关注提取环境中的高维特征。
Randomization-Active Domain Randomization
文章Active domain randomization[5]在域随机化的基础上提出了,主动的域随机化技术。提出用强化学习去学环境参数的调整方向,用判别器预测奖励(reward),使域随机化的更有效率。
![](https://i-blog.csdnimg.cn/blog_migrate/7b9f31926f092f7d782afb01fa4f0f74.png)
Randomization-Network Randomization
文章Network randomization: A simple technique for generalization in deep reinforcement learning[6]提出了一种十分有效的样本增强方式,可以一次采样,多次训练。通过提高模型泛化能力的同时,又提高了样本的利用率。
![](https://i-blog.csdnimg.cn/blog_migrate/e0c398d06926fbe72af056062f17e678.png)
这是文章中网络随机化主要用到的公式:
文章中进行ile一组有趣的对比试验,模型在黑猫白狗的训练集中训练,在白猫黑狗的测试集中测试。模型很容易过拟合到训练样本,提取了一些无关紧要的特征:颜色。通过网络随机化这种样本增强方式,可以增强网络提取特征的能力。同时,相比于传统的图像样本增强方式:1)cutout (CO);2)grayout (GR);3)inversion (IV);4)color jitter (CJ),文章中的网络随机化的样本增强方式更有效率。
![](https://i-blog.csdnimg.cn/blog_migrate/55b6a60af6ed3db164b0c869a88c1d17.png)
如下图所示是文章进行大量消融实验的结果,可以看出在不同的算法中,网络随机化保证了最优的模型泛化能力。
![](https://i-blog.csdnimg.cn/blog_migrate/149fd32c740c0c9951e3a050a067a917.png)
参考文献:
[1] Pan S J, Yang Q. A survey on transfer learning[J]. IEEE Transactions on knowledge and data engineering, 2009, 22(10): 1345-1359.
[2]Cobbe K, Klimov O, Hesse C, et al. Quantifying generalization in reinforcement learning[C]//International Conference on Machine Learning. PMLR, 2019: 1282-1289.
[3]Lu X, Lee K, Abbeel P, et al. Dynamics Generalization via Information Bottleneck in Deep Reinforcement Learning[J]. arXiv preprint arXiv:2008.00614, 2020.
[4]Tobin J, Fong R, Ray A, et al. Domain randomization for transferring deep neural networks from simulation to the real world[C]//2017 IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS). IEEE, 2017: 23-30.
[5]Mehta B, Diaz M, Golemo F, et al. Active domain randomization[C]//Conference on Robot Learning. PMLR, 2020: 1162-1176.
[6]Lee K, Lee K, Shin J, et al. Network randomization: A simple technique for generalization in deep reinforcement learning[J]. arXiv, 2019: arXiv: 1910.05396.
原文连接:https://zhuanlan.zhihu.com/p/328287119
实验室官网:http://www.neurondance.com/
实验室社区:http://deeprl.neurondance.com/
完
总结3: 《强化学习导论》代码/习题答案大全
总结6: 万字总结 || 强化学习之路
完
第94篇:多智能体强化学习《星际争霸II》研究
第93篇:MuZero在Atari基准上取得了新SOTA效果
第91篇:详解用TD3算法通关BipedalWalker环境
第88篇:分层强化学习(HRL)全面总结
第85篇:279页总结"基于模型的强化学习方法"
第84篇:阿里强化学习领域研究助理/实习生招聘
第83篇:180篇NIPS2020顶会强化学习论文
第81篇:《综述》多智能体强化学习算法理论研究
第80篇:强化学习《奖励函数设计》详细解读
第79篇: 诺亚方舟开源高性能强化学习库“刑天”
第77篇:深度强化学习工程师/研究员面试指南
第75篇:Distributional Soft Actor-Critic算法
第74篇:【中文公益公开课】RLChina2020
第73篇:Tensorflow2.0实现29种深度强化学习算法
第72篇:【万字长文】解决强化学习"稀疏奖励"
第71篇:【公开课】高级强化学习专题
第70篇:DeepMind发布"离线强化学习基准“
第66篇:分布式强化学习框架Acme,并行性加强
第65篇:DQN系列(3): 优先级经验回放(PER)
第64篇:UC Berkeley开源RAD来改进强化学习算法
第61篇:David Sliver 亲自讲解AlphaGo、Zero
第59篇:Agent57在所有经典Atari 游戏中吊打人类
第58篇:清华开源「天授」强化学习平台
第57篇:Google发布"强化学习"框架"SEED RL"
第53篇:TRPO/PPO提出者John Schulman谈科研
第52篇:《强化学习》可复现性和稳健性,如何解决?
第51篇:强化学习和最优控制的《十个关键点》
第50篇:微软全球深度强化学习开源项目开放申请
第49篇:DeepMind发布强化学习库 RLax
第48篇:AlphaStar过程详解笔记
第47篇:Exploration-Exploitation难题解决方法
第45篇:DQN系列(1): Double Q-learning
第44篇:科研界最全工具汇总
第42篇:深度强化学习入门到精通资料综述
第41篇:顶会征稿 || ICAPS2020: DeepRL
第40篇:实习生招聘 || 华为诺亚方舟实验室
第39篇:滴滴实习生|| 深度强化学习方向
第37篇:Call For Papers# IJCNN2020-DeepRL
第36篇:复现"深度强化学习"论文的经验之谈
第35篇:α-Rank算法之DeepMind及Huawei改进
第34篇:从Paper到Coding, DRL挑战34类游戏
第31篇:强化学习,路在何方?
第30篇:强化学习的三种范例
第29篇:框架ES-MAML:进化策略的元学习方法
第28篇:138页“策略优化”PPT--Pieter Abbeel
第27篇:迁移学习在强化学习中的应用及最新进展
第26篇:深入理解Hindsight Experience Replay
第25篇:10项【深度强化学习】赛事汇总
第24篇:DRL实验中到底需要多少个随机种子?
第23篇:142页"ICML会议"强化学习笔记
第22篇:通过深度强化学习实现通用量子控制
第21篇:《深度强化学习》面试题汇总
第20篇:《深度强化学习》招聘汇总(13家企业)
第19篇:解决反馈稀疏问题之HER原理与代码实现
第17篇:AI Paper | 几个实用工具推荐
第16篇:AI领域:如何做优秀研究并写高水平论文?
第15篇:DeepMind开源三大新框架!
第13篇:OpenSpiel(28种DRL环境+24种DRL算法)
第11篇:DRL在Unity自行车环境中配置与实践
第8篇:ReinforceJS库(动态展示DP、TD、DQN)
第5篇:深度强化学习在阿里巴巴的技术演进
第4篇:深度强化学习十大原则
第2篇:深度强化学习的加速方法
第1篇:深入浅出解读"多巴胺(Dopamine)论文"、环境配置和实例分析