Вступление

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

Возникает вопрос: а как же передать данные в машину? Как теперь машина будет выполнять операции с этим набором данных и предоставлять точные результаты? Здесь в игру вступает математика.

Всем тем, кто думает: «Какая польза от изучения математики, лежащей в основе алгоритмов машинного обучения? Мы можем легко использовать широко доступные библиотеки Python и R для создания моделей! » Хотя это правда, важно отметить, что сами эти библиотеки и функции работают на основе математических концепций. Без понимания того, «почему» и «как» стоят за кодом, невозможно по-настоящему оценить прекрасную область искусственного интеллекта или любую другую область компьютерных наук в этом отношении.

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

Линейная алгебра

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

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

Эти данные на самом деле являются матрицей: ключевой структурой данных в линейной алгебре.

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

При работе с изображениями или фотографиями в приложениях компьютерного зрения каждое изображение, с которым вы работаете, представляет собой структуру таблицы с шириной и высотой и значением одного пикселя в каждой ячейке, значение которого находится в диапазоне от 0 до 255. В случае черно-белых изображений есть - это один канал, а в случае RBG - три канала. Фотография - еще один пример матрицы из линейной алгебры. Операции с изображением, такие как обрезка, масштабирование, обрезка и т. Д., Описываются с использованием обозначений и операций линейной алгебры, что приводит нас к следующему разделу наборов данных - выполнению операций над ними.

Линейная регрессия - это статистический метод описания отношений между переменными. Он использует обозначение линейной алгебры - y = Ab. Где y - выходная переменная, A - набор данных, а b - коэффициенты модели. Есть много способов описать и решить проблему линейной регрессии, то есть найти набор коэффициентов, которые при умножении на каждую из входных переменных и их сложении дают лучший прогноз выходной переменной. Одним из таких методов является SVD (Разложение по сингулярным числам).

SVD имеет дело с разложением матрицы на произведение трех матриц, как показано:

Если размеры A составляют m x n:

  • U - матрица левых сингулярных векторов размером m x m
  • S - это прямоугольная диагональная матрица сингулярных значений размером m x n, расположенная в порядке убывания
  • V - матрица правого сингулярного вектора размером n x n.

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

Примечание. Ранг матрицы - это максимальное количество линейно независимых векторов-строк (или столбцов) в матрице. Вектор r называется линейно независимым от векторов r1 и r2, если он не может быть выражен как линейная комбинация r1 и r2. (т.е. r ≠ ar1 + br2)

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

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

После того, как мы усвоили необходимый жаргон SVD, мы можем использовать его для поиска приблизительных решений реальных проблем. В этом примере я собираюсь использовать набор данных о ценах на жилье в Бостоне. Матрица данных о ценах на жилье A содержит 506 строк (представляющих отдельные дома) и 13 столбцов (каждый из которых описывает различные характеристики домов). Некоторые из этих 13 функций включают:

· Уровень преступности на душу населения по городам

· Среднее количество комнат в доме

· Взвешенные расстояния до пяти Бостонских центров занятости

Мы хотим спрогнозировать среднюю стоимость дома в 1000 долларов. Эти измерения представляют собой реальные значения в диапазоне от 5 до 50, и они представляют вектор b в нашей системе уравнений Ax = b.

Как обычно, в матрице намного больше строк, чем столбцов. Это означает, что мы не можем инвертировать A, чтобы найти решение Ax = b. Кроме того, это резко снижает возможности поиска решения. Действительно, такое решение было бы возможно только в том случае, если b является линейной комбинацией столбцов A. Однако, используя SVD, мы сможем вывести псевдообратный A +, чтобы найти наилучшее приближенное решение с точки зрения наименьших квадратов. - который является проекцией вектора b на подпространство, натянутое на столбцы A.

Применение СВД в обработке изображений

Распознавание лиц:

1. Соберите обучающий набор лиц в качестве обучающего набора.

2. Найдите наиболее важные особенности, найдя направления максимальной дисперсии - собственные векторы или собственные грани.

(Примечание: если ненулевой e является собственным вектором матрицы A 3 на 3, то (Ae = λe) для некоторого скаляра. Этот скаляр называется собственным значением A. Его можно переписать как Ae = λIe и в свою очередь, как (A − λI) e = 0. Значение лямбда, которое удовлетворяет этому уравнению, является собственным значением, а соответствующие значения вектора после его подстановки обратно в матричное уравнение являются собственными векторами)

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

4. Спроецируйте все данные в это пространство лица.

5. Для нового лица спроецируйте его в новое пространство лица, найдите ближайшее лицо (а) в пространстве и классифицируйте лицо как известное или неизвестное лицо.

Специальная кластеризация:

Кластеризация - это задача объединения похожих объектов в одну группу. Это метод машинного обучения без учителя. Рассмотрим следующий случай:

Используя SVD, мы можем получить следующий результат.

Вот основные шаги для получения вышеуказанного результата:

  • Начните с матрицы соответствия (A) или матрицы смежности данных. Это показывает, насколько похож один объект на другой. На графике это будет представлять, существует ли ребро между точками или нет.
  • Найдите матрицу градусов (D) каждого объекта. Это диагональная матрица с записью (i, i), равной количеству объектов, объект i аналогичен к
  • Найдите лапласиан (L) матрицы сродства: L = A - D
  • Найдите наивысшие k собственных векторов матрицы Лапласа в зависимости от их собственных значений
  • Запустите k-means для этих собственных векторов, чтобы сгруппировать объекты в k классов.

Исчисление

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

Алгоритм градиентного спуска:

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

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

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

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

Алгоритм обратного распространения:

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

Пусть у нас есть модуль искусственной нейронной сети с n слоями. Каждый слой «i» имеет вес «Wi», и выходы вычисляются путем умножения матриц между входами и весами. Так, например, если мы настроим вход искусственной нейронной сети как «X0», то у нас будет выход первого слоя как:

Где «X0» - вход модуля, «W1» - вес для первого слоя, а «F1» - функция активации для первого уровня. Итак, выход n-го и последнего слоя сети можно определить как:

Где «X (n-1)» - это входные данные для слоя «n», «Wn» - это вес для слоя «n», а «Fn» - функция активации для того же слоя. Теперь давайте определим функцию потерь «L», которая сравнивает выходные данные «Xn» с истинным значением «G.» Таким образом, ошибку «E» можно выразить как E = L (G, Xn). Дифференцируя по весу «Wn», получаем:

Используя ту же логику, мы можем получить обобщенный ряд и для (n-1) -го слоя. Здесь важно отметить, что «Wn» не обновляется, как только вычисляется градиент, он ожидает, пока будут вычислены градиенты всех весов, а затем все веса будут обновлены вместе. В результате этого член «Wn» в дифференциале (n-1) по-прежнему указывает на веса до обновления.

Статистика и вероятность

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

Наивный байесовский алгоритм:

Фундаментальное предположение Наивного Байеса состоит в том, что каждая функция создает:

· независимый

· равный

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

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

Резюме

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

Библиография

Cs231n.stanford.edu/slides/2018/cs231n_2018_ds02.pdf

LinearAlgebraSVD.pdf (upc.edu)

10 примеров линейной алгебры в машинном обучении (machinelearningmastery.com)

Как разработать наивный байесовский классификатор с нуля на Python (machinelearningmastery.com)