Чтобы создать аппроксиматоры функций для обучения усилению, можно импортировать предварительно обученные глубокие нейронные сети или архитектуры уровня глубоких нейронных сетей с помощью функции импорта сети 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соответственно.