Разнообразие результатов оптимизации моделей машинного обучения

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

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

Известный пример оптимизации результатов, доступный на OpenML, — это выбор наиболее оптимального количества ингредиентов для создания самого прочного бетона. Набор данных состоит из показателей стойкости бетона к разным смесям после разной задержки сушки. Мы хотим максимизировать это сопротивление с течением времени.

Необходимость разнообразия

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

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

  • Это не дорого. Эволюционные методы должны исследовать выборочное пространство достаточно, чтобы не пропустить потенциальный минимум. Это означает, что в процессе оптимизации будет исследовано несколько локальных минимумов. Обеспечение разнообразия может быть столь же дешевым, как и запоминание этих локальных минимумов.
  • Модель не идеальна. Оптимизация результатов ищет глобальный минимум предсказания модели. Но предсказание модели не идеально, и, в конце концов, только человек-эксперт может определить ценность предложения. Возврат разнообразного набора образцов увеличивает шанс найти наилучший вариант.
  • Результаты могут быть недостоверными. Оптимизация результатов часто применяется к физическим процессам, таким как смешивание бетона, которые подчиняются физическим законам, которые система может не знать полностью. Мы увеличиваем наши шансы вернуть реалистичный, возвращая несколько разных образцов.

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

Строительные единицы генетического алгоритма

Но сначала давайте рассмотрим, как работают генетические алгоритмы. Генетические алгоритмы рассматривают набор образцов-кандидатов как популяцию особей и заставляют их развиваться посредством трех процессов, подобных живым:

  1. Мутация существующей популяции. Мы применяем небольшие мутации к существующим особям, чтобы исследовать их непосредственное окружение.
  2. Рекомбинация особей. Мы смешиваем генетический материал двух людей, чтобы создать детей, надеясь, что у некоторых из них будет лучший результат.
  3. Вымирание слабых особей и рождение новых популяций. На каждой итерации самые слабые особи популяции удаляются и заменяются новыми. В отличие от описанных выше механизмов, которые генерируют образцы рядом с существующими, мы обновляем генетический материал, моделируя прибытие новой популяции на основе чистого исследования.

Генетические алгоритмы не всегда реализуют все эти функции. Например, алгоритм дифференциальной эволюции scipy [1] полагается только на рекомбинации и не предлагает чистой мутации (вопреки тому, что предполагают его параметры, параметр мутации контролирует масштаб рекомбинации). Поскольку рекомбинации опираются только на существующие решения, это может повредить правдоподобию или лишиться исследовательской способности. По этой причине мы решили придерживаться операторов мутации и исследования для нашего алгоритма.

Инициализация случайных лиц

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

Мутация людей посредством местных исследований

Мутации — это небольшие изменения, применяемые к одному образцу в надежде на то, что вновь созданные образцы будут иметь лучший показатель пригодности. Как и в scipy, мы предлагаем использовать исследовательский вес для контроля возмущения каждой функции, следуя процедуре:

  • Категорические признаки. Вес соответствует вероятности изменения признака. Если функция изменяется, категория выбирается из распределения данных по категориям.
  • Числовые признаки. Мы рассматриваем нормальное распределение, основанное на эталонном значении признака, и стандартное отклонение, равное стандартному отклонению данных, масштабированных по весу.

Жизнь и смерть рода

Как упоминалось ранее, интеграция разнообразия в оптимизацию результатов — это возможность исследовать локальные оптимумы. Это означает, что мы должны параллельно исследовать несколько локальных минимумов. С этой целью мы создаем концепцию родословной внутри нашего алгоритма:

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

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

Псевдокод стоит тысячи слов

Оптимизация результатов в действии

Мы визуализируем поведение нашего алгоритма на простой одномерной функции. Наша цель — найти минимум синей функции, представленной ниже. Движущиеся точки — это люди на данной итерации (движения не такие медленные, мы интерполировали их для наглядности). После того, как родословная истекает и отправляется в кеш, мы помечаем ее лучшего представителя серым крестом.

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

Обратите внимание, что для этого эксперимента мы добровольно выбрали гиперпараметры, чтобы образцы имели плавную траекторию. Здесь мы наблюдаем, что образцы имеют тенденцию «сползать» со своего холма до своего локального минимума. Как только этот минимум достигнут и родословная не может улучшиться, мы отправляем ее в кеш и отображаем серым цветом. Затем мы добавляем новую родословную, начинающуюся в случайном месте. На последней итерации мы видим, что исследовано большинство локальных минимумов. Таким образом, мы можем вернуть соответствующий набор разнообразных образцов.

Идеальное бетонное смешивание: потребность в правдоподобии

Давайте применим наш метод, чтобы найти лучшую бетонную смесь.

Бетон – важнейший материал в строительстве. Прочность бетона на сжатие является сильно нелинейной функцией возраста и ингредиентов. Эти ингредиенты включают цемент, доменный шлак, летучую золу, воду, суперпластификатор, крупный заполнитель и мелкий заполнитель.

Как измерить сопротивление бетона

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

На этом графике сопротивления пяти лучших бетонных смесей мы видим, что оранжевый бетон является наиболее стойким на 15-й день, но наименее стойким на 100-й день.

Учитывая нашу модель f, мы хотим минимизировать следующую цель:

Для этого упражнения мы используем MLP с тремя скрытыми слоями размером 32, но этот метод не зависит от модели. Результат поразителен: наши сгенерированные образцы намного лучше в соответствии с нашей моделью!

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

Плотность бетона варьируется, но составляет около 2400 кг на кубический метр

И это подтверждается исходными данными, в то время как наши сгенерированные данные далеки!

Пять лучших исходных плотностей: 2447,3 | 2448,8 | 2405,9 | 2463. | 2460.
Пять лучших сгенерированных плотностей миксов: 3220.3 | 3228,0 | 3201,8 | 3036,5 | 3047.1

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

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

Плотность вновь созданных смесей гораздо более реалистична и, к сожалению, получаемый бетон имеет гораздо менее высокие эксплуатационные характеристики, но мы все же нашли способ улучшения!

Глядя на сгенерированные сэмплы, мы получаем очень разнообразные сэмплы со смесями, включающими совершенно разные соотношения ингредиентов!

Еда на вынос

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

Эту функцию, включая обеспечение разнообразия, можно найти в Dataiku 11, которая скоро будет выпущена!

Рекомендации

[1] Сторн, Р. и Прайс, К., Дифференциальная эволюция — простая и эффективная эвристика для глобальной оптимизации в непрерывных пространствах, Журнал глобальной оптимизации, 1997, 11, 341–359.