Класс: 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
— Количество настраивающих итераций размера шага
(значение по умолчанию) | положительное целое числоКоличество настраивающих итераций размера шага в виде положительного целого числа.
Если 'StepSizeTuningMethod'
значением является 'none'
, затем tuneSampler
не настраивает размер шага.
Пример: 'NumStepSizeTuningIterations',50
TargetAcceptanceRatio
— Целевое приемное отношение
(значение по умолчанию) | скаляр от 0 до 1Целевое приемное отношение Цепи Маркова в виде скаляра от 0 до 1.
tuneSampler
настраивает размер шага и количество шагов интегрирования чехарды, чтобы достигнуть заданного целевого приемного отношения для фиксированного значения продолжительности симуляции. Продолжительность симуляции является размером этапа интеграции чехарды, умноженным на количество этапов интеграции.
Если 'StepSizeTuningMethod'
значением является 'none'
, затем tuneSampler
не настраивает размер шага.
Чтобы изменить продолжительность симуляции, установите smp.StepSize = a
и smp.NumSteps = b
, для некоторых значений a
и b
. Это дает продолжительность симуляции a*b
.
Пример: 'TargetAcceptanceRatio',0.55
NumStepsLimit
— Максимальное количество шагов чехарды
(значение по умолчанию) | положительное целое числоМаксимальное количество шагов чехарды позволено во время размера шага, настраивающегося в виде положительного целого числа.
Если 'StepSizeTuningMethod'
значением является 'none'
, затем tuneSampler
не настраивает размер шага.
Пример: 'NumStepsLimit',1000
VerbosityLevel
— Уровень многословия окна Command Window
(значение по умолчанию) | неотрицательное целое числоУровень многословия окна Command Window во время сэмплера, настраивающегося в виде неотрицательного целого числа.
С набором значений к 0
, tuneSampler
отображения никакие детали настройки.
С набором значений к 1
, tuneSampler
детали отображений настройки размера шага.
С набором значений к 2
или больше, tuneSampler
детали отображений размера шага и массовой векторной настройки.
Заголовок | Описание |
---|---|
ITER | Номер итерации. |
LOG PDF | Регистрируйте плотность вероятности в текущей итерации. |
STEP SIZE | Опередите размер этапа интеграции в текущей итерации. |
NUM STEPS | Количество этапов интеграции чехарды в текущей итерации. |
ACC RATIO | Приемное отношение, то есть, часть предложений, которые приняты. |
DIVERGENT | Числу раз сэмплер не удалось сгенерировать допустимое предложение из-за итераций чехарды, генерирующих |
Пример: 'VerbosityLevel',1
NumPrint
— Многословная выходная частота
(значение по умолчанию) | положительное целое числоМногословная выходная частота в виде положительного целого числа.
Если '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
isempty.
Если вы настраиваете размер шага с помощью 'dual-averaging'
метод, затем StepSizeTuningInfo
имеет следующие поля.
Поле | Описание |
---|---|
StepSize | Настроенный размер шага |
NumSteps | Настроенное значение количества шагов |
StepSizeProfile | Вектор-столбец, содержащий размеры шага в каждой настраивающей итерации |
AcceptanceRatio | Отношение окончательной приемки достигается во время настройки |
Если размер шага не настраивается, thenStepSizeTuningInfo
isempty.
Типы данных: 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
Неродной размер
, и 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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.