Нейросети. Основы. Дэвид Рид

Чтение книги онлайн.

Читать онлайн книгу Нейросети. Основы - Дэвид Рид страница 13

Автор:
Жанр:
Серия:
Издательство:
Нейросети. Основы - Дэвид Рид

Скачать книгу

= defaultdict(lambda: np.zeros(env.action_space.n))

      returns_sum = defaultdict(float)

      returns_count = defaultdict(float)

      # Основной цикл обучения

      for episode in range(num_episodes):

      state = env.reset()

      episode = []

      done = False

      while not done:

      action = epsilon_greedy_policy(state, Q)

      next_state, reward, done, _ = env.step(action)

      episode.append((state, action, reward))

      state = next_state

      # Обновление Q-таблицы на основе эпизодических возвратов

      G = 0

      for state, action, reward in reversed(episode):

      G = gamma * G + reward

      if not any((s == state and a == action) for s, a, _ in episode[:-1]):

      returns_sum[(state, action)] += G

      returns_count[(state, action)] += 1

      Q[state][action] = returns_sum[(state, action)] / returns_count[(state, action)]

      # Тестирование агента после обучения

      def test_policy(Q, num_episodes=10000):

      wins = 0

      draws = 0

      losses = 0

      for _ in range(num_episodes):

      state = env.reset()

      done = False

      while not done:

      action = np.argmax(Q[state])

      state, reward, done, _ = env.step(action)

      if reward > 0:

      wins += 1

      elif reward == 0:

      draws += 1

      else:

      losses += 1

      print(f"Wins: {wins / num_episodes:.2f}, Draws: {draws / num_episodes:.2f}, Losses: {losses / num_episodes:.2f}")

      test_policy(Q)

      ```

      Объяснение кода

      1. Инициализация окружения и параметров:

      – Создаем окружение `Blackjack-v1` из OpenAI Gym.

      – Устанавливаем количество эпизодов для обучения и коэффициент дисконтирования `gamma`.

      2. Функция для выбора действия:

      – Используем ε-жадную стратегию для выбора действия. С вероятностью `epsilon` выбирается случайное действие, иначе выбирается действие с максимальным Q-значением для текущего состояния.

      3. Инициализация Q-таблицы и возвратов:

      – Q-таблица инициализируется нулями с использованием `defaultdict`.

      – `returns_sum` и `returns_count` используются для хранения сумм и счетчиков возвратов для каждой пары «состояние-действие».

      4. Основной цикл обучения:

      – В каждом эпизоде агент взаимодействует с окружением, выполняя действия и записывая последовательность состояний, действий и наград.

      – После завершения эпизода вычисляется общий возврат `G` путем обратного прохода по эпизоду и обновляется Q-таблица для уникальных пар «состояние-действие».

      5. Тестирование агента:

      – После завершения обучения агент тестируется в окружении, используя политику, основанную на максимальных Q-значениях.

      – Выводится статистика побед, ничьих и поражений.

      Этот пример демонстрирует использование методов Монте-Карло для оценки стратегий на основе эпизодических возвратов в задаче блэкджека. Агент учится принимать оптимальные решения, основываясь на накопленном опыте из большого числа эпизодов.

      Deep Q-Learning

      Deep Q-Learning – это расширение Q-обучения, которое использует глубокие нейронные сети для представления и обновления Q-значений. Это позволяет агентам принимать более сложные и информированные решения в средах с высоким уровнем сложности и большим количеством состояний и действий. В традиционном Q-обучении Q-таблица используется

Скачать книгу