Класс: 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
должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: 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 | Опередите размер этапа интеграции в текущей итерации. |
NUM STEPS | Количество этапов интеграции чехарды в текущей итерации. |
ACC RATIO | Приемное отношение, то есть, часть предложений, которые приняты. |
DIVERGENT | Числу раз сэмплер не удалось сгенерировать допустимое предложение из-за итераций чехарды, генерирующих |
Пример: 'VerbosityLevel',1
'NumPrint'
— Verbose частота вывода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 | Отношение окончательной приемки достигается во время настройки |
Если размер шага не настраивается, thenStepSizeTuningInfo
пуст.
Типы данных: 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 (максимум по опыту) точечные оценки, настроить сэмплер, чертить выборки и проверять диагностику сходимости с помощью методов класса HamiltonianSampler
. Для примера этого рабочего процесса смотрите, что Байесова Линейная регрессия Использует гамильтонов Монте-Карло.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.