Нейросети. Основы. Дэвид Рид. Читать онлайн. Newlib. NEWLIB.NET

Автор: Дэвид Рид
Издательство: Автор
Серия:
Жанр произведения:
Год издания: 2024
isbn:
Скачать книгу
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-таблица используется для хранения значений всех возможных пар «состояние-действие», что становится неосуществимым в задачах с большой размерностью. Deep Q-Learning решает эту проблему, используя нейронные сети для аппроксимации функции Q. Агент обучается обновлять параметры нейронной сети, минимизируя разницу между предсказанными и реальными Q-значениями, что делает возможным обучение на больших наборах данных и в сложных средах. Один из ключевых компонентов Deep Q-Learning – это опытный буфер (experience replay), который позволяет агенту запоминать и повторно использовать предыдущие опыты для обучения, что повышает стабильность и эффективность процесса обучения.

      Обучение с подкреплением применяется в робототехнике, играх, управлении ресурсами и других задачах, где требуется разработка стратегий и принятие решений в динамических и неопределённых средах.

      Описание задачи

      Рассмотрим задачу