Хорошим выбором гиперпараметров модели машинного обучения может быть разница между очень точной моделью и моделью с плохими характеристиками. Следовательно, было предпринято много усилий, чтобы понять, как найти оптимальный гиперпараметр для данного сценария. В настоящее время поиск гиперпараметров обычно выполняется путем поиска по сетке или случайного поиска, но в некоторых сценариях использование этих стратегий невозможно. Например, предположим, что вы хотите найти наилучшую скорость обучения для обучения графовой нейронной сети на наборе из 200 миллионов узлов для обнаружения мошеннических транзакций. Вы знаете, что обучение сети занимает примерно 11 часов на мощном графическом процессоре, а также что скорость обучения, вероятно, будет находиться в диапазоне от 0,0000001 до 0,01. В первой попытке вы можете попытаться разбить интервал поиска на 30 кандидатов скорости обучения (т. скорость, обеспечивающая наилучшую производительность. Однако вы быстро замечаете, что это займет целую вечность, если быть точным, 330 часов или 13,75 дней. Затем вы понимаете, что можете попробовать случайный поиск и обучить модель только 15 раз, но для проведения экспериментов на дорогом графическом процессоре все равно потребуется примерно 7 дней. Что мы можем сделать, чтобы найти наилучшую скорость обучения?

Отличным ответом на этот вопрос является байесовская оптимизация (БО). Цель BO — переформулировать исходную проблему, чтобы мы могли выполнить оптимизацию по дешевой для оценки суррогатной модели. Давайте немного подытожим, чтобы предыдущее предложение было полностью ясным. Во-первых, напомним, что на практике у нас есть набор входных данных (то есть потенциальных скоростей обучения), которые подаются в дорогостоящую операцию черного ящика, которая выводит конкретное значение для каждого ввода (то есть ошибку перекрестной проверки для каждой скорости обучения). Обратите внимание, что эту целевую функцию сложно оптимизировать не только из-за ее дороговизны, но и потому, что многие допущения, используемые в традиционных подходах к оптимизации, не выполняются в этом сценарии. Например, функция не может быть выпуклой или задача не имеет производных, что означает, что у нас нет доступа к ее градиентам (т. е. оптимизация на основе градиента невозможна). Чтобы преодолеть эти проблемы, BO предлагает оптимизировать дешевую вероятностную прокси-модель, которая аппроксимирует исходную целевую функцию. Наиболее распространенным прокси, используемым в BO, является гауссовский процесс (GP), который индуцирует распределение по функциям, описывающим процесс. Обратите внимание, что, используя GP в качестве суррогатной модели, мы можем включить в наше моделирование информацию о доступных знаниях (то есть о паре скорость обучения — ошибка). В этом отношении BO начинается с априорного убеждения в функциях, которые описывают взаимосвязь между входными данными (т. е. скоростью обучения, параметром маржи, размером пакета, планировщиком скорости обучения и т. д.) и выходными данными (т. ). Затем наше первоначальное убеждение последовательно уточняется с помощью байесовского апостериорного обновления после того, как новая точка (то есть скорость обучения) предлагается BO для следующей оценки. Наконец, используя эту обновленную вероятностную модель, функция сбора данных оценивает улучшение точек-кандидатов и определяет наилучшую точку для следующей оценки истинной цели, которая потенциально является оптимальной точкой нашей задачи оптимизации.

На этом этапе поста вы могли подумать, что ядром BO является функция приобретения. В какой-то степени вы правы! Разработка хорошей функции сбора данных необходима для эффективного нахождения оптимального значения. Проблема заключается в том, что хорошая функция сбора данных должна надлежащим образом сочетать разведку и разработку, другими словами, она должна учитывать исследование точек с высокой неопределенностью, а также использовать точки вокруг точек с низкой ошибкой. Это не так просто сделать, и по этой причине разработка лучших функций усвоения по-прежнему является активной областью исследований, особенно в обучении с подкреплением. Тем не менее, есть четыре функции сбора данных, которые довольно хорошо работают в сценарии настройки гиперпараметров: (1) вероятность улучшения и (2) ожидаемое улучшение, которое вводит резервную переменную, контролирующую степень агрессивности исследования. Мы также могли бы использовать (3) нижнюю доверительную границу или (4) энтропийный поиск, чтобы использовать прогностическое среднее значение и дисперсию GP для непосредственного нацеливания на желаемое исследование пространства.

Таким образом, BO — это структура, которая использует историю процесса оптимизации, чтобы сделать поиск оптимального значения эффективным. Это делается путем предложения вероятностной прокси-модели, которая фиксирует наши представления о поведении неизвестной переменной и использует ее апостериорную неопределенность для руководства исследованием. Функция сбора данных оценивает кандидатов и предлагает следующую точку для запроса истинной цели (то есть нейронной сети с большим графом). После наблюдения за выходным значением (то есть ошибкой предлагаемой скорости обучения) априор вероятностной прокси-модели обновляется, и процесс повторяется столько раз, сколько необходимо. Примечательно, что количество раз, которое нам нужно для запроса истинной цели, меньше, чем требуется для поиска по сетке или случайного поиска!

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

Наконец, после прочтения сообщения в блоге, не могли бы вы сказать, почему это называется байесовской оптимизацией? Оставляйте свои мысли в комментариях.

Особая благодарность Ana M. Quintero Ossa за прекрасные иллюстрации.