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