赞
踩
原文链接
原创 Cong Wang
2月5日
微信公众号:robot_learning123
OpenAI 2017年有一个blog Better Exploration with Parameter Noise[1] (对应paper[2]), 介绍在RL中添加parameter noise的问题, 虽然并没有说sim2real, 但是和sim2real过程有相似之处. 正如上一篇Sim2Real问题[1] 中列出的各种动力学参数, 我们在很多地方都可以考虑加一些noise, 以提高训练策略的鲁棒性和适应性.
深度学习中添加一些noise来提高训练效果并不少见, 为了提高RL的泛化能力, 之前的做法有在policy的输出端action增加noise的, 而OpenAI的这篇文章分析了在神经网络的参数上直接增加noise, 但是仍然通过输出的action来衡量其效果.左: action space noise; 右: parameter space noise.
这里面涉及到三个问题:
神经网络的不同层对扰动有不同的敏感度
策略权重的敏感度可能随着训练的进行而发生变化, 这使得预测行为更加困难
选择正确的noise scale是很困难的, 因为直观上难以了解参数噪声对策略训练的影响程度
对于第一个问题, 作者使用layer normalization[3] 来处理, 确保受扰动层的输出仍然具有相同的分布.
第二和三个问题, 通过一种自适应机制来调整参数空间扰动的大小. 它通过测量动作空间扰动的影响来判断动作空间噪声水平是大于还是小于预定目标. 这个技巧使得我们可以把选择noise scale的问题转换到动作空间, 直观上也比参数空间更容易理解. 下图为parameter noise和action noise比较.
OpenAI Baseline[4]中实现了三种noise的形式, 用在了DDPG算法中, 感兴趣的可以看看具体实现与应用:
AdaptiveParamNoiseSpec
NormalActionNoise
OrnsteinUhlenbeckActionNoise
[1] https://openai.com/blog/better-exploration-with-parameter-noise/
[2] https://arxiv.org/abs/1706.01905
[3] https://arxiv.org/abs/1607.06450
[4] https://github.com/openai/baselines/blob/master/baselines/ddpg/noise.py
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。