Линейная регрессия: градиентный спуск

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

Модель начинает обучение со случайными весами и смещениями, близкими к нулю, а затем повторяет следующие шаги:

  1. Рассчитайте потери с текущим весом и смещением.

  2. Определите направление перемещения весов и смещения, которые уменьшат потери.

  3. Немного переместите значения веса и смещения в направлении, которое уменьшает потери.

  4. Вернитесь к первому шагу и повторяйте процесс до тех пор, пока модель не сможет дальше сокращать потери.

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

Рисунок 12. Иллюстрация процесса градиентного спуска.

Рисунок 12 . Градиентный спуск — это итерационный процесс, который находит веса и смещение, которые создают модель с наименьшими потерями.

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

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

Фунты в тысячах (особенность) Миль на галлон (этикетка)
3,5 18
3,69 15
3.44 18
3.43 16
4.34 15
4.42 14
2.37 24
  1. Модель начинает обучение с установки веса и смещения на ноль:
  2. $$ \small{Weight:\ 0} $$$$ \small{Bias:\ 0} $$$$ \small{y = 0 + 0(x_1)} $$
  3. Рассчитайте потерю MSE с текущими параметрами модели:
  4. $$ \small{Loss = \frac{(18-0)^2 + (15-0)^2 + (18-0)^2 + (16-0)^2 + (15-0)^2 + (14-0)^2 + (24-0)^2}{7}} $$$$ \small{Loss= 303.71} $$
  5. Вычислите наклон касательной к функции потерь при каждом весе и смещении:
  6. $$ \small{Weight\ slope: -119.7} $$$$ \small{Bias\ slope: -34.3} $$

    Нажмите значок плюса, чтобы узнать о расчете наклона.

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

    Запишем уравнение для прогнозирования так:
    $ f_{w,b}(x) = (w*x)+b $.

    Фактическое значение запишем как: $y$.

    Мы рассчитаем MSE, используя:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)})^2 $
    где $i$ представляет собой $th$ обучающий пример, а $M$ представляет количество примеров.

    Производная веса

    Производная функции потерь по весу записывается как:
    $ \frac{\partial }{\partial w} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{( я)})^2 $

    и оценивается как:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2x_{(i)} $

    Сначала мы суммируем каждое прогнозируемое значение минус фактическое значение, а затем умножаем его на двукратное значение признака. Затем делим сумму на количество примеров. Результатом является наклон линии, касательной к значению веса.

    Если мы решим это уравнение с весом и смещением, равными нулю, мы получим -119,7 для наклона линии.

    Производная смещения

    Производная функции потерь по смещению записывается как:
    $ \frac{\partial }{\partial b} \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{( я)})^2 $

    и оценивается как:
    $ \frac{1}{M} \sum_{i=1}^{M} (f_{w,b}(x_{(i)}) - y_{(i)}) * 2 $

    Сначала мы суммируем каждое прогнозируемое значение минус фактическое значение, а затем умножаем его на два. Затем делим сумму на количество примеров. Результатом является наклон линии, касательной к значению смещения.

    Если мы решим это уравнение с весом и смещением, равными нулю, мы получим -34,3 для наклона линии.

  7. Сместите небольшое расстояние в направлении отрицательного наклона, чтобы получить следующий вес и смещение. На данный момент мы условно определим «небольшую сумму» как 0,01:
  8. $$ \small{New\ weight = old\ weight - (small\ amount * weight\ slope)} $$$$ \small{New\ bias = old\ bias - (small\ amount * bias\ slope)} $$$$ \small{New\ weight = 0 - (0.01)*(-119.7)} $$$$ \small{New\ bias = 0 - (0.01)*(-34.3)} $$$$ \small{New\ weight = 1.2} $$$$ \small{New\ bias = 0.34} $$

Используйте новый вес и смещение, чтобы рассчитать потерю и повторить. Завершив процесс за шесть итераций, мы получим следующие веса, смещения и потери:

Итерация Масса Предвзятость Убыток (MSE)
1 0 0 303,71
2 1.2 0,34 170,67
3 2,75 0,59 67,3
4 3.17 0,72 50,63
5 3,47 0,82 42,1
6 3,68 0,9 37,74

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

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

Кривые сходимости и потерь модели

При обучении модели вы часто будете смотреть на кривую потерь , чтобы определить, сошлась ли модель. Кривая потерь показывает, как потери изменяются по мере обучения модели. Ниже показано, как выглядит типичная кривая потерь. Потери отложены по оси Y, а итерации — по оси X:

Рисунок 13. График кривой потерь, показывающий резкий спад, а затем плавный спад.

Рисунок 13 . Кривая потерь, показывающая сходимость модели около отметки 1000-й итерации.

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

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

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

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

Рисунок 14. Кривая потерь и соответствующий график модели, который отклоняется от точек данных.

Рисунок 14 . Кривая потерь и снимок модели в начале процесса обучения.

Примерно на 400-й итерации мы видим, что градиентный спуск нашел вес и смещение, которые позволяют создать лучшую модель.

Рисунок 15. Кривая потерь и соответствующий график модели, которая пересекает точки данных, но не под оптимальным углом.

Рисунок 15 . Кривая потерь и снимок модели примерно в середине обучения.

И примерно на 1000-й итерации мы видим, что модель сошлась, создав модель с минимально возможными потерями.

Рисунок 16. Кривая потерь и соответствующий график модели, которая хорошо соответствует данным.

Рисунок 16 . Кривая потерь и снимок модели ближе к концу процесса обучения.

Упражнение: Проверьте свое понимание.

Какова роль градиентного спуска в линейной регрессии?
Градиентный спуск — это итерационный процесс, который находит лучшие веса и смещение, которые минимизируют потери.
Градиентный спуск помогает определить, какой тип потерь использовать при обучении модели, например, L 1 или L 2 .
Градиентный спуск не участвует в выборе функции потерь для обучения модели.
Градиентный спуск удаляет выбросы из набора данных, чтобы помочь модели делать более точные прогнозы.
Градиентный спуск не меняет набор данных.

Сходимость и выпуклые функции

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

Если мы изобразим поверхность потерь для модели с одной особенностью, мы увидим ее выпуклую форму. Ниже представлена ​​поверхность потерь набора данных о милях на галлон, использованного в предыдущих примерах. Вес отложен по оси X, смещение — по оси Y, а потери — по оси Z:

Рисунок 17. Трехмерный график поверхности потерь.

Рисунок 17. Поверхность потерь, показывающая ее выпуклую форму.

В этом примере вес -5,44 и смещение 35,94 приводят к самым низким потерям на уровне 5,54:

Рисунок 18. Трехмерный график поверхности потерь с (-5,44, 35,94, 5,54) внизу.

Рисунок 18 . Поверхность потерь, показывающая значения веса и смещения, которые приводят к наименьшим потерям.

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

Рисунок 19. Выпуклая трехмерная поверхность потерь с точками градиентного спуска, движущимися к самой нижней точке.

Рисунок 19 . График потерь, показывающий точки градиентного спуска, останавливающиеся в самой нижней точке графика.

Обратите внимание, что черные точки потерь создают точную форму кривой потерь: крутой спад, а затем постепенное снижение, пока они не достигнут самой низкой точки на поверхности потерь.

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

Используя значения веса и смещения, которые приводят к наименьшим потерям (в данном случае вес -5,44 и смещение 35,94), мы можем построить график модели, чтобы увидеть, насколько хорошо она соответствует данным:

Рисунок 20. График зависимости фунтов в тысячах от миль на галлон, модель соответствует данным.

Рисунок 20. Модель построена на графике с использованием значений веса и смещения, которые приводят к наименьшим потерям.

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