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

Промежуточные знания Python и его библиотеки (Numpy, Pandas, MatPlotLib) хороши для начала. Что касается математики, то небольшое знание алгебры, исчисления и теории графов поможет понять хитрость алгоритма.

1.0 Путь к искусственному интеллекту, машинному обучению и глубокому обучению

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

2.0 Что такое машинное обучение

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

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

Вот общие шаги для понимания процесса машинного обучения:

  1. Постройте данный набор данных на оси xy
  2. Посмотрев на график, мы угадаем более близкую математическую функцию
  3. Получите функцию ошибки с заданным набором данных и предполагаемой математической функцией.
  4. Попробуйте минимизировать функцию ошибок, используя некоторые алгоритмы.
  5. Функция минимизации ошибок даст нам более точную математическую функцию для заданных паттернов.

3.0 Начало работы с первыми алгоритмами: линейная регрессия с одной переменной

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

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

Итак, сначала мы нанесем эти данные на график.

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

Определение линейной регрессии

Цель модели линейной регрессии – найти взаимосвязь между одним или несколькими признаками (независимыми переменными) и непрерывной целевой переменной (зависимой переменной). Когда есть только функция, она называется одномерной линейной регрессией, а если есть несколько функций, она называется множественной линейной регрессией.

4.0 Функция гипотезы:

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

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

f(x) = w * x + b

где w — вес, а b — смещение.

Для другого набора значений (w,b) может быть несколько строк, но для одного набора значений он будет близок к этому шаблону.

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

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

5.0 Ошибка на балл

Поскольку наша функция гипотезы непрерывна, для каждого Xi (точки площади) будет одна прогнозируемая цена Yi, а Y будет фактической ценой.

Так что ошибка в любой момент,

Ei = Yi — Y = F(Xi) — Y

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

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

6.0 Энергетические функции

Поскольку имеется m тренировочных точек, мы можем рассчитать функцию средней энергии ниже

E (w,b) = 1/m ( iΣm (Ei) )

и

наш мотив состоит в том, чтобы минимизировать энергетические функции

мин (E (w,b)) в точке ( w,b )

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

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

Итак, наша окончательная функция энергии

E (w,b) = 1/2m ( iΣm (Ei)2 )

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

первая производная x2 равна 2x.

7.0 Метод градиентного спуска

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

На картинке выше мы видим справа:

  1. w0 и w1 — это случайная инициализация, и, следуя градиентному спуску, они движутся к глобальным минимумам.
  2. Количество витков черной линии — это количество итераций, поэтому оно не должно быть больше или меньше.
  3. Расстояние между витками — это альфа, т. е. параметр обучения.

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

Моменты, которые следует учитывать при расчетах градиентного спуска:

  1. Случайная инициализация: мы запускаем этот алгоритм в любой случайной точке, которая имеет случайное значение (w, b). Двигаясь по этому алгоритму, решите, в каком направлении должны быть предприняты новые испытания. Поскольку мы знаем, что это будет верхняя парабола, то, двигаясь в правильном направлении (к глобальным минимумам), мы получим меньшее значение по сравнению с предыдущей точкой.
  2. Количество итераций: Количество итераций не должно быть больше или меньше. Если меньше, то мы не достигнем глобальных минимумов, а если больше, то это будут дополнительные вычисления вокруг глобальных минимумов.
  3. Альфа как параметры обучения: когда альфа слишком мала, градиентный спуск будет медленным, поскольку для достижения глобальных минимумов требуются ненужные шаги. Если альфа слишком велика, она может превысить глобальные минимумы. В этом случае она не будет ни сходиться, ни расходиться.

8.0 Реализация градиентного спуска в Python

Это базовая реализация алгоритмов градиентного спуска с использованием NumPy и Pandas. По сути, это чтение файла area-price.csv. Здесь мы нормализуем ось X для лучшей читаемости точек данных на графике. Мы взяли (w,b) как (0.1, 0.1) как случайную инициализацию. Мы взяли 100 за количество итераций и скорость обучения за 0,001.

На каждой итерации мы вычисляем значения w и b и видим их скорость сходимости.

Мы можем повторить этот расчет для (w, b) для разных значений случайной инициализации, количества итераций и скорости обучения (альфа).

Примечание: существует другая библиотека Python TensorFlow, которая более предпочтительна для таких вычислений. В TensorFlow есть встроенные функции градиентного спуска. Но для лучшего понимания мы использовали библиотеки numpy и pandas здесь.

9.0 RMSE (среднеквадратичная ошибка)

RMSE: это метод проверки точности нашего расчета (w,b). Ниже приведена основная формула расчета RMSE, где f — прогнозируемое значение и наблюдаемое значение.

Примечание. Для RMSE не существует абсолютно хорошего или плохого порогового значения, однако мы можем предположить это на основе нашего наблюдаемого значения. Для диапазона наблюдаемых значений от 0 до 1000 значение RMSE 0,7 мало, но если диапазон идет от 0 до 1, оно не так уж мало.

10.0 Заключение

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

Ссылка

*******************************************************************

Это сообщение изначально было опубликовано в Блоге Velotio.

Velotio Technologies — аутсорсинговый партнер по разработке программных продуктов для технологических стартапов и предприятий. Мы специализируемся на разработке корпоративных продуктов B2B и SaaS с упором на искусственный интеллект и машинное обучение, DevOps и разработку тестов.

Хотите узнать о нас больше? Мы хотели бы связаться с вами на нашем Веб-сайте, LinkedIn или Twitter.

*******************************************************************