Холл Майкл Л. – Алгоритмы машинного обучения: базовый курс (страница 17)
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 + discount_factor * np.max(q_table[next_state]) – q_table[state][action]
)
state = next_state # Переход к новому состоянию
total_reward += reward
if episode % 100 == 0:
print(f"Episode {episode}/{num_episodes}, Total Reward: {total_reward}")
```
Шаг 6: Тестирование обученного агента
После того как агент обучился с использованием Q-learning, мы можем протестировать его эффективность. В тестировании агент будет следовать стратегии, основанной на максимизации ценности действия, и применять её без случайных выборов.
```python
# Тестирование агента
state = discretize_state(env.reset())
done = False
total_reward = 0
while not done:
action = np.argmax(q_table[state]) # Лучшее действие по таблице Q
next_state, reward, done, _, _ = env.step(action)
state = discretize_state(next_state) # Дискретизация следующего состояния
total_reward += reward
print(f"Total Reward in test: {total_reward}")
```
Результаты
Во время обучения агент постепенно улучшает свою стратегию. Сначала он может случайным образом двигать столбик, но с течением времени, когда он получает обратную связь в виде награды, он начинает находить более эффективные действия, чтобы удерживать столбик в вертикальном положении.
После завершения обучения агент должен показывать значительно более высокие результаты, чем в начале, когда он выбирал действия случайным образом.
Этот пример демонстрирует, как с помощью обучения с подкреплением можно обучить агента действовать в динамической среде, такой как CartPole. Метод Q-learning позволяет агенту улучшать свою стратегию со временем, учась на опыте, получая награды и корректируя свои действия, чтобы максимизировать долгосрочную награду.
Q-Learning – это один из наиболее популярных и широко используемых алгоритмов в области обучения с подкреплением. Этот метод используется для поиска оптимальной стратегии или политики, позволяя агенту выбирать лучшие действия для максимизации долгосрочной награды.
Основная цель Q-learning заключается в том, чтобы для каждого состояния и действия агент находил ценность (Q-значение), которое описывает, насколько выгодно выполнить определённое действие в конкретном состоянии. Эти Q-значения обновляются в процессе обучения на основе получаемых наград, и в итоге агент формирует стратегию, которая максимизирует общую награду.
Основные принципы работы Q-Learning
Q-learning использует так называемую Q-таблицу (или функцию), которая содержит оценку ценности (Q-значение) для каждого состояния и действия. Когда агент принимает какое-либо действие, он получает награду, которая используется для обновления значений в Q-таблице с использованием формулы:
Процесс обучения заключается в том, чтобы агент экспериментировал с действиями, получал награды, обновлял Q-значения и таким образом учился принимать более выгодные решения на основе опыта.
Применение Q-Learning
Q-learning применяется в широком спектре задач, где необходимо принять решение в динамично изменяющейся среде. Примеры применения включают:
1. Игры: Q-learning активно используется для создания агентов, которые обучаются играть в игры, например, в шахматы, го, видеоигры и т.д. Агент может играть в игру, экспериментировать с различными стратегиями и на основе полученных наград постепенно улучшать свои действия, становясь всё более эффективным игроком.
2. Робототехника: В робототехнике Q-learning применяется для обучения роботов, которые должны ориентироваться в пространстве, избегать препятствий, находить путь или выполнять другие сложные задачи. Например, робот может учиться, как эффективно двигаться по комнате, избегая столкновений.
3. Оптимизация бизнес-процессов: Q-learning используется для создания моделей, которые могут помогать оптимизировать такие процессы, как управление запасами, распределение ресурсов, маршрутизация, динамическое ценообразование и др.
4. Автономные транспортные системы: Агент может обучаться принимать решения о маршруте или действиях, чтобы минимизировать время в пути, избегать пробок или предсказывать поведение других участников движения.
Предположим, что задача заключается в том, чтобы агент прошёл лабиринт. Лабиринт состоит из клеток, каждая из которых может быть либо пустой (свободной), либо содержать стену, которая блокирует движение. Агент должен научиться проходить лабиринт, начиная с одной клетки и двигаясь к цели. Каждое действие может быть направлено в одну из четырёх сторон: вверх, вниз, влево или вправо.
1. Инициализация: Агент начинает с инициализированной Q-таблицей, где значения всех состояний и действий равны нулю.
2. Выбор действия: В процессе обучения агент выбирает действие, используя стратегию ε-реже (ε-greedy). Это означает, что с вероятностью ε агент будет выбирать случайное действие (исследование), а с вероятностью 1-ε – наилучшее действие на основе текущих значений в Q-таблице (эксплуатация).
3. Получение награды: После выполнения действия агент получает награду (например, +1 за движение в пустую клетку и -1 за столкновение со стеной).
4. Обновление Q-таблицы: Агент обновляет значения в Q-таблице с использованием формулы Q-learning, учитывая полученную награду и наилучшую стратегию для следующего состояния.
5. Повторение: Агент повторяет процесс, взаимодействуя с окружающей средой, обновляя Q-таблицу, пока не достигнет цели или не выполнит достаточное количество шагов.
В результате обучения, когда агент выполнит достаточно шагов, его стратегия будет ориентирована на выбор оптимальных действий для достижения цели, избегая столкновений со стенами.