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

Мотивация

В машинном обучении и статистике нам часто приходится иметь дело со структурными данными, которые обычно представлены в виде таблицы строк и столбцов или матрицы. Многие проблемы машинного обучения можно решить с помощью матричной алгебры и векторного исчисления. В этом блоге я собираюсь обсудить несколько проблем, которые можно решить с помощью методов разложения матриц. Я также собираюсь поговорить о том, какие конкретные методы декомпозиции лучше работают для ряда задач машинного обучения. Это сообщение в блоге - моя попытка обобщить разложение матриц, как это преподают Рэйчел Томас и Сюэмэй Чен в курсе Вычислительная линейная алгебра в Университете Сан-Франциско. Весь этот курс доступен бесплатно в составе онлайн-курсов fast.ai. Вот ссылка на вводный пост Рэйчел Томас о курсе.

Охваченные приложения

  • Удаление фона
  • Тематическое моделирование
  • Рекомендации с использованием совместной фильтрации
  • Собственные лица

Список еще приложений для любознательного читателя

Удаление фона

Автоматическое удаление фона имеет несколько вариантов использования. Например, в прошлом году был запущен конкурс Kaggle Carvana Image Masking Challenge для разработки алгоритма, который автоматически удаляет фон фотостудии. Для большинства веб-сайтов электронной коммерции услуги по удалению фото-фона необходимы для увеличения объема продаж. Удаление фона с фотографий выделяет товары для сайтов электронной коммерции, как в примере ниже:

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

Как использовать разложение матрицы для удаления фона?

Разложение по единственному значению предлагает удобный способ отделить фон и передний план от видео. Идея состоит в том, чтобы разделить видео на кадры (которые представляют собой просто набор изображений), превратить каждое изображение в одномерный вектор и по горизонтали сложить в матрицу одномерные векторы, соответствующие каждому изображению. Затем делаем СВД, чтобы отделить передний план или задний план. Если у вас возникли проблемы с тем, что я хотел передать в трех приведенных выше предложениях, не волнуйтесь! Я объясню это с помощью наглядных пособий в следующем разделе.

Шаг 1. Разделите видео на кадры на основе определенного заранее заданного кадра в секунду

Шаг 2. Сглаживание каждого кадра (преобразование в 1-мерный вектор). Матрица видео с изображениями в виде 1-мерного вектора

Шаг 3. Выполните шаг 2 для всех кадров и объедините результирующие одномерные векторы рядом

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

Шаг 4: Разложите матрицу из шага 3 с помощью SVD. Мы получаем U, S и V. Возьмем реконструкцию более низкого ранга исходной матрицы, используя только первые k сингулярных значений S. Это дает нам фон. Передний план - это разница между исходной матрицей и матрицей более низкого ранга.

Вот код: Блокнот Jupyter с кодом для удаления фона с помощью SVD

Присоединяйтесь к более чем 14000 ваших коллег по машинному обучению и исследователей данных. Подпишитесь на главную рассылку новостей по глубокому обучению.

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

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

Темой может быть что угодно, от жанра песен до вида животных. Учитывая, что документ посвящен определенной теме, можно было бы ожидать, что определенные слова будут появляться в документе более или менее часто: «собака» и «кость» будут чаще встречаться в документах о собаках, «кошка» и «мяу» будут появляться в документах о кошках, и «то», и «есть» будут одинаково фигурировать в обоих. Документ обычно затрагивает несколько тем в разных пропорциях; таким образом, в документе, который на 10% посвящен кошкам и 90% - собакам, вероятно, будет примерно в 9 раз больше слов о собаках, чем слов о кошках.

Один из способов моделирования темы - это представление корпуса текстовых данных в виде матрицы документ-слово, как показано ниже. Каждый столбец соответствует документу, а каждая строка - слову. В ячейке хранится частота слова в документе - темные ячейки указывают на высокую частоту слова. Полученные шаблоны называются «темами».

Мы можем моделировать темы несколькими способами. В контексте разложения матриц я собираюсь обсудить два метода: Факторизация неотрицательной матрицы (NMF) и Разложение по сингулярным значениям (SVD).

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

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

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

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

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

Вот код: Блокнот Jupyter с кодом для моделирования темы с использованием SVD и NMF

Хороший блог о моделировании тем в sklearn с использованием LDA и NMF

Рекомендации с использованием совместной фильтрации

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

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

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

Собственные лица

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

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

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

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

Реконструкция изображения с использованием первых k собственных лиц
Исходное изображение:

Реконструкция с использованием собственных граней:

Вот код: Блокнот Jupyter с кодом для декомпозиции собственного лица

Заключение

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

Обо мне. В настоящее время я работаю научным сотрудником в группе Amazon Fraud Detector в AWS. Если вы хотите узнать о ML в мошенничестве или поработать с нами, свяжитесь со мной через linkedin. Вы можете прочитать другие мои блоги здесь.

LinkedIn: https://www.linkedin.com/in/groverpr/
Twitter: https://twitter.com/groverpr4

Ссылки

  1. Fast.ai Курс Вычислительной линейной алгебры от Рэйчел Томас

Обсудите этот пост в Hacker News и Reddit

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

Являясь независимой редакцией, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и группам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим участникам и не продаем рекламу.

Если вы хотите внести свой вклад, отправляйтесь на наш призыв к участникам. Вы также можете подписаться на наши еженедельные информационные бюллетени (Deep Learning Weekly и Comet Newsletter), присоединиться к нам в » «Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов, событий и гораздо больше, что поможет вам быстрее и лучше строить лучшие модели машинного обучения.