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.

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');

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

xhat
xhat = 2×1

    1.0000
   -1.0000

means
means = 2×1

     1
    -1

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 функция, и затем использует estimateMAP оценить точку MAP.

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

Алгоритмы

  • estimateMAP использует ограниченную память Бройден Флетчер Голдфарб Шэнно (LBFGS) оптимизатор квазиньютона, чтобы искать максимум логарифмической плотности вероятности. Смотрите Носедэла и Райта [1].

Ссылки

[1] Nocedal, J. и С. Дж. Райт. Числовая оптимизация, второй выпуск. Ряд Спрингера в исследовании операций, Springer Verlag, 2006.

Введенный в R2017a