В линейной регрессии мы получили функцию стоимости, которая даст нам наилучшую возможную прямую линию, соответствующую нашим данным. (если вы не читали нашу статью о линейной регрессии, вы можете прочитать ее здесь.)
Прежде чем двигаться вперед, давайте сначала поймем 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