【发布时间】:2017-07-06 07:24:42
【问题描述】:
我正在尝试制作双 DQN 算法来学习玩 2048 游戏。如果你想检查代码,我的实现可以在 GitHub 中找到。 (https://github.com/codetiger/MachineLearning-2048)
我的代码在基础级别之后没有学习。它无法实现超过 256 瓦。我的一些预测如下。
- 我正在使用随机播放器来训练代码。我猜 RL 算法就是这样学习的。他们尝试所有可能的举动并从失败中吸取教训。我猜测是,因为我使用随机动作训练它,所以代码学习非常有限。
- 我尝试的最大集数是 4000。如何计算最佳集数。
- 我的代码有问题。
我无法用我的方法找出问题所在。想对此有所了解。
我的伪代码在这里。
for e in range(EPISODES):
gameEnv.Reset()
state = gameEnv.GetFlatGrid()
state = np.reshape(state, [1, state_size])
reward = 0.0
prevMaxNumber = 0
while True:
action = agent.get_action(state)
(moveScore, isValid) = gameEnv.Move(action + 1)
next_state = gameEnv.GetFlatGrid()
next_state = np.reshape(next_state, [1, state_size])
if isValid:
# Reward for step score
reward += moveScore
# Reward for New Max Number
if gameEnv.GetMaxNumber() > prevMaxNumber:
reward += 10.0
prevMaxNumber = gameEnv.GetMaxNumber()
gameEnv.AddNewNumber()
else:
reward = -50.0
done = gameEnv.CheckGameOver()
if done:
reward = -100.0
agent.append_sample(state, action, reward, next_state, done)
agent.train_model()
state = next_state
if done:
agent.update_target_model()
【问题讨论】:
标签: machine-learning tensorflow artificial-intelligence keras reinforcement-learning