Юрий Чернышов, руководитель R&D Center

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

Современные наблюдения показывают, что рост объема данных стал экспоненциальным, иными словами, скорость роста объема данных линейно зависит от текущего объема данных. Чем больше данных, тем выше скорость роста количества данных. Значение этого направления трудно переоценить — как в технологическом, так и в психологическом плане. Огромные объемы создают трудности при передаче, обработке и хранении данных, несмотря на значительное увеличение производительности оборудования. Тем не менее, настоящая проблема заключается не просто в количестве данных, а скорее в том факте, что данные не имеют структуры. Данные предоставляются из разных источников, в разных форматах и ​​в разные периоды времени. Для хранения и использования этих данных в практических задачах предварительная обработка направлена ​​на структурирование данных и преобразование их в подходящие форматы. Традиционный способ хранения и использования данных основан на реляционных базах данных, где данные хранятся в реляционных таблицах. Однако во многих случаях использование табличных данных малоэффективно. В результате были разработаны альтернативные формы, такие как системы организации знаний (KOS). Их использование основано на графах знаний.

"Источник"

Для хранения знаний используются различные структуры:

  • Управляемые словари: метод систематизации знаний для последующего поиска, реализованный в схемах предметных индексов, предметных статьях, тезаурусах, таксономиях и других КОС.
  • Тезаурусы: объединяют термины в группы по определенному свойству, например сходству (синонимы).
  • Таксономии: категоризированные слова, организованные по иерархическому признаку.
  • Онтологии: описание формальных знаний из предметной области (предметной области) с учетом существующих сложных правил и отношений между элементами, позволяющих автоматически извлекать знания (рассуждать).
  • Наборы данных: машиночитаемые наборы данных.

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

Системы организации знаний широко распространены и внедрены во многих отраслях. Ярким примером является граф знаний, разработанный для поиска информации в Интернете. Это значительно улучшило качество поиска. Некоторые другие примеры реализации онтологий включают:

  • Банки используют графы знаний для обнаружения мошенничества,
  • Графики на основе юридических документов обычно реализуются в консалтинге,
  • Агрегированные данные о состоянии здоровья пациентов используются в здравоохранении, Электронная карта здоровья,
  • Графы знаний применяются в различных отраслях для управления цепочками поставок. На самом деле одной из главных особенностей Индустрии 4.0 является взаимодействие киберфизических систем, которое ведет к автоматизации и требует некоторой формы управления знаниями.
  • Базы знаний часто используются для управления чат-ботами, а также для обработки сложных запросов на естественном языке (например, сервис спросить),
  • Онтологии также применяются в широком спектре задач обработки естественного языка: аннотация текста с помощью онтологий, извлечение знаний, NER, связывание именованных сущностей, связывание отношений, автоматический вывод новых знаний, рассуждения. Решения SemTech быстро развиваются во всем мире.

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

Что такое онтологии?

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

Отрывок из английской детской песенки «Дом, который построил Джек».

Это крыса,
Которая съела солод
Которая лежала в доме, который построил Джек.

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

Онтология представлена ​​в виде графа, где узлы являются сущностями, а дуги — отношениями между сущностями. Считается, что любое высказывание на естественном языке может быть представлено в виде простых предложений и сущностей, а также из предложений могут быть извлечены отношения между этими сущностями. Существует два основных инструмента: RDF (структура описания ресурсов) или OWL (веб-язык онтологии). Одной из особенностей OWL является поддержка описаний логических правил для данных. Онтологии (в отличие от стандартных баз данных) помогают находить скрытые данные. Стандартные онтологии применяются, когда требуется поиск конкретной информации, а базы знаний предназначены для выявления новых знаний, например, в системах поддержки принятия решений (экспертных системах).

Примеры магазинов RDF: Виртуоз, 4store, stardog.

Онтология особенно полезна, когда подробное и тщательное описание отношений между компонентами обеспечивается с помощью математического инструмента дескриптивной логики. Например, отношениям могут быть присвоены свойства (функциональные, транзитивные, рефлексивные). В результате факты автоматически извлекаются из онтологий; этот процесс определяется как рассуждение. Существует множество алгоритмов рассуждений, основанных на графах. Вот несколько примеров вариантов применения: уточнение характеристик объекта и выделение уникального объекта из множества похожих объектов, поиск похожих объектов, понимание текста и классификация текста, помощь в задачах НЛП (NER, Relation Extraction), первопричина анализ, обнаружение закономерностей. Существует большое разнообразие инструментов, поддерживающих рассуждения, таких как IBM Watson, Wolfram Alpha. Однако самый популярный редактор называется Protégé.

Онтологии обычно создаются вручную профессионалами. Однако есть и примеры автоматического создания онтологий на основе существующих баз знаний. Графики знаний открытых источников (на конец 2021 года, по данным https://lod-cloud.net/):

Вышеуказанные инструменты предоставляют различные методы работы с онтологиями, однако, поскольку наиболее популярным инструментом является Protégé, дальнейшее обсуждение мы будем основывать на его логике и возможностях.

Работа в Protege

Установка

Protege разработан Стэнфордским университетом для разработки, редактирования и использования онтологий. Программное обеспечение является бесплатным и может быть загружено с https://protege.stanford.edu/products.php; веб-версия также доступна на https://webprotege.stanford.edu/, а архивный файл предоставлен на официальной странице для использования на локальном компьютере. Важно учитывать операционную систему и архитектуру процессора (64-разрядная или 32-разрядная). Последняя версия Protege (на момент написания этой статьи) — 5.5, однако для устаревших 32-разрядных операционных систем потребуются более старые версии Protege, такие как Protégé 4.3.

Извлеките файл Protégé.exe в любую папку и запустите его. Теперь вы можете создавать онтологи. Но это только начало долгого и трудного пути, но интересного.

Создание проекта

При запуске программы открывается следующее окно.

Здесь все на английском и Java, но для понимания английского вполне достаточно.

Каждый проект имеет уникальный идентификатор — IRI (Internationalized Resioure Identifier).

Protégé позволяет записывать триплеты в виде «подлежащее-сказуемое-дополнение».

Раздел Сущности позволяет описывать субъекты и объекты.

Важные вкладки в разделе:

  • Экземпляры класса (индивидуальные). Те же объекты класса, что и в объектно-ориентированном программировании. Например, класс «Сервер», объект «prod-serv-002».
  • Свойства (свойства объекта или свойства данных). Подобно свойствам класса в объектно-ориентированном программировании. Однако в онтологиях свойства независимы и могут быть отделены от класса (в отличие от объектно-ориентированного программирования).

Предикатам могут быть присвоены различные свойства, например:

  • Функциональный,
  • Обеспечить регресс,
  • переходный

Reasoner может быть применен к описанной онтологии. Он делает предложения на основе полученных фактов (которые могут быть приняты или отвергнуты).

Онтологии могут быть сохранены в виде файла owl и выглядят точно так же, как обычный файл xml, если его открыть в текстовом редакторе.

Объяснить эти понятия будет проще на примерах.

Практические задания для Protégé

Доступ персонала в помещения

Представим ситуацию, в которой нам нужно отследить местонахождение каждого сотрудника. Мы знаем это:

  • Джонс не имеет доступа к серверной и комнате 101.
  • У Хансена нет доступа к 101 комнате.
  • У Смита нет доступа к комнате хранения документов.

Есть три сотрудника (Джонс, Хансен, Смит) и три комнаты (серверная, комната 101 и комната хранения документов). Для однозначного решения свойства компонента онтологии должны быть строго определены, например, установление факта отсутствия других сотрудников и помещений, а также наличия у одного сотрудника доступа только к одному помещению, иначе логически решить задачу будет невозможно. Если установлены жесткие ограничения, решение задачи будет тривиальным. Первое условие подразумевает, что Джонс имеет доступ к комнате хранения документов (поскольку серверная и комната 101 исключены); У Хансена (остались серверная и 101 комната) есть доступ в серверную, а у Смита осталась комната 101. Теперь будет проще проверить результаты работы Protégé Reasoner, которому доверили решение задачи.

Запустите редактор Protégé.

Теперь мы можем приступить к созданию онтологии для задачи в главном окне. Для начала создадим два класса: «Сотрудники» и «Комнаты».

Давайте создадим экземпляры для этих классов.

Повторим эту процедуру для остальных сотрудников (Хансен и Смит) и комнат.

Теперь можно создать свойство объекта «inside_room». Он соединит сотрудников и комнаты. При создании свойства объекта должны быть указаны сущности, связанные предикатом. В нашем случае это Сотрудники (Домен) и Комнаты (Диапазоны). Сотрудники могут находиться в любом помещении, а в помещении может разместиться любое количество сотрудников. Свойство является функциональным и действует от домена «Сотрудники» до диапазона «Комната». Исходя из принципов биологии и физики, один сотрудник может находиться только в одной комнате. Этот факт необходимо учитывать и при определении «внутрикомнатного» свойства. Этому свойству должны быть присвоены параметры Functional и Inverse; в результате сформируется бинарное отношение «один к одному».

Добавим в нашу онтологию известную информацию о местонахождении сотрудника.

Добавим аналогичную информацию о Хансене и Смите, используя логические предикаты «не» и «и».

Мы можем попробовать запустить Reasoner.

Тем не менее, новые объекты (сотрудники и помещения) по-прежнему могут быть добавлены к текущему утверждению в соответствии с гипотезой открытого мира, поэтому не могут быть извлечены какие-либо существенные факты. Для окончательного решения задачи по обнаружению местонахождения сотрудников ризонеру требуются строго определенные свойства для классов «Сотрудники» и «Помещения».

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

Запуск (или синхронизация) ризонера предоставит информацию о точном местонахождении сотрудника в определенном помещении. Например, мы установили, что Джонс находится в комнате хранения документов.

Выбранную онтологию можно сохранить, например. в формате сова.

Полученный файл .owl можно открыть в любом стандартном текстовом редакторе. Однако информация воспринимается лучше, когда она представлена ​​в виде графика, и Protégé предоставляет такую ​​возможность.

В результате создается информативная визуализация.

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

Загадка Эйнштейна

Постановка задачи

Загадка Эйнштейна — известная логическая головоломка. Он состоит из 15 подсказок, призванных помочь найти ответы на вопросы о том, кто пьет воду и у кого есть зебра.

Оригинальный текст загадки выглядит следующим образом:

  1. Есть пять домов.
  2. Англичанин живет в красном доме.
  3. У испанца есть собака.
  4. Кофе пьют в зеленом доме.
  5. Украинка пьет чай.
  6. Зеленый дом находится сразу справа от дома из слоновой кости.
  7. У курильщика Old Gold есть улитки.
  8. Kools курят в желтом доме.
  9. Молоко пьют в среднем доме.
  10. Норвежец живет в первом доме.
  11. Мужчина, который курит Chesterfields, живет в доме рядом с человеком с лисой.
  12. Kools курят в доме рядом с домом, где содержится лошадь.
  13. Курильщик Lucky Strike пьет апельсиновый сок.
  14. Японцы курят парламенты.
  15. Норвежец живет рядом с голубым домом.

Кто пьет воду? У кого есть зебра?

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

Решение

Первый этап включает в себя определение классов. Классов пять: «Дома», «Мужчины», «Животные», «Напитки» и «Сигареты». Класс «Дома» имеет два признака — номер дома и цвет, поэтому целесообразно создать новый класс — «Цвета».

Следующим шагом является создание экземпляров класса (объектов).

Остальные пять классов подлежат аналогичной процедуре.

Затем должны быть созданы свойства для объектов и характеристики объектов. В разделе «Свойства объекта» будет создано шесть свойств (предикатов): «live_in», «has_color», «has_animal», «smokes_cigarets», «located_right_of», «drink_a_drink». Связанные предикатами сущности и их характеристики должны быть указаны в процессе создания предикатов.

Выполним ту же процедуру для других предикатов.

Функциональные и обратные функциональные параметры назначаются всем шести свойствам. Это бинарное отношение «один к одному».

Теперь пришло время добавить в онтологию все известные факты о сущностях. Первый факт заключается в том, что дома расположены в порядке 1–5. Для этого укажем, что «Первый» объект находится справа от пустого множества, а «Пятый» объект — справа от четвертого дома и слева от пустого множества.

Для объектов «Второй», «Третий» и «Четвертый» в «Утверждениях свойства объекта» следует указать, что они находятся справа от предыдущего.

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

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

В приведенном выше примере служебное слово обратное делает марку сигарет предметом утверждения, потому что человек курит Chesterfield, а не наоборот.

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

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

Запуск резонера даст нам ответы на вопросы. Теперь мы знаем, что норвежец пьет воду, а японец владеет зеброй.

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

Заключение

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

В области информационной безопасности уже созданы различные базы знаний, такие как MITRE ATT&CK и SHIELD, CVE, CAPEC. Они применяются при анализе и реагировании на инциденты, расследованиях и обнаружении уязвимостей. Но пусть это будет темой следующей статьи.