Практическая оптимизация гиперпараметров: случайный поиск по сетке


41

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

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

Каков опыт использования сетки или случайного поиска?


Случайный поиск лучше и всегда должен быть предпочтительным. Однако было бы еще лучше использовать выделенные библиотеки для оптимизации гиперпараметров, такие как Optunity , hyperopt или bayesopt.
Марк Клазен

Bengio et al. напишите об этом здесь : apers.nips.cc/paper/…. Итак, GP работает лучше всего, но RS также отлично работает.
Парень Л

10
@Marc Когда вы предоставляете ссылку на что-то, с чем вы связаны, вы должны четко обозначить свою связь с ней (может быть достаточно одного или двух слов, даже чего-то такого краткого, как ссылка на него, как и our Optunityдолжно быть); как говорится в справке по поведению, «если что-то ... случается с вашим продуктом или веб-сайтом, это нормально. Однако вы должны раскрыть свою принадлежность»
Glen_b

Ответы:


39

Случайный поиск с вероятностью 95% может найти комбинацию параметров в пределах 5% оптимума всего за 60 итераций. Кроме того, по сравнению с другими методами он не увязает в местных оптимах.

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

Мне нравятся фильмы, в которых побеждает аутсайдер, а также статьи о машинном обучении, в которых простые решения демонстрируют удивительную эффективность. Это основная сюжетная линия «Случайного поиска для оптимизации гиперпараметров» Бергстры и Бенжио. [...] Случайный поиск не был воспринят очень серьезно раньше. Это потому, что он не выполняет поиск по всем точкам сетки, поэтому он не может превзойти оптимум, найденный при поиске по сетке. Но потом пришли Бергстра и Бенжио. Они показали, что в удивительно многих случаях случайный поиск работает примерно так же, как и поиск по сетке. В общем, попытка 60 случайных точек, взятых из сетки, кажется достаточно хорошей.

Оглядываясь назад, можно получить простое вероятностное объяснение результата: для любого распределения по выборочному пространству с конечным максимумом максимум 60 случайных наблюдений лежит в верхних 5% истинного максимума с вероятностью 95%. Это может показаться сложным, но это не так. Представьте себе 5% интервал вокруг истинного максимума. Теперь представьте, что мы выбираем точки из его пространства и видим, попадает ли какая-либо из них в этот максимум. Каждый случайный розыгрыш имеет 5% шансов на приземление в этом интервале, если мы рисуем n точек независимо, то вероятность того, что все они пропустят желаемый интервал, составляет (1-0,05)N, Таким образом, вероятность того, что хотя бы одному из них удастся попасть в интервал, равна 1 минус это количество. Мы хотим, по крайней мере, 0,95 вероятности успеха. Чтобы выяснить, сколько дро нам нужно, просто решите для n в уравнении:

1-(1-0,05)N>0,95

Мы получаем . Та-да!N60

Мораль этой истории такова: если область гиперпараметров, близкая к оптимальной, занимает не менее 5% поверхности сетки, то случайный поиск с 60 испытаниями обнаружит эту область с высокой вероятностью.

Вы можете улучшить этот шанс с большим количеством испытаний.

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


3
Ссылка на сообщение в блоге недоступна :( Может быть, это та же статья? Oreilly.com/ideas/evaluating-machine-learning-models/page/5/…
n1k31t4

@DexterMorgan Привет, спасибо за внимание. Да, блог явно закрыт, и я не уверен, что мне следует ссылаться на другие источники, которые могут не быть «официальными» , поэтому я просто оставлю это как есть, я думаю.
Firebug

Блог все еще не работает ... спасибо за цитирование и @ n1k31t4 спасибо за предоставление ссылки для дальнейшего чтения!
11

8

Посмотрите еще раз на графику из бумаги (рисунок 1). Допустим, у вас есть два параметра: при поиске по сетке 3x3 вы проверяете только три разных значения параметров по каждому из параметров (три строки и три столбца на графике слева), а при случайном поиске вы проверяете девять (!) Разных значений параметров каждого из параметров (девять отдельных строк и девять различных столбцов).

Сетка против случайного поиска

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


6

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

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

Более подробную информацию можно найти в следующих вопросах:

Каковы некоторые из недостатков байесовской гиперпараметрической оптимизации?

Оптимизация, когда функция стоимости медленна для оценки


2

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

  • Ваша проблема не имеет глобальной структуры, например, если проблема мультимодальная, а количество локальных оптимумов огромно
  • Ваша проблема шумная, т. Е. Оценка одного и того же решения дважды приводит к различным значениям целевой функции
  • Бюджет вызовов целевых функций очень мал по сравнению с количеством переменных, например, меньше 1x или 10x.
  • Количество переменных очень мало, например, меньше 5 (на практике).
  • несколько других условий.

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


Вы можете предложить что-то лучше? Как мы можем знать, что лучше, если мы не пытаемся? Мне кажется, что случайный поиск по многим моделям - лучшее компромиссное решение.
JPErwin

0

Нахождение точки в пределах 95% от максимумов в 2D-топографии только с одним максимумом занимает 100% / 25 = 25%, 6,25%, 1,5625% или 16 наблюдений. Пока первые четыре наблюдения правильно определяют, в каком квадранте находятся максимумы (экстремумы). 1D топография занимает 100/2 = 50, 25, 12,5, 6,25, 3,125 или 5 * 2. Я предполагаю, что люди, которые ищут множественные удаленные локальные максимумы, используют поиск в большой сетке, а затем регрессию или какой-то другой метод прогнозирования. Сетка из 60 наблюдений должна иметь одно наблюдение в пределах 100/60 = 1,66% от экстремумов. Глобальная оптимизация Википедия Я все еще думаю, что всегда есть лучший метод, чем случайность.


Имитация отжига - это одна из форм случайного поиска, которая существует уже несколько лет.
Майкл Р. Черник

-1

Как показал Тим, вы можете проверить больше значений параметров при случайном поиске, чем при поиске по сетке. Это особенно эффективно, если некоторые параметры, которые вы тестируете, оказываются неэффективными для вашей проблемы, например, «Незначительный параметр» на рис. 1 из статьи.

введите описание изображения здесь

Я сделал пост о настройке гиперпараметров, где объясняю различия между поиском по сетке, случайным поиском и байесовской оптимизацией. Вы можете проверить это (и дайте мне знать, если это было полезно, обратная связь приветствуется!)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.