Machine learning 我的2048游戏的双DQN算法永远不会学习

Machine learning 我的2048游戏的双DQN算法永远不会学习,machine-learning,tensorflow,artificial-intelligence,keras,reinforcement-learning,Machine Learning,Tensorflow,Artificial Intelligence,Keras,Reinforcement Learning,我正在尝试做双DQN算法来学习玩2048游戏。如果您想检查代码,可以在GitHub中使用我的实现。() 我的代码不是学习后的基本水平。它不能实现超过256瓦。下面是我的一些预测 我使用随机播放器来训练代码。我想RL算法就是这样学习的。他们尝试所有可能的行动,从失败中吸取教训。我的猜测是,因为我使用随机移动训练它,所以代码学习非常有限 我最多试了4000集。我如何计算最佳集数 我的代码有问题 我无法用我的方法确定问题所在。我想了解一下这方面的情况 我的伪代码在这里 for e in ran

我正在尝试做双DQN算法来学习玩2048游戏。如果您想检查代码,可以在GitHub中使用我的实现。()

我的代码不是学习后的基本水平。它不能实现超过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()
    
    我的两分钱

    • RL算法不会随机学习。我建议你看一下《萨顿和巴托(第二版)》,了解各种算法的详细描述。话虽如此,我认为你链接的git代码并没有达到你的预期(为什么你有一个ES模块?你在用进化算法训练网络?)。您可能希望从这样更简单、更稳定的实现开始

    • 对于一个简单的Q网络来说,2048可能是一个很难学习的游戏,因为它需要长期的规划。DQN更容易学会玩控制/即时动作游戏,如Pong或Breakout,但在需要一定计划的游戏中表现不佳(例如Pacman)