Давайте рассмотрим некоторые методы адаптации ваших параметров с течением времени.

В этом посте я расскажу об идеях, лежащих в основе методов адаптивных параметров для машинного обучения, а также о том, почему и когда их реализовывать, в качестве некоторых практических примеров с использованием 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