Гиперпараметры в алгоритме машинного обучения похожи на ручки в газовой плите. Точно так же, как мы регулируем ручку на газовой плите, пока не достигнем правильных настроек, чтобы наша еда была приготовлена так, как нам нравится. Точно так же мы настраиваем гиперпараметры алгоритма машинного обучения, чтобы он работал на оптимальном уровне и достиг желаемого уровня производительности.
Прежде чем я начну обсуждать алгоритмы поиска для оптимизации гиперпараметров, позвольте мне развенчать несколько распространенных мифов, которые существуют у людей, когда дело доходит до гиперпараметров!
Миф 1. Параметры и гиперпараметры одинаковы
Причина этой путаницы в том, что в алгоритме машинного обучения присутствуют два типа обучаемых сущностей: параметры и гиперпараметры. Параметры изучаются моделью во время обучения, в то время как гиперпараметры устанавливаются пользователем перед обучением.
Оповещение о разрушении мифов
Параметр: объект модели машинного обучения, который изучается во время обучения.
Гиперпараметр: объект модели машинного обучения, который задается перед началом обучения.
Например, рассмотрим логистическую регрессию. Логистическая регрессия - это алгоритм классификации.
На рисунке выше показана модель логистической регрессии. Позвольте мне очень кратко объяснить идею логистической регрессии. Для любых заданных входных данных X мы сначала изучаем линейную модель в форме Z = WX + B, где W и B действуют как параметры. Затем мы вычисляем сигмоид Z, который принимает значения от 0 до 1. Итак, чтобы решить, к какому классу принадлежит данная точка данных (класс 0 или класс 1), мы обычно устанавливаем порог (например, порог = 0,5. ), который помогает выбрать класс. Если значение сигмовидного выходного сигнала больше порогового значения, тогда выходное значение задачи классификации равно 1, т. Е. Точка данных принадлежит классу 1, иначе она принадлежит классу 0. Такие сущности, как W и B, называются параметрами, которые изучаются во время обучения на заданных данных X. В то время как такие объекты, как тип алгоритма оптимизации, метод регуляризации, альфа или скорость обучения, C (параметр, обратный параметру регуляризации, который используется для сохранения силы регуляризации, т. е. C = 1 / лямбда), являются примерами гиперпараметров.
Давайте рассмотрим еще один распространенный миф о гиперпараметрической оптимизации.
Миф 2: Использование значений гиперпараметров по умолчанию - это хорошо. Нет необходимости пробовать их настраивать.
Значения гиперпараметров по умолчанию могут быть выбраны по умолчанию различными библиотеками машинного обучения, такими как sklearn, Hyperopt и т. Д., Потому что они являются достаточно хорошими комбинациями для определенных проверенных задач в академической литературе. Но такие значения могут не подходить для постановки вашей задачи. Всегда не забывайте поиграть с этими ценностями и посмотреть, что лучше всего подходит для вас. Не верите мне? Начните тестирование различных комбинаций этих гиперпараметров в своем наборе данных. Вы автоматически увидите разницу!
Оповещение о разрушении мифов
Значения по умолчанию проверяются только для нескольких избранных формулировок проблемы и могут быть не лучшим выбором гиперпараметра для вашей проблемы . Так что всегда настраивайте свои гиперпараметры!
Теперь, когда мы развенчали некоторые распространенные мифы относительно оптимизации гиперпараметров. Позвольте мне обсудить некоторые из наиболее распространенных методов оптимизации гиперпараметров. А именно: Поиск по сетке, Случайный поиск и Байесовский поиск .
Поиск по сетке - это метод, в котором мы пробуем все возможные комбинации набора гиперпараметров. Каждая комбинация гиперпараметров представляет собой модель машинного обучения. Следовательно, N комбинаций представляют N моделей машинного обучения. С помощью поиска по сетке мы определяем модель, которая показывает лучшую производительность. Это делает поиск по сетке довольно дорогим не только с точки зрения сложности времени, но и сложности по пространству.
Посмотрите на рисунок ниже. Тип регуляризации (штраф) и C являются гиперпараметрами логистической регрессии, как показано ниже.
Гиперпараметры логистической регрессии
Тип регуляризации (или штраф) = {l1, l2, None}
C = { 0.1 , 1}
Grid Search проверяет все комбинации (все возможные модели) таких значений на заданных данных и находит наилучшую возможную модель, используя указанные пользователем показатели оценки, такие как точность, точность, отзыв и т. Д.
Комбинации:
{штраф: l1, C = 0,1} == › Модель 1
{штраф: l1, C = 1}. == › Модель 2
{штраф: l2, C = 0,1} == › Модель 3
{штраф: l2, C = 1} == › Модель 4
{штраф: нет, C = 0,1} == › Модель 5
{штраф: нет, C = 1} == › Модель 6
Другими словами, поиск по сетке будет принимать одну комбинацию штрафа и C за раз (по одной модели за раз), подгонять ее к обучающим данным (или сгибу перекрестной проверки) и вычислять, насколько хорошо он работает. Он будет делать это для всех возможных (показанных выше) комбинаций, и в конце выбирается та, которая показывает наилучшую производительность. Обратите внимание, что существует больше гиперпараметров логистической регрессии, но для краткости я выбрал только два из них, чтобы продемонстрировать, как работает Grid Search.
Поиск по сетке. Проверяет все возможные комбинации перестановок гиперпараметров данного алгоритма машинного обучения.
С другой стороны, Случайный поиск , - это метод, в котором мы пробуем случайно выбранную комбинацию гиперпараметров. Обычно это довольно дешево с точки зрения вычислений и позволяет получить достаточно приличные комбинации гиперпараметров, которые обеспечивают желаемый уровень производительности.
Другими словами, случайный поиск может довольно быстро выбрать случайные комбинации штрафа и C из всех возможных (как показано выше) и проверить только эти выбранные комбинации.
Случайный поиск: случайным образом выбирает комбинации гиперпараметров из доступной для поиска области (все возможные комбинации).
Единственная проблема со случайным поиском заключается в том, что он не сообщает нам, как он выбирает комбинации гиперпараметров. Процесс полностью случайен, и нет никакого способа узнать, существует ли лучшая комбинация. Невозможно сузить область поиска, поскольку мы фактически не знаем, где мы можем найти лучшие значения.
Байесовский поиск, с другой стороны, решает указанную выше проблему. Это еще один хорошо известный метод оптимизации гиперпараметров. Как следует из названия, техника работает по принципу Байеса. Принцип Байеса в основном гласит, что апостериорное распределение вероятностей прямо пропорционально заданным ему априорным вероятностям (априорному распределению вероятностей) и функции правдоподобия.
Проще говоря, априорное распределение вероятностей можно рассматривать как экспертные знания, которые передаются модели, чтобы помочь расширить знания, которые модель машинного обучения получает, глядя на данные обучения. Функцию правдоподобия можно рассматривать как понимание того, насколько вероятно событие B может произойти (или будет правдой), учитывая, что событие A уже произошло. И последнее, но не менее важное: апостериорное распределение вероятностей можно рассматривать как окончательную усвоенную модель, которая содержит знания экспертной области и учитывает вероятность заданных входных данных.
Таким образом, байесовская оптимизация или байесовский поиск учитывает ранее известные знания (априорные значения) и выполняет поиск только тех комбинаций гиперпараметров, которые, по ее мнению, повысят производительность модели.
Байесовский поиск: основан на правиле Байеса и учитывает ранее известные знания, чтобы помочь сузить область поиска хороших комбинаций гиперпараметров.
Байесовский поиск обычно занимает больше времени, чем случайный поиск, но меньше времени, чем поиск по сетке.
В порядке сложности времени
Поиск по сетке ›Байесовский поиск› Случайный поиск
Я надеюсь, что эта статья помогла прояснить некоторые из наиболее распространенных сомнений, возникающих при оптимизации гиперпараметров.
Спасибо за чтение!
Продолжай учиться!
Ресурсы:
Изучение Sklearn / Scikit: https://scikit-learn.org/stable/
Логистическая регрессия: https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LogisticRegression.html
Hyperopt: https://github.com/hyperopt/hyperopt
Хорошим источником понимания принципа Байеса может быть: https://luminousmen.com/post/data-science-bayes-theorem