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

В этой статье давайте исследуем концепцию линейной регрессии в контексте машинного обучения.

Функция стоимости

Допустим, мы пытаемся понять взаимосвязь между площадью дома (м²) и ценой дома ($).

Как и на графике выше, мы предполагаем, что дом и цена дома имеют положительную связь, и мы можем смоделировать эту связь с помощью линейной модели f(x) = w0 + w1 * x.

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

Остатки могут быть как положительными, так и отрицательными. Другими словами, простое суммирование остатков может фактически привести к уменьшению остатков, когда есть положительные и отрицательные значения. Поэтому, когда мы вычисляем фактическую ошибку модели линейной регрессии, вместо этого мы вычисляем остаточную сумму квадратов (RSS) (остаток² = RSS). RSS можно выразить в уравнениях, как показано ниже.

В регрессионном анализе RSS эквивалентен затратам, поэтому приведенное выше уравнение можно рассматривать как функция затрат. Функция стоимости также выражается в виде приведенного ниже уравнения, где в этом случае знаменатель равен 2N. Это просто для удобства, когда мы будем дифференцировать уравнение в будущем. По существу, нет никакой разницы между функцией затрат выше и ниже.

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

Градиентный спуск

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

Это легче понять, если вы думаете об этом таким образом. Вы потерялись посреди горы в темноте. Практически единственный способ найти свой путь — продолжать двигаться к чему-то более низкому, чем ваше местоположение. Вам просто нужно продолжать спускаться с горы, пока не достигнете самой низкой точки.

Принцип градиентного спуска тот же. Вы инициализируете параметры w0 и w1 случайным образом и продолжаете обновлять их до тех пор, пока не будет возвращена минимальная стоимость. Как узнать, достигнута ли минимальная стоимость? См. диаграмму ниже.

Минимальная стоимость достигается, когда градиент или наклон функции стоимости равен 0. Другими словами, дифференцированное значение функции стоимости должно быть равно 0, когда стоимость минимальна. Поскольку есть два параметра, w0 и w1, мы дифференцируем функцию стоимости по каждому из них.

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

Таким образом, этапы градиентного спуска следующие.

  1. Случайным образом инициализируйте параметры w1 и w0 и рассчитайте стоимость этих начальных параметров.
  2. Обновите параметры следующим образом:

3. Рассчитайте стоимость с обновленными параметрами

4. Если стоимость уменьшилась, вернитесь к шагу 2 и повторите процесс. Если стоимость больше не уменьшается, вы достигли минимальной стоимости.

Теперь вы познакомились с основами градиентного спуска. Однако, если вы посмотрите на уравнения обновления, вы можете найти α, о котором мы еще не говорили. Эта переменная называется скорость обучения. В машинном обучении скорость обучения — это параметр настройки в алгоритме оптимизации, который определяет размер шага на каждой итерации. Другими словами, чем больше скорость обучения, тем больше размер шага. Слишком маленькая скорость обучения или слишком большая скорость обучения могут привести к нежелательным результатам.

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

В этой статье мы рассмотрели самые основы линейной регрессии и градиентного спуска в контексте ML. Надеюсь, это помогло вам понять основные понятия линейной регрессии, функции стоимости и градиентного спуска, и я вернусь с более практическими примерами линейной регрессии. Спасибо :)