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

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

Что такое машинное обучение (ML)

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

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

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

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

Большая картинка

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

Категоризация обучающих алгоритмов машинного обучения

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

Под наблюдением

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

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

Без присмотра

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

Категоризация алгоритмов прогнозирования машинного обучения

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

Некоторые из популярных категорий перечислены ниже:

Линейная/нелинейная регрессия

ML, который может прогнозировать непрерывные значения на основе предоставленных данных, часто упоминаемый пример — определение цены дома на основе различных свойств дома, таких как размер дома, количество спален, количество ванн / рейтинг школы и т. д.

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

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

Классификация

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

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

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

Другие примеры включают

  • Определение того, являются ли данные аномальными по сравнению с их прошлым поведением или нет, например, просмотр транзакции по кредитной карте и классификация их как аномальных или нет.
  • Отображение нескольких групп классификации включает просмотр изображения рукописного символа и определение написанного алфавита.
  • Другим интересным примером является самоуправляемый автомобиль, где камера фотографирует дорогу и предсказывает, повернуть ли налево на 30 градусов, направо на 30 градусов, прямо, замедлить движение, налево на 90 градусов и т. д. Каждый из них может быть помещен в отдельную классификационную группу. и алгоритм ML должен классифицировать выходные данные в одну из этих групп, чтобы самоуправляемый автомобиль мог предпринять соответствующие действия на основе прогноза.

Кластеризация

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

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

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

Краткий обзор математических понятий, используемых в машинном обучении.

Основа всего этого начинается с оптимизации модели регрессии для снижения затрат, начиная с концепций линейной регрессии.

Понимание концепции линейной регрессии поможет вам получить основу для машинного обучения с учителем, на основе которой строятся многие другие концепции. Целью этого процесса машинного обучения является прогнозирование уравнения линейной линии/плоскости или нелинейной кривой (2d/3D), которое лучше всего соответствует всем точкам, представленным обучающими данными. Затем это уравнение можно использовать для новых данных для прогнозирования значений.

Гипотеза: здесь вам придется освежить свою школьную математику, уравнев прямую линию в системе координат: (y = a + mx), где a — смещение линии, а m — наклон линии, а (x, y) — точка в система координации. Теперь обобщите это на многомерные точки данных (x1,x2,x3…xn), у вас будет уравнение n-мерного линейного графа, например «y=a+m1.x1+m2.x2+m3.x3…mn.xn . Это уравнение известно как гипотеза.

Функции, метки, веса/коэффициенты и смещение/смещение. В мире машинного обучения значения x1,x2…xn извлекаются из набора данных и называются функциями. Например, если вы собираете данные о большом количестве домов, таких как размер дома, количество комнат, рейтинг школы, количество спален и т. д. Эти значения можно представить в виде характеристик (x1 — размер дома, x2 — количество спален и т. д.).

«y» известен как метка. В приведенном выше примере y для одной точки данных может быть ценой дома. Это будет значение, которое вы хотели бы использовать в качестве известного результата для каждого набора обучающих данных и хотели бы построить модель, которая вычисляет новое значение «y» для нового набора функций (x1..xn).

Значения «m1, m2 .. mn», которые будет предсказывать алгоритм ML, известны как веса или коэффициенты. Смещение также предсказывается процессом обучения ML.

Как правило, поскольку процесс обучения машинному обучению подается с большим количеством точек данных, мы можем представить линейное уравнение с помощью векторов: «Y = A.X0+M1.X1+M2.X2+..+MnXn», где «X1» — вектор все функции «x1» для каждой точки данных, аналогично для «M» и «Y». «X0» — это вектор «1s», а «A» — это вектор смещений или значений смещения.

Цель. В линейной регрессии цель состоит в том, чтобы предсказать веса или коэффициенты (m1..mn) и смещение в гипотезе таким образом, чтобы вычисленная стоимость на основе предоставленных точек данных была минимизирована. . Итак, какова вычисляемая стоимость и как обучение машинного обучения точно настраивает значения весов для минимизации стоимости?

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

Как сказано выше в цели, прогнозируемые веса и смещение должны постоянно корректироваться процессом обучения ML, чтобы значение MSE было минимальным.

Исправление/обучение: на каждой итерации процесс обучения машинного обучения будет проходить через набор обучающих данных, вычислять значение гипотезы с использованием весов и смещать ее, предсказанную до этой точки, вычислять стоимость, а затем применять коррекцию к вес и смещение в зависимости от стоимости. Одной из математических процедур для применения коррекции является использование «Градиентного спуска», предположим, мы рисуем график, показывающий значение функции стоимости для прогнозируемых значений весов, цель чтобы получить прогнозы, где значение кривой затрат находится внизу, как показано на рисунке ниже.

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

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

Обычно константа умножается на значение наклона, чтобы вычислить результирующее смещение, которое будет вычтено из вычисленного веса объекта. Это постоянное значение известно как скорость обучения. Если вы выберете небольшую скорость обучения, обучение может занять слишком много времени. чтобы сходиться к нижней части кривой затрат, и если вы выберете большую скорость обучения, то итерация может перепрыгнуть через нижнюю часть и может не сойтись. Обычно такие значения, как 0,1, 0,01, 0,3, 0,03, широко используются.

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

Нормализация или масштабирование функций

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

Существует несколько подходов, которые можно использовать для нормализации.

  1. Нормализация минимум-максимум — разделите каждое значение функции на его диапазон.«(значение-минимальное значение)/(максимальное значение — минимальное значение)»
  2. Средняя нормализация — разделите каждое отличие функции от среднего значения на диапазон. «(значение — среднее)/(максимальное значение — минимальное значение)»
  3. Стандартизация или нормализация Z-оценки — разделите каждое отличие функции от среднего значения на значение стандартного отклонения. «(значение — среднее)/значение стандартного отклонения». Это работает лучше в случае выбросов, когда только несколько значений, значительно отличающихся от остальных значений, не будут существенно влиять на нормализованные значения.

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

В то время как линейная регрессия создает функцию гипотезы, которая хороша для получения непрерывных числовых значений, таких как, например, цена дома, как мы можем использовать ее для получения дискретных значений, таких как категория 0 или 1?

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

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

f(s) выше — это сигмовидная функция, параметр «s» может быть функцией, которую мы использовали в линейной регрессии (т. е. a+m1.x1+m2.x2..+mn.xn). Если вы посмотрите на приведенную выше функцию, независимо от значения «s», значение f (s) будет от 0 до 1, поэтому мы можем преобразовать функцию, которая генерирует непрерывные значения, в функцию, которую можно обучить. вместо этого предсказать вероятность.

Функция стоимости: в линейной регрессии мы использовали MSE (среднеквадратическую ошибку), но в логистической регрессии мы не можем использовать это, причина в том, что метки (фактический результат) логистической регрессии должны быть либо 0 (не указано в категории) или 1 (в указанной категории). Итак, как нам вычислить функцию стоимости, которая добавляет стоимость на основе того, насколько вероятно, что логистическая регрессия вычислила правильность того, что элемент находится в определенной категории?

Мы могли бы использовать следующее уравнение:

Если вы обновите логарифмы, log (1) = 0, а log (0) не определен или может рассматриваться как очень высокое значение (бесконечное).

Если фактические данные говорят, что данные относятся к категории (т. е. фактический результат = 1), но если уравнение ML предсказывает вероятность ближе к 0 (т. е. прогнозируется как не в категории), то стоимость очень высока, поскольку первая часть уравнения »( фактический результат).log(прогнозируемая вероятность)» действует, точно так же вы можете думать и о других случаях.

Математическая запись формулы стоимости может быть обозначена следующим образом:

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

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

По сути, все точки, для которых уравнение «s» больше 0, будут в одной категории (положительный случай), а «s» ‹ 0 будет в отрицательной категории.

Нелинейные регрессии

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

y = a+m1.x1+m2.x1²+m3.x2+m4.x1.x2+m5.x1.x2²+…+mn.xn, где x1, x2, x3 и т. д. — признаки из точки данных.

Для простоты мы можем представить это в виде линейного уравнения, например:

y = a+m1.f1 + m2.f2+m3.f3+…+mn.fn, где f1=x1, f2 = x1², f3 = x2, f4 = x1.x2 и так далее.

Затем вы применяете тренировку, чтобы выучить a, m1, m2 .. mn.

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

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

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

Другим примером может быть предсказание того, на какую программу из списка программ (нескольких категорий) будет поступать студент на основе его данных.

Переобучение (не обнимайте меня слишком сильно, дайте мне немного места) с использованием регуляризации

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

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

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

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

стоимость (f (x)) = исходная стоимость (f (x)) + сумма (R.Xi) . Где исходную стоимость (f (x)) можно увидеть в разделе, посвященном функции стоимости в этой статье. R — константа регуляризации, Xi — i-е значение признака.

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

Вывод

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

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