一个简单游戏的深度强化学习参数和训练时间
deep reinforcement learning parameters and training time for a simple game
我想了解深度强化算法的工作原理以及在任何给定环境下自我训练需要多长时间。
我想出了一个非常简单的环境示例:
有一个计数器,它保存 0 到 100 之间的整数。
数到 100 是它的目标。
有一个参数direction
,其值可以是+1或-1。
它只是显示移动的方向。
out 神经网络将这个方向作为输入,将 2 个可能的动作作为输出。
- 改变方向
- 不改变方向
第一个动作将简单地翻转方向(+1 => -1 或 -1 => +1)。第二个动作将保持方向不变。
我在后端使用 python,在前端使用 javascript。
这似乎花费了太多时间,而且仍然很随机。我使用了 4 层感知器。训练率为 0.001。记忆学习批量为 100。代码是 Udemy 人工智能教程,并且工作正常。
我的问题是,完成和每个状态的奖励应该是什么。?训练这样一个简单的例子需要多少时间?
在强化学习中,下划线的奖励函数定义了游戏。不同的奖励函数导致不同的游戏具有不同的最优策略。
您的情况有几种不同的可能性:
- 达到 100 后给予 +1。
- 达到 100 时给予 +1,不在 100 时的每个时间步给予 -0.001。
- 上升+1 下降-1。
第三种情况太简单了,没有长期规划。在第一种情况下,代理只会在意外达到 100 并认为它很好时才开始学习。但在第一种情况下,一旦它学会了上升,到达那里需要多长时间并不重要。第二个是最有趣的地方,它需要尽快到达那里。
使用什么奖励没有正确答案,但最终你选择的奖励决定了你玩的游戏。
注意:这个问题的 4 层感知器是 Big Time Overkill。一层应该就够了(这个问题很简单)。您是否尝试过 OpenAI's gym 的强化学习环境?强烈推荐,他们有所有 "classical" 强化学习问题。
我想了解深度强化算法的工作原理以及在任何给定环境下自我训练需要多长时间。 我想出了一个非常简单的环境示例:
有一个计数器,它保存 0 到 100 之间的整数。 数到 100 是它的目标。
有一个参数direction
,其值可以是+1或-1。
它只是显示移动的方向。
out 神经网络将这个方向作为输入,将 2 个可能的动作作为输出。
- 改变方向
- 不改变方向
第一个动作将简单地翻转方向(+1 => -1 或 -1 => +1)。第二个动作将保持方向不变。
我在后端使用 python,在前端使用 javascript。 这似乎花费了太多时间,而且仍然很随机。我使用了 4 层感知器。训练率为 0.001。记忆学习批量为 100。代码是 Udemy 人工智能教程,并且工作正常。
我的问题是,完成和每个状态的奖励应该是什么。?训练这样一个简单的例子需要多少时间?
在强化学习中,下划线的奖励函数定义了游戏。不同的奖励函数导致不同的游戏具有不同的最优策略。
您的情况有几种不同的可能性:
- 达到 100 后给予 +1。
- 达到 100 时给予 +1,不在 100 时的每个时间步给予 -0.001。
- 上升+1 下降-1。
第三种情况太简单了,没有长期规划。在第一种情况下,代理只会在意外达到 100 并认为它很好时才开始学习。但在第一种情况下,一旦它学会了上升,到达那里需要多长时间并不重要。第二个是最有趣的地方,它需要尽快到达那里。
使用什么奖励没有正确答案,但最终你选择的奖励决定了你玩的游戏。
注意:这个问题的 4 层感知器是 Big Time Overkill。一层应该就够了(这个问题很简单)。您是否尝试过 OpenAI's gym 的强化学习环境?强烈推荐,他们有所有 "classical" 强化学习问题。