Моей супруге, Елене Вишневской, посвящается

С целью автоматизации процесса подбора гиперпараметров автором данной статьи разработан алгоритм Helena.4.0. Конечной целью является создание автоматической системы построения моделей (auto-ML), которая бы подбирала гиперпараметры за минимальное время.

С помощью алгоритма Helena.4.0 можно подбирать гиперпараметры для моделей градиентного бустинга, нейросетей, и более того – для генетических алгоритмов. Автор считает, что алгоритмы Helena могут заменить в генетических алгоритмах генеративную часть – т.е. уйти от биологических аналогий, заменив псевдобиологическую генерацию признаков путем процедур «скрещивания» и «мутаций» на генерацию с помощью указанных алгоритмов.

Для поиска максимума функции алгоритм Helena.4.0 использует только ее значения, и  не используют первые и последующие производные. Таким образом, этот алгоритм не требуют ни дифференцируемости, ни непрерывности максимизируемой функции.

Сравнение алгоритма Helena.4.0 с наиболее популярными конкурентами (Optuna, HyperOpt, RandomSearch) показывает его высокую конкурентоспособность.

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

Ниже в статье приведено подробное описание алгоритма Helena.4.0 и результаты сравнительных тестов с алгоритмами-конкурентами.

Основная идея алгоритма

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

Трансформационная функция как интерфейс связи между ядром алгоритма Helena и максимизируемой функцией

Алгоритм ищет максимум функции для любых гиперпараметров: строковых, дискретных и непрерывных.

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

а) для непрерывных гиперпараметров

Для непрерывных значений мы используем трансформационную функцию:

y = a + (ba) xg, где:

x – значение гиперпараметра на отрезке [0, 1],

y – значение гиперпараметра, выходное значение трансформационной функции.

Здесь g - параметр, который отвечает за ту часть отрезка, на которой мы преимущественно ищем максимум. При g = 1 значения y будут равномерно распределены на интервале [a, b], при g > 1 мы будем концентрировать поиск преимущественно в левой части интервала, а при g < 1 – в преимущественно в правой части. Чем ближе g к бесконечности, тем больше значения параметра будут концентрироваться около значения a.  Напротив, при  ближе g к нулю, тем больше значения параметра будут концентрироваться около значения b.  

б) для дискретных гиперпараметров

Если наш гиперпараметр – дискретная величина, принимающая значения от 1 до M, то мы разбиваем интервал [0, 1] на M отрезков. Координаты первого будут [0, 1 / M), второго - [1 / M, 2 / M)), последнего [(M – 1)/ M), 1]. Результатом трансформационной функции является номер отрезка, в который попала величина xg . g - по-прежнему параметр, который отвечает за ту часть отрезка, на которой мы преимущественно ищем максимум. Если g велико, то в функцию градиентного бустинга обычно будут попадать значений гиперпараметра, близкие к 1, в противном случае – к М.

Если наша дискретная величина принимает значения K, K + 1, .. K + S, где K не равно 1, то мы строим вышеописанную трансформационную функцию для величин 1 ... (S + 1), и к каждому значению добавляем слагаемое (K – 1).

в) для строковых гиперпараметров

Наконец, если гиперпараметр принимает строковые значения, каждому уникальному строковому значению ставится в соответствие натуральное число, после чего осуществляется кодирование как для функции с дискретными значениями.

Ядро алгоритма – постепенно сжимающийся N-мерный гиперкуб

Алгоритм Helena.4.0 базируется на идее RandomSearch.

На каждом шаге независимо друг от друга случайным образом генерируются числа xi , 1 ≤ iN, где N - число гиперпараметров. Число xi генерируется с помощью равномерного распределения на отрезке [xil,xir]. Первоначально для всех i: xil = 0,xir = 1. В ходе работы алгоритма xil растет, а xir уменьшается, что приводит к сужению пространства поиска максимума. Числа xi преобразуются в значения гиперпараметров yi с помощью трансформационной функции. Значения гиперпараметров передаются в максимизируемую функцию и рассчитывается ее значение f(y1,y2, …, yN). Набор сгенерированных случайных значений и соответствующее им значение функции {x1,x2, …, xN, f(y1,y2, …, yN)} запоминаются. Значения гиперпараметров {y1,y2, …, yN} не запоминаются – они всегда могут быть восстановлены с помощью трансформационной функции на основе чисел {x1,x2, …, xN}.

Правила сжатия N-мерного гиперкуба

В алгоритме Helena.4.0 сжатие пространства было поставлено на твердую статистическую основу. Каждые Т шагов алгоритм для каждого гиперпараметра по отдельности принимает решение о том, нужно ли сжимать пространство по этому гиперпараметру, или нет. Для этого текущий интервал подбора гиперпараметра делится на две половины: левую и правую. Рассматриваются значения максимизируемой функции за все время работы алгоритма. Они разделяются на две группы. В первую группу объединяются все значения максимизируемой функции, которым соответствуют значения данного гиперпараметра из левой половины интервала. Во вторую группу объединяются все значения максимизируемой функции, которым соответствуют значения данного гиперпараметра из правой половины интервала. Вне этих двух групп оказываются значения функции, которым соответствуют значения гиперпараметра, находящиеся вне текущего интервала подбора гиперпараметра. Такие значения максимизируемой функции в расчетах не участвуют.

Например, текущее значение гиперпараметра – от 0.5 до 0.75. В первую группу попадут значения максимизируемой функции, которые соответствуют значениям гиперпараметра от 0.5 до 0.625. Во вторую – от 0.625 до 0.75. Значения же максимизируемой функции, которые советуют значениям гиперпараметра от 0 до 0.5 и от 0.75 до 1, в расчётах участвовать не будут.

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

В противоположном случае мы сохраняем правую половину интервала, а левую отбрасываем.

Если же значения функции в обеих группах статистически неразличимы, то мы сохраняем интервала целиком. На основании критерия Манна-Уитни определяется уровень значимости, на котором мы можем считать средние значения в разных группах одинаковыми. Порог этого уровня значимости (p_value) является параметром алгоритма Helena.4.0.

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

Качество алгоритма Helena.4.0

Были проведены сравнения алгоритма Helena.4.0 с конкурентами – RandomSearch, Optuna, HyperOpt при подборе гиперпараметров градиентного бустинга. Сравнения осуществлялись по следующим характеристикам: средняя точность решения после 500 итераций, средняя точность решения после 50 итераций, среднее время работы на 500 итерациях. Сравнения показали конкурентосопособность алгоритма Helena.4.0. Результаты сравнений будут опубликованы в ближайшее время.

При этом алгоритм Helena.4.0 полностью превосходит конкурентов при росте числа измерений.

Так, ни один из конкурентов не смог за разумное время максимизировать функцию OneMax для 100 аргументов. Функция OneMax представляет собой среднее значение всех своих аргументов. При этом аргументы функции OneMax – дискретные, принимают значения {0, 1}.

Алгоритмы RandomSearch и HyperOpt не смогли найти максимум функции, Optuna потратила на поиск максимума более 10 часов. Helena.4.0 находит максимум за 47-190 секунд в зависимости от параметров алгоритма.

Комментарии (14)


  1. arTk_ev
    24.09.2023 08:20
    +1

    Надо еще сравнить с поиском по новизне. Это самая эффективная фитнесс-функция для ГА.


  1. MasterMentor
    24.09.2023 08:20
    -2

    Интересная статья, но вот с этим нужно что-то делать:

    Шла ГиперАлёнка 4.0 по гипершоссе 2.0 и сосала гиперсушку.

    Hidden text

    Что до этой мысли, из Ваших предыдущих постов

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

    то лет 15 назад вместо слово "дата-сайентист" в этих предложениях стояло загадочное слово "SEO-шник". Газеты тогда пестрели статьями о том, что "серебряная пуля" для бизнеса найдена, а модные молодые люди, образа студентов-недоучек старших курсов институтов, вели чёс по бизнесам, предлагая чудесное решение всех проблем. Прошло каких-то 7 лет, и массовый "SEO-шник" куда-то пропал, зато на горизонте замаячил не менее загадочный "DevOps", без которого всем бизнесам - "уж точно капут". Прошло 7 лет... и вот, оказывается не сеошник, и не девопс, а "дата-сайентист" - тот супермен, которого бизнес ждал столетия.


    1. rvishnevsky Автор
      24.09.2023 08:20
      +2

      Тут я с Вами принципиально не согласен. Data Science дает бизнесу гораздо больше, чем даже компьютеризация.

      Когда в бизнесе появились компьютеры, то принципиально поменялось не многое. В большинстве сфер бизнеса просто существующие бизнес-процессы из бумажных перевели в электронные, НЕ МЕНЯЯ ИХ сути. Печатали документы на машинках – стали печатать на компьютерах, делали баланс в балансовой книге – стали делать в компьютере, вели делопроизводство в журнале, начали в электронном журнале и т.п. Т.е. бизнес-процессы стали быстрее и удобнее, но в большинстве случаев по сути не изменились.

      А вот появление интернета, например, полностью изменило бизнес. Появилась возможность делать то, что раньше было в принципе невозможно. Например, массовая доставка ЛЮБЫХ товаров на дом покупателю или удаленная работа. Еще в 1980-ых такое было просто невозможно. Или работа на удаленке. Еще в 2000 – немыслимо, сегодня – обыденность.

      Применение ML-моделей дает возможность принимать решения на таком уровне точности и с учетом такого количества факторов, которые значительно превосходят возможности человека. С использованием ML мы можем начать выстраивать работу с каждым клиентом на ИНДИВИДУАЛЬНОЙ основе, сколько бы клиентов у нас ни было. Раньше так работать могли только мелкие лавочники, у которых было несколько десятков клиентов и каждого они знали лично. А теперь так могут работать корпорации с десятками и сотнями миллионов клиентов.

      Более того, применение ML-моделей дает возможность ВООБЩЕ уйти от субъективных человеческих решений. До сих пор бизнес строился по принципу «Я – начальник, мое мнение самое важное». Скоро этот принцип уйдет в прошлое. Только выдвижение гипотез – тестирование – внедрение оправдавших себя гипотез. Решения на основе фактов, а не основе статуса лица, принимающего решения. Это та вещь, которая реально изменит мир, в котором мы живем.

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


    1. DEugene
      24.09.2023 08:20

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


  1. ebt
    24.09.2023 08:20
    +1

    Пожалуйста, добавьте ссылку на код.


    1. rvishnevsky Автор
      24.09.2023 08:20
      +2

      Код я выложу чуть позже. Ожидаю ревью от рецензентов.


  1. Blademoon05
    24.09.2023 08:20
    +2

    Добрый день. Интересно. А где-то репозиторий с кодом есть? Потестировать...


    1. rvishnevsky Автор
      24.09.2023 08:20
      +2

      Код я выложу чуть позже. Ожидаю ревью от рецензентов.


  1. imageman
    24.09.2023 08:20
    +1

    Непонятно как меняется g


    1. rvishnevsky Автор
      24.09.2023 08:20
      +1

      g никак не меняется. Вы изначально задаете его как параметр трансформационной функции для данного гиперпараметра. Для каждого гиперпараметра можно установить свое g. Если Вы считаете, что максимуму функции будут соответствовать значения данного гиперпараметра, близкие к левому краю интервала, рекомендуется устанавливать g больше 1. В противном случае - меньше 1. Самое простое - поставить g=1 и не беспокоиться. Обычно алгоритм легко найдет максимум сам.


      1. imageman
        24.09.2023 08:20
        -1

        Очень спорное решение. Лучше заложить в алгоритм автопотбор g (тем более ты говоришь о больших размерностях).


      1. imageman
        24.09.2023 08:20
        +1

        возможно стоит поэкспериментировать и одновременно немного сдвигать границу и менять g. Вместо сдвигания границы на 0,25 сдвигать её на 0,12 и одновременно менять g для компенсации того, что границу мы мало сдвинули.


  1. capissimo
    24.09.2023 08:20
    -3

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


    1. capissimo
      24.09.2023 08:20

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