Создание простой интуиции для байесовской оптимизации для машинного обучения

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

  1. Меняйте настройки регуляторов бесчисленное количество раз, варите разные сорта кофе, пробуйте их все, найдите свой лучший напиток и умрите от передозировки кофеина.
  2. Попробуйте найти функцию brew-quality = f (brew-styles) путем количественной оценки различных задействованных факторов и найдите глобальные максимумы с помощью метода градиентного спуска, воспользовавшись преимуществом вычисления производных функции.

Здесь следует отметить два момента:

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

Итак, что нам делать?

Есть структура, которая может решить эту проблему, и это байесовская оптимизация.

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

Байесовская оптимизация

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

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

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

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

Эта оценка исходной функции из оцененной функции представляет собой гауссовский процесс (в данный момент вам не нужно о нем знать). Предполагаемая функция, с другой стороны, называется суррогатной функцией (просто номенклатура).

Создайте новую оценочную функцию с помощью вновь созданных данных.

Оцените новые точки оценки (третья итерация) по вновь оцененной функции. Продолжайте повторять этот процесс, пока не исчерпаете количество оценок (в нашем случае 15). И надеемся, что по окончании 15 итераций оценочная функция будет хорошим приближением исходной функции.

Если оцениваемая функция достаточно хороша, тогда эта методология будет работать и сэкономит вам много времени.

Этот метод гораздо более интуитивно понятен и имитирует реальную жизнь, чем оценка каждой чашки кофе на предмет качества заваривания. Он имеет байесовский характер (обсуждается ниже). Скажем, для определенного стиля заваривания 100 мл в чашке вы можете изменять количество молока от 15 мл до 50 мл с шагом 1 мл. Если вы уже знаете, что после 20 мл молока кофе слишком слабый, то зачем вам оценивать чашки кофе с 20–50 мл молока.

С другой стороны, случайный поиск может оценить многие чашки с содержанием молока от 20 до 50 мл и, следовательно, оценки отходов.

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

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

Замечание о гауссовском процессе

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

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

Теперь, основываясь на синей линии, как мы можем сделать дополнительные выводы об оранжевой линии?

Здесь нам нужны две вещи:

  1. Мы хотим проводить оценку в тех точках, где производительность высока (помните, что мы стремимся к максимальному качеству варки, и поэтому ценится высокая ценность). Это эксплуатация
  2. Мы должны исследовать области кривой, о которых мы знаем меньше, например мы мало знаем о том, что происходит между 2 и 3 или между 5 и 10, поэтому новые точки оценки должны исходить оттуда. Это исследование.

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

(Следующие уравнения обсуждаются в сообщении на Quora)

Общие функции сбора данных включают ожидаемое улучшение и максимальную вероятность улучшения.

Эта функция сбора невелика, ее гораздо дешевле оценить, и поэтому оптимизировать ее намного проще, чем делать что-то еще.

Определим два значения,

μ (x) = оценочное значение функции для любого входа x (синяя линия)

σ (x) = стандартное отклонение значений при различных значениях x (стандартное отклонение относительно синей линии)

Определим функцию ζ (x)

На основе этой ζ-функции можно определить a (x), функцию приобретения.

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

Этот доклад о pyData полезен, чтобы лучше понять гауссовские процессы.

Об этом говорится и в статье на TDS.

Что байесовского в байесовской оптимизации?

(Следующая часть взята из моего старого поста о Байесовской статистике)

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

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

Распространенный язык теоремы Байеса:

P (β | y, X) называется апостериорным распределением значений, которые необходимо оценить, β, учитывая данные X и y, где X - вход, а y - выход.

P (y | β, X) - это вероятность данных, которая умножается на априорную вероятность параметров, P (β | X), и делится на P (y | X), которая равна известная как константа нормализации. Этот параметр нормализации требуется, чтобы сумма значений в P (β | y, X) была равна 1.

Короче говоря, мы используем нашу априорную информацию о суррогатной функции для апостериорной оценки.

В случае байесовской оптимизации:

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

Заключение

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

В машинном обучении BO используется для оптимизации гиперпараметров, например количество деревьев в случайном лесу, их глубина, листья и т. д. можно настроить с помощью BO. Существует множество библиотек на многих языках, которые можно использовать для дальнейшего изучения концепций, таких как hyperopt, botorch, bayes-optim и т. Д., И которые могут стать свидетелями практического применения мощности.

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

Ладно, не совсем так! Этой гипотетической кофемашины не существует, но, тем не менее, у вас есть инструмент, чтобы найти лучший напиток с помощью математических методов.

Источники:

Https://static.sigopt.com/773979031a2d61595b9bda23bb81a192341f11a4/pdf/SigOpt_Bayesian_Optimization_Primer.pdf

Github для создания диаграмм: https://github.com/Prashantmdgl9/Bayesian_Optimization