estimateMAP

Класс: HamiltonianSampler

Оценка максимума плотности вероятностей журнала

Синтаксис

xhat = estimateMAP(smp)
[xhat,fitinfo] = estimateMAP(smp)
[xhat,fitinfo] = estimateMAP(___,Name,Value)

Описание

xhat = estimateMAP(smp) возвращает оценку MAP журнала плотности вероятностей дискретизатора Монте-Карло smp.

[xhat,fitinfo] = estimateMAP(smp) возвращает дополнительную информацию о модели в fitinfo.

[xhat,fitinfo] = estimateMAP(___,Name,Value) задает дополнительные опции, используя один или несколько аргументы пары "имя-значение". Задайте аргументы пары "имя-значение" после всех других входных параметров.

Входные параметры

расширить все

Гамильтоновый семплер Монте-Карло, указанный как HamiltonianSampler объект.

estimateMAP оценивает максимальное значение плотности вероятностей журнала, заданное в smp.LogPDF.

Используйте hmcSampler функция для создания дискретизатора.

Аргументы в виде пар имя-значение

Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.

Пример: 'IterationLimit',100,'StepTolerance',1e-5 оценивает точку MAP с использованием предела итерации 100 и допуска сходимости размера шага 1e-5.

Начальная точка для начала оптимизации, заданная как числовой вектор-столбец с таким же количеством элементов, как и StartPoint свойство дискретизатора smp.

Пример: 'StartPoint',randn(size(smp.StartPoint))

Максимальное количество итераций оптимизации, заданное как положительное целое число.

Пример: 'IterationLimit',100

Уровень подробностей окна Command Window во время максимизации функции, заданный как 0 или положительное целое число.

  • Со значением, установленным на 0, estimateMAP не отображает подробные сведения об оптимизации.

  • С заданным значением положительного целого числа, estimateMAP отображает информацию о сходимости при каждой итерации.

Информация о сходимости

ЗаголовокЗначение
FUN VALUEЗначение целевой функции.
NORM GRADНорма градиента целевой функции.
NORM STEPНорма итерационного шага, означающая расстояние между предыдущей точкой и текущей точкой.
CURVOK означает, что слабое условие Вульфа удовлетворено. Это условие является комбинацией достаточного уменьшения целевой функции и условия кривизны.
GAMMAСкалярное произведение шага умножает градиентное различие, деленное на скалярное произведение градиентного различия с самим собой. Градиентное различие является градиентом в текущей точке минус градиент в предыдущей точке. Предоставляет диагностическую информацию о кривизне целевой функции.
ALPHAМножитель шагового направления, который отличается от 1 когда алгоритм выполнил поиск по линии.
ACCEPTYES означает, что алгоритм нашел приемлемый шаг.

Пример: 'VerbosityLevel',1

Относительный допуск сходимости градиентов, заданный как положительная скалярная величина.

Позвольте tau = max(1,min(abs(f),infnormg0)), где f - текущее значение целевой функции и infnormg0 - начальная градиентная норма. Если норма градиента целевой функции меньше tau умножение на 'GradientTolerance' тогда считается, что максимизация сходилась к локальному оптимуму.

Пример: 'GradientTolerance',1e-4

Допуск сходимости размера шага, заданный как положительная скалярная величина.

Если предложенный размер шага меньше 'StepTolerance' тогда считается, что максимизация сходилась к локальному оптимуму.

Пример: 'StepTolerance',1e-5

Выходные аргументы

расширить все

Оценка точки MAP, возвращенная как числовой вектор того же размера, что и smp.StartPoint.

Подгонка информации для расчета MAP, возвращенная как структура с этими полями:

Область

Описание

Iteration

Индексы итерации от 0 до конечной итерации.

Objective

Отрицательный журнал плотность вероятностей при каждой итерации. Точка MAP вычисляется путем минимизации отрицательной плотности вероятностей журнала. Можно проверить, что окончательные значения все похожи, что указывает на то, что оптимизация функции сходилась к локальному оптимуму.

Gradient

Градиент отрицательной плотности вероятности журнала при конечной итерации.

Типы данных: struct

Примеры

расширить все

Создайте гамильтоновый дискретизатор Монте-Карло для нормального распределения и оцените точку MAP журнала вероятности.

Во-первых, сохраните функцию normalDistGrad на пути MATLAB ®, который возвращает многомерную нормальную логарифмическую плотность вероятностей и ее градиент (normalDistGrad определяется в конце этого примера). Затем вызовите функцию с аргументами, чтобы задать logpdf входной параметр в hmcSampler функция.

means = [1;-1];
standevs = [1;0.3];
logpdf = @(theta)normalDistGrad(theta,means,standevs);

Выберите начальную точку и создайте HMC sampler.

startpoint = zeros(2,1);
smp = hmcSampler(logpdf,startpoint);

Оцените точку MAP (точку, где плотность вероятностей имеет свой максимум). Покажите больше информации во время оптимизации путем установки 'VerbosityLevel' значение 1.

[xhat,fitinfo] = estimateMAP(smp,'VerbosityLevel',1);
 o Solver = LBFGS, HessianHistorySize = 15, LineSearchMethod = weakwolfe

|====================================================================================================|
|   ITER   |   FUN VALUE   |  NORM GRAD  |  NORM STEP  |  CURV  |    GAMMA    |    ALPHA    | ACCEPT |
|====================================================================================================|
|        0 |  6.689460e+00 |   1.111e+01 |   0.000e+00 |        |   9.000e-03 |   0.000e+00 |   YES  |
|        1 |  4.671622e+00 |   8.889e+00 |   2.008e-01 |    OK  |   9.006e-02 |   2.000e+00 |   YES  |
|        2 |  9.759850e-01 |   8.268e-01 |   8.215e-01 |    OK  |   9.027e-02 |   1.000e+00 |   YES  |
|        3 |  9.158025e-01 |   7.496e-01 |   7.748e-02 |    OK  |   5.910e-01 |   1.000e+00 |   YES  |
|        4 |  6.339508e-01 |   3.104e-02 |   7.472e-01 |    OK  |   9.796e-01 |   1.000e+00 |   YES  |
|        5 |  6.339043e-01 |   3.668e-05 |   3.762e-03 |    OK  |   9.599e-02 |   1.000e+00 |   YES  |
|        6 |  6.339043e-01 |   2.488e-08 |   3.333e-06 |    OK  |   9.015e-02 |   1.000e+00 |   YES  |

         Infinity norm of the final gradient = 2.488e-08
              Two norm of the final step     = 3.333e-06, TolX   = 1.000e-06
Relative infinity norm of the final gradient = 2.488e-08, TolFun = 1.000e-06
EXIT: Local minimum found.

Чтобы дополнительно проверить, что оптимизация сходилась к локальному минимуму, постройте график fitinfo.Objective поле. Это поле содержит значения отрицательной логарифмической плотности при каждой итерации оптимизации функции. Окончательные значения очень похожи, поэтому оптимизация сходилась.

fitinfo
fitinfo = struct with fields:
    Iteration: [7x1 double]
    Objective: [7x1 double]
     Gradient: [2x1 double]

plot(fitinfo.Iteration,fitinfo.Objective,'ro-');
xlabel('Iteration');
ylabel('Negative log density');

Figure contains an axes. The axes contains an object of type line.

Отобразите оценку MAP. Это действительно равно means переменная, которая является точным максимумом.

xhat
xhat = 2×1

    1.0000
   -1.0000

means
means = 2×1

     1
    -1

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

Совет

  • Сначала создайте гамильтоновый семплер Монте-Карло с помощью hmcSampler function, а затем использовать estimateMAP для оценки точки MAP.

  • После создания HMC-сэмплера можно настроить сэмплер, нарисовать выборки и проверить диагностику сходимости с помощью других методов HamiltonianSampler класс. Использование оценки MAP в качестве начальной точки в tuneSampler и drawSamles методы могут привести к более эффективной настройке и дискретизации. Пример этого рабочего процесса см. в Байесовской линейной регрессии с использованием гамильтонового Монте-Карло.

Алгоритмы

  • estimateMAP использует ограниченную память Broyden-Fletcher-Goldfarb-Shanno (LBFGS) quasi-Newton оптимизатор, чтобы найти максимальную плотность журнала вероятностей. См. Nocedal и Wright [1].

Ссылки

[1] Nocedal, J. and S. J. Wright. Численная оптимизация, второе издание. Springer Series in Operations Research, Springer Verlag, 2006.

Введенный в R2017a