Системы рекомендаций — одна из наиболее широко применяемых технологий машинного обучения (МО) в реальных приложениях, от социальных сетей до платформ электронной коммерции. Пользователи многих онлайн-систем полагаются на системы рекомендаций, чтобы завести новых друзей, открыть для себя новую музыку в соответствии с предложенными музыкальными списками или даже принять решение о покупке в электронной коммерции на основе рекомендованных продуктов. В социальных сетях одним из распространенных вариантов использования является рекомендация новых друзей пользователю на основе других связей пользователей. Пользователи с общими друзьями, скорее всего, знают друг друга. Следовательно, они должны иметь более высокий балл для системы рекомендаций, если они еще не подключены.
Социальные сети естественным образом можно представить в виде графа, где узлы представляют людей, а связи между людьми, такие как дружба или коллеги, представлены ребрами. Ниже показана одна из таких социальных сетей. Давайте представим, что у нас есть социальная сеть с участниками (узлами) Биллом, Терри, Генри, Гэри и Алистером. Их отношения представлены ссылкой (ребром), а интересы каждого человека, такие как спорт, искусство, игры и комиксы, представлены свойствами узла.
Цель здесь состоит в том, чтобы предсказать, есть ли потенциальная недостающая связь между элементами. Например, должны ли мы рекомендовать связь между Генри и Терри? Глядя на график, мы видим, что у них есть два общих друга, Гэри и Алистер. Поэтому есть большая вероятность, что Генри и Терри либо уже знали друг друга, либо могут скоро узнать друг друга. Как насчет Генри и Билла? У них нет общих друзей, но есть слабая связь через связи друзей. Кроме того, у них обоих схожие интересы в искусстве, комиксах и играх. Должны ли мы продвигать эту связь? Все эти вопросы и интуиция составляют основную логику рекомендательных систем социальных сетей.
Один из возможных способов сделать это — рекомендовать отношения, основанные на исследовании графа. В языках запросов графов, таких как Apache TinkerPop Гремлин, реализация наборов правил, таких как подсчет общих друзей, относительно проста, и ее можно использовать для определения связи между Генри и Терри. Однако эти наборы правил будут очень сложными, если мы хотим учитывать другие атрибуты, такие как свойства узла, сила соединения и т. д. Давайте представим набор правил для определения связи между Генри и Биллом. Этот набор правил должен учитывать их общие интересы и их слабые связи через определенные пути в графе. Чтобы повысить надежность, нам также может понадобиться добавить фактор расстояния, чтобы отдавать предпочтение сильным соединениям и наказывать слабые. Точно так же мы хотели бы, чтобы фактор благоприятствовал общим интересам. Вскоре станет невозможно перечислить наборы правил, которые могут выявить сложные скрытые закономерности.
Технология машинного обучения позволяет нам обнаруживать скрытые закономерности, изучая алгоритмы. Одним из примеров является XGBoost, который широко используется для задач классификации или регрессии. Однако такие алгоритмы, как XGBoost, используют традиционный подход машинного обучения, основанный на табличном формате данных. Эти подходы не оптимизированы для графовых структур данных и требуют сложной разработки функций, чтобы справиться с этими шаблонами данных.
В предыдущем примере с социальной сетью информация о взаимодействии на графике имеет решающее значение для повышения точности рекомендаций. Графовая нейронная сеть (GNN) — это инфраструктура глубокого обучения (DL), которую можно применять к данным графа для выполнения задач прогнозирования на уровне ребер, узлов или графов. GNN могут использовать характеристики отдельных узлов, а также информацию о структуре графа при изучении представления графа и базовых шаблонов. Поэтому в последние годы методы на основе GNN установили новые стандарты для многих эталонных тестов рекомендательных систем. См. более подробную информацию в последних научных статьях: Всесторонний обзор графовых нейронных сетей и Рекомендательные системы на основе графического обучения: обзор.
Ниже приведен один известный пример такого варианта использования. Исследователи и инженеры Pinterest прошли обучение Граф сверточных нейронных сетей для рекомендательных систем веб-масштаба, называемый PinSage, с тремя миллиардами узлов, представляющих выводы и доски, и 18 миллиардами ребер. PinSage генерирует высококачественные встраивания, которые представляют собой булавки (визуальные закладки для онлайн-контента). Их можно использовать для широкого спектра последующих задач рекомендаций, таких как поиск ближайшего соседа в изученном пространстве встраивания для обнаружения контента и рекомендаций.
В этом посте мы расскажем вам, как использовать GNN для вариантов использования рекомендаций, представив это как проблему прогнозирования ссылок. Мы также покажем, как Neptune ML может облегчить внедрение. Мы также предоставим пример кода на GitHub чтобы обучить свой первый GNN с помощью Neptune ML и сделать рекомендательные выводы на демографическом графике с помощью задач прогнозирования ссылок.
Прогнозирование ссылок с помощью графовых нейронных сетей
Учитывая предыдущий пример социальной сети, мы хотели бы порекомендовать Генри новых друзей. И Терри, и Билл были бы хорошими кандидатами. У Терри больше общих друзей (Гэри, Алистер) с Генри, но нет общих интересов. Хотя у Билла общие интересы (искусство, комиксы, игры) с Генри, но нет общих друзей. Какой из них будет лучшей рекомендацией? При формулировании задачи прогнозирования связи задача состоит в том, чтобы присвоить оценку любой возможной связи между двумя узлами. Чем выше оценка ссылки, тем больше вероятность того, что эта рекомендация совпадет. Изучая структуры ссылок, уже присутствующие в графе, модель прогнозирования ссылок может обобщать новые прогнозы ссылок, которые «завершают» граф.
Параметры функции f
который предсказывает, что оценка ссылки изучается на этапе обучения. Поскольку функция f
делает прогноз для любых двух узлов в графе, векторы признаков, связанные с узлами, необходимы для процесса обучения. Чтобы предсказать оценку связи между Генри и Биллом, у нас есть набор функций необработанных данных (искусство, комиксы, игры), которые могут представлять Генри и Билла. Мы преобразуем это вместе со связями в графе, используя сеть GNN, чтобы сформировать новые представления, известные как вложения узлов. Мы также можем дополнить или заменить исходные необработанные признаки векторами из таблицы поиска встраивания, которые можно изучить в процессе обучения. В идеале встроенные функции для Генри и Билла должны представлять их интересы, а также их топологическую информацию из графа.
Как работают GNN
GNN преобразует начальные функции узла во вложения узлов, используя метод, называемый передача сообщений. Процесс передачи сообщений показан на следующем рисунке. Вначале атрибуты узла или функции преобразуются в числовые атрибуты. В нашем случае мы делаем однократное кодирование категориальных признаков (интересы Генри: искусство, комиксы, игры). Затем первый слой GNN объединяет все необработанные функции соседей (Гэри и Алистера) (черным цветом), чтобы сформировать новый набор функций (желтый). Распространенным подходом является линейное преобразование всех соседних функций, затем их объединение в нормализованную сумму и передача результатов в нелинейную функцию активации, такую как ReLU, для создания нового набора векторов. На следующем рисунке показано, как работает передача сообщений для узла. Henry. H, алгоритм передачи сообщений GNN, будет вычислять представления для всех узлов графа. Позже они используются в качестве входных объектов для второго слоя.
Второй слой GNN повторяет тот же процесс. В качестве входных данных он берет ранее вычисленный объект (желтый) из первого слоя, объединяет все новые встроенные объекты соседей Гэри и Алистера и генерирует векторы объектов второго слоя для Генри (оранжевый). Как видите, повторив механизм передачи сообщений, мы расширили агрегацию признаков на соседей с двумя переходами. В нашем примере мы ограничиваемся соседями с 2 переходами, но расширение до соседей с 2 переходами можно выполнить таким же образом, добавив еще один слой GNN.
Окончательные вложения Генри и Билла (выделены оранжевым цветом) используются для вычисления оценки. В процессе обучения оценка связи определяется как 1, если между двумя узлами существует ребро (положительная выборка), и как 0, если ребер между двумя узлами не существует (отрицательная выборка). Затем ошибка или потеря между фактическим счетом и прогнозом f(e1,e2)
распространяется обратно на предыдущие слои для корректировки весов. После завершения обучения мы можем полагаться на встроенные векторы признаков для каждого узла, чтобы вычислить их оценки ссылок с помощью нашей функции. f
.
В этом примере мы упростили задачу обучения на однородный граф, где все узлы и ребра одного типа. Например, все узлы в графе относятся к типу «Люди», а все ребра — к типу «Друзья с». Однако алгоритм обучения также поддерживает разнородные графы с разными типами узлов и ребер. Мы можем расширить предыдущий вариант использования, чтобы рекомендовать продукты разным пользователям, которые имеют схожие взаимодействия и интересы. Подробнее читайте в этом исследовательском документе: Моделирование реляционных данных с помощью сверточных сетей с графами.
На AWS re:Invent 2020 мы представили Amazon Нептун ML, что позволяет нашим клиентам обучать модели машинного обучения на графических данных, не обязательно обладая глубокими знаниями в области машинного обучения. В этом примере с помощью Neptune ML мы покажем вам, как построить собственную рекомендательную систему на графических данных.
Обучите свою сеть свертки графов с помощью Amazon Neptune ML
Neptune ML использует технологию графовой нейронной сети для автоматического создания, обучения и развертывания моделей машинного обучения на графических данных. Neptune ML поддерживает общие задачи прогнозирования графов, такие как классификация узлов и регрессия, классификация ребер и регрессия, а также прогнозирование связей.
Он питается от:
- Амазонка Нептун: быстрая, надежная и полностью управляемая база данных графов, оптимизированная для хранения миллиардов взаимосвязей и запросов к графу с миллисекундной задержкой. Amazon Neptune поддерживает три открытых стандарта для создания графовых приложений: Apache TinkerPop Gremlin, RDF SPARQL и openCypher. Узнайте больше на Обзор функций Amazon Neptune.
- Создатель мудреца Амазонки: полностью управляемая служба, которая предоставляет каждому разработчику и специалисту по данным возможность быстро подготовить построение, обучение и развертывание моделей машинного обучения.
- Библиотека Deep Graph (DGL): открытые источники, высокопроизводительный и масштабируемый пакет Python для DL на графах. Он предоставляет быстрые и экономичные примитивы передачи сообщений для обучения графовых нейронных сетей. Neptune ML использует DGL для автоматического выбора и обучения лучшей модели машинного обучения для вашей рабочей нагрузки. Это позволяет делать прогнозы на основе машинного обучения для графических данных за часы, а не за недели.
Самый простой способ начать работу с Neptune ML — использовать Шаблон быстрого запуска AWS CloudFormation. Шаблон устанавливает все необходимые компоненты, включая кластер Neptune DB, а также настраивает сетевые конфигурации, роли IAM и связанный экземпляр блокнота SageMaker с предварительно заполненными образцами блокнотов для Neptune ML.
На следующем рисунке показаны различные шаги Neptune ML для обучения рекомендательной системы на основе GNN. Давайте подробнее рассмотрим каждый шаг и рассмотрим, что он включает в себя:
-
Конфигурация экспорта данных
Первым шагом в нашем процессе Neptune ML является экспорт данных графика из кластера Neptune. Мы должны указать параметры и конфигурацию модели для задачи экспорта данных. Мы используем верстак Neptune для всех конфигураций и рекомендаций. Рабочая среда позволяет нам работать с кластером БД Neptune, используя блокноты Jupyter, размещенные на Amazon SageMaker. Кроме того, он предоставляет ряд волшебных команд в записных книжках, которые экономят много времени и сил. Вот наш пример параметров экспорта:
In export_params
, мы должны настроить базовые настройки, такие как кластер Neptune и вывод Amazon Simple Storage Service (S3) путь для хранения экспортированных данных. Конфигурация, указанная в additionalParams
тип задачи машинного обучения для выполнения. В этом примере прогнозирование ссылок дополнительно используется для прогнозирования определенного типа ребра (Пользователь — ДРУГ — Пользователь). Если тип цели не указан, Neptune ML будет считать, что задачей является прогнозирование связи. Параметры также указывают подробности о данных, хранящихся в нашем графе, и о том, как модель ML будет интерпретировать эти данные (у нас есть «Пользователь» в качестве узла и «интересы» в качестве свойства узла).
Чтобы выполнить каждый шаг в процессе построения машинного обучения, просто используйте команды рабочей среды Neptune. Верстак Нептун содержит магию линий и магию ячеек, которые могут сэкономить вам много времени на выполнении этих шагов. Чтобы запустить экспорт данных, используйте команду инструментальных средств Neptune: %neptune_ml export start
После завершения задания экспорта график Neptune будет экспортирован в формат CSV и сохранен в корзине S3. Будет два типа файлов: nodes.csv
и edges.csv
. Файл с именем training-data-configuration.json
также будет создан файл с конфигурацией, необходимой для обучения модели Neptune ML.
Читать Экспорт данных из Neptune для Neptune ML чтобы получить больше информации.
-
Предварительная обработка данных
Neptune ML выполняет извлечение и кодирование признаков как часть этапов обработки данных. Общие типы предварительной обработки свойств включают в себя: кодирование категориальных функций с помощью одноразового кодирования, группирование числовых функций или использование word2vec для кодирования строкового свойства или других значений текстовых свойств произвольной формы.
В нашем примере мы будем просто использовать свойство «интересы». Neptune ML кодирует значения как многокатегориальные. Однако если категориальное значение является сложным (более трех слов на узел), то Neptune ML определяет тип свойства как текст и использует кодировку text_word2vec.
Чтобы запустить предварительную обработку данных, используйте следующую волшебную команду блокнота Neptune: %neptune_ml dataprocessing start
В конце этого шага из экспортированного набора данных создается график DGL для использования на этапе обучения модели. Neptune ML автоматически настраивает модель с помощью заданий оптимизации гиперпараметров, определенных в training-data-configuration.json
. Мы можем загрузить и изменить этот файл, чтобы настроить гиперпараметры модели, такие как размер партии, скрытое число, число эпох, отсев и т. д. Вот пример файла конфигурации.json.
Читать Обработка экспортированных из Neptune графических данных для обучения чтобы получить больше информации.
-
Модельное обучение
Следующим шагом является автоматизированное обучение модели GNN. Обучение модели проводится в два этапа. На первом этапе используется задание SageMaker Processing для создания стратегии обучения модели. Это набор конфигурации, который указывает, какой тип модели и диапазоны гиперпараметров модели будут использоваться для обучения модели.
Затем будет запущено задание настройки гиперпараметров SageMaker. Задание SageMaker Hyperparameter Tuning Optimization запускает предварительно заданное количество пробных заданий по обучению модели на обработанных данных, пробует различные комбинации гиперпараметров в соответствии с model-hpo-configuration.json
файл и сохраняет артефакты модели, созданные в результате обучения, в выходном расположении Amazon S3.
Чтобы начать этап обучения, вы можете использовать %neptune_ml training start
команда.
После завершения всех заданий обучения задание настройки гиперпараметров сохранит артефакты из наиболее эффективной модели, которые будут использоваться для логического вывода.
В конце обучения Neptune ML даст указание SageMaker сохранить обученную модель, необработанные вложения, рассчитанные для узлов и ребер, и информацию о сопоставлении между вложениями и индексами узлов.
Читать Обучение модели с помощью Neptune ML чтобы получить больше информации.
-
Создание конечной точки логического вывода в Amazon SageMaker
Теперь, когда представление графа изучено, мы можем развернуть изученную модель за конечной точкой для выполнения запросов на вывод. Входными данными модели будет пользователь, для которого нам нужно сгенерировать рекомендации друзей, а также тип края, а выходными данными будет список вероятных рекомендуемых друзей для этого пользователя.
Чтобы развернуть модель в экземпляре конечной точки SageMaker, используйте %neptune_ml endpoint create
команда.
-
Запрос модели ML с помощью Gremlin
Как только конечная точка будет готова, мы можем использовать ее для запросов на вывод графа. Neptune ML поддерживает запросы на вывод графа в Gremlin или SPARQL. В нашем примере теперь мы можем проверить рекомендации друзей с помощью Neptune ML для пользователя «Генри». Для обхода края требуется почти такой же синтаксис, и он перечисляет других пользователей, которые подключены к Генри через соединение FRIEND.
Neptune#ml.prediction
возвращает связь, определенную предсказаниями Neptune ML, используя модель, которую мы только что обучили на социальном графе. Билл вернулся, как мы и ожидали.
Вот еще один пример прогнозирующего запроса, который используется для прогнозирования первых восьми пользователей, которые, скорее всего, свяжутся с Генри:
Результаты ранжируются от более сильной связи к более слабой, где связь Henry — FRIEND — Colin and Henry — FRIEND — Terry
также предлагается. Это предложение основано на машинном обучении на основе графов, где можно исследовать сложные шаблоны взаимодействия на графе.
Читать Запросы логического вывода Gremlin в Neptune ML чтобы получить больше информации.
Преобразование модели или переобучение при изменении данных графика
Другой вопрос, который вы можете задать: что, если моя социальная сеть изменится, или если я захочу порекомендовать новых пользователей? В этих сценариях, где у вас есть постоянно меняющиеся графики, вам может потребоваться обновить прогнозы ML с помощью новейших данных графика. Сгенерированные артефакты модели после обучения напрямую привязаны к графу обучения. Это означает, что конечная точка вывода должна быть обновлена после изменения сущностей в исходном графе обучения.
Однако вам не нужно переобучать всю модель, чтобы делать прогнозы на обновленном графике. В рабочем процессе инкрементного вывода модели вам нужно только экспортировать данные базы данных Neptune, выполнить предварительную обработку добавочных данных, запустить задание пакетного преобразования модели, а затем обновить конечную точку вывода. На этапе преобразования модели в качестве входных данных используется обученная модель из основного рабочего процесса и результаты этапа предварительной обработки дополнительных данных. Затем он выводит новый артефакт модели, чтобы использовать его для логического вывода. Этот новый артефакт модели создается из актуальных графических данных.
Особое внимание здесь уделяется команде шага преобразования модели. Он может вычислять артефакты модели на графических данных, которые не использовались для обучения модели. Вложения узлов вычисляются повторно, а любые существующие вложения узлов переопределяются. Neptune ML применяет изученный кодировщик GNN из предыдущей обученной модели к новым узлам данных графа с их новыми функциями. Следовательно, новые данные графа должны обрабатываться с использованием тех же кодировок признаков и должны соответствовать той же схеме графа, что и исходные данные графа. Дополнительные сведения о реализации Neptune ML см. на странице Генерация новых артефактов модели.
Кроме того, вы можете переобучить всю модель, если график резко изменится или если ранее обученная модель больше не могла точно отображать лежащие в основе взаимодействия. В этом случае повторное использование изученных параметров модели на новом графике не может гарантировать аналогичную производительность модели. Вы должны переобучить свою модель на новом графике. Чтобы ускорить поиск гиперпараметров, Neptune ML может использовать информацию из предыдущей задачи обучения модели с «теплым» стартом: результаты предыдущих заданий обучения используются для выбора подходящих комбинаций гиперпараметров для поиска в новом задании настройки.
Читать рабочие процессы для обработки меняющихся графических данных Больше подробностей.
Заключение
В этом посте вы увидели, как Neptune ML и GNN могут помочь вам давать рекомендации по данным графика с помощью задачи прогнозирования ссылок путем объединения информации из сложных шаблонов взаимодействия на графике.
Прогнозирование ссылок — это один из способов реализации системы рекомендаций на графике. Вы можете создать свой рекомендатель многими другими способами. Вы можете использовать вложения, полученные во время обучения прогнозированию ссылок, чтобы кластеризовать узлы в разные сегменты без присмотра и рекомендовать элементы тому, который принадлежит к тому же сегменту. Кроме того, вы можете получить вложения и передать их в нижестоящую рекомендательную систему на основе сходства в качестве входной функции. Теперь эта дополнительная функция ввода также кодирует семантическую информацию, полученную из графа, и может значительно улучшить общую точность системы. Узнайте больше об Amazon Neptune ML, посетив веб-сайт или не стесняйтесь задавать вопросы в комментариях!
Об авторах
Янвэй ЦуйКандидат наук, специалист по проектированию решений по машинному обучению в AWS. Он начал исследования в области машинного обучения в IRISA (Исследовательский институт компьютерных наук и случайных систем) и имеет многолетний опыт создания промышленных приложений на базе искусственного интеллекта для компьютерного зрения, обработки естественного языка и онлайн-прогнозирования поведения пользователей. В AWS он делится опытом в этой области и помогает клиентам раскрыть потенциал бизнеса и добиться реальных результатов с помощью машинного обучения в любом масштабе. Вне работы любит читать и путешествовать.
Уилл Бадр — главный специалист по искусственному интеллекту и машинному обучению, работающий в глобальной команде Amazon Machine Learning. Уилл увлечен использованием технологий инновационными способами, чтобы положительно влиять на сообщество. В свободное время он любит заниматься дайвингом, играть в футбол и исследовать острова Тихого океана.
- '
- "
- 100
- 2020
- 7
- О нас
- По
- Учетная запись
- дополнение
- дополнительный
- алгоритм
- алгоритмы
- Все
- уже
- Amazon
- Амазонское машинное обучение
- Создатель мудреца Амазонки
- апаш
- Приложения
- искусственный
- искусственный интеллект
- Искусство
- Автоматизированный
- AWS
- AWS Re: Invent
- начало
- ЛУЧШЕЕ
- Билл
- миллиард
- Черный
- строить
- Строительство
- бизнес
- случаев
- проблемы
- классификация
- код
- Общий
- сообщество
- комплекс
- Вычисление
- Информатика
- Компьютерное зрение
- вычисление
- Конфигурация
- связи
- Коммутация
- Консоли
- содержание
- сходиться
- может
- Клиенты
- данным
- ученый данных
- хранение данных
- База данных
- сделка
- глубокое обучение
- Застройщик
- различный
- открытие
- расстояние
- электронной коммерции
- Edge
- Конечная точка
- Проект и
- Инженеры
- и т.д
- пример
- опыт
- исследование
- экспорт
- добыча
- БЫСТРО
- Особенность
- Особенности
- фигура
- First
- Фокус
- форма
- формат
- Рамки
- Бесплатно
- Дружба
- функция
- Игры
- порождать
- Глобальный
- хорошо
- граф нейронных сетей
- большой
- Управляемость
- помощь
- помогает
- здесь
- Как
- How To
- HTTPS
- IAM
- Влияние
- Осуществляющий
- улучшение
- В том числе
- Увеличение
- individual
- промышленность
- информация
- инновационный
- Интеллекта
- взаимодействие
- интересы
- IT
- работа
- Джобс
- язык
- Языки
- УЧИТЬСЯ
- узнали
- изучение
- Кредитное плечо
- Библиотека
- линия
- LINK
- Список
- Списки
- расположение
- искать
- поиск
- обучение с помощью машины
- Участники
- миллисекунды
- ML
- модель
- Музыка
- Естественный язык
- Обработка естественного языка
- необходимый
- соседи
- сеть
- сетей
- нервный
- нейронной сети
- нейронные сети
- Новые функции
- узлы
- ноутбуки
- онлайн
- открытый
- Другое
- Тихий океан
- бумага & картон
- Люди
- производительность
- фаза
- Платформы
- Играть
- Точность
- прогноз
- Predictions
- представить
- Основной
- Проблема
- процесс
- Продукция
- Профиль
- продвижении
- собственность
- предлагает
- обеспечивать
- приводит
- покупки
- Питон
- вопрос
- ассортимент
- Сырье
- необработанные данные
- RE
- Reading
- регресс
- Отношения
- замещать
- исследованиям
- Итоги
- переквалификация
- Возвращает
- Run
- sagemaker
- Шкала
- Наука
- Поиск
- набор
- Поделиться
- Акции
- аналогичный
- просто
- небольшой
- Футбольный
- Соцсети
- социальный график
- социальные сети
- социальные сети
- Решения
- Space
- Спорт
- Этап
- стандартов
- Начало
- и политические лидеры
- диск
- магазины
- Стратегия
- дополнять
- Поддержка
- Опрос
- система
- системы
- цель
- технологии
- Технологии
- График
- Через
- время
- топ
- Обучение
- Transform
- трансформация
- Обновление ПО
- us
- пользователей
- ценностное
- видение
- Что
- КТО
- широко
- Википедия.
- без
- слова
- Работа
- рабочий
- работает
- бы
- лет
- зум