Читать книгу Искусственный интеллект. Машинное обучение онлайн
Основной целью обучения с подкреплением является нахождение стратегии действий, которая максимизирует общее суммарное вознаграждение в течение длительного периода времени. Для этого агент должен учитывать текущее состояние окружающей среды, возможные действия и ожидаемые награды или потери, чтобы выбирать наилучшие действия в каждый момент времени.
Примеры задач обучения с подкреплением включают обучение агентов в компьютерных играх, где агенту нужно изучить стратегии для достижения победы или достижения определенных целей, а также управление роботами в реальном мире, где агенту нужно принимать решения на основе восприятия окружающей среды и выполнения задач, например, перемещение в пространстве или выполнение определенных действий.
Пример 1
Давайте рассмотрим пример задачи обучения с подкреплением на простом примере – агент играет в игру "Сетка мира" (Gridworld). В этой игре агент находится на игровом поле, представленном в виде сетки, и его целью является достижение целевой ячейки, избегая при этом препятствий.
Для начала определим игровое поле. Давайте создадим сетку размером 4x4, где каждая ячейка может быть либо пустой, либо содержать препятствие или целевую ячейку.
```python
import numpy as np
# Создание игрового поля
grid_world = np.array([
[0, 0, 0, 0], # Пустая ячейка
[0, -1, 0, -1], # Препятствие (-1)
[0, 0, 0, -1], # Препятствие (-1)
[0, -1, 0, 1] # Целевая ячейка (1)
])
```
Теперь создадим простое правило для агента: если агент находится в ячейке, он может выбирать случайное действие: двигаться вверх, вниз, влево или вправо. Если агент попадает в препятствие, он не двигается и остается на месте. Если агент достигает целевой ячейки, он получает награду +10 и игра завершается.
```python
import random
# Функция для выполнения действия в игре
def take_action(state):
row, col = state
if grid_world[row, col] == -1: # Если попали в препятствие, остаемся на месте
return state
action = random.choice(['up', 'down', 'left', 'right']) # Случайное действие
if action == 'up':