Русская Википедия:Оптимизация гиперпараметров
Оптимизация гиперпараметров — задача машинного обучения по выбору набора оптимальных гиперпараметров для обучающего алгоритма.
Одни и те же виды моделей машинного обучения могут требовать различные предположения, веса или скорости обучения для различных видов данных. Эти параметры называются гиперпараметрами и их следует настраивать так, чтобы модель могла оптимально решить задачу обучения. Для этого находится кортеж гиперпараметров, который даёт оптимальную модель, оптимизирующую заданную функцию потерь на заданных независимых данных[1]. Целевая функция берёт кортеж гиперпараметров и возвращает связанные с ними потери[1]. Часто используется перекрёстная проверка для оценки этой обобщающей способностиШаблон:Sfn.
Подходы
Поиск по решётке
Традиционным методом осуществления оптимизации гиперпарамеров является поиск по решётке (или вариация параметров), который просто делает полный перебор по заданному вручную подмножеству пространства гиперпараметров обучающего алгоритма. Поиск по решётке должен сопровождаться некоторым измерением производительности, обычно измеряемой посредством перекрёстной проверки на тренировочном множестве[2], или прогонкой алгоритма на устоявшемся проверочном набореШаблон:Sfn.
Поскольку пространство параметров алгоритма машинного обучения для некоторых параметров может включать пространства с вещественными или неограниченными значениями, вручную установить границу и дискретизацию может оказаться необходимым до применения поиска по решётке.
Например, типичный классификатор с мягким зазором на основе метода опорных векторов (МОВ), оснащённый Шаблон:Не переведено 5 имеет по меньшей мере два гиперпараметра, которые необходимо настроить для хорошей производительности на недоступных данных — константа C регуляризации и гиперпараметр ядра γ. Оба параметра являются непрерывными, так что для поиска по решётке выбирают конечный набор «приемлемых» значений, скажем
- <math>C \in \{10, 100, 1000\}</math>
- <math>\gamma \in \{0.1, 0.2, 0.5, 1.0\}</math>
Поиск по решётке затем прогоняет МОВ для каждой пары (C, γ) в декартовом произведении этих двух множеств и проверяет производительность при выбранных параметрах на устоявшемся проверочном наборе (или с помощью внутренней перекрёстной проверки на тренировочном наборе и в этом случае несколько МОВ прогоняют попарно). Наконец, алгоритм поиска по решётке выдаёт в качестве результата наивысший результат, достигнутый на процедуре проверки.
Поиск по решётке страдает от проклятия размерности, но часто легко параллелизуем, поскольку обычно гиперпараметрические величины, с которыми алгоритм работает, не зависят друг от другаШаблон:Sfn.
Случайный поиск
Шаблон:Основная статья Случайный поиск заменяет полный перебор всех комбинаций на выборку их случайным образом. Это можно легко применить к дискретным установкам, приведённым выше, но метод может быть также обобщен к непрерывным и смешанным пространствам. Случайный поиск может превзойти поиск по решётке, особенно в случае, если только малое число гиперпараметров оказывает влияние на производительность алгоритма машинного обученияыШаблон:Sfn. В этом случае говорят, что задача оптимизации имеет низкую внутреннюю размерностьШаблон:Sfn. Случайный поиск также легко параллелизуем и, кроме того, позволяют использовать предварительные данные путём указания распределения для выборки случайных параметров.
Байесовская оптимизация
Шаблон:Основная статья Байесовская оптимизация — это метод глобальной оптимизации для неизвестной функции (чёрного ящика) с шумом. Применённая к гиперпараметрической оптимизации байесовская оптимизация строит стохастическую модель функции отображения из значений гиперпараметра в целевую функцию, применённую на множестве проверки. Путём итеративного применения перспективной конфигурации гиперпараметров, основанной на текущей модели, а затем её обновления, байесовская оптимизация стремится собрать как можно больше информации об этой функции и, в частности, место оптимума. Метод пытается сбалансировать зондирование (гиперпараметры, для которых изменение наименее достоверно известно) и использование (гиперпараметры, которые, как ожидается, наиболее близки к оптимуму). На практике байесовская оптимизация показалаШаблон:SfnШаблон:SfnШаблон:SfnШаблон:Sfn лучшие результаты с меньшими вычислениями по сравнению с поиском по решётке и случайным поиском ввиду возможности суждения о качестве экспериментов ещё до их выполнения.
Оптимизация на основе градиентов
Для конкретных алгоритмов обучения можно вычислить градиент гиперпараметров и оптимизировать их с помощью градиентного спуска. Первое использование этих техник фокусировалось на нейронных сетяхШаблон:Sfn. Затем эти методы были распространены на другие модели, такие как методы опорных векторовШаблон:Sfn или логистическая регрессияШаблон:Sfn.
Другой подход использования градиентов гиперпараметров состоит в дифференцировании шагов алгоритма итеративной оптимизации с помощью Шаблон:Не переведено 5Шаблон:Sfn[3].
Эволюционная оптимизация
Шаблон:Основная статья Эволюционная оптимизация — это методология для глобальной оптимизации неизвестных функций с шумом. При оптимизации гиперпараметров эволюционная оптимизация использует эволюционные алгоритмы для поиска гиперпараметров для данного алгоритмаШаблон:Sfn. Эволюционная оптимизация гиперпараметров следует процессу, навеянному биологической концепцией эволюции:
- Создаём начальную популяцию случайных решений (то есть сгенерированный случайно кортеж гиперпараметров, обычно 100+)
- Оцениваем кортежи гиперпараметров и получаем их функцию приспособленности (например, с помощью 10-кратной точности перекрёстной проверки алгоритма машинного обученияы с этими гиперпараметрами)
- Ранжируем кортежи гиперпараметров по их относительной пригодности
- Заменяем кортежи гиперпараметров с худшей производительностью на новые кортежи гиперпараметров, образованных Шаблон:Не переведено 5 и Шаблон:Не переведено 5
- Повторяем шаги 2—4, пока не получим удовлетворительной производительности алгоритма или пока производительность не перестанет улучшаться
Эволюционная оптимизация используется для оптимизации гиперпараметров для статистических алгоритмов машинного обученияШаблон:Sfn, автоматического машинного обученияШаблон:SfnШаблон:Sfn, для поиска архитектуры глубоких нейронных сетей[4][5], а также для формирования весов в глубоких нейронных сетях[6].
Другое
Развиваются также методы радиально-базисной функции (РБФ)[7] и спектральный метод[8].
Программное обеспечение с открытым кодом
Поиск по решётке
- Шаблон:Не переведено 5 приходит со скриптом для осуществления поиска по решётке.
- scikit-learn — это пакет на языке Python, который включает поиск по решётке Шаблон:Wayback.
- Talos Шаблон:Wayback включает поиск по решётке для пакета Keras.
Случайный поиск
- hyperopt Шаблон:Wayback через hyperas Шаблон:Wayback и hyperopt-sklearn Шаблон:Wayback — это пакеты на языке Python, которые включают случайный поиск.
- scikit-learn — это пакет на языке Python, включающий случайный поиск.
- H2O AutoML Шаблон:Wayback обеспечивает автоматическую подготовку данных, настройку гиперпараметров случайным поиском и многоуровневые сборки в распределённой платформе машинного обучения.
- Talos Шаблон:Wayback включает допускающий настройку случайный поиск для Keras.
Байесовская оптимизация
- Spearmint Шаблон:Wayback — это пакет для байесовской оптимизации алгоритмов машинного обучения.
- Bayesopt Шаблон:WaybackШаблон:Sfn, эффективная имплементация байесовской оптимизации на C/C++ с поддержкой Python, Matlab и Octave.
- MOE Шаблон:Wayback — это библиотека для Python, C++ и системы параллельных вычислений CUDA, имплементирующая байесовскую глобальную оптимизацию, используя гауссовы процессы.
- Auto-WEKA Шаблон:WaybackШаблон:Sfn — это уровень для байесовской оптимизации поверх WEKA.
- Auto-sklearn Шаблон:WaybackШаблон:Sfn — это уровень для байесовской оптимизации поверх scikit-learn.
- mlrMBO Шаблон:Wayback с mlr Шаблон:Wayback — это пакет на языке Шаблон:Не переведено 5 для байесовской оптимизации или для оптимизации на основе модели неизвестной функции (чёрный ящик).
- tuneRanger Шаблон:Wayback — это пакет на языке R для настройки случайных лесов используя оптимизацию на базе модели.
- BOCS Шаблон:Wayback — это пакет Matlab, использующий полуопределённое программирование для минимизации неизвестной функции при дискретных входных данных.[9] Включена также имплементация для Python 3.
- SMAC Шаблон:Wayback — это библиотека на языках Python/Java, имплементирующая байесовскую оптимизациюШаблон:Sfn.
Основанные на градиенте
- hypergrad Шаблон:Wayback — это пакет на языке Python для дифференцирования по гиперпараметрам[3].
Эволюционные методы
- TPOT Шаблон:WaybackШаблон:SfnШаблон:Sfn — это пакет на языке Python, который автоматически создаёт и оптимизирует пайплайны машинного обучения с помощью генетического программирования.
- FEDOT Шаблон:WaybackШаблон:Sfn — это фреймворк на языке Python, который автоматически создаёт и оптимизирует структуры и гиперпараметры графовых композитных пайплайнов машинного обучения для различных задач и типов данных.
- devol Шаблон:Wayback — это пакет на языке Python, который осуществляет поиск архитектуры глубокой нейронной сети с помощью генетического программирования.
- deap Шаблон:Wayback — это гибкий Python фреймворк для общих эволюционых вычислений, который объединён с пакетами распараллеливания, такими как scoop Шаблон:Wayback и pyspark и другими Python фреймворками, наподобие scikit-learn через sklearn-deap Шаблон:Wayback.
Другое
- hyperopt Шаблон:Wayback через hyperas Шаблон:Wayback и hyperopt-sklearn Шаблон:Wayback — это пакеты Python, которые включают основанный на дереве парзеновских оценок алгоритм оптимизации распределённых гиперпараметров.
- pycma Шаблон:Wayback — это имплементация на языке Python Шаблон:Не переведено 5(Шаблон:Lang-en).
- SUMO-Toolbox Шаблон:WaybackШаблон:Sfn — это набор инструментов MATLAB для Шаблон:Не переведено 5, поддерживающий широкий набор оптимизирующих гиперпараметры алгоритмов для многих типов моделей.
- rbfopt Шаблон:Wayback — это пакет на языке Python, использующий модель радиально-базисной функции[7]
- Harmonica Шаблон:Wayback — это пакет на Python для спектральной оптимизации гиперпараметров[8].
Коммерческие сервисы
- BigML OptiML Шаблон:Wayback поддерживает смешанные области поиска
- Google HyperTune Шаблон:Wayback поддерживает смешанные области поиска
- Indie Solver поддерживает многокритериальную и разнотипную оптимизацию и оптимизацию при ограничениях
- SigOpt Шаблон:Wayback поддерживает смешанные области поиска, поддерживает многокритериальную и разнотипную оптимизацию и оптимизацию при ограничениях и параллельную оптимизацию.
- Mind Foundry OPTaaS Шаблон:Wayback поддерживает смешанные области поиска, многокритериальную и параллельную оптимизацию, оптимизацию при ограничениях и суррогатные модели.
См. также
- Автоматическое машинное обучение (AutoML)
- Дилемма смещения–дисперсии
- Снижение размерности
- Шаблон:Не переведено 5
- Шаблон:Не переведено 5
- Выбор модели
- Шаблон:Не переведено 5
Примечания
Литература
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Статья
- Шаблон:Книга
- ↑ 1,0 1,1 Шаблон:Cite arxiv
- ↑ Chin-Wei Hsu, Chih-Chung Chang and Chih-Jen Lin (2010). A practical guide to support vector classification Шаблон:Wayback. Technical Report, National Taiwan University.
- ↑ 3,0 3,1 Шаблон:Cite arXiv
- ↑ Шаблон:Cite arxiv
- ↑ Шаблон:Cite arxiv
- ↑ Шаблон:Cite arxiv
- ↑ 7,0 7,1 Шаблон:Cite arxiv
- ↑ 8,0 8,1 Шаблон:Cite arxiv
- ↑ Шаблон:Cite arXiv