В течение этих недель я работал в основном над реализацией байесовской оптимизации на основе гауссовских процессов с использованием пакета scikit-optimize (также известного как skopt).

Что касается пространства гиперпараметров, эта реализация поддерживает только однородные, квазиформные, логарифмические и варианты выбора, в то время как байесовская оптимизация на основе оценщика дерева Парзена также поддерживает использование qloguniform, normal, qnormal, lognormal, qlognormal и, что наиболее важно, условных пространств поиска. Таким образом, этот новый метод оптимизации не позволяет создавать вложенные условные пространства, которые пригодятся в ситуациях, когда некоторые комбинации гиперпараметров недопустимы; например, когда мы оптимизируем количество слоев в нашей нейронной сети.

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

Алгоритмы оптимизации:

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

Функции приобретения:

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

  • LCB: нижняя доверительная граница.Настроив параметр каппа, мы можем сбалансировать компромисс между разведкой и добычей. Чем выше это значение, тем больше мы предпочитаем исследование, а не эксплуатацию, и наоборот.
  • EI: отрицательное ожидаемое улучшение и PI: отрицательная вероятность улучшения. Настраивая параметр xi, мы можем контролировать желаемое улучшение по сравнению с предыдущими лучшими значениями. Чем выше это значение, тем больше ожидаемое улучшение.
  • gp_hedge: вероятностный выбор одной из трех указанных выше функций приобретения на каждой итерации.
  • EIps: отрицание ожидаемого улучшения в секунду и PIps: отрицательная вероятность улучшения в секунду. Используя эти две функции приобретения, мы можем учесть время вычисления функции.

Оптимизатор посещений

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

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

Чтобы включить параллельную оптимизацию, я использовал интерфейс ask and tell, предоставляемый skopt, который позволяет запрашивать у библиотеки предложение о точке, в которой можно оценить цель, используя метод ask() из класс Optimizer и сообщить значение с помощью метода tell(). Таким образом, мы можем получить несколько перспективных наборов гиперпараметров одновременно, что позволяет проводить параллельную оптимизацию при использовании вместе с Ray, пакетом для создания и запуска распределенных приложений.

Мне кажется, что библиотека Ray стала огромным открытием, так как она позволяет указать собственный алгоритм планирования, который может досрочно останавливать испытания или возмущать параметры, и включает в себя реализации алгоритмов ранней остановки, таких как Median Stopping Rule, HyperBand. и Обучение населения (PBT). Я уверен, что это будет полезно в будущем.