Вступление
Машинное обучение - это подразделение искусственного интеллекта, которое фокусируется на создании приложений путем точной обработки имеющихся данных. Основная цель машинного обучения - помочь компьютерам обрабатывать вычисления без вмешательства человека.
Возникает вопрос: а как же передать данные в машину? Как теперь машина будет выполнять операции с этим набором данных и предоставлять точные результаты? Здесь в игру вступает математика.
Всем тем, кто думает: «Какая польза от изучения математики, лежащей в основе алгоритмов машинного обучения? Мы можем легко использовать широко доступные библиотеки 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 классов.
Исчисление
В машинном обучении мы пытаемся найти входные данные, которые позволяют функции лучше всего соответствовать данным. Наклон или спуск описывает скорость изменения выхода по отношению к входу. Определение влияния каждого входа на выход также является одной из важнейших задач. Все это требует твердого понимания многомерного исчисления.
Алгоритм градиентного спуска:
Допустим, вы играете в игру, в которой игроки находятся на вершине горы, и их просят достичь самой низкой точки горы. Дополнительно им завязывают глаза. Итак, какой подход, по вашему мнению, заставит вас добраться до озера?
Лучший способ - понаблюдать за землей и найти, где она спускается. Из этой позиции сделайте шаг в нисходящем направлении и повторяйте этот процесс, пока мы не достигнем самой нижней точки.
Аналогично, для заданной функции стоимости цель алгоритма градиентного спуска - минимизировать данную функцию (скажем, функцию стоимости). Для достижения этой цели он итеративно выполняет два шага:
- Вычислить градиент (наклон), производную первого порядка функции в этой точке.
- Сделайте шаг (перемещение) в направлении, противоположном градиенту, противоположное направление наклона увеличивается от текущей точки на альфа, умноженное на градиент в этой точке
Алгоритм обратного распространения:
Алгоритм обратного распространения в нейронной сети вычисляет градиент функции потерь для одного веса по цепочному правилу. Он эффективно вычисляет один слой за раз, вывод для каждого нейрона из входного слоя в скрытые слои в выходной слой.
Пусть у нас есть модуль искусственной нейронной сети с 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)