Научная статья на тему 'Теоретико-множественный подход к логическому выводу в базах знаний'

Теоретико-множественный подход к логическому выводу в базах знаний Текст научной статьи по специальности «Математика»

CC BY
166
54
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ / ARTIFICIAL INTELLIGENCE / ИНДЕКСАЦИЯ ФАКТОВ / FACTS INDEXING / ЛОГИЧЕСКИЙ ВЫВОД / INFERENCE

Аннотация научной статьи по математике, автор научной работы — Бессмертный И. А.

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

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

A SET-THEORETIC APPROACH TO THE LOGICAL INFERENCE IN KNOWLEDGE BASES

The paper concerns to the problem of combinatorial complexity of inference in artificial intelligence applications based on production rules. An approach to speeding up the knowledge acquisition is proposed that specifies indexing the facts and operations with sets of indices to prune unnecessary facts. In contrast to the most known algorithms that provide pre-collecting facts in nodes of the search tree, the indices exist apart from the rule sets, that allows disjointing bases of facts and bases of rules logically and physically and to simplify the knowledge base updating. An opportunity of alternation the matching of rules to set-theoretic operation on tuples of variables is proven.

Текст научной работы на тему «Теоретико-множественный подход к логическому выводу в базах знаний»

И.А. Бессмертный

КОМПЬЮТЕРНЫЕ СИСТЕМЫ И ИНФОРМАЦИОННЫЕ ТЕХНОЛОГИИ

УДК 004.89

ТЕОРЕТИКО-МНОЖЕСТВЕННЫЙ ПОДХОД К ЛОГИЧЕСКОМУ ВЫВОДУ В БАЗАХ ЗНАНИЙ

И.А. Бессмертный

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

Состояние проблемы и существующие решения

В большинстве систем искусственного интеллекта (ИИ) имеется база знаний, хранящая факты и правила для предметной области. Применение правил к известным фактам позволяет порождать новые знания. Для извлечения знаний используется интеллектуальный агент (машина вывода), который либо находит существующие факты, либо порождает новые факты путем логического вывода из правил. Вывод из правил представляет собой классическую задачу неинформированного поиска [1] и в случае небольших баз знаний может решаться путем последовательного перебора всех фактов для каждого из условий правила.

Пусть множество фактов базы знаний F = f} образует атомы (триплеты) f = (s, p, o), где s - субъект, p - предикат, o - объект. Мощность множества фактов обозначим n. База знаний содержит также множество правил R = {r}. Каждое правило r состоит из результирующей части и тела (условия правила). Для простоты будем считать, что результирующая часть содержит один атом, а тело - множество атомов С = {с}. Пусть среднее число условий в одном правиле равно k, а мощность множества правил равна m. Запуск процедуры применения всех правил к множеству фактов вызывает последовательный перебор всех фактов для каждого из условий правил. Общее число A попыток унификации условий с фактами будет равно

A = mnk.

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

Наиболее известным методом ускорения резолюции правил является алгоритм Rete [2], используемый в экспертных системах CLIPS, Jess, Soar и др. В основу алгоритма положено префиксное дерево, узлами которого являются условия правил. В каждом узле префиксного дерева создается список фактов из базы знаний, которые удовлетворяют условиям правила. Фактически это означает многократное дублирование фактов (рабочей памяти) в области правил (операционной памяти). При перемещении от корня префиксного дерева до листа списки фактов подвергаются операции пересечения,

4

и в листе находятся только факты, необходимые и достаточные для резолюции правила. Перемещение от корня до листа как раз и означает резолюцию правила.

Узким местом алгоритма Rete является изменение префиксного дерева при изменении фактов базы знаний. При добавлении, изменении или удалении фактов префиксное дерево должно строиться заново либо модифицироваться. Большинство модификаций алгоритма Rete, например, Modify-in-place, Scaffolding, Decision Tree [3], нацелены именно на изменение префиксного дерева. Между тем, модификация множества фактов происходит в системах ИИ постоянно, поскольку каждое правило дает в качестве результата новые факты, которые должны сразу же использоваться в ходе резолюции.

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

> = ^^,р,о).

Для множества термов Т = встречающегося в фактах, построим индекс в виде

где w - место данного терма в атоме (в качестве субъекта, предиката или объекта), {iw} - множество номеров фактов, имеющих терм t в роли w, w=('s';'p';'o'). Резолюция правила заключается в установлении истинности условий и присвоении значений переменным. Теперь при обращении к правилу, тело которого состоит из множества условий {ci, С2, ..., ck}, где Cj = (sj, pj, of), Sj - субъект,pj - предикат, oj - объект, (s; o) = (t; v), v -переменная, pj = t. Поскольку в логике первого порядка не допускается использование переменных в качестве предиката, каждое из условий cj может иметь одно из четырех сочетаний термов и переменных: (t, t, t); (t, t, v); (v, t, t); (v, t, v).

Для каждого из cj условий правила извлечение релевантных фактов для перечисленных сочетаний термов заключается в нахождении пересечений множеств индексов:

Ij = {its} n {ip } n {io}, Sj = const, p} = const, o} = const;

Ij = {itp } n {ito }, p}- = const, o} = const;

Ij = {its} n {ip }, s} = const, p} = const;

Ij = {itp } pj = const.

Каждой переменной v, используемой в j-м условии, из списков Ij можно поставить в соответствие множество кортежей {i, и}, где i - номер факта, i е Ij, щ - значение переменной v, извлекаемое из i-го факта. Если переменная v используется более чем в одном условии правила, пересечение

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

¡V = .

Наконец, если в условии правила с участвуют более одной переменной, то пересечение списков

Индексация и предварительный отбор фактов

X = {х} = {(t, w,{ij)},

(1)

Uv = {uv } = П {u} j jeC J

И . А . Бессмертный

для каждой из двух переменных даст окончательный список фактов, которые отвечают j-му условию правила.

Рассмотрим данный алгоритм на простом примере. Пусть имеется база знаний, состоящая из фактов, имеющих сквозную нумерацию (здесь и далее будем придерживаться синтаксиса языка Prolog):

fn(1, sergey, hassex, male). fn(8, sergey, parent, nikita).

fn(2, nikita, has sex, male). fn(9, sergey, parent, andrey).

fn(3, sergey, is a, person). fn(10, natalia, parent, nikita).

fn(4, natalia, is a, person). fn(11, natalia, parent, andrey).

fn(5, nikita, is a, person). fn(12, nikita, parent, stepan).

fn(6, nikita, has sex, male). fn(13, andrey, parent, egor).

fn(7, natalia, has sex, female).

Построим для этих фактов индекс, как показано в формуле (1): x(sergey, s, [1,3,8,9]). x(male, o, [1,2,6]).

x(nikita, s, [2,5,6,12]). x(person, o, [3,4,5]).

x(natalia, s, [4,7,10,11]). x(female, o, [7]).

x(andrey, s, [13]). x(nikita, o, [8,10]).

x(has_sex, p, [1,2,6,7]). x(andrey, o, [9,11]).

x(is_a, p, [3,4,5]). x(stepan, o, [12]).

x(parent, p, [8,9,10,11,12,13]). x(egor, o, [13]).

Создадим правила в виде r(conditionList, resultingList) с использованием переменных, начинающихся с вопросительного знака, где conditionList - список условий, resultingList - список триплетов результата. Первое правило устанавливает, что субъект является мужчиной, если он является человеком и имеет мужской пол.

r([c("?x", is a, person), c("?x", has sex, male)], [f("?x", is a, man)].

1-е условие правила 2-е условие правила

Исходное условие ?x, is a, person ?x, has sex, male

Индекс для используемых термов x(is_a, p, [3,4,5]). x(person, o, [3,4,5]). x(has sex, p, [1,2,6,7]). x(male, o, [1,2,6]).

Пересечение по номерам ?x, s, [3,4,5] ?x, s, [1,2,6]

Значения переменной ?x = [sergey, natalia, nikita] ?x = [sergey, nikita, nikita]

Пересечение по значениям [sergey, nikita]

Отфильтрованный индекс ?x, s, [3, 5] ?x, s, [1,2,6]

Таблица 1. Предварительный отбор фактов для правила ?х ¡в_а тап

Используем индекс для отбора фактов и находим пересечение значений переменной ?x, используемых во всех условиях.

[sergey, natalia, nikita] П [sergey, nikita, nikita] = [sergey, nikita] Фильтруем списки фактов, требуемых для резолюции каждого условия правила, включая в них только значения термов, попавшие в пересечение. Для первого условия это факты [3,5], а для второго - [1,2,6]. Таким образом, для резолюции правила требуется унифицировать условия правила с пятью фактами. Если не использовать индекс, то каждое условие правила нужно сопоставлять со всеми 13-ю фактами, всего 26 фактов.

Создадим более сложное правило, определяющее отношение «прародитель» (grandparent):

r([c("?x", parent, "?y"), c("?y", parent, "?z")], [f("?x", grandparent, "?z")].

1-е условие правила 2-е условие правила

Исходное условие "?х", parent, "?y" "?y", parent, "?z"

Индекс для используемых термов x(parent, p, [8,9,10,11,12,13]). x(parent, p, [8,9,10,11,12,13]).

Пересечение по номерам ?х, s, [8,9,10,11,12,13]). ?y, o, [8,9,10,11,12,13]). ?y, s, [8,9,10,11,12,13]). ?z, o, [8,9,10,11,12,13]).

Значения переменной [nikita, andrey, nikita, andrey, stepan, egor] [sergey, sergey, natalia, natalia, nikita, andrey]

Пересечение по значениям [nikita, andrey].

Отфильтрованный индекс [8,9,10,11] [12,13]

Таблица 2. Предварительный отбор фактов для правила ?x grandparent ?z

Более одного раза в правиле встречается только переменная ?y; пересечение ее допустимых значений в первом и втором условиях равно

[nikita, andrey, nikita, andrey, stepan, egor] П [sergey, sergey, natalia, natalia, nikita, andrey] = [nikita, andrey].

В качестве допустимых значений переменной ?y мы получили список объектов, которые являются одновременно родителями и детьми. Прореживаем список фактов для первого условия [8,9,10,11,12,13], оставляя в нем только факты, имеющие термы [nikita, andrey] в качества объекта. Получаем список [8,9,10,11]. Аналогично получаем список фактов [12,13] для второго условия. Находим пересечение номеров фактов, соответствующих каждой из переменных, в каждом из условий. Для первого условия [8,9,10,11,12,13] П [8,9,10,11] = [8,9,10,11], для второго - [12,13] П [8,9,10,11,12,13] = [12,13]. Таким образом, мы добиваемся того, что каждому из условий правила в процессе унификации будут предъявляться только факты, гарантированно порождающие результаты.

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

Оценка быстродействия алгоритма

Предлагаемый здесь метод реализован в программе Semantic, разработанной автором специально для изучения принципов построения систем искусственного интеллекта, визуализации знаний, а также для исследований способов построения интеллектуальных агентов. Поскольку прямой логический вывод предполагает независимую обработку каждого правила, длительность вывода имеет линейную зависимость от числа правил. Следовательно, оценку быстродействия можно оценивать на одном правиле. Тестирование данного метода проводилось на базе знаний, описывающей родственные отношения. Факты вида субъект-is_parent-объект создавались с помощью генератора случайных чисел. Правило, которое использовалось для измерения времени вывода, описывает отношение типа «прапрародитель» и имеет три условия:

r([c("?x1", "is_parent", "?х2"), c("?x2","is_parent","?x3"), c{"?x3","is_parent","?x4")], [f("?x1","is_grandgrandparent","?x4")]). Приведенный ниже график (см. рис.) показывает зависимость времени работы программы логического вывода от числа фактов в базе знаний.

И.А. Бессмертный

Количество фактов

Рис. Зависимость времени логического вывода от числа фактов в базе знаний

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

Замена унификации правил операциями реляционной алгебры

В приведенном примере резолюции правила «субъект является мужчиной» был получен список значений переменной ?x: [sergey, nikita]. Но поскольку эта переменная в правиле единственная, то задача практически уже решена, и новые факты могут быть получены подстановкой значений переменной в заголовок правила: fsergey, is a, man); fnikita, is a, man).

Рассмотрим, можно ли обойтись без интерпретации правил во втором примере. Извлечем из базы знаний факты [8,9,10,11], а также [12,13] и получим кортежи переменных ?x и ?y для первого условия и ?y и ?z для второго условия

?x ?y ?y ?z

sergey nikita nikita stepan

sergey andrey andrey egor

natalia nikita

natalia andrey

Выполнив для этих таблиц операцию соединения по совпадающим значениям ?у, получим кортеж

?x ?y ?z

sergey nikita Stepan

sergey andrey Egor

natalia nikita Stepan

natalia andrey Egor

Результат операции соединения дает допустимые сочетания значений переменных ?x и ?z, т.е. искомое решение:

fsergey, grandparent, stepan). fsergey, grandparent, egor). fnatalia, grandparent, stepan). fnatalia, grandparent, egor).

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

Заключение

Предлагаемый метод существенно отличается от алгоритма Rete. Главное отличие заключается в том, что только индексация фактов выполняется заблаговременно, а операция предварительного отбора фактов выполняется непосредственно перед резолюцией. Это означает, что факты и правила могут существовать отдельно, в том числе на разных сетевых ресурсах, что соответствует концепции Глобальной семантической сети [4]. В ходе предварительного отбора фактов для каждого условия правила создаются множества кортежей значений переменных, используя которые, можно в отдельных случаях отказаться от резолюции правил, а, используя операции реляционной алгебры над кортежами, сразу получить множество решений правила. Тестирование метода индексации фактов показало его работоспособность и ускорение приблизительно на порядок по сравнению с «наивным» логическим выводом. Дальнейшее ускорение возможно путем полноценной реализации замены унификации правил операциями реляционной алгебры.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Литература

1. Рассел С., Норвиг П. Искусственный интеллект: Современный подход. 2-е изд. / пер. с англ. - М.: Изд. дом «Вильямс», 2006.

2. Forgy C.L. RETE: A fast algorithm for the many pattern / many object pattern match problem // Artificial Intelligence. - 1982. - Vol. 19. - Р. 17-37.

3. Doorenbos R. B.. Production Matching for Large Learning Systems // PhD Theses. University of South California, 1995. - 208 pp.

4. Berners-Lee T., Hendler J., Lassila O. The Semantic Web // Scientific American Magazine. - May, 2001.

Бессмертный Игорь Алексаендрович - Санкт-Петербургский государственный университет информационных технологий, механики и оптики, кандидат технических наук, доцент, [email protected]

i Надоели баннеры? Вы всегда можете отключить рекламу.