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

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

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

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

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

штрафу (например, -100) и возвращает агента в начальную позицию.

      4. Конечное состояние:

      – Когда агент достигает цели в ячейке (3, 11), эпизод заканчивается.

      Примерный процесс выполнения задачи

      1. Инициализация:

      – Создаем окружение и инициализируем параметры Q-обучения.

      – Инициализируем Q-таблицу нулями.

      2. Цикл обучения:

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

      – Обновляем Q-таблицу на основе полученного опыта (текущее состояние, действие, вознаграждение и следующее состояние).

      – Эпизод продолжается, пока агент не достигнет цели или не упадет в обрыв.

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

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

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

      Для начала нужно установить OpenAI Gym, если он еще не установлен:

      ```bash

      pip install gym

      ```

      Пример кода

      ```python

      import numpy as np

      import gym

      # Создаем окружение "CliffWalking-v0"

      env = gym.make('CliffWalking-v0')

      # Параметры Q-обучения

      alpha = 0.1 # Скорость обучения

      gamma = 0.99 # Коэффициент дисконтирования

      epsilon = 0.1 # Вероятность выбора случайного действия

      # Инициализация Q-таблицы

      q_table = np.zeros((env.observation_space.n, env.action_space.n))

      def choose_action(state):

      if np.random.uniform(0, 1) < epsilon:

      return env.action_space.sample() # Случайное действие

      else:

      return np.argmax(q_table[state]) # Действие с максимальным Q-значением

      def update_q_table(state, action, reward, next_state):

      best_next_action = np.argmax(q_table[next_state])

      td_target = reward + gamma * q_table[next_state][best_next_action]

      td_error = td_target – q_table[state][action]

      q_table[state][action] += alpha * td_error

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

      num_episodes = 500

      for episode in range(num_episodes):

      state = env.reset()

      done = False

      while not done:

      action = choose_action(state)

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

      update_q_table(state, action, reward, next_state)

      state = next_state

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

      state = env.reset()

      done = False

      total_reward = 0

      while not done:

      action = np.argmax(q_table[state])

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

      total_reward += reward

      env.render()

      print(f"Total reward after training: {total_reward}")

      env.close()

      ```

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

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

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

      – Устанавливаем параметры Q-обучения: `alpha` (скорость обучения), `gamma` (коэффициент дисконтирования) и `epsilon` (вероятность выбора случайного

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