Алгоритмы машинного обучения: базовый курс. Тайлер Венс

Алгоритмы машинного обучения: базовый курс - Тайлер Венс


Скачать книгу
обучении с подкреплением важным моментом является создание агента, который будет принимать решения, основываясь на текущем состоянии среды. Агент должен выбрать действие на основе текущего состояния. Для простоты давайте реализуем случайный агент, который будет случайным образом выбирать действия, чтобы исследовать пространство.

      ```python

      # Инициализация состояния среды

      state = env.reset()

      # Действия агента: 0 – двигаться влево, 1 – двигаться вправо

      actions = [0, 1]

      # Количество шагов

      num_steps = 200

      # Суммарная награда

      total_reward = 0

      # Сеанс игры с случайным агентом

      for _ in range(num_steps):

      action = random.choice(actions) # случайный выбор действия

      next_state, reward, done, _, _ = env.step(action) # Выполняем действие

      total_reward += reward

      state = next_state # Переход к следующему состоянию

      # Если агент упал (закончилась игра), завершаем

      if done:

      break

      # Выводим итоговую награду

      print(f"Total Reward: {total_reward}")

      ```

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

      Шаг 4: Алгоритм Q-learning

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

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

      Шаг 5: Реализация алгоритма Q-learning

      Пример реализации алгоритма Q-learning для задачи CartPole:

      ```python

      # Устанавливаем параметры

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

      discount_factor = 0.99 # Дисконтирование будущих наград

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

      num_episodes = 1000 # Количество эпизодов обучения

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

      # Преобразуем состояния в дискретные

      def discretize_state(state):

      discrete_state = [

      int(state[0] // 0.1),

      int(state[1] // 0.1),

      int(state[2] // 0.1),

      int(state[3] // 0.1)

      ]

      return tuple(discrete_state)

      # Размеры Q-таблицы (по оси состояния и действия)

      q_table = np.zeros((6, 6, 6, 6, env.action_space.n)) # для CartPole (4 признака, 2 действия)

      # Функция для выбора действия с учётом epsilon-greedy стратегии

      def epsilon_greedy(state):

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

      return random.choice([0, 1]) # Случайный выбор

      else:

      return np.argmax(q_table[state]) # Лучшее действие по таблице Q

      # Обучение агента

      for episode in range(num_episodes):

      state = discretize_state(env.reset()) # Начальное состояние, дискретизация

      done = False

      total_reward = 0

      while not done:

      action = epsilon_greedy(state) # Выбор действия

      next_state, reward, done, _, _ = env.step(action) # Выполнение действия

      next_state = discretize_state(next_state) # Дискретизация следующего состояния

      # Обновление Q-значения по формуле Q-learning

      q_table[state][action] = q_table[state][action] + learning_rate * (

      reward


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