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

Что такое градиентный спуск?

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

Понимание градиента

Основная функция градиента заключается в измерении изменений в каждом весе в отношении изменения ошибок. Думайте о градиентах как о наклоне функции. Наклон будет более крутым в зависимости от высоты градиента – это благоприятное условие для моделей, так как они могут быстро учиться. Однако, модель перестанет учиться, если наклон станет нулевым. С математической точки зрения, градиент лучше всего описывать как ограниченную производную относительно его входных данных.
Подумайте о человеке с завязанными глазами, желающем подняться на вершину холма с минимальными усилиями. Скорее всего, он сделает длинные шаги в самом крутом направлении. Однако, шаги этого человека будут становиться меньше, чтобы предотвратить перебор. Вы можете использовать градиент для математического описания этого процесса.
Градиенты, начинающиеся от X0 и заканчивающиеся в X1, значительно длиннее, чем градиенты, начинающиеся от X3 и заканчивающиеся в X4. Почему? Потому что наклон/крутизна холма определяет длину вектора. Это обеспечивает идеальное представление рассмотренной ранее аналогии холма, поскольку он становится менее крутым по мере того, как человек поднимается выше.

Как работает градиентный спуск?

Вместо того, чтобы подниматься на холм, представьте себе спуск по уклону, как спуск на дно долины. Понимание этой аналогии проще, так как это алгоритм минимизации, который уменьшает конкретную функцию. Давайте разберемся в спуске по градиенту с помощью уравнения:
b представляет собой следующую позицию альпиниста
означает его нынешнее положение
минус относится к минимизирующей части спуска градиента
Гамма, расположенная в центре, представляет собой фактор ожидания.
(Δf(a) ) означает самое крутое направление спуска.

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

Почему скорость обучения так важна?

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

Как обеспечить его функционирование Оптимально

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

Различные типы градиентного спуска

Вы найдете три хорошо узнаваемых типа спуска с уклоном. Давайте посмотрим на них поближе:

Пакетный градиентный спуск

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

Стохастический градиент спуска

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

Мини-пакетный спуск по градиенту

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