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

Прежде чем двигаться вперед, давайте сначала поймем J (θ), для простоты мы написали J (θ0, θ1) как J (θ).

Допустим, у нас есть прямая линия, когда θ0 = 0 и θ1 = 1, ниже представлены точка данных и наша прямая линия, полученные с помощью линейной регрессии.

Здесь мы можем сказать, что наша модель, гипотеза или прямая линия идеально соответствуют нашим данным. По функции стоимости:

из приведенного выше графика значения y равны 1,2,3, и наша гипотеза также выводит те же значения.

Теперь давайте изменим значения θ1 и построим 2 графика для θ1 = 0, θ1 = 0,5 и θ0 = 0 во всех случаях.

Получаем такой сюжет:

Из всех трех строк мы получили 3 значения для J (θ0, θ1).

J (0,1) = 0, J (0,0,5) = 0,58 и J (0,0) = 2,3

Это был пример того, как, изменяя значение θ, мы получаем разные функции затрат. И все, что нам нужно, это чтобы функция стоимости давала минимально возможное значение (поскольку это разница между прогнозируемым и исходным значением, поэтому мы хотим, чтобы оно было как можно меньше).

Теперь давайте начнем строить J (θ)

если мы переберем все возможные значения для J (θ), мы получим такую ​​кривую, и отсюда вы можете очень хорошо заметить, что значение, для которого J (θ) минимально, - это когда θ1 = 1.

Теперь перейдем к алгоритму градиентного спуска:

1. для некоторой функции J (θ0, θ1) мы хотим минимизировать θ0, θ1, чтобы мы могли получить минимальное значение для J (θ0, θ1).

2. Начните с некоторых случайных значений для θ0, θ1.

3. Продолжайте изменять значения θ0, θ1, чтобы уменьшить J (θ0, θ1), пока мы не найдем минимальное значение.

Что делать?

теперь в приведенных выше формулах α - скорость обучения. Скорость обучения определяет, как вы собираетесь изменять значения θ. (Как? Посмотрим).

Для простоты предположим, что J (θ) только для одного параметра, где мы должны минимизировать θ, где θ - действительное число.

Предположим, что график для J (θ), теперь, чтобы получить минимальное значение, сначала нам нужно знать позицию нашего предположения. Посмотрите на следующий график и предположите, что зеленая точка справа - это наше предположение для θ. Теперь мы находим его наклон на следующем рисунке. Вы можете заметить, что наклон положительный.

Итак, обращаясь к нашему предыдущему уравнению:

поскольку наклон положительный, это означает, что производная J (θ) положительна.

So,

θj: = θj - α [положительное число]

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

Точно так же, когда наклон отрицательный, как на следующем рисунке:

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

θj: = θj - α [отрицательное число]

в конце концов, мы перемещаем θ к правильному среднему значению, мы должны увеличить значение θ, чтобы приблизить его к минимуму.

А если ваш наклон равен 0, это означает, что вы уже на минимуме.

О чем нужно позаботиться:

В уравнении

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

И если α слишком велико, градиентный спуск может выйти за пределы или, скажем, пропустить минимум и продолжать отклоняться, или он может не сойтись или даже отклониться.

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

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

становится все меньше и меньше, поэтому автоматически он будет делать меньшие шаги.

А теперь давайте соберем все вместе:

мы не будем объединять градиентный спуск и функцию стоимости.

hθ(x) = θ0 + θ1x

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

Спасибо за прочтение.

Отзывы всегда приветствуются.

linkedin: https://www.linkedin.com/in/shashwat-pandey-9119b3165/

twitter: https://twitter.com/shashwat023