Всесторонний обзор оптимизации функций в гауссовских процессах, от математики до реализации

машинное обучение искусственный интеллект GitHub модульный тест
Всесторонний обзор оптимизации функций в гауссовских процессах, от математики до реализации

Гауссовский процесс можно рассматривать как алгоритм машинного обучения, который использует меру однородности между точками в качестве функции ядра для прогнозирования значения неизвестной точки на основе входных обучающих данных. В этой статье подробно рассматривается гауссовский процесс на основе теоретического вывода и реализации, а также предлагается метод его использования для аппроксимации оптимального решения неизвестной функции. Статья выбрана из efavdb, автор: Джонатан Лэнди, составлена ​​сердцем машины.

Мы рассмотрели математику и код, необходимые для подбора гауссовского процесса (GP) к данным, и, наконец, представили демонстрацию общего приложения — быстрой минимизации функций с помощью гауссовского процесса поиска. Анимация ниже демонстрирует динамику этого подхода, где красные точки — это выборки из красной кривой. Используя эти выборки, мы пытаемся использовать GP, чтобы как можно быстрее найти минимум кривой.


Приложение содержит (i) апостериорный вывод гауссовой регрессии, (ii) реализацию SKLearn в GP, (iii) краткий обзор классификаторов GP.


предисловие

Гауссовский процесс (ГП) — это инструмент для решения следующей общей проблемы: функция f(x) дискретизируется в n точках и получается набор зашумленных [1] метрик функции {f(xi)=y_i ± σ_i ,i= 1,…,n}. Итак, при наличии этих доступных выборок и функции-кандидате f, можем ли мы оценить вероятность того, что f = f?

Чтобы шаг за шагом прояснить вышеуказанную проблему, мы сначала применим правило Байеса,


Значение в левой части приведенного выше уравнения является сокращением для желаемой вероятности, то есть вероятности того, что f=f при заданном значении выборочной функции {y}. В правой части приведенного выше уравнения первый член в числителе требует от нас некоторых предположений об источнике ошибки в процессе измерения, а второй член в числителе — это априорная вероятность, где мы должны принять наиболее разумное значение. предположения. Например, ниже мы увидим, что априорная вероятность эффективно определяет вероятность f-функции при заданной гладкости.

В методе GP обе молекулы в правом уравнении следуют многомерному нормальному/гауссовскому распределению. Модели могут выбирать определенные параметры гауссовой диаграммы для достижения хорошего соответствия, но предположение о нормальном наборе признаков необходимо для решения математических задач. Используя этот подход, мы можем аналитически выписать апостериорные вероятности, которые затем можно использовать в некоторых приложениях и вычислениях. Например, мы используем этот метод для получения кривой на картинке в начале статьи, которая представляет собой оценку кривой, полученную путем подгонки случайной выборки из апостериорной вероятности GP, фиксированной для равных измерений в двух точках сжатия. Апостериорные выборки полезны как для визуализации, так и для усреднения методом Монте-Карло.

В этой статье мы делаем следующее:

(i) рассмотреть математические операции, необходимые для расчета вышеуказанных апостериорных значений;

(ii) обсудить числовую оценку и использовать GP для подгонки некоторых примерных данных;

(iii) Проанализируйте, как подобранный GP быстро минимизирует функцию затрат, например, показатель перекрестной проверки в машинном обучении.

Приложения включают вывод регрессии гауссовского процесса, реализацию SKLearn GP и краткий обзор классификаторов GP.

Простой пример процесса Гаусса доступен на нашем GitHub:GitHub.com/EF av, дБ/GA, США…

Примечание. Чтобы понять математические детали этой статьи, нужно быть знакомым с многомерным нормальным распределением. Но если вас в первую очередь интересует приложение, вы можете проигнорировать эти детали.


Оценка апостериорного анализа

Чтобы вычислить значение в левой части (1), нам нужно сначала вычислить значение в правой части. Поскольку знаменатель не зависит от f, нам нужно учитывать только члены в числителе. Это означает, что знаменатель должен быть коэффициентом нормализации, общим для всех функций-кандидатов. В этом разделе мы сначала выпишем формулу оценки для двух членов числителя, а затем рассмотрим апостериорную вероятность.

Первое допущение, которое мы делаем, состоит в том, что если реальная функция равна fhat, то наши измерения y независимы относительно fhat и следуют распределению Гаусса. Это предположение означает, что первый член в правой части уравнения (1) равен:


y_i в приведенной выше формуле — это фактические измерения точек выборки, а квадрат σ_i — их неопределенность дисперсии.

Второе предположение — это формула, которая предполагает априорную вероятность p(fhat). Мы сосредоточим наше внимание на наборе точек данных {x_i : i=1,…,N}, где первые n точек — это точки, которые были выбраны, а оставшиеся (Nn) точки — это контрольные точки в другом месте, т. е. точки, которые мы использовать для оценки совместной статистики функции f. Затем просто предположим, что точки следуют многомерному нормальному распределению f, управляемому ковариационной матрицей Σ, что дает


Здесь мы сокращаем f_i≡f(x_i). Обратите внимание, что мы предположили, что среднее значение нормального распределения выше равно нулю. Это сделано для простоты: если подходит ненулевое среднее, то анализ можно добавить к среднему или вычесть из исходного f, чтобы сделать новое среднее распределение равным нулю.

Особая форма Σ — это то место, где наблюдательность и изобретательность моделиста больше всего необходимы при моделировании GP. Исследователь, хорошо знакомый с предметом исследования, может построить очень хорошие и очень сложные априорные оценки, обычно в виде суммы термов, каждый из которых вносит свой вклад, связанный с физикой. В этом посте мы предполагаем простую формулу,


Обратите внимание, что при этом предположении, если x_i и x_j очень близки, показатель степени приблизительно равен 1. Это гарантирует высокую корреляцию соседних точек, сглаживая все функции высокой вероятности. Когда две контрольные точки находятся далеко друг от друга, скорость затухания в уравнении (4) контролируется параметром длины l. Если l большое (маленькое), кривая будет сглаживаться на длинном (коротком) расстоянии. Мы рассмотрим эти проблемы в следующем разделе и объясним в следующем разделе, как вывести подходящий параметр длины из существующих выборочных данных.

Теперь, если мы подставим уравнения (2) и (3) в уравнение (1), мы получим выражение для апостериорной вероятности p(f1|{y}). Это экспоненциальная функция, независимой переменной которой является квадратичный член функции f_i. Можно также сказать, что, как и априорная вероятность, апостериорная вероятность следует многомерному нормальному распределению. Явное выражение для среднего и ковариации этого распределения можно получить простым вычислением: используя блок (символ), где 0 соответствует точке выборки, а 1 соответствует контрольной точке, предельное распределение контрольной точки равно


y — вектор измерений длины n,


Уравнение (5) является основным результатом регрессии гауссовского процесса — с помощью этого результата мы можем оценить апостериорную вероятность. Обратите внимание, что среднее значение всех точек выборочного значения y является линейным, а дисперсия уменьшается в каждой точке рядом с измерением. Если вы заинтересованы в тщательном выводе этого результата, вы можете обратиться к нашему приложению, где есть два вывода. Однако в следующем тексте мы лишь кратко обсудим применение этой формулы.


Численный расчет апостериорной вероятности

В этом разделе мы представляем два типичных применения уравнения (5): (i) оценка среднего значения и стандартного отклонения апостериорного распределения в контрольных точках x, (ii) выборка функции f_hat непосредственно из апостериорной вероятности. Первые могут получить доверительные интервалы для функции f во всех точках, а вторые можно использовать для визуализации и общих средних значений Монте-Карло из апостериорных данных. Обе концепции проиллюстрированы на заглавном изображении этого поста: На изображении мы подгоняем GP к одномерной функции, которая уже имеет две точки измерения. Заштрихованная синим область представляет собой один доверительный интервал σ для каждого значения функции положения, а окрашенная кривая представляет собой апостериорную выборку.

Код нашего класса установки SimpleGP можно найти на GitHub. Ниже мы объясним, как это работает, но если вас интересуют подробности, вам следует ознакомиться с кодом.


интервал

Приведенный ниже код инициализирует наш класс SimpleGP, определяет некоторые местоположения выборки, значения выборки и неопределенность, а затем оценивает среднее значение и стандартное отклонение апостериорной вероятности для набора контрольных точек. Вкратце процесс выглядит следующим образом: обратная матрица, фигурирующая в уравнении (5), вычисляется путем подгонки




и сохранить результаты для последующего использования, что позволяет избежать повторной оценки этой обратной матрицы в каждой контрольной точке. Затем уравнение (5) повторно оценивается для каждой контрольной точки путем вызова интервала.

# Initialize fitter -- set covariance parameters
WIDTH_SCALE = 1.0
LENGTH_SCALE = 1.0
model = SimpleGP(WIDTH_SCALE, LENGTH_SCALE, noise=0) 

# Insert observed sample data here, fit 
sample_x = [-0.5, 2.5]
sample_y = [.5, 0]
sample_s = [0.01, 0.25]
model.fit(sample_x, sample_y, sample_s) 

# Get the mean and std at each point in x_test
test_x = np.arange(-5, 5, .05)
means, stds = model.interval(test_x)

В приведенном выше кодовом блоке WIDTH_SCALE и LENGTH_SCALE используются для указания ковариационной матрицы (4). Первый соответствует σ в уравнении, а второй соответствует l. Увеличение WIDTH_SCALE соответствует увеличению неопределенности размера неизвестной функции, а увеличение LENGTH_SCALE соответствует увеличению гладкости ожидаемой функции. На следующем рисунке показаны эти проблемы: здесь синий интервал получается при установке WIDTH_SCALE = LENGTH_SCALE = 1, а оранжевый интервал получается при установке WIDTH_SCALE = 0,5 и LENGTH_SCALE = 2. Результат более сглажен, чем синяя апостериорная оценка в оранжевом цвете. На обоих рисунках сплошная кривая представляет собой среднее значение апостериорного распределения, а вертикальная линия представляет собой доверительный интервал σ.



Апостериорная выборка

Чтобы выбрать фактическую функцию из апостериорного значения, мы снова просто оценим среднее значение и матрицы ковариации в уравнении (5), на этот раз для нескольких контрольных точек выбранной функции, которую мы ищем. Когда у нас есть средние и ковариационные матрицы апостериорных вероятностей для этих контрольных точек, мы можем делать выборки из (5), используя внешнюю библиотеку для многомерной нормальной выборки — для этого мы используем numpy в python. Последний шаг в приведенном ниже коде выполняет эти шаги.

# Insert observed sample data here. 
sample_x = [-1.5, -0.5, 0.7, 1.4, 2.5, 3.0]
sample_y = [1, 2, 2, .5, 0, 0.5]
sample_s = [0.01, 0.25, 0.5, 0.01, 0.3, 0.01]

# Initialize fitter -- set covariance parameters
WIDTH_SCALE = 1.0
LENGTH_SCALE = 1.0
model = SimpleGP(WIDTH_SCALE, LENGTH_SCALE, noise=0)
model.fit(sample_x, sample_y, sample_s)

# Get the mean and std at each point in test_x
test_x = np.arange(-5, 5, .05)
means, stds = model.interval(test_x)

# Sample here
SAMPLES = 10
samples = model.sample(test_x, SAMPLES)

Обратите внимание, что в строках 2-4 мы добавили несколько дополнительных точек выборки функций (для развлечения). Окончательный интервал и апостериорные образцы показаны ниже. Обратите внимание, что вблизи точки отбора апостериорные результаты очень хорошие. Однако в левой части рисунка апостериорное значение приближается к априорному, когда мы перемещаемся на расстояние ≥ 1 (т. е. параметр длины в ковариационной матрице (4)).



Выберите гиперпараметры ковариации

Ранее мы показали, что параметр длины нашей ковариации существенно влияет на форму интервала апостериорной вероятности и выборок внутри него. Правильная установка этих параметров является общей трудностью при использовании GP. Здесь мы описываем два метода, которые можно разумно настроить с помощью гиперпараметров и некоторых выборочных данных.


Перекрестная проверка

Перекрестная проверка — это стандартный способ установки гиперпараметров. Это требует разделения доступных выборочных данных на наборы для обучения и проверки. Обучающий набор согласовывается с GP с помощью ряда гиперпараметров, а затем точность модели оценивается на существующем проверочном наборе. Затем повторите процесс, выбрав разные гиперпараметры, выбрав набор, который лучше всего работает в наборе проверки.


максимизация вероятности края

Как правило, люди склонны применять GP в ситуациях, когда оценка образцов требует больших затрат. Это означает, что люди обычно используют GP, когда доступно только несколько образцов. В этом случае по мере увеличения количества точек обучения оптимальные гиперпараметры могут быстро меняться, а это означает, что оптимальный выбор, полученный путем перекрестной проверки, может быть намного хуже оптимального набора, полученного путем обучения полного набора выборок [3].

Другой распространенный способ установки гиперпараметров — максимизировать вероятность края. То есть мы пытаемся максимизировать вероятность наблюдаемых выборок и, таким образом, оптимизировать на основе доступных гиперпараметров. В частности, предельное правдоподобие оценивается путем интегрирования по неизвестному значению f [4].


Мы можем выполнить интегрирование напрямую, как в приложении, чтобы оценить апостериорное распределение. Но более быстрый способ - заметить, что после интегрирования f значения y следуют нормальному распределению следующим образом.

где σ^2 * I_00 определяется уравнением (6), что приводит к,

Два приведенных выше противоречат друг другу: второе уменьшается путем нахождения ковариационной матрицы, которая максимизирует показатель степени, что соответствует данным. Однако первый член противоположен второму члену, который является коэффициентом нормализации для интеграла Гаусса, который становится больше по мере того, как длина затухания становится короче, а диагональное отклонение уменьшается, что эквивалентно члену регуляризации, подавляющему сложность.

На практике для максимизации уравнения (10) обычно используют аналитическое выражение градиента и метод градиентного спуска, который является методом, принятым SKLearn. Одним из преимуществ модели является возможность оптимизации гиперпараметров ГП. Однако уравнение (10) не обязательно выпуклое и обычно имеет несколько локальных минимумов. Чтобы получить хороший минимум, попробуйте инициализировать несколько хороших начальных точек. В качестве альтернативы градиентный спуск можно инициализировать несколько раз в случайных точках, и, наконец, будет выбрано оптимальное решение.


Минимальный поиск функций и машинное обучение

Теперь мы представим общее применение GP: быстрый поиск минимального значения функции. В этой задаче мы можем итеративно получать выборки шума функции, чтобы как можно быстрее определить глобальный минимум функции. В этом случае можно применить градиентный спуск, но если функция не является выпуклой, обычно требуется повторная выборка. Чтобы уменьшить количество требуемых шагов/выборок, можно попытаться применить более общую эвристическую стратегию, уравновешивая «цель оптимизации текущего известного минимума» с «целью поиска нового локального минимума, который может быть меньше». Апостериорные данные ГП обеспечивают естественную отправную точку для разработки таких стратегий.

Идея метода поиска GP состоит в том, чтобы получить функцию оценки на основе апостериорного GP. Эта функция оценки используется для кодирования информации о поиске заданной точки, что может привести к компромиссу между разведкой и эксплуатацией. После того, как каждая точка набрана, будет выбрана точка с наибольшим (или наименьшим, наиболее подходящим) значением. Затем процесс итеративно повторяется до тех пор, пока не будет найдено удовлетворительное решение. Ниже мы обсудим четыре возможных варианта и приведем пример.


Гауссова нижняя доверительная граница (GLCB)

GLCB оценивается по каждому баллу как


Здесь μ и σ — апостериорные оценки ГП среднего значения и стандартного отклонения функции в точке x, а κ — управляющий параметр. Обратите внимание, что первый член µ(x) поощряет использование наиболее надежного локального минимума и поиск вокруг него. Точно так же второй член κσ поощряет исследование в точках, где текущая GP наиболее неуверенна в истинном значении функции.


Улучшенная гауссовская вероятность (GPI)

Если наименьшее значение, наблюдаемое до сих пор, равно y, каждая точка может быть оценена с вероятностью того, что истинное значение функции в этой точке меньше y. То есть мы можем написать как



Улучшение гауссовского ожидания (EI)

Распространенный вариант приведенного выше уравнения называется ожидаемым улучшением и определяется как


Эта функция оценки, как правило, побуждает к большему исследованию, а не к улучшению вероятностей, поскольку она уделяет больше внимания неопределенности.


минимум вероятности

Окончательная функция оценки, которую нужно получить, — это вероятность наименьшего значения в задаче. Один из способов получить эту оценку — выполнить несколько апостериорных выборок. Для каждой выборки сначала отметьте ее глобальный минимум, а затем большинством голосов определите следующую выборку.

Анимация в начале этой статьи показывает фактический поиск GP, выполненный в python с использованием skopt[5]. Красная кривая слева — это (скрытая) кривая f, которая ищет глобальный минимум. Красные точки — это образцы, которые были получены на данный момент, а зеленая заштрихованная кривая — это апостериорный доверительный интервал GP для каждой точки, который будет постепенно улучшаться по мере получения большего количества образцов. Справа показана функция оценки ожидаемого улучшения (EI) по каждому баллу — та, которая использовалась для руководства поиском в этом примере — путем ее анализа на основе апостериорного GP. Процесс начинается с пяти случайных выборок, за которыми следует управляемый поиск. Обратите внимание, что первые несколько наборов образцов используют известные локальные минимумы по мере развития процесса. Но после нескольких итераций преимущества продолжения выборки этих местоположений уменьшаются, и преобладает необходимость исследовать среднюю точку — точку, в которой находится фактический глобальный минимум.



обсуждать

В этом посте мы обрисовываем большую часть математики GP: математику, необходимую для получения апостериорных значений, выборку апостериорных значений и, наконец, обсуждение того, как на самом деле применять апостериорные значения.

В целом, GP представляет собой мощный инструмент, который может выполнять любую функцию. На практике проблема использования этого инструмента в основном заключается в выборе подходящих гиперпараметров, а поиск подходящих параметров часто оказывается в ловушке локальных минимумов, что делает подбор неэффективным. Однако при правильном выборе применение GP может обеспечить значительный прирост производительности.

Дополнительные темы по GP обсуждаются в приложении. Если вас интересуют подробности, мы можем порекомендовать бесплатный онлайн-текст Расмуссена и Уильямса [6].


Приложение A: Апостериорная деривация

В этом приложении мы предлагаем два метода апостериорного вывода (5).


метод 1

Первый квадрат, объедините формулу (2) и формулу (3), просто рассчитайте



Здесь (1/σ^2) * I определено в уравнении (6), но равно нулю во всех строках за пределами выборки. Чтобы получить уравнение (5), мы должны объединить в блочную структуру обратную матрицу в основном тексте.

Во-первых, мы можем получить


Здесь мы используем блочную нотацию. Чтобы вычислить приведенную выше обратную матрицу, мы будем использовать формулу обращения блочной матрицы,


Блоки C = 0, D = 1 в матрице (A2), что значительно упрощает описанный выше процесс. После замены


Используя этот результат и (A1), мы можем получить среднее значение тестового набора

где числитель и знаменатель второй строки умножаются на величину, обратную (1/σ^2) * I_00. Точно так же ковариация тестового набора задается нижним правым блоком (A3). получить,


Уравнение (5) получается из (А4) и (А5).


Способ 2

Во втором подходе мы рассматриваем совместное распределение набора контрольных точек f_1 и набора наблюдаемых выборок f_0, опять же предполагая, что среднее значение функции плотности равно нулю. Тогда совместная плотность вероятности двух


Теперь используем результат

Уравнение (5) должно использовать два приведенных выше выражения. Основная трудность заключается в возведении в квадрат, что можно сделать с помощью формулы обращения блочной матрицы, аналогичной предыдущему выводу.


Приложение B: Реализация SKLearn и другие ядра

SKLearn предоставляет классы, содержащие GaussianProcessRegressor. позволяет подбирать и выбирать в любом измерении, т. е. он более общий, чем наш самый маленький класс, потому что он может соответствовать векторам признаков в нескольких измерениях. Кроме того, подходящие методы класса SKLearn пытаются найти оптимальный набор гиперпараметров для заданного набора данных. Как упоминалось выше, это делается путем максимизации вероятности края. Здесь мы приводим некоторые основные комментарии об этом классе и функции ядра, которые можно использовать для определения ковариационной матрицы Σ в (3), а также простой фрагмент кода, иллюстрирующий вызов.



Предопределенные функции ядра

  • Радиальная базисная функция (RBF): это значение по умолчанию, эквивалентное уравнению (4). РБФ характеризуется масштабным параметром l, который в многомерном случае может быть вектором, учитывающим анизотропные корреляционные длины.

  • Белое ядро: Белое ядро ​​используется для оценки шума — в документации предлагается оценивать глобальный уровень шума, но не точечный.

  • Матерн: Это обобщенное экспоненциальное затухание, где показатель степени представляет собой степенной закон расстояния разделения. Специальные ограничения включают RBF и экспоненциальное затухание абсолютного расстояния.

  • Рациональное квадратное уравнение: (1+(d/l)2)α.

  • Exp-Sine-Squared: позволяет моделировать периодические функции. Аналогичен RBF, но расстояние равно синусу фактического расстояния. Есть периодические параметры и "дисперсия" - шкала подавления Гаусса.

  • Ядро скалярного произведения: формат 1 +xi⋅xj. Он не стабилен, то есть если добавить постоянный перевод, то результат изменится. Если вы поместите предыдущее значение N (0,1) на коэффициенты, вы получите результат анализа линейной регрессии.

  • Функции ядра как объекты: могут поддерживаться двоичные операции между функциями ядра для создания более сложных функций ядра, таких как сложение, умножение и возведение в степень (последнее просто возводит исходную функцию ядра в степень). Вы можете получить доступ ко всем параметрам в функции ядра через некоторые вспомогательные функции, например, kernel.get_params().kernel.hyperparameters — это список всех гиперпараметров.


параметр

  • n_restarts_optimizer: количество обновлений для изучения нескольких локальных минимумов, по умолчанию — ноль.

  • альфа: Этот необязательный параметр позволяет каждому измерению пройти неопределенность.

  • normalize_y: используется для указания того, что среднее значение y, которое мы ищем, не обязательно равно нулю.


пример вызова

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


from sklearn.gaussian_process.kernels import RBF, ConstantKernel as C
from sklearn.gaussian_process import GaussianProcessRegressor
import numpy as np

# Build a model
kernel = C(1.0, (1e-3, 1e3)) * RBF(10, (0.5, 2))
gp = GaussianProcessRegressor(kernel=kernel, n_restarts_optimizer=9)

# Some data
xobs = np.array([[1], [1.5], [-3]])
yobs = np.array([3, 0, 1])

# Fit the model to the data (optimize hyper parameters)
gp.fit(xobs, yobs)

# Plot points and predictions
x_set = np.arange(-6, 6, 0.1)
x_set = np.array([[i] for i in x_set])
means, sigmas = gp.predict(x_set, return_std=True)

plt.figure(figsize=(8, 5))
plt.errorbar(x_set, means, yerr=sigmas, alpha=0.5)
plt.plot(x_set, means, 'g', linewidth=4)
colors = ['g', 'r', 'b', 'k']
for c in colors:
y_set = gp.sample_y(x_set, random_state=np.random.randint(1000))
 plt.plot(x_set, y_set, c + '--', alpha=0.5)

Более подробную информацию о реализации sklearn можно найти здесь:SCI kit-learn.org/stable/Modu…


Приложение C: Классификатор GP

Здесь мы показываем, как GP обычно используется для подбора данных двоичного типа, данных, для которых переменная ответа y может принимать значения 0 или 1. Математика классификаторов GP не так ясна, как регрессия GP. Поскольку ответ 0/1 не является гауссовым, это означает, что апостериорный тоже не является гауссовым. Чтобы воспользоваться этой процедурой, апостериорную вероятность можно обычно аппроксимировать приближением Лапласа.

Начните с написания формулы вероятности увидеть заданное значение y в точке x. детали следующим образом,

Эта формула является обычным нелинейным обобщением логистической регрессии. Кроме того, априорная вероятность f снова дает уравнение (3). Используя эту формулу и (A8), мы можем получить апостериорную вероятность f

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


Оригинальная ссылка:EF от nor.com/Gaussian — лжец…