exponenta event banner

Импорт представлений политик и ценностных функций

Чтобы создать аппроксиматоры функций для обучения усилению, можно импортировать предварительно обученные глубокие нейронные сети или архитектуры уровня глубоких нейронных сетей с помощью функции импорта сети Deep Learning Toolbox™. Можно импортировать:

  • Open Neural Network Exchange (ONNX™) модели, которые требуют Deep Learning Toolbox Converter для программного обеспечения поддержки ONNX Model Format. Для получения дополнительной информации, importONNXLayers.

  • TensorFlow™-Keras сети, для которых требуется Deep Learning Toolbox Converter for TensorFlow Models, поддерживают пакет программного обеспечения. Дополнительные сведения см. в разделе importKerasLayers.

  • Сверточные сети Caffe, для которых требуется ПО Deep Learning Toolbox Importer for Caffe Models. Дополнительные сведения см. в разделе importCaffeLayers.

После импорта глубокой нейронной сети можно создать объект представления политики или функции значений, используя объект представления, например rlValueRepresentation.

При импорте глубоких нейронных сетевых архитектур необходимо учитывать следующее.

  • Импортированные архитектуры должны иметь один входной уровень и один выходной уровень. Поэтому импорт целых критических сетей с уровнями наблюдения и ввода действий не поддерживается.

  • Размеры входных и выходных слоев импортированной сетевой архитектуры должны соответствовать размерам соответствующего действия, наблюдения или размеров вознаграждения для среды.

  • После импорта сетевой архитектуры необходимо задать имена входных и выходных слоев в соответствии с именами соответствующих действий и спецификациями наблюдения.

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

Импорт актера и критика для приложения наблюдения за изображениями

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

  • Исполнитель - выбирает значение действия на основе текущего наблюдения

  • Критик - оценивает ожидаемое долгосрочное вознаграждение на основе текущего наблюдения

Также предположим, что необходимо импортировать следующие сетевые архитектуры:

  • Глубокая нейронная сетевая архитектура для актёра с уровнем ввода изображения 50 на 50 и скалярным уровнем вывода, который сохраняется в формате ONNX (criticNetwork.onnx).

  • Глубокая нейронная сетевая архитектура для критика с уровнем ввода изображения 50 на 50 и скалярным уровнем вывода, который сохраняется в формате ONNX (actorNetwork.onnx).

Для импорта сетей критиков и актеров используйте importONNXLayers без указания выходного слоя.

criticNetwork = importONNXLayers('criticNetwork.onnx');
actorNetwork = importONNXLayers('actorNetwork.onnx');

Эти команды генерируют предупреждение, в котором указывается, что сеть может быть обучена до тех пор, пока не будет добавлен выходной уровень. При использовании импортированной сети для создания представления актера или критика программа Toolbox™ обучения усилению автоматически добавляет выходной слой.

После импорта сетей создайте аппроксиматорные представления актера и критика. Для этого сначала получите спецификации наблюдения и действий из окружающей среды.

obsInfo = getObservationInfo(env);
actInfo = getActionInfo(env);

Создайте критическое представление, указав имя входного уровня критической сети в качестве имени наблюдения. Поскольку критическая сеть имеет один вход наблюдения и один выход действия, используйте представление «значение-функция».

critic = rlValueRepresentation(criticNetwork,obsInfo,...
    'Observation',{criticNetwork.Layers(1).Name});

Создайте представление актера, указав имя входного уровня сети актера в качестве имени наблюдения, а выходной уровень сети актера в качестве имени наблюдения. Поскольку сеть акторов имеет один скалярный выход, используйте детерминированное представление актора.

actor = rlDeterministicActorRepresentation(actorNetwork,obsInfo,actInfo,...
    'Observation',{actorNetwork.Layers(1).Name},...
    'Action',{actorNetwork.Layers(end).Name});

Затем можно:

  • Создайте агента, используя эти представления. Дополнительные сведения см. в разделе Усиление агентов обучения.

  • Установка представления актера и критика в существующем агенте с помощью setActor и setCriticсоответственно.

Связанные темы