Вы когда-нибудь сталкивались с какой-либо новой идеей или определением в процессе обучения, из-за которой вы чувствовали, что вам нужно биться головой о стену?

Это была моя история с Градиентным спуском. Всякий раз, когда я пытался выучить его заново, я обнаруживал, что в головоломке недостает кусочка.

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

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

  • Функция стоимости
  • Градиентный спуск
  • Реализация градиентного спуска
  • Скорость обучения
  • Краткое резюме

У нас много дел, так что давайте начнем.

Функция стоимости

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

Я объясню это с помощью линейной регрессии. Кстати, если вы не знакомы с линейной регрессией, не стесняйтесь проверить один из моих предыдущих постов об этом. Он представлен:

  1. x: независимая переменная
  2. w: наклон
  3. b: коэффициент или точка пересечения по оси Y

Эквивалентно f(x) = wx + b

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

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

Приведенное ниже уравнение называется Среднее Функция стоимости квадрата ошибки:

  1. y hat: предсказание (вывод модели)
  2. y: фактическое значение
  3. m:количество обучающих примеров.

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

Функция стоимости J, также известная как J(w, b), измеряет разницу между предсказаниями модели и фактическими значениями. Основная идея состоит в том, чтобы поиграть со значениями w и b, чтобы минимизировать функцию стоимости, и здесь в игру вступает градиентный спуск.

Возьмем пример из нашей повседневной жизни: когда вы почувствуете усталость и у вас будет меньше сил для выполнения повседневных задач, вы пересмотрите свои ежедневные привычки и поймете, что спали всего 4 часа. . На следующий день вы увеличили количество часов сна до 7, а затем поняли, что дневная производительность увеличилась! Таким образом, параметр, измененный здесь, — это часы сна, что обеспечивает лучшую производительность.

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

Я думаю, пришло время ввести градиентный спуск!

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

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

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

Прежде всего, нам нужно установить значение для каждого из w и b, которые обычно равны w = b=0, затем мы будем изменять эти два значения, пока не достигнем места, где функция стоимости J (w, b) остается на минимуме, который называется локальным минимумом.

Я знаю, что это трудно представить в своей голове, поэтому, прежде чем углубляться в математику, взгляните на это 3D-изображение, которое показывает весь процесс, и я надеюсь, вы уловите суть:

Не путайте:

- m эквивалентно w

- Ошибка эквивалентна J(w, b)

Градиентный спуск помог нам спуститься с горы, и оптимальные значения после окончания процесса составляют w = 5,08, b = 2,67 и J(w, b) =0,56, что является функцией минимизации затрат.

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

Увидев общий вид этого алгоритма, я представлю математические уравнения градиентного спуска.

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

Как упоминалось ранее, основная идея состоит в том, чтобы уменьшить функцию стоимости за счет изменения w и b, уравнения таковы:

  1. α: скорость обучения
  2. d/dw, d/db: производная функции стоимости J

Скорость обучения (α)

Альфа — это положительное число, ограниченное от 0 до 1. Оно определяет, насколько большой шаг вы делаете вниз по склону, если α большой, то шаг большой, если маленький, то шаги крошечные (это зависит от того, насколько мал α) . Взглянем:

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

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

Вы помните эти уравнения, которые мы обсуждали ранее:

После подстановки уравнения функции стоимости в уравнения w & b, рассмотренные выше, уравнения производных будут иметь вид:

Полное уравнение w & b примет вид:

Теперь w и b будут обновляться одновременно.

Подводя итог, вот что будет достигнуто в конце:

Мы достигли нашего локального минимума -> оптимальные значения w & b -> функция наименьшей стоимости -> теперь модель работает наилучшим образом!

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

Как только занавес откроется, вы будете готовы к шоу

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

Спасибо, что уделили время, и давайте расширим наши знания!