Класс: HamiltonianSampler
Настройка гамильтонова образца Монте-Карло (HMC)
tunedSmp = tuneSampler(smp)
[tunedSmp,tuningInfo] = tuneSampler(smp)
[tunedSmp,tuningInfo] = tuneSampler(___,Name,Value)
возвращает настроенный гамильтоновский образец Монте-Карло (HMC).tunedSmp = tuneSampler(smp)
Во-первых, tuneSampler настраивает вектор массы дискретизатора HMC smp. Затем он настраивает размер шага и количество шагов интеграций скачкообразного изменения для достижения определенного целевого коэффициента принятия.
Настроенный образец можно использовать для создания цепей Маркова с помощью drawSamples способ.
[ возвращает дополнительную информацию о настройке в tunedSmp,tuningInfo] = tuneSampler(smp)tuningInfo.
[ указывает дополнительные параметры, использующие один или несколько аргументов пары имя-значение. Укажите аргументы пары имя-значение после всех других входных аргументов. tunedSmp,tuningInfo] = tuneSampler(___,Name,Value)
smp - Гамильтонский образец Монте-КарлоHamiltonianSampler объект Гамильтоновый образец Монте-Карло для настройки, указанный как HamiltonianSampler объект.
Используйте hmcSampler для создания образца.
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
'StepSizeTuningMethod','dual-averaging','MassVectorTuningMethod','hessian' настраивает дискретизатор HMC с использованием заданных методов настройки размера шага и вектора массы дискретизатора.'StartPoint' - Начальная точка для начала настройки сsmp.StartPoint (по умолчанию) | числовой вектор столбцаНачальная точка для начала настройки, заданная как числовой вектор столбца с тем же количеством элементов, что и StartPoint свойство пробоотборника smp.
Пример: 'StartPoint',randn(size(smp.StartPoint))
'StepSizeTuningMethod' - Метод настройки размера шага пробоотборникаsmp.StepSizeTuningMethod (по умолчанию) | 'dual-averaging' | 'none'Метод настройки размера шага пробоотборника, указанный как разделенная запятыми пара, состоящая из 'StepSizeTuningMethod' и 'dual-averaging' или 'none'.
Если 'StepSizeTuningMethod' имеет значение 'dual-averaging', то tuneSampler настраивает размер шага скачкообразного изменения образца HMC для достижения целевого коэффициента приемки для фиксированного значения длины моделирования. Длина моделирования равна размеру шага, умноженному на количество шагов. Чтобы задать целевой коэффициент приемки, установите 'TargetAcceptanceRatio' значение.
Чтобы изменить длину моделирования, задайте smp.StepSize = a и smp.NumSteps = b, для некоторых значений a и b. Это дает длину моделирования a*b.
Пример: 'StepSizeTuningMethod','none'
'MassVectorTuningMethod' - Метод настройки массового вектора пробоотборникаsmp.MassVectorTuningMethod (по умолчанию) | 'iterative-sampling' | 'hessian' | 'none'Метод настройки массового вектора пробоотборника, определяемый как разделенная запятыми пара, состоящая из: 'MassVectorTuningMethod' и одно из следующих значений.
| Стоимость | Описание |
|---|---|
'iterative-sampling' | Настройка |
'hessian' | Установите |
'none' | Не выполнять настройку |
Пример: 'MassVectorTuningMethod','hessian'
'NumStepSizeTuningIterations' - количество итераций настройки размера шага;100 (по умолчанию) | положительное целое числоЧисло итераций настройки размера шага, указанное как положительное целое число.
Если 'StepSizeTuningMethod' значение равно 'none', то tuneSampler не настраивает размер шага.
Пример: 'NumStepSizeTuningIterations',50
'TargetAcceptanceRatio' - Целевой коэффициент приемки0.65 (по умолчанию) | скаляр от 0 до 1Целевой коэффициент принятия цепи Маркова, заданный как скаляр от 0 до 1.
tuneSampler настраивает размер шага и количество шагов интеграции скачкообразного изменения для достижения заданного целевого коэффициента приемки для фиксированного значения длины моделирования. Длина моделирования - это размер шага интегрирования, умноженный на количество шагов интегрирования.
Если 'StepSizeTuningMethod' значение равно 'none', то tuneSampler не настраивает размер шага.
Чтобы изменить длину моделирования, задайте smp.StepSize = a и smp.NumSteps = b, для некоторых значений a и b. Это дает длину моделирования a*b.
Пример: 'TargetAcceptanceRatio',0.55
'NumStepsLimit' - Максимальное количество скачкообразных шагов2000 (по умолчанию) | положительное целое числоМаксимальное число шагов скачкообразного изменения, разрешенное при настройке размера шага, указанное как положительное целое число.
Если 'StepSizeTuningMethod' значение равно 'none', то tuneSampler не настраивает размер шага.
Пример: 'NumStepsLimit',1000
'VerbosityLevel' - Уровень детализации выходных данных окна команд0 (по умолчанию) | неотрицательное целое числоУровень детализации выходных данных командного окна при настройке семплера, заданный как неотрицательное целое число.
Со значением, равным 0, tuneSampler не отображает сведения о настройке.
Со значением, равным 1, tuneSampler отображает сведения о настройке размера шага.
Со значением, равным 2 или больше, tuneSampler отображает сведения о размере шага и настройке массового вектора.
| Заголовок | Описание |
|---|---|
ITER | Номер итерации. |
LOG PDF | Плотность вероятности регистрации на текущей итерации. |
STEP SIZE | Скачкообразный размер шага интеграции при текущей итерации. |
NUM STEPS | Число шагов интеграции с проскоком в текущей итерации. |
ACC RATIO | Коэффициент приемки, то есть доля принятых предложений. |
DIVERGENT | Число неудачных попыток создания действительного предложения из-за генерации итераций скачкообразного изменения |
Пример: 'VerbosityLevel',1
'NumPrint' - Подробная выходная частота100 (по умолчанию) | положительное целое числоПодробная выходная частота, заданная как положительное целое число.
Если 'VerbosityLevel' значение является положительным целым числом, tuneSampler выводит сведения о настройке каждые 'NumPrint' итерации.
Пример: 'NumPrint',50
tunedSmp - Настроенный гамильтоновский образец Монте-КарлоHamiltonianSampler объектНастроенный гамильтоновский образец Монте-Карло, возвращенный в качестве HamiltonianSampler объект.
tuningInfo - Информация о настройкеИнформация о настройке, возвращенная в виде структуры с этими полями.
| Область | Описание |
|---|---|
MassVector | Настроенный вектор массы |
StepSize | Настроенный размер шага скачка |
NumSteps | Настроенное значение количества шагов интеграции с проскоком |
MassVectorTuningInfo | Структура с дополнительной информацией о настройке массового вектора |
StepSizeTuningInfo | Структура с дополнительной информацией о настройке размера шага |
При настройке вектора массы с помощью 'iterative-sampling' способ, затем MassVectorTuningInfo имеет следующие поля.
| Область | Описание |
|---|---|
MassVector | Настроенный вектор массы |
IterativeSamplingMassVectorProfile | Матрица P-by-K масс-векторов, используемых при итерациях K, где P - число переменных выборки |
IterativeSamplingNumSamples | Вектор K-1 количества образцов, оттянутых для каждого из повторений K |
При настройке вектора массы с помощью 'hessian' способ, затем MassVectorTuningInfo имеет следующие поля.
| Область | Описание |
|---|---|
MassVector | Настроенный вектор массы |
NegativeDiagonalHessian | Отрицательная диагональ Гессена из |
HessianPoint | Точка, в которой оценивается гессенец |
Если MassVectorTuningMethod значение равно 'none', то MassVectorTuningInfo пуст.
При настройке размера шага с помощью 'dual-averaging' способ, затем StepSizeTuningInfo имеет следующие поля.
| Область | Описание |
|---|---|
StepSize | Настроенный размер шага |
NumSteps | Настроенное значение количества шагов |
StepSizeProfile | Вектор столбца, содержащий размеры шагов при каждой итерации настройки |
AcceptanceRatio | Коэффициент окончательной приемки, достигаемый при настройке |
Если размер шага не настроен, тоStepSizeTuningInfo пуст.
Типы данных: struct
Настройте параметры гамильтонова образца Монте-Карло (HMC).
Определите количество параметров для выборки и их средства.
NumParams = 9; means = [1:NumParams]'; standevs = 1;
Сначала сохраните функцию normalDistGrad на пути MATLAB ®, который возвращает многомерную нормальную плотность логарифмической вероятности и ее градиент (normalDistGrad определяется в конце этого примера). Затем вызовите функцию с аргументами, чтобы определить logpdf входной аргумент для hmcSampler функция.
logpdf = @(theta)normalDistGrad(theta,means,standevs);
Выберите начальную точку и создайте образец HMC.
startpoint = randn(NumParams,1); smp = hmcSampler(logpdf,startpoint);
Важно выбрать хорошие значения для параметров пробоотборника, чтобы получить эффективную выборку. Лучший способ найти хорошие значения - это автоматически настроить MassVector, StepSize, и NumSteps параметры с использованием tuneSampler. Метод:
1. Настраивает MassVector пробоотборника.
2. Мелодии StepSize и NumSteps для фиксированной длины моделирования для достижения определенного коэффициента приемки. Целевой коэффициент принятия по умолчанию 0,65 в большинстве случаев является хорошим.
[smp,info] = tuneSampler(smp,'NumStepSizeTuningIterations',50,'VerbosityLevel',1,'NumPrint',10);
o Tuning mass vector using method: iterative-sampling Finished mass vector tuning iteration 1 of 5. Finished mass vector tuning iteration 2 of 5. Finished mass vector tuning iteration 3 of 5. Finished mass vector tuning iteration 4 of 5. Finished mass vector tuning iteration 5 of 5. o Tuning step size using method: dual-averaging. Target acceptance ratio = 0.65 o Initial step size for dual-averaging = 2 |==================================================================================| | ITER | LOG PDF | STEP SIZE | NUM STEPS | ACC RATIO | DIVERGENT | |==================================================================================| | 10 | -1.710457e+01 | 1.193e+00 | 4 | 5.000e-01 | 0 | | 20 | -9.152514e+00 | 9.527e-01 | 5 | 5.500e-01 | 0 | | 30 | -1.068923e+01 | 8.856e-01 | 6 | 5.333e-01 | 0 | | 40 | -1.290816e+01 | 8.506e-01 | 6 | 5.750e-01 | 0 | | 50 | -1.770386e+01 | 8.581e-01 | 6 | 6.000e-01 | 0 |
Постройте график изменения размера шага во время настройки, чтобы гарантировать сходимость настройки размера шага. Просмотрите достигнутый коэффициент приемки.
figure; plot(info.StepSizeTuningInfo.StepSizeProfile); xlabel('Iteration'); ylabel('Step Size');

accratio = info.StepSizeTuningInfo.AcceptanceRatio
accratio = 0.6000
normalDistGrad функция возвращает логарифм многомерной нормальной плотности вероятности со средним значением в Mu и стандартные отклонения в Sigma, указанные как скаляры или векторы столбцов той же длины, что и startpoint. Вторым выходным аргументом является соответствующий градиент.
function [lpdf,glpdf] = normalDistGrad(X,Mu,Sigma) Z = (X - Mu)./Sigma; lpdf = sum(-log(Sigma) - .5*log(2*pi) - .5*(Z.^2)); glpdf = -Z./Sigma; end
После создания образца HMC с помощью hmcSampler функция, можно вычислить оценки точек MAP (maximum-a-posteriori), настроить дискретизатор, нарисовать выборки и проверить диагностику сходимости с помощью методов HamiltonianSampler класс. Пример этого рабочего процесса см. в разделе Байесовская линейная регрессия с использованием гамильтонова Монте-Карло.
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.