Вы когда-нибудь сталкивались с какой-либо новой идеей или определением в процессе обучения, из-за которой вы чувствовали, что вам нужно биться головой о стену?
Это была моя история с Градиентным спуском. Всякий раз, когда я пытался выучить его заново, я обнаруживал, что в головоломке недостает кусочка.
Я буду отражать свои знания гладко, поэтому, надеюсь, вы получите четкое представление об этой теме.
Итак, без лишних слов, о чем сегодня пойдет речь:
- Функция стоимости
- Градиентный спуск
- Реализация градиентного спуска
- Скорость обучения
- Краткое резюме
У нас много дел, так что давайте начнем.
Функция стоимости
Вы можете рассматривать функцию стоимости как индикатор, который показывает нам, насколько хорошо работает наша модель.
Я объясню это с помощью линейной регрессии. Кстати, если вы не знакомы с линейной регрессией, не стесняйтесь проверить один из моих предыдущих постов об этом. Он представлен:
- x: независимая переменная
- w: наклон
- b: коэффициент или точка пересечения по оси Y
Эквивалентно f(x) = wx + b
Важно отметить, что w & b являются основным фактором, меняющим правила игры, и вся идея состоит в том, чтобы настраивать их до тех пор, пока мы не достигнем наилучшей производительности нашей модели.
В этом и заключается суть функции стоимости. Как я упоминал ранее, стоимость показывает нам, насколько хорошо работает наша модель и нуждается ли она в настройке параметров. Кроме того, получаем ли мы линию наилучшего соответствия или нет.
Приведенное ниже уравнение называется Среднее Функция стоимости квадрата ошибки:
- y hat: предсказание (вывод модели)
- y: фактическое значение
- 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, уравнения таковы:
- α: скорость обучения
- d/dw, d/db: производная функции стоимости J
Скорость обучения (α)
Альфа — это положительное число, ограниченное от 0 до 1. Оно определяет, насколько большой шаг вы делаете вниз по склону, если α большой, то шаг большой, если маленький, то шаги крошечные (это зависит от того, насколько мал α) . Взглянем:
Я хочу, чтобы эта демонстрация была достаточно хороша, чтобы прояснить идею о влиянии выбора скорости обучения на градиентный спуск, и что к настоящему времени вы начали видеть градиентный спуск в другом свете.
Давайте смешаем все концепции, изученные выше, чтобы собрать последний кусочек головоломки.
Вы помните эти уравнения, которые мы обсуждали ранее:
После подстановки уравнения функции стоимости в уравнения w & b, рассмотренные выше, уравнения производных будут иметь вид:
Полное уравнение w & b примет вид:
Теперь w и b будут обновляться одновременно.
Подводя итог, вот что будет достигнуто в конце:
Мы достигли нашего локального минимума -> оптимальные значения w & b -> функция наименьшей стоимости -> теперь модель работает наилучшим образом!
Надеюсь, это было не так сложно, и вы получили все, что вам нужно, чтобы иметь четкое представление о градиентном спуске. К настоящему моменту я предполагаю, что всякий раз, когда кто-то спрашивает вас об этом алгоритме, вы готовы к работе.
Как только занавес откроется, вы будете готовы к шоу
Если вы нашли эту статью полезной и помогли вам получить полное представление о градиентном спуске, хлопните в ладоши и поделитесь ею со своими друзьями, которые борются с этим определением. Кроме того, не стесняйтесь оставлять свои комментарии в разделе комментариев, чтобы мы могли обсудить ваши мысли.
Спасибо, что уделили время, и давайте расширим наши знания!