Что такое граф знаний?

Графы знаний (KGs) были определены как одна из основных областей искусственного интеллекта (AI). Понятие «большие данные» возникло из-за необходимости дать машинам возможность «понять» и использовать эти данные в некоторой продуктивной и оперативной аналитической манере. Неспособность машин по-настоящему понимать языки со всеми их нюансами и нюансами также во многом проявилась в (безуспешных) поисках общего ИИ и здравого смысла.

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

Разрешение сущности

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

Внедрение Advanced Knowledge Graph

Встраивание графов знаний (KGE) - это прикладное ответвление более широкой области исследований, называемой репрезентативным обучением.

Здесь мы показываем график пяти основных работ по встраиванию графов знаний. Мы видим, что это относительно новая и развивающаяся область. Все основные прорывы происходят после 2011 года. В 2011 году RESCAL представила новый подход к реляционному обучению, основанный на тензорной факторизации.
В том же году структурированное встраивание первым применило архитектуру нейронной сети для обучения встраиванию знаний. база. В 2013 году была представлена ​​выразительная нейронная тензорная сеть, чтобы рассуждать о взаимосвязях между двумя объектами.
Бордес и его коллеги предложили TransE в 2013 году, метод, который моделирует отношения, интерпретируя их как перевод, действующий на векторах сущностей. В 2015 году Янг и ее коллеги из Microsoft Research обобщают предыдущие работы в рамках единой обучающей среды, а также демонстрируют простую билинейную формулировку, которую можно сократить как DistMult, которая превзошла предыдущие модели для задачи прогнозирования ссылок на графе знаний.

DistMult

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

Приступим к кодированию!

В этом примере мы будем экспериментировать с Freebase, которая представляет собой практичную масштабируемую базу данных кортежей, используемую для структурирования общих человеческих знаний. Данные в Freebase создаются, структурируются и обслуживаются совместно.

Для обучения наборы данных содержат три файла:
формат train2id.txt (объект 1, объект 2, отношение)
формат entity2id.txt (объект, идентификатор)
формат Relationship2id.txt (отношение, идентификатор)

Загрузите полный набор данных бесплатной базы: https://thunlp.oss-cn-qingdao.aliyuncs.com/openke/Freebase.zip (22 ГБ)

Мы будем использовать FB13, который содержит 13 отношений, в том числе:

религия
причина_ смерти
место_ смерти
профессия
местонахождение
пол
национальность
место_ рождения
учреждение
дети
родители
супруг
национальность

Внедрение знаний с помощью OpenKE

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

Установка

1- Установить TensorFlow

2- Клонируйте репозиторий OpenKE: https://github.com/thunlp/OpenKE

Шаг 1. Импортируйте наборы данных

con.set_in_path("benchmarks/FB13/")

Шаг 2. Установите параметры для тренировки

con.set_work_threads(6) # the numebr of threads
con.set_train_times(300) # Training Rounds
con.set_nbatches(100) # batch size
con.set_alpha(0.006) # learning rate
con.set_margin(1.0) #  the margin for the widely used pairwise margin-based ranking loss.
con.set_bern(0) # use the traditional sampling method
con.set_dimension(50) #  Dimensions of entity and relation embeddings.
con.set_ent_neg_rate(1) # the number of negative entities constructed per positive sample.
con.set_rel_neg_rate(0) # the number of negative relations per positive sample.
con.set_opt_method("adam") # Adam optimizer to train our model

Шаг 3. Начните обучение модели

Устанавливаем модель встраивания графа знаний и запускаем процесс обучения.

con.init()
con.set_model(models.DistMult)
con.run()

Шаг 4: Тестирование модели

Предсказание хвостовой сущности

Учитывая головную сущность и отношение, спрогнозируйте правильную хвостовую сущность

Мы возьмем пример из проверки, где

  • главный объект - william_carruthers_little
  • отношение "национальность"

Итак, вопрос в том, кто по национальности Уильям Каррузерс Литтл?

william_carruthers_little ====> nationality ====> canada

И угадай что ! он Канадиен!

Заключение

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

Если вы хотите начать работу с OpenKE, обязательно ознакомьтесь с обновленной документацией по адресу http://139.129.163.161/static/index.html.

НАСЛАЖДАЙТЕСЬ КОДИРОВКОЙ!