Класс: 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' - Уровень подробностей окна Command Window0 (по умолчанию) | неотрицательное целое числоУровень подробностей окна Command Window во время настройки дискретизатора, заданный как неотрицательное целое число.
Со значением, установленным на 0, tuneSampler не отображает подробные сведения о настройке.
Со значением, установленным на 1, tuneSampler отображает сведения о настройке размера шага.
Со значением, установленным на 2 или больший, tuneSampler отображает сведения о размере шага и настройке вектора масс.
| Заголовок | Описание |
|---|---|
ITER | Номер итерации. |
LOG PDF | Журнал плотности вероятностей при текущей итерации. |
STEP SIZE | Размер шага интегрирования Leapfrog при текущей итерации. |
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 вектор -by-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 sampler.
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
The 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 (max-a-posteriori) оценки точек, настроить дискретизатор, нарисовать выборки и проверить диагностику сходимости с помощью методов HamiltonianSampler класс. Пример этого рабочего процесса см. в Байесовской линейной регрессии с использованием гамильтонового Монте-Карло.
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.