Поскольку я какое-то время занимался оптимизацией CMA-ES (ссылка на GitHub) и BFGS (ссылка на GitHub), я хотел поделиться некоторыми мыслями о том, как эти методы связаны с машинным обучением.

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

Теперь давайте подробнее рассмотрим некоторые методы оптимизации.

Алгоритмы оптимизации на основе градиента

Он использует градиент функции стоимости для настройки параметров модели. Градиент в основном представляет собой вектор, имеющий направление и величину частных производных функции стоимости по каждому параметру. Глядя на градиент, мы можем видеть, в каком направлении изменяется функция стоимости и как быстро. Например, градиент f′(x) отрицателен → наклонен вниз; градиент f′(x) положительный → наклон вверх.

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

Существуют различные варианты градиентного спуска, такие как стохастический градиентный спуск (SGD) и мини-пакетный градиентный спуск. Эти методы используют случайную выборку для оценки градиента и могут быть полезны при работе с многомерными функциями.

CMA-ES

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

БФГС

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

Таким образом, и CMA-ES, и BFGS представляют собой алгоритмы численной оптимизации, которые используют аппроксимации градиента или матрицы Гессе для поиска минимума или максимума функции стоимости. Эти методы обычно используются в машинном обучении и других областях для обучения моделей и оптимизации целевых функций.