Практика с вами, чтобы начать работу с машинным обучением 1 — линейная регрессия

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

Эта статья включена в:blog.aistudyclub.comПубличный номер: Общество исследования искусственного интеллекта

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

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

1. Введение в линейную регрессию

Что такое линейная регрессия? Давайте возьмем данные о ценах на жилье в качестве примера, чтобы описать, что такое линейная регрессия. Посмотрите на данные в таблице ниже.

Площадь (㎡) Цена (десять тысяч юаней)
210 460
141 232
153 315
85 178
... ...

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

H=θ0+xθ1Н=θ_0 + хθ_1 (1)

где H — цена, а x — площадь. тогда, если мы увереныθ0θ_0иθ1θ_1Значением можно определить соотношение между площадью и ценой. И H, и x известны как данные в таблице, и для определения этих двух значений можно использовать большое количество данных, так что между площадью и ценой можно использовать линейную функцию, а затем процесс определения этих двух значений. значений вызывается для линейной регрессии.

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

Площадь (㎡) Количество спален этаж возраст комнаты Цена (десять тысяч юаней)
210 5 1 45 460
141 3 2 40 232
153 3 2 30 315
85 2 1 36 178

В настоящее время наша формула 1 обновляется до следующей формулы:

H=θ0+x1θ1+x2θ2++xnθnH=θ_0+x_1θ_1+x_2θ_2+ ……+x_nθ_n (2)

еслиθ0θ_0прибытьθnθ_nЗначение инициализируется случайным значением, тогда должна быть ошибка между ценой жилья H, рассчитанной по формуле 2, и реальным значением. Если настроить параметрыθ0θ_0прибытьθnθ_nЗначение H заставляет значение H попытаться решить реальную цену, поэтому можно ли определить взаимосвязь между площадью и ценой, чтобы можно было предсказать приблизительную цену дома в зависимости от площади?

2. Функция потерь

Поскольку между ценой жилья H и реальной стоимостью, рассчитанной по формуле 2, существует определенная погрешность, то для описания этой погрешности сначала необходимо использовать формулу, которая называется функцией потерь, которая представлена ​​J. Определяется следующим образом:

J(θ0,θ1,θ1,,θn)=12mi=1m(h(x(i))y(i))2J (θ_0, θ_1, θ_1,..., θ_n) = \ frac {1} {2m} \ sum_ {i = 1} ^ m (h (x ^ {(i)}) - y ^ {(i) } )^2 (3)

В уравнении 3 вышеθθ- неизвестная переменная, которую необходимо рассчитать, x и y - известные величины в приведенной выше таблице, то как мы рассчитываемθθНу, здесь мы будем использовать градиентный спуск, метод, обычно используемый в машинном обучении.

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

Градиентный спуск обновляется посредством непрерывных итерацийθ\thetaдля уменьшения значения функции потерь формула выглядит следующим образом:

reapeat{

θj:=θjальфаθjJ(θ0,θ1,...,θn)\theta_j := \theta_j - \alpha\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,...,\theta_n) (4)

}

в формуле 4альфа\alphaПредставляет скорость обучения, которая обычно представляет собой действительное число меньше 1, например 0,1, 0,01 и т. д., которое необходимо скорректировать в соответствии с реальной ситуацией.θj\theta_jПредставляет параметры, которые необходимо обновить в этой итерации.θjJ(θ0,θ1,...,θn)\frac{\partial}{\partial\theta_j}J(\theta_0,\theta_1,...,\theta_n)Эта часть - пара Jθj\theta_jЧастная производная , полученное значение является текущимθj\theta_jЗначение градиента является вектором, поэтому у него есть направление. Его направлением является направление с наибольшей скоростью изменения и максимальным значением в этом направлении. С точки зрения непрофессионала, это текущийθj\theta_jВклад значения в ошибку. Так что его можно использовать итеративноθj\theta_jминус скорость обучения разθj\theta_jВклад в параметр обновления ошибкиθj\theta_jзначение . после обновленияθj\theta_jРасчетное значение потерь будет меньше исходного. После нескольких итераций функция потерь сойдется к относительно небольшому значению, и итерацию можно будет остановить, этот процесс также можно назвать обучением. Обратите внимание, что здесь приведено лишь краткое описание процесса градиентного спуска, то есть процесса обучения.На практике необходимо рассмотреть множество задач, таких как локальные оптимальные решения, переобучение и подгонка и т. д. Однако существуют будут решения этих проблем, об этом будет рассказано в следующей статье.

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

J=θ2J=\theta^2 (5)

В самом деле, легко видеть, что это парабола с отверстием вверх, и у нее всего одна низшая точка, т. е. когдаθ\theta0,J=0J=0.

  • Сначала предположимθ\thetaНачальное значение равно 1.

    θ0=1\theta^0=1предполагаемыйJ=1J=1

  • Затем выполните итерацию градиентного спуска, здесь мы выбираем скорость обученияальфа=0.4\alpha=0.4.

    θ1=θ0альфаθ0J\theta^1 = \theta^0 -\alpha\frac{\partial}{\partial\theta^0}J

    θ1=10.4×2θ0=10.8=0.2\theta^1=1-0.4\times2\theta^0=1-0.8=0.2

    J=(θ1)2=0.04J=(\theta^1)^2 = 0.04

  • использовать обновленныйθ1\theta^1Значение продолжает повторяться.

    θ2=θ1альфаθ1J\theta^2 = \theta^1 -\alpha\frac{\partial}{\partial\theta^1}J

    θ2=0.20.4×2θ1=0.20.4×0.4=0.04\theta^2=0.2-0.4\times2\theta^1=0.2-0.4\times0.4=0.04

    J=(θ2)2=0.0016J=(\theta^2)^2 = 0.0016


    θ3=θ2альфаθ2J\theta^3 = \theta^2 -\alpha\frac{\partial}{\partial\theta^2}J

    θ3=0.040.4×2θ2=0.040.4×0.08=0.008\theta^3=0.04-0.4\times2\theta^2=0.04-0.4\times0.08=0.008

    J=(θ3)2=6.4×105J=(\theta^3)^2=6.4\times10^{-5}


    θ4=θ3альфаθ3J\theta^4 = \theta^3 -\alpha\frac{\partial}{\partial\theta^3}J

    θ4=0.0080.4×2θ3=0.0080.4×0.016=0.0016\theta^4=0.008-0.4\times2\theta^3=0.008-0.4\times0.016=0.0016

    J=(θ4)2=2.56×106J=(\theta^4)^2 = 2.56\times10^{-6}

Вы можете увидеть нашу функцию потерь на четвертой итерацииJJЗначение уже очень мало, если продолжать итерациюJJзначение будет приближаться к 0. На этом мы можем остановить обучение и получить подходящий параметрθ=0.0016\theta=0.0016, процесс градиентного спуска выглядит примерно следующим образом.

4. Резюме

Начнем с данных и кратко опишем, что такое линейная регрессия. Изучите формулу одномерной линейной регрессии и формулу множественной линейной регрессии. При этом формула функции потерь строится по формуле линейной регрессии. Функцию потерь необходимо использовать в процессе обучения.Предпосылкой обучения является наличие большого количества данных.Здесь, взяв в качестве примера данные о ценах на жилье, мы можем рассчитать их с помощью градиентного спуска.θ\thetaпараметры для описания прямой зависимости между собственными значениями домов и ценами на дома, тем самым завершая процесс линейной регрессии.