Объяснение одного из наиболее широко используемых и важных алгоритмов машинного обучения.

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

Это идея градиентного спуска, итеративного процесса (шагов), который приводит нас к минимуму функции (низ горы).

Для тех, кому интересно, как выглядит математика градиентного спуска:

Задача градиентного спуска и краткое погружение вниз по кривой затрат:

Цель градиентного спуска - найти глобальные минимумы функции, линии с наименьшей остаточной суммой квадратов (RSS) для достижения наилучшего соответствия линии. Мы шаг за шагом пересекаем наклон функции, обновляя наши термины b и m (подумайте, y = mx + b), чтобы найдите строку с наименьшим RSS. Мы выполняем эти шаги с определенным размером шага или шагом обучения, стараясь не выйти за пределы самого низкого RSS. Мы уменьшаем риск этого, подбирая подходящие размеры шага, которые не слишком велики, чтобы мы летели точно по минимуму, или слишком малы, чтобы требовать бесконечных вычислений.

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

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

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

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

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

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

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

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

Преимущества:

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

Недостатки:

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

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

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

Преимущества:

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

Недостатки:

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

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

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

Преимущества:

  • Легко помещается в память и дешево в вычислительном отношении
  • Более эффективен с точки зрения вычислений, чем Стохастик, благодаря пакетным обновлениям
  • Частота обновлений в мини-пакетном режиме выше, чем в пакетном, что обеспечивает более надежную сходимость.
  • Хорошая золотая середина между пакетным и стохастическим градиентным спуском

Недостатки:

  • Вы должны ввести новый гиперпараметр n, который называется «размер мини-пакета». Настройка этого гиперпараметра может занять много времени.

Заключение

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

Хотите поговорить о науке о данных? Аналитика? Статистика? Спуск с горы?

LinkedIn

Github

Почта: [email protected]