Этот проект представляет новую модель: сверточную сеть графа знаний (KGCN), доступную для бесплатного использования из репозитория GitHub под лицензией Apache. Он написан на Python и доступен для установки через pip из PyPi.

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

Резюме

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

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

Для чего это используется?

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

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

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

Это то, чего может достичь KGCN. Учитывая пример узла в графе знаний, он может исследовать узлы в непосредственной близости от этого примера, его контекста. На основе этого контекста он может определить векторное представление, встраивание, для этого примера.

Есть две общие обучающие задачи, для которых подходит KGCN:

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

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

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

Методология

Идеология этого проекта описана здесь и видео презентации. Принципы реализации основаны на GraphSAGE от Стэнфордской группы SNAP, сильно адаптированном для работы с графом знаний. Вместо того, чтобы работать с типичным графом свойств, KGCN учится на контекстных данных, хранящихся в типизированном гиперграфе, Grakn. Кроме того, он учится на фактах, выведенных с помощью автоматического логического рассуждения. С этого момента предполагается некоторое понимание документации Grakn.

Теперь мы познакомимся с ключевыми компонентами и их взаимодействием.

KGCN

KGCN отвечает за получение вложений для набора вещей (и, таким образом, непосредственно учится их классифицировать). Мы начинаем с запроса Grakn, чтобы найти набор помеченных примеров. После этого мы собираем данные о контексте каждого примера Thing. Мы делаем это, рекурсивно рассматривая их соседей и их соседей на расстоянии до K прыжков.

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

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

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

Объект KGCN объединяет несколько подкомпонентов, построитель контекста, средство поиска соседей, кодировщик и средство внедрения.

Компоненты входного конвейера менее интересны, поэтому мы перейдем к более интересным. Об остальном читайте в ридми KGCN.

Встроить

Чтобы создать вложения, мы создаем сеть в TensorFlow, которая последовательно агрегирует и комбинирует функции из K переходов до тех пор, пока не останется «сводное» представление - встраивание (диаграмма ниже).

Для создания конвейера используются операции агрегирования и объединения цепочек Embedder для K-переходов рассматриваемых соседей. например для случая с 2 переходами это означает Aggregate-Combine-Aggregate-Combine.

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

Embedder отвечает за объединение подкомпонентов Aggregator и Combiner, как описано ниже.

Агрегатор

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

Комбайнер

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

Курируемый классификатор КГКН

Контролируемый классификатор KGCN отвечает за организацию фактического обучения. Он принимает экземпляр KGCN и, как и любой учащийся, использующий KGCN, обеспечивает:

  • Методы обучения / оценки / прогнозирования
  • Конвейер от внедрения тензоров к прогнозам
  • Функция потерь, учитывающая прогнозы и ярлыки.
  • Оптимизатор
  • Цикл обучения обратному распространению

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

Ниже приведена несколько упрощенная диаграмма действий UML для выполнения программы.

Строить с помощью KGCN

Чтобы начать строительство с использованием сетей KGCN, взгляните на быстрый старт в readme, убедитесь, что у вас есть все требования, и следуйте примерным инструкциям по использованию, которые повторяются ниже:

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

Если вам нравится то, чем мы занимаемся, и вы используете / интересуетесь KGCN, вы можете сделать несколько вещей:

  • Отправьте вопрос о любых проблемах, с которыми вы сталкиваетесь при установке или использовании KGCN.
  • Пометьте репо, если хотите помочь нам поднять авторитет этой работы :)
  • Задавайте вопросы, предлагайте идеи или общайтесь с нами на Slack-канале сообщества Grakn

Этот пост был написан для третьего пре-релиза kglib с использованием коммита Grakn 20750ca0a46b4bc252ad81edccdfd8d8b7c46caa и впоследствии может не соответствовать репо. Проверьте там последние новости!