Abstract

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

Перед тем как начать или извинения автора

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

Введение

Самая главная проблема, связанная с неточностью и неопределенностью в онтологиях - это то, что 90% людей, бурно утверждающих, что им нужны средства построения неточных онтологий, не понимают, зачем именно они нужны и как эти средства будут использоваться. Из оставшихся 10% 90% не представляют себе семантику неточных знаний и то, что она бывает очень разной. При этом даже последний 1% не может договориться о наилучшей математической теории и общей семантической базе для неточных знаний. Ну и наконец, мало кто из теоретически грамотных людей берется это реализовывать. Вопрос: почему?

Чтобы ответить на него, попробуем понять, что такое эта пресловутая неопределенность (нечеткость, неточность и т.д.). Очевидно, что большая часть каких-либо высказываний в реальном мире делается с определенной степенью точности. Например, "Анне 25 лет" не означает, что Анне исполнилось 25 в настоящую секунду, а "это дорогой ресторан" и вовсе требует контекста для определения что значит "дорогой". При этом многие неточно определенные знания - это такая же часть предметной области, как и определенные. Например, сведения о том, что не менее 80% студентов - молодые люди, имеет точно такое же право на присутствие в онтологии, как и, например, то, что студенты и профессоры - это непересекающиеся (disjoint) классы. Однако для представления вторых у нас есть аксиомы в . Для представления первых нет фактически никаких стандартных средств.

Итак, у всех есть интуитивное представление о том, что такое неточность. Более того, большинство согласится, что "неточности" бывают разными. Оставив на потом вопросы о том, какие математические аппараты лучше подходят для тех или иных видов неточных знаний, попробуем ввести некую классификацию. А заодно и определимся с терминологией.

Классификация "неидеальных" знаний

Итак, на практике приходится иметь дело как минимум со следующими видами знаний (ниже я попробую пояснить различия):

  • Неопределенные высказывания. Пример: "дождь пойдет с вероятностью 80-90%".
  • Нечеткие высказывания. Пример: "Анна - молодая женщина". Или: "найдите мне недорогие рестораны неподалеку".
  • Двусмысленные высказывания. Пример: "Мне нравится Вашингтон".
  • Субъективные высказывания. Пример: "Я не верю, что пингвины могут летать".

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

Итак, под неидеальными знаниями (imperfect knowledge) я буду понимать знания, относящиеся к одной из вышеперечисленных категорий. При этом знания первого типа я буду называть неопределенными (uncertain), а второй - нечеткими (vague или fuzzy). Остальным типам я уделю меньше внимания, так как в моей практике их практически всегда удается свести к одной из первых двух категорий.

Неопределенность или нечеткость?

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

Под неопределенностью мы будем понимать ситуацию, при которой высказывание (или логическая формула) может быть либо истинной, либо ложной, однако данный факт нам неизвестен. Рассмотрим пример высказывания "Павел успеет на свой рейс в Амстердам завтра в 16:40". Абсолютный факт заключается в том, что либо я успеваю на этот самолет завтра, либо нет. Это пока неизвестно, но зато точно известно, что я не могу частично или в какой-то степени успеть на этот рейс. Другой пример: нельзя быть немножко беременной.

Под нечеткостью мы будем понимать высказывания (логическую формулу), истинность которой может принимать множество значений в интервале [Ложь, Истина] (или [0, 1]). Другими словами, высказывание может быть истинным в какой-то степени. Это явление часто связано с субъективностью. Например, высказывание "Павел молод" может быть истинным на 0.9 для моего отца и на 0.4 для моего младшего брата.

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

Я отношусь к тем, кто предпочитает рассматривать эти два вида неидеальных знаний по отдельности в связи с вышеозначенными различиями. Как будет показано ниже, это различие имеет огромное значение для семантики неидеальных знаний. Я также скептически отношусь к попыткам использования единой математической теории для формализации обоих видов знаний. Вместо этого, имеет смысл использовать теорию вероятностей (ТВ) для формализации неопределенностей и множественную логику (many-valued logic) для формализации нечеткости. К множественным логикам относится и знаменитая нечеткая логика (Fuzzy Logic или НЛ).

Вероятностная и нечеткая семантика

Теперь вернемся к онтологиям, а точнее к и попытаемся понять, как можно расширить семантику для представления неопределенных и нечетких знаний. Здесь я буду полагаться на то, что у вас есть определенное знакомство с формальными основами , а именно - описательной логикой (Description Logic или DL). Если нет, то я все равно постараюсь сделать материал доступным, но очень рекомендую ознакомиться с DL, которая в настоящее время является наиболее активно используемым формализмом для представления знаний в онтологиях.

Начнем с классической семантики DL (все помнят, что такое семантика в логике?). Синтаксис DL состоит из атомарных классов и конструкторов сложных классов, например, операторов пересечения, объединения, отрицания, ограничений на роли (кванторы существования и универсальности) и т.д. В данном случае синтаксис менее важен. Гораздо важнее, что семантика основывается на теории множеств (наивной теории множеств, если быть точным). Это означает, что интерпретацией каждого класса, атомарного или сложного, всегда является множество. Например, одной из интерпретаций класса "Автомобиль" может являться множество всех объектов реального мира, имеющих 4 колеса.

Теперь, представим, что мы хотим моделировать неидеальные знания о классе A. Первое, что мы можем сделать - это расширить наш синтаксис DL, добавив в него некое число, которое будет сопровождать аксиомы типа "x - элемент A". Теперь аксиома будет выглядеть так: "(x - элемент A, p)", где p призвано численно характеризовать степень неидеальности. Теперь мы можем добавить аксиомы типа "(Павел - элемент класса МолодойЧеловек,0.4)" и "(Павел - элемент класса ПассажирРейсаKL10800,0.99)". Подобные аксиомы можно легко формулировать и сейчас, достаточно воспользоваться аннотациями 1.1, которые будут еще немного расширены в 2. Однако аннотации не имеют семантики, а для наших целей главный вопрос заключается в том, какова семантика этих знаний.

Вот тут-то и проявляется разница между неопределенными и нечеткими знаниями. В первом случае, класс МолодойЧеловек не может интерпретироваться в виде классического множества, поскольку даже при наличии полных знаний, не существует единого ответа на вопрос, принадлежит ли указанный элемент (Павел) этому множеству. Для таких случаев была предложена концепция нечетких множеств, т.е. множеств, степень принадлежности к которым может варьироваться в интервале [0,1]. Т.е. выражаясь формально, интерпретацией класса МолодойЧеловек будет функция принадлежности элемента нечеткому множеству, а интерпретацией p - значение этой функции для указанного элемента (интерпретации объекта "Павел").

Во-втором же случае, класс ПассажирРейсаKL10800 легко интерпретируется классическим множеством, поскольку любой элемент во Вселенной либо является его членом, либо нет. Число p в данном случае обладает совсем другой семантикой - оно показывает, насколько вероятно, что указанный элемент является членом множества. Таким образом, интерпретация класса ПассажирРейсаKL10800 будет абсолютно идентична его интерпретации в обычной DL. Это по-прежнему просто множество и ничего более. А вот интерпретацией p будет значение какой-то еще функции, которая задает для всех объектов во вселенной вероятность (а не степень!) их принадлежности каждому из классов. Нетрудно видеть, что в качестве этой функции логично использовать знакомые всем функции распределения вероятностей.

Что дальше?

Итак, надеюсь, что я вас (или хотя бы некоторых из вас) убедил, что у "неидеальности" знаний существует несколько граней и первое, что необходимо сделать при разработке любого формализма (в том числе, логики) - это абсолютно точно определить семантику допустимых знаний. Если этого не сделать, то возникают несуразицы, вроде "Анна на одну четверть беременна" или "Телефон за 212.48 долларов - дорогой с вероятностью 60%". Неопределенность и нечеткость знаний и так добавляют слишком много сложностей в , чтобы расшифровывать еще и подобные аксиомы, держа в уме как именно вероятность имитирует степень принадлежности или наоборот.

К счастью, подобная точка зрения принадлежит, разумеется, не мне и наиболее перспективные формализмы пока и являются либо DL + TB, либо DL + НЛ. Далее, если будет интересно, я углублюсь в "свою" область, а именно вероятностную семантику для и расскажу о подходах и методах для представления и логического вывода неопределенных аксиом. Не являясь никоим образом экспертом в нечетких DL, я могу все же попытаться дать краткий обзор и их тоже.

Следует оговориться, что кроме ТВ и НЛ существует масса других математических теорий для манипулирования неидеальными знаниями. Например, модальные и немонотонные логики работают с неполными и субъективными знаниями, неполнота также является предметом рассмотрения в теории грубых множеств (Rough Set Theory), а теория возможностей (Theory of Possibility) и теория свидетельств Демстера-Шефера (Dempster–Shafer Theory of Evidence) являются в какой-то степени альтернативами ТВ. Однако на сегодняшний день расширения семантики DL связаны в основном с ТВ и НЛ, поэтому логично начать с них.

Надеюсь, скоро продолжим. А пока предлагаю всем заинтересованным подумать, в чем разница в семантике следующих двух неопределенных высказываний: "птицы летают с вероятностью 90%" и "Твити - птица с вероятностью 90%". С этого мы начнем обсуждение того, что даже неопределенности бывают очень разными и возможность единой, основанной на ТВ, семантики совершенно неочевидна.

Пара слов об авторе

На данный момент я являюсь аспирантом университета Манчестера, занимаясь формальными логиками, позволяющими оперировать с неопределенными знаниями в онтологиях при помощи теории вероятности. У меня есть готовая реализация системы вероятностного логического вывода Pronto, которая является надстройкой над Pellet - одним из основных логических процессоров для . Непосредственно в настоящее время я в основном пытаюсь расширить семантику языка, лежащего в основе Pronto, параллельно занимаясь проблемами быстродействия и масштабируемости вероятностного логического вывода в .