Опции для агента DQN
Используйте rlDQNAgentOptions
объект задать опции для агентов глубокой Q-сети (DQN). Чтобы создать агента DQN, используйте rlDQNAgent
.
Для получения дополнительной информации смотрите Глубоких Агентов Q-сети.
Для получения дополнительной информации о различных типах агентов обучения с подкреплением смотрите Агентов Обучения с подкреплением.
создает объект опций для использования в качестве аргумента при создании агента DQN с помощью всех настроек по умолчанию. Можно изменить свойства объектов с помощью записи через точку.opt
= rlDQNAgentOptions
UseDoubleDQN
— Отметьте для использования двойного DQNОтметьте для использования двойного DQN для целевых обновлений функции ценности в виде логического значения. Поскольку большая часть приложения установила UseDoubleDQN
к "on"
. Для получения дополнительной информации смотрите Глубоких Агентов Q-сети.
EpsilonGreedyExploration
— Опции для эпсилон-жадного исследованияEpsilonGreedyExploration
объектОпции для эпсилон-жадного исследования в виде EpsilonGreedyExploration
объект со следующими свойствами.
Свойство | Описание | Значение по умолчанию |
---|---|---|
Epsilon | Порог вероятности или к случайным образом выбирает действие или выбирает действие, которое максимизирует функцию ценности состояния активности. Большее значение Epsilon средние значения, что агент случайным образом исследует пространство действий на более высоком уровне. | 1
|
EpsilonMin | Минимальное значение Epsilon | 0.01
|
EpsilonDecay | Уровень затухания | 0.0050
|
В конце каждого учебного временного шага, если Epsilon
больше EpsilonMin
, затем это обновляется с помощью следующей формулы.
Epsilon = Epsilon*(1-EpsilonDecay)
Чтобы задать опции исследования, используйте запись через точку после создания rlDQNAgentOptions
объект. Например, установите значение эпсилона к 0.9
.
opt = rlDQNAgentOptions; opt.EpsilonGreedyExploration.Epsilon = 0.9;
Если ваш агент сходится на локальных оптимумах слишком быстро, способствуйте исследованию агента путем увеличения Epsilon
.
SequenceLength
— Максимальная пакетно-учебная длина траектории при использовании RNN
(значение по умолчанию) | положительное целое числоМаксимальная пакетно-учебная длина траектории при использовании рекуррентной нейронной сети для критика в виде положительного целого числа. Это значение должно быть больше 1
при использовании рекуррентной нейронной сети для критика и 1
в противном случае.
TargetSmoothFactor
— Коэффициент сглаживания для целевых обновлений критика1e-3
(значение по умолчанию) | положительная скалярная величина, меньше чем или равная 1Коэффициент сглаживания для целевого критика обновляется в виде положительной скалярной величины, меньше чем или равной 1. Для получения дополнительной информации см. Целевые Методы Обновления.
TargetUpdateFrequency
— Количество шагов между целевыми обновлениями критика
(значение по умолчанию) | положительное целое числоКоличество шагов между целевым критиком обновляется в виде положительного целого числа. Для получения дополнительной информации см. Целевые Методы Обновления.
ResetExperienceBufferBeforeTraining
— Отметьте для очистки буфера опытаtrue
(значение по умолчанию) | false
Отметьте для очистки буфера опыта перед обучением в виде логического значения.
SaveExperienceBufferWithAgent
— Отметьте для сохранения буфера опытаfalse
(значение по умолчанию) | true
Отметьте для того, чтобы сохранить буферные данные об опыте при сохранении агента в виде логического значения. Эта опция применяется и при сохранении агентов кандидата во время обучения и при сохранении агентов с помощью save
функция.
Для некоторых агентов, таких как те с большим опытом буферные и основанные на изображении наблюдения, память, требуемая для сохранения их буфера опыта, является большой. В таких случаях, чтобы не сохранить буферные данные об опыте, устанавливают SaveExperienceBufferWithAgent
к false
.
Если вы планируете далее обучить своего сохраненного агента, можно начать обучение с буфера предыдущего опыта как начальная точка. В этом случае установите SaveExperienceBufferWithAgent
к true
.
MiniBatchSize
— Размер случайного мини-пакета опыта
(значение по умолчанию) | положительное целое числоРазмер случайного опыта мини-обрабатывает в пакетном режиме в виде положительного целого числа. Во время каждого эпизода тренировки агент случайным образом выборки испытывает от буфера опыта когда вычислительные градиенты для обновления свойств критика. Большие мини-пакеты уменьшают отклонение, когда вычислительные градиенты, но увеличивают вычислительное усилие.
При использовании рекуррентной нейронной сети для критика, MiniBatchSize
количество траекторий опыта в пакете, где каждая траектория имеет длину, равную SequenceLength
.
NumStepsToLookAhead
— Количество шагов вперед
(значение по умолчанию) | положительное целое числоКоличество шагов, чтобы смотреть вперед во время обучения в виде положительного целого числа.
N-шаг Q, учащийся, не поддерживается при использовании рекуррентной нейронной сети для критика. В этом случае, NumStepsToLookAhead
должен быть 1
.
ExperienceBufferLength
— Испытайте buffer size
(значение по умолчанию) | положительное целое числоИспытайте buffer size в виде положительного целого числа. Во время обучения агент обновляет критика, использующего мини-пакет событий, случайным образом произведенных от буфера.
SampleTime
— Шаг расчета агента
(значение по умолчанию) | положительная скалярная величинаШаг расчета агента в виде положительной скалярной величины.
В окружении Simulink агент выполняется каждый SampleTime
секунды времени симуляции.
В среде MATLAB агент выполняется каждый раз усовершенствования среды. Однако SampleTime
временной интервал между последовательными элементами в выходном опыте, возвращенном sim
или train
.
DiscountFactor
— Коэффициент дисконтирования
(значение по умолчанию) | положительная скалярная величина, меньше чем или равная 1Коэффициент дисконтирования применился к будущим вознаграждениям во время обучения в виде положительной скалярной величины, меньше чем или равной 1.
rlDQNAgent | Глубокий агент обучения с подкреплением Q-сети |
В этом примере показано, как создать объект опций агента DQN.
Создайте rlDQNAgentOptions
объект, который задает размер мини-пакета агента.
opt = rlDQNAgentOptions('MiniBatchSize',48)
opt = rlDQNAgentOptions with properties: UseDoubleDQN: 1 EpsilonGreedyExploration: [1x1 rl.option.EpsilonGreedyExploration] SequenceLength: 1 TargetSmoothFactor: 1.0000e-03 TargetUpdateFrequency: 1 ResetExperienceBufferBeforeTraining: 1 SaveExperienceBufferWithAgent: 0 MiniBatchSize: 48 NumStepsToLookAhead: 1 ExperienceBufferLength: 10000 SampleTime: 1 DiscountFactor: 0.9900
Можно изменить опции с помощью записи через точку. Например, установите шаг расчета агента на 0.5
.
opt.SampleTime = 0.5;
Поведение изменяется в R2020a
Цель обновляет настройки метода для агентов DQN, изменились. Следующие изменения требуют обновлений вашего кода:
TargetUpdateMethod
опция была удалена. Теперь агенты DQN определяют целевой метод обновления на основе TargetUpdateFrequency
и TargetSmoothFactor
значения опции.
Значение по умолчанию TargetUpdateFrequency
изменился от 4
к 1
.
Чтобы использовать один из следующих целевых методов обновления, установите TargetUpdateFrequency
и TargetSmoothFactor
свойства, как обозначено.
Метод Update | TargetUpdateFrequency | TargetSmoothFactor |
---|---|---|
Сглаживание | 1
| Меньше, чем 1 |
Периодический | Больше, чем 1 | 1
|
Периодическое сглаживание (новый метод в R2020a) | Больше, чем 1 | Меньше, чем 1 |
Целевая настройка обновления по умолчанию, которая является обновлением сглаживания с TargetSmoothFactor
значение 0.001
, остается то же самое.
Эта таблица показывает некоторое типичное использование rlDQNAgentOptions
и как обновить ваш код, чтобы использовать новую настройку опции.
Не рекомендуемый | Рекомендуемый |
---|---|
opt = rlDQNAgentOptions('TargetUpdateMethod',"smoothing"); |
opt = rlDQNAgentOptions; |
opt = rlDQNAgentOptions('TargetUpdateMethod',"periodic"); |
opt = rlDQNAgentOptions; opt.TargetUpdateFrequency = 4; opt.TargetSmoothFactor = 1; |
opt = rlDQNAgentOptions; opt.TargetUpdateMethod = "periodic"; opt.TargetUpdateFrequency = 5; |
opt = rlDQNAgentOptions; opt.TargetUpdateFrequency = 5; opt.TargetSmoothFactor = 1; |
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.