我想了解深度强化学习算法的工作原理,以及在给定环境中训练所需的时间。我想到了一个非常简单的环境示例:
有一个计数器,保存一个介于0到100之间的整数。其目标是计数到100。
有一个参数direction
,其值可以是+1或-1。它简单地显示移动的方向。
我们的神经网络将这个方向作为输入,并输出两种可能的动作。
- 改变方向
- 不改变方向
第一种动作将简单地翻转方向(+1 => -1 或 -1 => +1)。第二种动作将保持方向不变。
我使用Python作为后端,JavaScript作为前端。看起来需要太多的时间,而且结果仍然相当随机。我使用了4层感知器,训练率为0.001,记忆学习批次为100。代码来自Udemy的人工智能教程,并且运行正常。
我的问题是,完成和每个状态的奖励应该是什么?以及训练这样一个简单示例需要多长时间?
回答:
在强化学习中,底层的奖励函数定义了游戏。不同的奖励函数会导致不同的游戏和不同的最优策略。
在你的情况下,有几种不同的可能性:
- 到达100时给予+1,且仅此而已。
- 到达100时给予+1,每个时间步未达到100时给予-0.001。
- 向上移动时给予+1,向下移动时给予-1。
第三种情况过于简单,不涉及长期规划。在前两种情况下,智能体只有在偶然达到100并发现这是好的之后才会开始学习。但在第一种情况下,一旦它学会向上移动,到达那里需要多长时间并不重要。第二种情况是最有趣的,它需要尽快到达那里。
没有关于使用哪种奖励的正确答案,但最终你选择的奖励定义了你玩的游戏。
注意:对于这个问题使用4层感知器是大材小用。一层就足够了(这个问题非常简单)。你试过OpenAI的gym中的强化学习环境吗?强烈推荐,他们有所有“经典”的强化学习问题。