Градиентный спуск за 5 минут | Навстречу AI

Градиентный спуск: на языке непрофессионала

Представляем самый популярный и наиболее часто используемый метод оптимизации за 5 минут

Всякий раз, когда мы говорим о машинном обучении, мы часто слышим слово, которое нужно знать и о котором размышляют, - это слово градиентный спуск. Что это? В Интернете есть множество руководств, чтобы узнать и понять больше по этой теме. Некоторые из них легко понять, вместе с очень полезными диаграммами и пояснениями, а некоторые используют математические вычисления для очень тонкого объяснения темы.

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

Ладно.

Во-первых, давайте разберем все слово, состоящее из двух слов. Градиент - наклон. Спуск: это означает спуск. Обычный английский.

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

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

Уравнение градиентного спуска выглядит следующим образом:

« - это следующая позиция по нижнему элементу, а «a» - его текущая позиция. «гамма» - это фактор ожидания, а градиентный член («Дельта f (a)») - это направление его спуска. Минус в середине означает, что он спускается к самой низкой точке.

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

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

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

Теперь, как мы минимизируем функцию стоимости? Мы делаем это, внося необходимые изменения в скорость обучения, которую алгоритм принимает для достижения локальных или глобальных минимумов. Скорость обучения… хммм… Что это?

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

Например: вот так -

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

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

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

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

Теперь, когда дело доходит до итераций для достижения правильных минимумов, мы должны помнить, что для достижения минимумов может потребоваться 50, 50000 или 5 миллионов итераций в зависимости от поставленной задачи.

В общем, скорость обучения, которая соответствует нашей цели, лучше всего начинается с 0,0001, 0,003, 0,01, 0,3 и т. Д.

OK.! Хватит объяснений. Теперь давайте посмотрим на типы градиентного спуска, которые в настоящее время используются в отрасли.

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

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

Преимущество Vanilla Gradient Descent в том, что он эффективен с точки зрения вычислений.

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

С другой стороны, стохастический градиентный спуск (SGD) делает это для каждого обучающего примера в наборе данных, что означает, что он обновляет параметр для каждого обучающего примера один за другим. Это делает его намного быстрее, чем Vanilla Gradient Descent, но довольно затратным с точки зрения вычислений. Дорого, потому что частые обновления также учитывают шумные градиенты, что может привести к увеличению количества итераций для достижения минимума.

3. Пакетный миниатюрный градиентный спуск

Как следует из названия, это объединение как Vanilla Descent, так и SGD. Здесь мы берем мини-пакеты фиксированного размера, а затем переходим к обновлению для каждого из пакетов. Это эффективный метод достижения минимума. Следовательно, он создает баланс между надежностью стохастического градиентного спуска и эффективностью пакетного градиентного спуска.

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

Резюме

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

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

Ссылки:

Для получения дополнительной информации по теме.





Итак, до следующего раза .. !! Чао .. !!!