Машинное обучение

Почему выпуклость - ключ к оптимизации

Это просто с выпуклыми функциями стоимости

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

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

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

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



Выпуклые множества

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

Взгляните на приведенные ниже примеры.

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

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

Выпуклое множество C можно представить следующим образом.

Эпиграф

Рассмотрим график функции f.
Эпиграф - это набор точек, лежащих на графике функции или над ним.

Выпуклая функция

Хорошо, теперь, когда вы понимаете, что такое выпуклые множества и надграфы, мы можем поговорить о выпуклых функциях.

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

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

Проверка на выпуклость

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

Функция f называется выпуклой функцией, если производная второго порядка этой функции больше или равна 0.

Примеры выпуклых функций: y = eˣ, y = x². Обе эти функции дифференцируемы дважды.

Если -f (x) (минус f (x)) - выпуклая функция, то функция называется вогнутой функцией.

Примеры вогнутых функций: y = -eˣ. Функция дважды дифференцируема.

Давайте проверим выпуклость, построив экспоненциальную функцию eˣ.

Вывод кода:

Выпуклость в оптимизации градиентного спуска

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

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

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

Теперь рассмотрим невыпуклую функцию стоимости. В этом случае возьмите произвольную невыпуклую функцию, как показано ниже.

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

Заключение

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

Спасибо. Увидимся на следующем.