exponenta event banner

estimateMAP

Класс: HamiltonianSampler

Оценить максимум логарифмической плотности вероятности

Синтаксис

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

Описание

xhat = estimateMAP(smp) возвращает оценку максимума a-posteriori (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

Уровень детализации вывода командного окна во время максимизации функции, указанный как 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

Примеры

развернуть все

Создайте гамильтоновский образец Монте-Карло для нормального распределения и оцените точку максимума a-posteriori (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');

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

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 Series in Operations Research, Springer Verlag, 2006.

Представлен в R2017a