Deep Q Pong Learning Failing - PullRequest
       67

Deep Q Pong Learning Failing

0 голосов
/ 16 ноября 2018

Я недавно начал исследовать глубокое обучение Q и столкнулся с проблемами.Следуя статьям в Интернете (включая эту: https://keon.io/deep-q-learning/),), я попытался изменить пример полюса тележки для работы с игрой в понг. Однако, хотя мое решение, похоже, следует другому (минимизируйте состояние, сохраняйте различияи т. д.) буквально никогда не становится лучше (более 800 игр за один раз).

Базовый код

import numpy as np
from ddqn import DQNAgent
import gym
from PIL import Image
env = gym.make('Pong-v0')
state_size = 88*80
action_size = env.action_space.n
agent = DQNAgent(state_size, action_size)
done = False
batch_size = 32
for e in range(EPISODES):
    state = env.reset()
    prev_state = state
    total_reward = 0
    for time in range(500000):
        env.render()
        current_state_diff = minimize_state(state) - minimize_state(prev_state)
        action = agent.act(current_state_diff)
        next_state, reward, done, _ = env.step(action)
        total_reward += reward
        next_state_diff = minimize_state(next_state) -         minimize_state(state)
        agent.remember(current_state_diff, action, reward, next_state_diff, done)
        state = next_state
        if done:
            agent.update_target_model()
            print("episode: {}/{}, score: {}, e: {:.2}"
                  .format(e, EPISODES, total_reward, agent.epsilon))
            break
        if len(agent.memory) > batch_size:
            agent.replay(batch_size)
    if e % 10 == 0:
        agent.save("./save/pong-v0-ddqn.h5")

Где функция минимизации

def minimize_state(state):
    img = Image.fromarray(state)
    state = np.array(img.convert("L"))
    state = state[34:]
    state = state[::2,::2]
    return np.reshape(state, [1, state_size])

И DQNAgent от: https://github.com/keon/deep-q-learning

Что не так?

...