Параметры агента DDPG
Использовать rlDDPGAgentOptions объект для указания параметров агентов глубокого детерминированного градиента политики (DDPG). Для создания агента DDPG используйте rlDDPGAgent.
Дополнительные сведения см. в разделе Агенты градиента глубокой детерминированной политики.
Дополнительные сведения о различных типах агентов обучения усилению см. в разделе Агенты обучения усилению.
создает объект параметров для использования в качестве аргумента при создании агента DDPG с использованием всех параметров по умолчанию. Свойства объекта можно изменить с помощью точечной нотации.opt = rlDDPGAgentOptions
NoiseOptions - Параметры шумовой моделиOrnsteinUhlenbeckActionNoise объектПараметры шумовой модели, указанные как OrnsteinUhlenbeckActionNoise объект. Дополнительные сведения о модели шума см. в разделе Модель шума.
Для агента с несколькими действиями, если действия имеют разные диапазоны и единицы измерения, вероятно, каждое действие требует различных параметров шумовой модели. Если действия имеют одинаковые диапазоны и единицы измерения, можно задать одинаковое значение параметров шума для всех действий.
Например, для агента с двумя действиями установите стандартное отклонение каждого действия в разное значение, используя одинаковую скорость затухания для обоих стандартных отклонений.
opt = rlDDPGAgentOptions; opt.ExplorationModel.StandardDeviation = [0.1 0.2]; opt.ExplorationModel.StandardDeviationDecayRate = 1e-4;
TargetSmoothFactor - Коэффициент сглаживания для обновлений целевого актера и критика1e-3 (по умолчанию) | положительный скаляр меньше или равен 1Коэффициент сглаживания для обновления целевого актера и критика, заданный как положительный скаляр, меньший или равный 1. Дополнительные сведения см. в разделе Методы целевого обновления.
TargetUpdateFrequency - Количество шагов между обновлениями целевого исполнителя и критика1 (по умолчанию) | положительное целое числоЧисло шагов между обновлениями целевого исполнителя и критика, указанное как положительное целое число. Дополнительные сведения см. в разделе Методы целевого обновления.
ResetExperienceBufferBeforeTraining - Возможность очистки буфера опытаtrue (по умолчанию) | falseПараметр очистки буфера опыта перед обучением, заданный как логическое значение.
SaveExperienceBufferWithAgent - Возможность сохранения буфера опытаfalse (по умолчанию) | trueПараметр сохранения данных буфера опыта при сохранении агента, указанный как логическое значение. Эта опция применяется как при сохранении агентов-кандидатов во время обучения, так и при сохранении агентов с помощью save функция.
Для некоторых агентов, таких как агенты с большим буфером опыта и наблюдениями на основе изображений, память, необходимая для сохранения их буфера опыта, велика. В таких случаях, чтобы не сохранять данные буфера опыта, установите SaveExperienceBufferWithAgent кому false.
Если планируется дальнейшее обучение сохраненного агента, можно начать обучение с использованием буфера предыдущего опыта в качестве отправной точки. В этом случае установить SaveExperienceBufferWithAgent кому true.
SequenceLength - Максимальная длина траектории обучения партии при использовании РНН1 (по умолчанию) | положительное целое числоМаксимальная длина пакетно-тренировочной траектории при использовании рекуррентной нейронной сети, заданная как положительное целое число. Это значение должно быть больше 1 при использовании рецидивирующей нейронной сети и 1 в противном случае.
MiniBatchSize - Размер мини-партии случайного опыта64 (по умолчанию) | положительное целое числоРазмер мини-пакета случайного опыта, указанный как положительное целое число. Во время каждого учебного эпизода агент случайным образом производит выборку опыта из буфера опыта при вычислении градиентов для обновления свойств критика. Большие мини-пакеты уменьшают дисперсию при вычислении градиентов, но увеличивают вычислительные усилия.
NumStepsToLookAhead - Количество будущих вознаграждений, используемых для оценки стоимости полиса1 (по умолчанию) | положительное целое числоКоличество будущих вознаграждений, используемых для оценки стоимости полиса, указанного как положительное целое число. Для получения дополнительной информации см. [1] (глава 7).
Количество будущих вознаграждений, используемых для оценки стоимости полиса, указанного как положительное целое число. Для получения дополнительной информации см. главу 7 [1].
ExperienceBufferLength - Размер буфера опыта10000 (по умолчанию) | положительное целое числоРазмер буфера опыта, указанный как положительное целое число. Во время обучения агент вычисляет обновления, используя мини-пакет опытов, случайным образом отобранных из буфера.
SampleTime - Время пробы агента1 (по умолчанию) | положительный скалярВремя выборки агента, указанное как положительный скаляр.
В среде Simulink ® агент выполняется каждыйSampleTime секунды времени моделирования.
В среде MATLAB ® агент выполняется каждый раз при продвижении среды. Однако SampleTime - интервал времени между последовательными элементами в опыте вывода, возвращаемый sim или train.
DiscountFactor - Коэффициент дисконтирования0.99 (по умолчанию) | положительный скаляр меньше или равен 1Коэффициент дисконтирования, применяемый к будущим вознаграждениям во время обучения, определяемый как положительный скаляр, меньший или равный 1.
rlDDPGAgent | Глубокая детерминированная политика градиентного усиления обучающий агент |
В этом примере показано, как создать объект параметра агента DDPG.
Создание rlDDPGAgentOptions объект, указывающий размер мини-пакета.
opt = rlDDPGAgentOptions('MiniBatchSize',48)opt =
rlDDPGAgentOptions with properties:
NoiseOptions: [1x1 rl.option.OrnsteinUhlenbeckActionNoise]
TargetSmoothFactor: 1.0000e-03
TargetUpdateFrequency: 1
ResetExperienceBufferBeforeTraining: 1
SaveExperienceBufferWithAgent: 0
SequenceLength: 1
MiniBatchSize: 48
NumStepsToLookAhead: 1
ExperienceBufferLength: 10000
SampleTime: 1
DiscountFactor: 0.9900
Опции можно изменять с помощью точечных обозначений. Например, установите время выборки агента равным 0.5.
opt.SampleTime = 0.5;
Агенты DDPG используют модель шума действия Орнштейна-Уленбека для исследования.
Один OrnsteinUhlenbeckActionNoise объект имеет следующие числовые свойства.
| Собственность | Описание | Значение по умолчанию |
|---|---|---|
InitialAction | Исходное значение действия для шумовой модели | 0 |
Mean | Среднее значение шумовой модели | 0 |
MeanAttractionConstant | Константа, указывающая, как быстро выходной сигнал шумовой модели притягивается к среднему значению | 0.15 |
StandardDeviationDecayRate | Скорость затухания стандартного отклонения | 0 |
StandardDeviation | Стандартное отклонение модели шума | 0.3 |
StandardDeviationMin | Минимальное стандартное отклонение | 0 |
На каждом этапе времени выборки k, значение шума v(k) обновляется по следующей формуле, где Ts - время выборки агента, а начальное значение v (1) определяется значением InitialAction параметр.
v(k+1) = v(k) + MeanAttractionConstant.*(Mean - v(k)).*Ts
+ StandardDeviation(k).*randn(size(Mean)).*sqrt(Ts)На каждом этапе времени выборки стандартное отклонение затухает, как показано в следующем коде.
decayedStandardDeviation = StandardDeviation(k).*(1 - StandardDeviationDecayRate); StandardDeviation(k+1) = max(decayedStandardDeviation,StandardDeviationMin);
С помощью этой простой формулы можно рассчитать, сколько выборок потребуется для уменьшения стандартного отклонения вдвое.
halflife = log(0.5)/log(1-StandardDeviationDecayRate);
Для непрерывных сигналов действия важно установить стандартное отклонение шума соответствующим образом, чтобы стимулировать исследование. Обычно устанавливается StandardDeviation*sqrt(Ts) до значения от 1% до 10% от диапазона действий.
Если ваш агент слишком быстро сходится на локальном оптимуме, стимулируйте исследование агента, увеличивая количество шума; то есть путем увеличения стандартного отклонения. Кроме того, для увеличения разведки, вы можете уменьшить StandardDeviationDecayRate.
OrnsteinUhlenbeckActionNoise объект изменилсяНе рекомендуется начинать с R2021a
Свойства, определяющие распределение вероятности модели шума Орнштейна-Уленбека (OU), переименованы. Агенты DDPG используют шум OU для разведки.
Variance свойство переименовано StandardDeviation.
VarianceDecayRate свойство переименовано StandardDeviationDecayRate.
VarianceMin свойство переименовано StandardDeviationMin.
Значения по умолчанию для этих свойств остаются прежними. Когда OrnsteinUhlenbeckActionNoise загружен шумовой объект, сохраненный из предыдущего выпуска MATLAB, значения Variance, VarianceDecayRate, и VarianceMin копируются в StandardDeviation, StandardDeviationDecayRate, и StandardDeviationMinсоответственно.
Variance, VarianceDecayRate, и VarianceMin свойства все еще работают, но они не рекомендуются. Чтобы определить распределение вероятности модели шума OU, используйте новые имена свойств.
В этой таблице показано, как обновить код для использования новых имен свойств rlDDPGAgentOptions объект ddpgopt.
| Не рекомендуется | Рекомендуется |
|---|---|
ddpgopt.NoiseOptions.Variance = 0.5; |
ddpgopt.NoiseOptions.StandardDeviation = 0.5; |
ddpgopt.NoiseOptions.VarianceDecayRate = 0.1; |
ddpgopt.NoiseOptions.StandardDeviationDecayRate = 0.1; |
ddpgopt.NoiseOptions.VarianceMin = 0; |
ddpgopt.NoiseOptions.StandardDeviationMin = 0; |
В R2020a изменилось поведение
Параметры целевого метода обновления для агентов DDPG изменены. Следующие изменения требуют обновления кода:
TargetUpdateMethod параметр был удален. Теперь агенты DDPG определяют целевой метод обновления на основе TargetUpdateFrequency и TargetSmoothFactor значения опций.
Значение по умолчанию TargetUpdateFrequency изменилось с 4 кому 1.
Чтобы использовать один из следующих целевых методов обновления, установите TargetUpdateFrequency и TargetSmoothFactor свойства, как указано.
| Метод обновления | TargetUpdateFrequency | TargetSmoothFactor |
|---|---|---|
| Сглаживание | 1 | Меньше, чем 1 |
| Периодический | Больше, чем 1 | 1 |
| Периодическое сглаживание (новый метод в R2020a) | Больше, чем 1 | Меньше, чем 1 |
Конфигурация целевого обновления по умолчанию, представляющая собой сглаживающее обновление с помощью TargetSmoothFactor значение 0.001, остается прежним.
В этой таблице показаны некоторые типичные виды использования rlDDPGAgentOptions и как обновить код для использования новой конфигурации опций.
| Не рекомендуется | Рекомендуется |
|---|---|
opt = rlDDPGAgentOptions('TargetUpdateMethod',"smoothing"); |
opt = rlDDPGAgentOptions; |
opt = rlDDPGAgentOptions('TargetUpdateMethod',"periodic"); |
opt = rlDDPGAgentOptions; opt.TargetUpdateFrequency = 4; opt.TargetSmoothFactor = 1; |
opt = rlDDPGAgentOptions; opt.TargetUpdateMethod = "periodic"; opt.TargetUpdateFrequency = 5; |
opt = rlDDPGAgentOptions; opt.TargetUpdateFrequency = 5; opt.TargetSmoothFactor = 1; |
[1] Саттон, Ричард С. и Эндрю Г. Барто. Обучение усилению: введение. Второе издание. Адаптивные вычисления и машинное обучение. Кембридж, месса: The MIT Press, 2018.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.