Вы подписаны на Машинное обучение доступно
Отлично! завершите оплату для полного доступа к Машинное обучение доступно
Снова приветствуем Вас! Вы успешно авторизовались
Успех! Аккаунт активирован, и Вы имеете полный доступ к контенту.
Оптимизация (Optimization)

Оптимизация (Optimization)

in

Оптимизация – это процесс настройки Гиперпараметров (Hyperparameter) для минимизации Целевой функции (Cost Function). Иными словами, это набор методов совершенствования Модели (Model) Машинного обучения (ML).

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

Популярные методы оптимизации

Важно минимизировать ошибку, поскольку она описывает несоответствие между истинным и предсказанным значениями параметра. Это сложная проблема, которая лежит в основе многих алгоритмов машинного обучения, от Логистической регрессии (Logistic Regression) до обучения искусственных Нейронных сетей (Neural Network). Методов оптимизации довольно много; на GIF выше изображено пять видов, включая Оптимизатор импульса (Momentum), Среднеквадратичное распространение (RMSProp) и Адаптивную оценку момента (Adam).

Как выбрать алгоритм оптимизации

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

Оптимизаци – это и подбор весов wn узлов xn перцептрона

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

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

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

Возможно, основное разделение в алгоритмах оптимизации – возможность дифференцировать целевую функцию в определенной точке:

Градиентный спуск (Gradient Descent)

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

Дифференцируемая целевая функция – это алгоритмы:

  • Использующие производные
  • Не использующие производные

Дифференцируемая целевая функция

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

Производная функции для значения – это скорость или величина изменения функции в этой точке. Его часто называют Уклоном (Slope).

  • Производная первого порядка (First-Order Derivative): наклон или скорость изменения целевой функции в заданной точке. Производная функции с более чем одной входной переменной (например, многомерные входные данные) обычно называется градиентом.
  • Градиент (Gradient): производная многомерной непрерывной целевой функции. Производная для многомерной целевой функции – это вектор, и каждый элемент в векторе называется частной производной или скоростью изменения данной переменной в точке, предполагающей, что все другие переменные остаются постоянными.
  • Частная производная (Partial Derivative): элемент производной многомерной целевой функции. Мы можем вычислить производную производной целевой функции, то есть скорость изменения скорости изменения целевой функции. Это называется второй производной.
  • Производная второго порядка (Second-Order Derivative): скорость, с которой изменяется производная целевой функции. Для функции, которая принимает несколько входных переменных, это матрица, называемая матрицей Гессе.
  • Матрица Гессе (Hessian Matrix): вторая производная функции с двумя или более входными переменными. Простые дифференцируемые функции можно оптимизировать аналитически с помощью исчисления. Как правило, интересующие нас целевые функции не могут быть решены аналитически.

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

Фото: @villxsmil

Авторы оригинальных статей: Jason Brownlee