Машинное обучение — алгоритм градиентного спуска

машинное обучение

предисловие

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

концепция

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

在这里插入图片描述

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

Мы делаем это, беря производную от нашей функции стоимости (тангенс функции). Наклон касательной является производной от этой точки и дает нам направление, в котором мы смотрим. Мы опускаем функцию стоимости в направлении наискорейшего спуска. Размер каждого шага определяется параметром α, который называется скоростью обучения.

Расстояние между каждой «звездой» на изображении выше представляет собой размер шага, определяемый параметром α. Меньшее значение α приведет к меньшему размеру шага, большее α приведет к большему размеру шага. Направление шага определяется частной производной от J(θ0, θ1). В зависимости от того, где начинается диаграмма, она может заканчиваться в разных точках. На изображении выше показаны две разные отправные точки, которые заканчиваются в двух разных местах.

  • Думайте об этом изображении как о горе, представьте себе такой вид, в парке две горы, представьте, что вы стоите в этой точке на горе, стоите на этой красной горе в вашем воображаемом парке, в алгоритме градиентного спуска мы все вам нужно повернуться на 360 градусов, чтобы оглядеться и спросить себя, хочу ли я спуститься с горы маленькими шажками в определенном направлении как можно быстрее, хочу ли я спуститься с горы, хочу ли я идти пешком вниз с горы как можно быстрее, в каком направлении нужно идти этим маленьким шагам?Если мы Стоим в этой точке на холме, вы оглядываетесь и находите лучшее направление для спуска, о том, что, и теперь вы находитесь на новая отправная точка на холме, вы оглядываетесь и снова думаете, я должен сделать маленькие шаги вниз с горы в каком направлении? Затем вы делаете еще один шаг на свое усмотрение, делаете шаг в этом направлении, и повторяете шаги, описанные выше, от этой новой точки, вы оглядываетесь и решаете, в каком направлении будет Спускаться с горы быстрее, а затем делаете маленький шаг, еще один маленький шаг и так далее, пока не найдете местную самую низкую точку.
  • α — это число, называемое скоростью обучения Что такое α? Затем в соответствующем процессе градиентного спуска мы попытаемся спуститься с горы большими шагами.Если значение α мало, то мы будем делать маленькие маленькие шаги вниз с горы.

Алгоритм градиентного спуска: Повторять до сходимости:

在这里插入图片描述
хд j = 0,1 представляет собой порядковый номер признака. На каждой итерации j параметры θ₁, θ₂, θ₃..., θn должны обновляться одновременно. Обновление конкретного параметра j итераций перед вычислением другого параметра приведет к неправильной реализации.
在这里插入图片描述
Обязательно сначала вычислите значение, а затем обновите значение в последнюю очередь!