如何在连续空间和动作空间问题中避免执行器的快速运动而有利于平滑运动?

人工智能 强化学习 奖励 ddpg 奖励塑造 奖励设计
2021-10-23 00:49:03

我正在研究一个连续状态/连续动作控制器。它应该通过发出正确的副翼指令来控制飞机的某个侧倾角(在[1,1])。

为此,我使用了一个神经网络和 DDPG 算法,经过大约 20 分钟的训练,它显示出有希望的结果。

我将模型的呈现状态剥离为仅滚动角和角速度,这样神经网络就不会被状态输入淹没。

所以它是一个 2 输入/1 输出模型来执行控制任务。

在测试运行中,它看起来大多不错,但有时,控制器开始抖动,即它输出闪烁的命令,就像在一个非常快速的 bangbang-controlm 中导致电梯快速移动一样。

在此处输入图像描述

即使这种行为保持了所需的目标值,这种行为也是绝对不可取的。相反,它应该保持输出平滑。到目前为止,我无法检测到任何启动此行为的特殊干扰。然而它却是出乎意料的。

是否有人对如何结合某些元素(可能是培训期间的奖励塑造)有想法或提示(可能是论文参考)以避免这种行为?如何避免执行器的快速运动而有利于平滑运动?

我试图在呈现状态中包含最后一个动作,并在我的奖励中添加一个惩罚组件,但这并没有真正帮助。所以很明显,我做错了什么。

1个回答

经过对该主题的一些研究,我找到了一个可能的解决方案,可以解决我使用 DDPG 在连续控制中出现高频振荡的问题:

我添加了一个基于执行器运动的奖励组件,即从一步到下一步的动作增量。

过度的动作变化现在受到惩罚,这可以减轻振荡的趋势。该解决方案并不是真正完美的,但它暂时有效。

我的硕士论文的“奖励工程”部分详细介绍了这一发现。请查看https://github.com/opt12/Markov-Pilot/tree/master/thesis

我很高兴收到有关它的反馈。而且我很高兴听到比添加增量惩罚更好的解决方案。

问候,菲利克斯