В сценарии обучения с подкреплением, где вы обучаете агента для выполнения задачи, окружение моделирует внешнюю систему (то есть мир), с которой взаимодействует агент. В системах управления эта внешняя система часто упоминается как объект.
Как показано на следующем рисунке, окружение:
Получает действия от агента.
Возвращает наблюдения в ответ на действия.
Генерирует вознаграждение, измеряющее, насколько хорошо действие способствует достижению задачи.
Создание модели окружения включает в себя определение:
Сигналы действия и наблюдения, которые агент использует для взаимодействия со окружением.
Сигнал вознаграждения, который агент использует для измерения своего успеха. Для получения дополнительной информации смотрите Задать сигналы вознаграждения.
Начальное окружение условия и его динамическое поведение.
Когда вы создаете объект окружения, необходимо задать сигналы действия и наблюдения, которые агент использует для взаимодействия со окружением. Можно создать как дискретные так и непрерывные пространства действий и наблюдений. Для получения дополнительной информации смотрите rlNumericSpec
и rlFiniteSetSpec
, соответственно.
Какие сигналы вы выбираете в качестве действий и наблюдений, определяется вашим приложением. Для примера, для приложений системы управления, интегралы (и иногда производные) сигналов ошибки являются часто полезными наблюдениями. Кроме того, для приложений отслеживания уставки полезно иметь изменяющийся во времени опорный сигнал в качестве наблюдения.
Когда вы задаете свои сигналы наблюдения, гарантируйте, что все состояния окружения (или их оценка) включены в вектор наблюдения. Это является хорошей практикой, потому что агент часто является статической функцией, в которой отсутствует внутренняя память или состояние, и поэтому он может не иметь возможности успешно восстановить состояние окружения внутренне.
Для примера наблюдение изображений за качающимся маятником имеет информацию о положении, но не имеет достаточной информации, сама по себе, чтобы определить скорость маятника. В этом случае можно измерить или оценить скорость маятника как дополнительный вход в вектор наблюдений.
Пакет Reinforcement Learning Toolbox™ предоставляет некоторые предопределенные MATLAB® окружения, для которых уже заданы действия, наблюдения, вознаграждения и динамика. Можно использовать эти окружения для:
Изучения концепций обучения с подкреплением.
Ознакомьтесь с функциями пакета Reinforcement Learning Toolbox.
Тестирования своих агентов обучения с подкреплением.
Для получения дополнительной информации смотрите Загрузка предопределённых окружений мира сетки и Загрузка предопределённых окружений системы управления.
Можно создать следующие типы пользовательских окружений MATLAB для собственных приложений.
Сетчатые миры с заданным размером, вознаграждениями и препятствиями
Окружения с динамикой, заданной с помощью пользовательских функций
Окружения, заданные путем создания и изменения объекта окружения шаблона
После создания пользовательского объекта окружения можно обучить агента так же, как и в предопределённом окружении. Для получения дополнительной информации о обучении агентов см. Train «Обучение агентов обучения с подкреплением».
Вы можете создать пользовательские миры сетки любого размера с собственным пользовательским вознаграждением, переходом состояния и строениями препятствий. Чтобы создать пользовательское окружение мира сетки:
Создайте модель мира сетки с помощью createGridWorld
функция. Например, создайте мир сетки с именем gw
с десятью строками и девятью столбцами.
gw = createGridWorld(10,9);
Сконфигурируйте мир сетки, изменив свойства модели. Для примера укажите конечное состояние в качестве местоположения [7,9]
gw.TerminalStates = "[7,9]";
Мир сетки должен быть включен в окружение марковского процесса принятия решений (MDP). Создайте окружение MDP для этого мира сетки, которую агент использует для взаимодействия с моделью мира сетки.
env = rlMDPEnv(gw);
Дополнительные сведения о пользовательских мирах сетки см. в разделе Создание пользовательских окружений мира сетки.
Для простых окружений можно задать пользовательский объект окружения путем создания rlFunctionEnv
объект и установка собственных пользовательских функций сброса и шага.
В начале каждого эпизода тренировки агент вызывает функцию сброса, чтобы задать начальное условие окружения. Для примера можно задать известные начальные значения состояний или перевести окружение в случайное начальное состояние.
Функция step задает динамику окружения, то есть то, как изменяется состояние как функция от текущего состояния и действия агента. На каждом временном шаге обучения состояние модели обновляется с помощью функции step.
Для получения дополнительной информации смотрите Создание окружения MATLAB с использованием пользовательских функций.
Для более сложных окружений можно задать пользовательское окружение путем создания и изменения окружения шаблона. Чтобы создать пользовательское окружение:
Создайте класс шаблона среды с помощью rlCreateEnvTemplate
функция.
Измените окружение шаблона, задав свойства окружения, необходимые функции окружения и дополнительные функции окружения.
Проверьте своё пользовательское окружение с помощью validateEnvironment
.
Для получения дополнительной информации см. раздел «Создание пользовательского окружения MATLAB из шаблона».
rlCreateEnvTemplate
| rlFunctionEnv
| rlPredefinedEnv