18+
реклама
18+
Бургер менюБургер меню

Холл Майкл Л. – Алгоритмы машинного обучения: базовый курс (страница 17)

18

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-таблицу, пока не достигнет цели или не выполнит достаточное количество шагов.

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