Изучите и поймите основной принцип встраивания графа знаний (KGE) и простую идею, лежащую в его основе, с использованием модели перевода.

График знаний

пс. Если вы совсем ничего не понимаете в том, что такое граф, вы можете прочитать мою предыдущую статью о графе



Граф знаний — это специальный граф, он показывает вам семантическую сеть между сущностями и иллюстрирует взаимосвязь между ними. Формально он определяется множеством G, содержащим набор сущностей E, отношений R и фактов F:

факт — это множество тройки (h, r, t)F («∈» означает «является членом», поэтому можно сказать, что тройка — это элемент коллекции F), который указывает отношение rRмежду головкой hE и хвост tE тройки. Другим распространенным способом выражения тройки (или факта) является ‹голова, отношение, хвост›.

Или… может быть, если вас переполняет приведенное выше формальное определение: граф знаний — это представление, обозначающее отношения между двумя или более сущностями. Вот и все.

Например, допустим, у вас есть такой набор данных

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

  • ‹Бандунг, _is_in_country, Индонезия›
  • Бандунг, _has_university, ITB›
  • Сингапур, _is_in_country, Сингапур›
  • Сингапур, _has_university, NTU›
  • ‹Куала-Лумпур, _is_in_country, Малайзия›
  • Куала-Лумпур, _has_university, NTU›

и так далее… И иллюстрация KG, которая представляет тройки выше, показана ниже

И, конечно же, вы можете перейти на «следующий уровень», скажем, вы немного усложните граф знаний, как показано ниже:

  • ‹ITB, _is_located_in, Бандунг› , ‹Бандунг, _is_in, Индонезия›
  • NTU, _is_located_in, Сингапур› , ‹Сингапур, _is_in, Сингапур›
  • UM, _is_located_in, Куала-Лумпур›, ‹Куала-Лумпур, _is_in, Малайзия›

И иллюстрация, которая представляет тройки выше, показана ниже

Вложения

TL;DR — обучение начинается с инициализации случайного вектора k-размерности сущностей eи отношений r. Затем, когда условие остановки не достигнуто, он будет непрерывно отбирать пакет размером b из обучающего набора, и для каждой тройки пакета отбирается случайный искаженный факт путем изменение головы и/или хвоста тройки, что делает факт ложным. Затем исходная тройка и поврежденная тройка добавляются в обучающий пакет и используются для оптимизации функции подсчета очков/минимизации функции потерь.

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

  1. Пространство представления, представляющее собой низкоразмерное пространство, в котором представлены сущности и отношения,
  2. Функция оценки, чтобы измерить качество нашего тройного встроенного представления,
  3. Модели кодирования, модальность, в которой встроенные представления сущностей и отношений взаимодействуют друг с другом,
  4. Дополнительная информация, которая может обогатить встроенное представление. Обычно специальная функция оценки интегрируется в общую функцию оценки для каждой дополнительной информации.

Общий псевдокод процедуры встраивания показан ниже.

algorithm Compute entity and relation embeddings is
  input:  The training set S = {(h,r,t)},
          Entity set E,
          Relation set R,
          Embedding dimension k
  output:  Entity and relation embeddings

  initialization:  the entities e and relations r embeddings (vectors) are randomly initialized

  while (stop condition) do
    S_batch <- sample(S,b) //From the training set S, randomly sample a batch of size b
    for each (h,r,t) in S_batch do 
      (h',r,t') <- sample(S') //sample a corrupted fact of triple 
      T_batch <- T_batch ∪ {((h,r,t),(h',r,t'))}
    end for
    update embeddings by minimizing the loss function
  end while

Прежде всего, нам нужно инициализировать случайные векторы размерностью k для сущностей e и отношений r. Затем, начиная с тренировочного набора S до достижения условия остановки, алгоритм непрерывно оптимизирует функцию оценки (с минимизацией функции потерь). Условие остановки обычно задается переобучением тренировочного набора. Для каждой итерации будет выбран пакет размером b из обучающего набора, и для каждой тройки партии будет выбран случайный искаженный факт — путем изменения головы и хвоста тройки, что делает факт ЛОЖЬ. Исходные тройки и поврежденные тройки добавляются в тренировочный пакет, а затем обновляются вложения и оптимизируется функция подсчета очков (путем минимизации функции потерь).

Модели (перевод)

После прочтения длинного объяснения идеи, лежащей в основе KGE, вы, возможно, не имели ни малейшего представления о том, как это работает. Ну, может быть, это можно лучше объяснить, когда мы говорим о моделях. На самом деле существует несколько моделей встраивания для KGE, таких как RESCAL, TransE, DistMul, TransH, HolE, TransR, TransD, TransA, ComplEx, STransE, ANALOGY, TorusE, ConvKB, ConvE, SimplE, CapsE и так далее. Но в этой статье мы будем использовать простой, чтобы вы поняли процесс встраивания модели. В этом случае мы будем использовать трансляционную модель TransE.

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

TransE, другими словами, использует функцию подсчета очков, которая позволяет использовать простое уравнение векторной суммы для каждого факта, в котором они появляются: h+r=t. Это прекрасная иллюстрация того, как работает TransE.

Вы можете видеть на рисунке, как каждый узел соединен одним ребром (потому что в этом графе есть только одно отношение). Давайте посмотрим, на иллюстрации выше мы уже внедрили каждую сущность и каждое отношение. Узел «0», если мы переведем его с вектором отношения «pred», он будет переведен в узел «1» и так далее. Вот как h+r=t работает в TransE.

Эта статья — лишь краткий обзор введения KG Embedding. В следующей статье мы подробнее обсудим KG Embedding с использованием библиотеки pyKEEN (и, конечно же, на практике!). Если у вас есть комментарий, идея или вопрос. Просто дай мне знать! Ваше здоровье.

Использованная литература:

Джи, Шаосюн; Пан, Шируи; Камбрия, Эрик; Мартинен, Пекка; Ю, Филип С. (2021). «Обзор графов знаний: представление, приобретение и приложения». Транзакции IEEE в нейронных сетях и системах обучения. PP (2): 494–514.

Борд, Антуан; Усюнье, Николя; Гарсия-Дуран, Альберто; Уэстон, Джейсон; Яхненко, Оксана (май 2013 г.). «Трансляция вложений для моделирования мультиреляционных данных». Материалы 26-й Международной конференции по нейронным системам обработки информации — Том 2. НИПС’13. Озеро Тахо, Невада: Curran Associates Inc.: 2787–2795.

Дай, Юаньфэй; Ван, Шипинг; Сюн, Нил Н .; Го, Вэньчжун (май 2020 г.). Обзор внедрения графов знаний: подходы, приложения и тесты. Электроника. 9 (5): 750.

Росси, Андреа; Барбоза, Денилсон; Фирмани, Донателла; Матината, Антонио; Мериальдо, Паоло (2020). «Встраивание графа знаний для предсказания ссылок: сравнительный анализ». Транзакции ACM при извлечении знаний из данных. 15 (2): 1–49.