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

Что это значит? Допустим, мы создаем приложение, которое может классифицировать изображения собак и кошек. Сначала мы предоставим системе множество разных изображений и дадим им несколько меток (в данном случае кошка и собака). Теперь система научится сопоставлять эти изображения с нужными метками. После этого, когда кто-то давал ему изображение, он мог успешно классифицировать, является ли животное на изображении кошкой или собакой. Этот тип проблемы относится к обучению с учителем. Обучение с учителем находит шаблоны в обучающих данных и использует эти шаблоны для тестовых данных, чтобы предсказать правильный результат.

Проблемы обучения с учителем могут быть двух типов: 1. Регрессия 2. Классификация. В этой статье мы поговорим только о регрессии.

Регрессия

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

Одним из наиболее распространенных типов алгоритмов, используемых для моделирования проблем регрессии, является линейная регрессия.

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

Теперь данные, приведенные на картинке, довольно просты. С одной стороны, у нас есть функция под названием x, которая сопоставлена ​​с меткой под названием y. В этом случае каждое дискретное значение x будет давать дискретное значение для y. Мы можем изобразить эти данные на графике, как показано в левой части рисунка (пока не беспокойтесь об этой линии и уравнении, скоро все станет очень ясно).

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

As we know that a line can be represented by an equation as follows.
                  y = mx + c
where, m is the slope of the line and c is the y-intercept
In the above data value of m is 1.041 and value of c is -0.075

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

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

Ответ заключается в том, что среднее расстояние от каждой точки до линии минимально для наилучше подобранной линии.

Итак, чтобы найти нашу идеальную линию, все, что нам нужно сделать, это найти такие значения m и c, чтобы среднее расстояние между каждой точкой данных и линией было минимальным.

Теперь, чтобы найти минимальное расстояние, нам сначала нужно найти расстояние от каждой точки до линии.

 Let's write a new function h(x) = mx + c
 h(x) is also called as a hypothesis.
 We can represent the distance of each point from the line by 
     error = y - h(x) , the actual term for this distance is error

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

We can write a function J(m, c) = sum(y - h(x))/N
where, N is the total number of data points in the training data set
This function is commonly known as a cost function or loss function

Наконец, у нас есть среднее значение ошибки. Теперь наша задача — минимизировать функцию потерь.

min(J(m, c))

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

Мы можем использовать график выше, чтобы лучше понять работу градиентного спуска. Цветная плоскость на графике показывает значение функции стоимости в зависимости от значений m и c (на графике m и c представлены как theta1 и theta2). Синяя область представляет собой область, где значение функции стоимости является самым низким. Сначала мы задаем некоторое начальное значение для m и c (обычно нулевое), а затем итеративно уменьшаем значение J, изменяя значение m и c, пока не достигнем точки, в которой это значение минимально.

В этот момент кто-то может задать вопрос. Как мы собираемся уменьшить значение функции потерь? Ответ прост, мы будем уменьшать значения m и c в несколько раз после каждой итерации.

repeat {
  m := m - alpha*partial_Derivative(J(m, c))
  c := c - alpha*partial_Derivative(J(m, c))
}

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

Вывод

Я ценю ваши усилия, если вы все еще читаете эту статью. Есть много разных тем, о которых я не говорил в этой статье, таких как переобучение и недообучение, когда градиентный спуск работает хорошо, а когда нет, альтернативы градиентному спуску, такие как метод Ньютона и т. д. Есть много интересных вещей, о которых можно поговорить в машинном обучении, и эта статья лишь поверхностно. Если вам это нравится, пожалуйста, дайте мне несколько хлопков. Я хотел бы услышать ваши мысли об этой статье в комментариях или в моем личном почтовом ящике по адресу ([email protected]).

Ресурсы

  1. Машинное обучение для людей, Вишал Майни
  2. Линейная регрессия — дополненные стартапы
  3. Математика градиентного спуска — поезд кодирования