Давайте рассмотрим некоторые методы адаптации ваших параметров с течением времени.
В этом посте я расскажу об идеях, лежащих в основе методов адаптивных параметров для машинного обучения, а также о том, почему и когда их реализовывать, в качестве некоторых практических примеров с использованием Python.
1. Введение
Адаптивные методы (также известные как планирование параметров) относятся к стратегиям обновления некоторых параметров модели во время обучения с использованием расписания.
Это изменение будет зависеть от состояния модели в момент времени t; например, вы можете обновлять их в зависимости от значения потерь, количества итераций/эпох, прошедшего времени обучения и т. д.
Например, в целом для нейронных сетей выбор скорости обучения имеет несколько последствий; если скорость обучения слишком велика, она может выйти за пределы минимума; если он слишком мал, может потребоваться слишком много времени для сходимости или он может застрять на локальном минимуме.
В этом сценарии мы решили изменить скорость обучения в зависимости от эпох; таким образом, вы можете установить большую скорость в начале обучения, а соответствие эпохам увеличивается; вы можете уменьшать значение до тех пор, пока не достигнете более низкого порога.
Вы также можете рассматривать это как способ исследования, а не стратегии эксплуатации, поэтому в начале вы разрешаете больше исследований, а в конце выбираете эксплуатацию.
2. Адаптеры
Есть несколько методов, которые вы можете выбрать для управления формой и скоростью, с которой параметр переходит от начального значения к конечному порогу; в этой статье я буду называть их адаптерами и сосредоточусь на методах, которые изменяют значение параметра в зависимости от количества итераций (эпох в случае нейронных сетей).
Я введу некоторые определения и обозначения:
Начальное значение представляет собой начальную точку параметра, конечное_значение — это значение, которое вы получите после многих итераций, а адаптивная скорость определяет, насколько быстро вы переходите от начального_значения к конечному_значению.
В этом сценарии вы ожидаете наличие следующих свойств для каждого адаптера:
В этой статье я объясню три типа адаптеров:
- экспоненциальный
- Обратный
- потенциал
2.1 Экспоненциальный адаптер
Экспоненциальный адаптер использует следующую форму для изменения начального значения:
Из этой формулы альфа должна быть положительным значением, чтобы иметь желаемые свойства.
Если мы построим этот адаптер для разных значений альфа, мы увидим, как значение параметра уменьшается с различными формами, но все они следуют экспоненциальному спаду; это показывает, как выбор альфы влияет на скорость затухания.
В этом примере начальное_значение равно 0,8, а конечное значение равно 0,2. Вы можете видеть, что большие значения альфа-канала требуют меньшего количества шагов/итераций для сходимости к значению, близкому к 0,2.
Если вы выберете начальное_значение меньше конечного_значения, вы будете выполнять экспоненциальное возрастание, что может быть полезно в некоторых случаях; например, в генетических алгоритмах вы можете начать с низкой вероятности кроссовера в первом поколении и увеличивать ее по мере продвижения поколений.
Ниже показано, как будет выглядеть приведенный выше график, если начальная точка равна 0,2 и продолжается до 0,8; вы можете видеть симметрию против распада.
2.2 Обратный адаптер
Обратный адаптер использует следующую форму для изменения начального значения:
Из этой формулы альфа должна быть положительным значением, чтобы иметь желаемые свойства. Вот так выглядит адаптер:
2.3 Возможный адаптер
Обратный адаптер использует следующую форму для изменения начального значения:
Эта формула требует, чтобы альфа находилась в диапазоне (0, 1), чтобы иметь желаемые свойства. Вот так выглядит адаптер:
2.4 Сравнение адаптеров
Как мы видели, все адаптеры изменяют начальный параметр с разной скоростью (которая зависит от альфы), поэтому полезно посмотреть, как они ведут себя в сравнении; это результат для фиксированного альфа-значения 0,15.
Вы можете видеть, что потенциальный адаптер убывает быстрее, за ним очень близко следует экспоненциальный; обратный адаптер может потребовать большего количества итераций для сходимости.
Это код, используемый для этого сравнения, если вы хотите поиграть с параметрами, чтобы увидеть его эффект; во-первых, обязательно установите пакет [2]:
pip install sklearn-genetic-opt
3. Пример Python
В этом разделе мы хотим использовать алгоритм автоматической настройки гиперпараметров; такие алгоритмы обычно поставляются с опциями для управления процессом оптимизации; например, я собираюсь использовать генетический алгоритм для управления вероятностью мутации и кроссинговера с помощью экспоненциального адаптера; они связаны со стратегией алгоритма исследования и исследования.
Вы можете проверить эту другую статью, которую я написал, чтобы больше узнать о генетических алгоритмах для настройки гиперпараметров.
Во-первых, давайте импортируем требуемый пакет. Я буду использовать набор данных цифр [1] и точно настрою модель случайного леса.
Примечание. Я являюсь автором пакета, используемого в примере; если вы хотите узнать больше, внести свой вклад или внести некоторые предложения, вы можете проверить документацию и репозиторий GitHub в конце этой статьи.
Параметр para_grid ограничивает пространство поиска гиперпараметров модели и определяет типы данных; мы будем использовать точность перекрестной проверки для оценки гиперпараметров модели.
Мы определяем алгоритм оптимизации и создаем адаптивные вероятности кроссовера и мутации. Мы начнем с высокой вероятности мутации и низкой вероятности кроссовера; по мере увеличения поколений вероятность кроссовера и мутации будет соответственно увеличиваться и уменьшаться.
Мы также распечатаем и построим некоторые статистические данные, чтобы понять результаты.
В этом конкретном примере я получил показатель точности 0,941 (на тестовых данных) и нашел следующие параметры:
{‘min_weight_fraction_leaf’: 0.01079845233781555, ‘bootstrap’: True, ‘max_depth’: 10, ‘max_leaf_nodes’: 27, ‘n_estimators’: 108}
Вы можете проверить пространство поиска, которое показывает, какие гиперпараметры были изучены алгоритмом.
Для справки: так выглядит выборочное пространство без адаптивного обучения; алгоритм исследовал меньше областей с фиксированной низкой вероятностью мутации (0,2) и высокой вероятностью кроссовера (0,8).
Выводы
Адаптация или планирование параметров может быть очень полезным при обучении алгоритма машинного обучения; это может позволить вам быстрее свести алгоритм или исследовать сложные области пространства с помощью динамической стратегии, даже если литература в основном использует их для глубокого обучения, как мы показали, вы также можете использовать это для традиционного машинного обучения и адаптировать его идеи расширить его на любой другой набор проблем, которые могут соответствовать стратегии изменения параметров.
Если вы хотите узнать больше о sklearn-genetic-opt, вы можете проверить документацию здесь:
Рекомендации
[1] Набор данных Digits под лицензией Creative Commons Attribution 4.0 International (CC BY 4.0): https://archive-beta.ics.uci.edu/ml/datasets/optical+recognition+of+handwriting+digits
[2] репозиторий sklearn-genetic-opt: https://github.com/rodrigo-arenas/Sklearn-genetic-opt