Uploaded by wihevo1657

Диссертация Бессмертного И.А.

advertisement
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
Санкт-Петербургский национальный исследовательский университет
информационных технологий, механики и оптики
На правах рукописи
БЕССМЕРТНЫЙ ИГОРЬ АЛЕКСАНДРОВИЧ
МЕТОДЫ, МОДЕЛИ И ПРОГРАММНЫЕ СРЕДСТВА ДЛЯ
ПОСТРОЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМ НА
ПРОДУКЦИОННОЙ МОДЕЛИ ЗНАНИЙ
05.13.11 Математическое и программное обеспечение вычислительных
машин, комплексов и компьютерных сетей
Диссертация
на соискание ученой степени доктора технических наук
Научный консультант
д.т.н., профессор А.Ю. Тропченко
Санкт-Петербург – 2014
2
ОГЛАВЛЕНИЕ
ВВЕДЕНИЕ
7
ГЛАВА 1.............. Анализ путей построения интеллектуальных систем большой
размерности и постановка проблемы исследования ............................. 20
1.1. Анализ современных исследований в области построения
интеллектуальных систем большой размерности на продукционной
модели знаний ........................................................................................... 20
1.1.1. Актуальность продукционной модели знаний в интеллектуальных
системах.................................................................................................................. 20
1.1.2. Место проблемы ускорения поиска в создании интеллектуальных
систем на продукционной модели знаний .......................................................... 26
1.1.3. Анализ
существующих
методов
повышения
эффективности
механизмов поиска в продукционных базах знаний большой размерности .. 29
1.1.4. Анализ существующих реализаций интеллектуальных систем с
позиции антропоморфного подхода .................................................................... 35
1.2. Концептуальная модель интеллектуальной системы на основе базы
знаний большой размерности .................................................................. 40
1.2.1. Принципы организации баз знаний с использованием прецедентов .... 40
1.2.2. Модель машины вывода для баз знаний большой размерности ............ 42
1.3. Перспективные интеллектуальные системы большой размерности и
постановка проблемы исследования ....................................................... 50
1.3.1. Структура и состав перспективных интеллектуальных систем
большой размерности ........................................................................................... 50
1.3.2. Постановка проблемы исследования ........................................................ 54
Выводы ................................................................................................................... 57
ГЛАВА 2. Общесистемные методы повышения эффективности поиска в базах
знаний большой размерности .................................................................. 58
2.1. Редукция дерева решений путем устранения повторяющихся ветвей .... 58
3
2.1.1. Метод устранения повторяющихся ветвей в пределах одного дерева
решений .................................................................................................................. 58
2.1.2. Ускорение поиска при прямом и обратном логическом выводе............ 64
2.2. Методы организации поиска в интеллектуальных системах большой
размерности ............................................................................................... 67
2.2.1. Методы обеспечения актуальности прецедентов в изменчивых базах
знаний ..................................................................................................................... 67
2.2.2. Метод управления контекстом при поиске в базах знаний большой
размерности............................................................................................................ 77
2.3. Методы создания прецедентов методом случайных блужданий с
использованием множества агентов ....................................................... 82
2.3.1. Применение мультиагентного подхода и метода случайных
блужданий к задаче поиска .................................................................................. 82
2.3.2. Исследование эффективности создания прецедентов методом
случайных блужданий .......................................................................................... 93
Выводы ................................................................................................................... 99
ГЛАВА 3.......Алгоритмические методы ускорения поиска в интеллектуальных
системах на основе базы знаний большой размерности ..................... 101
3.1. Индексация и предварительный отбор фактов базы знаний, релевантных
условиям правил...................................................................................... 101
3.1.1. Теоретические предпосылки и обоснование целесообразности
индексации фактов .............................................................................................. 101
3.1.2. Алгоритм индексации и предварительного отбора фактов для
редуцирования пространства поиска ................................................................ 104
3.1.3. Оценка
эффективности
использования
индексов
и
предварительного отбора фактов для редуцирования пространства поиска 106
3.2. Метод логического вывода на основе теоретико-множественных
операций ................................................................................................... 110
4
3.2.1. Обоснование возможности реализации логического вывода в
реляционной модели знаний .............................................................................. 110
3.2.2. Реализация
логического
вывода
с
помощью
теоретико-
множественных операций .................................................................................. 113
3.3. Реализация быстрых реляционных операций методами логического
программирования .................................................................................. 115
Выводы ................................................................................................................. 125
ГЛАВА 4............................Методы редуцирования пространства поиска на основе
информационного подхода .................................................................... 126
4.1. Метод оценки информативности понятий и утверждений в базах данных и
знаний ....................................................................................................... 126
4.1.1. Словарно-контекстный метод оценки информативности понятий
предметной области ............................................................................................ 126
4.1.2. Метод оценки информативности фактов в базах знаний ...................... 134
4.1.3. Оценка информативности данных в реляционной базе ........................ 147
4.1.4. Метод редуцирования пространства поиска за счет рационального
порядка следования утверждений в запросе .................................................... 151
4.2. Применение троичной логики для редуцирования пространства поиска154
4.2.1. Модель базы знаний в троичной логике ................................................. 154
4.2.2. Визуализация и объяснение результатов рассуждений в троичной
логике.................................................................................................................... 157
4.2.3. Исследование временных характеристик вывода в троичной логике . 161
4.3. Анализ методов организации поиска в расширяющемся домене .......... 163
4.3.1. Поиск решений в допущениях замкнутого и открытого мира ............. 163
4.3.2. Исследование временных характеристик поиска в узком домене ....... 166
4.3.3. Исследование скорости поиска в расширяющемся домене.................. 168
Выводы ................................................................................................................. 175
ГЛАВА 5....Практическая реализация и оценка эффективности разработанных
методов ..................................................................................................... 177
5
5.1. Применение разработанных методов в интеллектуальных системах
большой размерности на воздушном транспорте................................ 177
5.1.1 Реализация
методов
ускорения
поиска
решений
в
системе
технологического обслуживания кассира ........................................................ 177
5.1.2. Реализация
методов
управления
прецедентами
в
системе
взаиморасчетов на воздушном транспорте....................................................... 180
5.2. Планирование и организация экспериментального исследования ......... 182
5.2.1. Обоснование выбора программно-аппаратной платформы для
экспериментов ..................................................................................................... 182
5.2.2. Состав и организация тестовой базы знаний ......................................... 185
5.3. Практическая реализация разработанных методов и исследование их
производительности................................................................................ 187
5.3.1. Реализация
индексации
и
предварительного
отбора
фактов,
релевантных условиям правил ........................................................................... 187
5.3.2. Экспериментальное исследование времени обработки правил SWRL
как запросов SQL................................................................................................. 195
5.3.3. Реализация быстрых операций реляционной алгебры в среде Visual
Prolog .................................................................................................................... 197
5.3.4. Исследование быстродействия быстрых предикатов Пролога для
операций над множествами ................................................................................ 202
5.3.5. Методы управления прецедентами в условиях изменчивости баз
знаний ................................................................................................................... 207
5.3.6. Исследование временных издержек на поддержание актуальности
прецедентов.......................................................................................................... 213
Выводы ................................................................................................................. 220
ЗАКЛЮЧЕНИЕ ................................................................................................... 222
СПИСОК СОКРАЩЕНИЙ И УСЛОВНЫХ ОБОЗНАЧЕНИЙ
228
ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
229
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
232
6
ПРИЛОЖЕНИЕ 1
246
ПРИЛОЖЕНИЕ 2
262
ПРИЛОЖЕНИЕ 3
264
ПРИЛОЖЕНИЕ 4
270
ПРИЛОЖЕНИЕ 5
278
7
ВВЕДЕНИЕ
Актуальность проблемы. Последнее десятилетие характеризуется
ростом потребности общества в информатизации и интеллектуализации во
всех сферах, в т.ч. в государственном управлении, здравоохранении,
образовании, на транспорте, в промышленности и др. областях. Данная
тенденция осознается как научным сообществом, так и на правительственном
уровне, в частности, это нашло отражение в распоряжении Правительства
Российской Федерации от 20 октября 2010 г. № 1815-р "О государственной
программе Российской Федерации "Информационное общество (2011-2020
годы)",
в
котором
предусмотрены
мероприятия
по
созданию
автоматизированных и информационно-аналитических систем в разных
сферах.
Процесс интеллектуализации систем управления, поддержки принятия
решений, робототехнических и информационных систем сопровождается как
существенным увеличением объемов баз знаний, так и возрастанием
динамичности контента за счет вовлечения в процессы поиска решений не
только статичных, но и темпоральных знаний. Наиболее популярной моделью
знаний является продукционная модель, на которой строится подавляющее
большинство баз знаний, о чем свидетельствует тот факт, что по данным
Scopus
количество
публикаций
в
научной
периодике,
посвященных
продукционной модели знаний превышает количество статей по остальным
моделям знаний. Имеют место глобализация знаний для конкретных
приложений и интеграция с базами данных, и в качестве примера здесь можно
привести глобальную систему бронирования авиабилетов. Это позволяет
говорить о тенденции появления баз знаний большой размерности, для
которых характерно падение эффективности поиска по мере увеличения
объема и усложнения структуры.
8
Одновременно с ростом объемов и усложнением структуры баз знаний
ужесточаются требования к глубине и широте поиска при ограничениях на
время
извлечения
знаний.
Несмотря
на
существенный
рост
общей
производительности средств вычислительной техники, аппаратную поддержку
узких вычислительных операций, возможности агрегирования ресурсов в
ГРИД-структурах, рост сложности в пространстве поиска во много раз
превышает возможность реализации поиска с помощью алгоритмов с
экспоненциальной сложностью. Этим обстоятельством обусловлено ведение
широкомасштабных исследований в области ускорения логического поиска
как за рубежом (Стенфордский университет, компании IBM, HP Lab, Google,
Yahoo, и др.), так и в России (ВЦ РАН, ИСА РАН, МЭИ, СПИИ РАН, Yandex
и др.). К сожалению, существующие методы логического вывода не в полной
мере учитывают многомерность баз данных и знаний большой размерности.
Кроме того, известные реализации сводятся к алгоритмическим методам
ускорения поиска, и даже достигаемое ускорение логического вывода на 2-3
порядка не позволяет устранить комбинаторную сложность задачи поиска
решений.
Таким образом, наблюдается противоречие между возрастающими
объемами
и
размерностью
вычислительными
баз
возможностями
знаний
ИС
с
одной
стороны
и
программно-аппаратных
средств
и
алгоритмов поиска с другой стороны, что делает проблему реализации
быстрого логического поиска в базах знаний большой размерности
актуальной.
Решаемой научной проблемой в диссертации является разработка
систем искусственного интеллекта на продукционной модели знаний,
использующих более быстрые, чем известные, методы логического поиска.
Степень теоретической разработанности темы. Основные предпосылки создания искусственного интеллекта (ИИ) представлены работами Н.
Винера [1] и К. Шеннона [2] в области управления сложными системами и
9
теории информации, А. Тьюринга [3], автора концептуальной машины
Тьюринга, разработавшего основные положения теории искусственного
интеллекта, А. Ньюэлла и Г. Саймона [4], выдвинувших в 1976 г. гипотезу о
физической символьной системе, М. Мински и С. Паперта [5], разработавших
теорию, названную ими «Общество разума», Л. Заде, внесшего вклад в
применение нечеткой логики в интеллектуальных системах [6], Дж.
МакКарти, создателя языка Lisp [7], работы В. Вапника в области
обучающихся систем [8], С. Шапиро (представление знаний) [9]. Среди
отечественных ученых следует упомянуть Д.А. Поспелова (исследования в
области ситуационного управления [10], М.Г. Гаазе-Рапопорта, Д.Э. Попова
[11], [12], Т.А. Гаврилову [13], [14], А.П. Еремеева [15] и В.Н. Вагина,
внесших значительный вклад в теорию и практику экспертных систем и баз
знаний, работы Д.С. Чернавского в области теории информации [16].
Современные исследования представлены также деятельностью А. Банди
(Alan Bundy), развивающего средства автоматического доказательства теорем
[17], Д. Лената (Douglas Lenat) [18] по созданию обширной базы знаний
базового уровня, а также сообществом исследователей при Стенфордском
университете,
развивающих
построение
онтологических
баз
знаний,
возглавляемого М. Музеном (Mark Musen) [19]. Большой вклад в теорию
искусственного интеллекта внесли П. Норвиг и С. Рассел [4], а также Д. Люгер
[20]. Заслуживают внимания также работы лаборатории программных
интеллектуальных
агентов
университета
Карнеги-Меллона
(http://www.cs.cmu.edu) под руководством К. Сикара, а также Институт
сингулярности в искусственном интеллекте (The Singularity Institute for
Artificial Intelligence, SIAI, (www.singinst.org), одним из директоров которого
является известный футуролог Рей Курцвейл [21]. В создание алгоритмов
искусственного интеллекта существенный вклад внес И. Братко [22]. Методы
интеллектуального управления техническими системами успешно развивают
10
А.Л. Фрадков, А.А. Бобцов [23], В.О. Никифоров [24], Б.Я. Советов, А.И.
Яшин [25] и др.
Объект
основанные
исследования
на
символьном
–
системы
подходе
и
искусственного
моделировании
интеллекта,
рассуждений,
использующие большие базы знаний, построенные на продукционной модели.
Предмет исследования – методы логического поиска в базах знаний
большой размерности.
Цель и задачи исследования. Цель исследования – повышение
эффективности
процессов
логического
поиска
в
базах
знаний
на
продукционной модели знаний за счет использования более быстрых, чем
известные
алгоритмы
логического
вывода
в
базах
знаний
большой
размерности.
Данная цель достигается решением следующих основных задач:
1. Анализ
состояния
работ
в
области
ИИ,
формирование
основных
направлений диссертационного исследования в части синтеза более
быстрых, чем существующие, методов логического поиска в базах знаний
большой размерности.
2. Разработка
концептуальной
модели
интеллектуальной
системы
на
продукционной модели знаний, учитывающей предметную неоднородность
пространства поиска и ориентированной на использование методов
быстрого логического вывода в больших базах знаний.
3. Исследование и разработка общесистемных методов ускорения логического
вывода в базах знаний большой размерности за счет сокращения
структурной избыточности дерева решений.
4. Разработка комплекса алгоритмических методов ускорения логического
вывода в интеллектуальных системах на продукционной модели знаний.
5. Разработка методов редуцирования пространства поиска в базах знаний
большой размерности на основе информационного подхода, учитывающего
структурные особенности баз знаний большой размерности.
11
6. Экспериментальное исследование разработанных методов и алгоритмов
ускорения
логического
вывода
для
подтверждения
достоверности
полученных результатов.
Область исследования соответствует паспорту специальности 05.13.11
«Математическое и программное обеспечение вычислительных машин,
комплексов и компьютерных сетей» Номенклатуры специальностей научных
работников:
Пункт 4. Системы управления базами данных и знаний.
Пункт 5. Программные системы символьных вычислений.
Теоретическую
и
методологическую
основу
исследования
составляют теория искусственного интеллекта, теория множеств, реляционная
алгебра,
теория
алгоритмов,
теория
автоматов,
теория
логического
программирования, теория информации, теория вероятностей. Методы
исследования включают в себя математическое моделирование, а также
эксперименты на моделях баз знаний в среде СУБД и среде логического
программирования Prolog.
Достоверность и обоснованность результатов исследования обеспечивается сравнением разработанных аналитических моделей и алгоритмов с результатами экспериментальных исследований и опубликованными материалами других исследователей, а также внедрением полученных результатов. Воспроизводимость экспериментов обеспечивается использованием в них синтезированной тестовой базы знаний и свободно распространяемого программного обеспечения.
12
Информационная база исследования представлена опубликованными
работами ведущих специалистов в области искусственного интеллекта и
семантических сетей, материалами конференций по ИИ, в частности,
Knowledge
Engineering
международного
and
конгресса
Ontology
по
Design
(KEOD),
интеллектуальным
ежегодного
системам
и
информационным технологиям (IS-IT), международной конференции по
инженерии знаний и технологиям семантического веба (KESW), а также
результатами экспериментов, проведенных в ходе данной работы, и Webресурсами.
Положения, выносимые на защиту:
1. Концептуальная модель интеллектуальных систем большой размерности
на продукционной модели знаний.
2. Общесистемные методы повышения скорости поиска в базах знаний
большой размерности.
3. Комплекс алгоритмических методов ускорения логического вывода в
интеллектуальных системах на продукционной модели знаний.
4. Методы редуцирования пространства поиска в базах знаний большой
размерности на основе информационного подхода.
5. Результаты экспериментального исследования на базах знаний большой
размерности
алгоритмов,
реализующих
разработанные
методы
ускорения логического вывода.
Научная новизна:
1. Концептуальная модель интеллектуальной системы большой размерности
на продукционной модели знаний, отличающаяся учетом предметной неоднородности пространства поиска, что позволяет сформулировать условия
выбора состава методов ускорения логического вывода для конкретных
условий или приложений.
2. Общесистемные методы повышения скорости поиска в базах знаний большой размерности, отличающиеся процедурами предварительной общей ми-
13
нимизации избыточности дерева решений, что позволяет достичь полиномиальной сложности логического вывода.
3. Комплекс алгоритмических методов ускорения логического вывода в интеллектуальных системах на продукционной модели знаний, отличающийся
возможностью ускорения логического вывода в различных вариантах проявления неоднородности данных и знаний, что позволяет выбирать для
практических целей наилучшую комбинацию вариантов разработанных алгоритмов.
4. Методы редуцирования пространства поиска в базах знаний большой размерности на основе информационного подхода, отличающиеся использованием главных направлений поиска предварительно формируемых на основе
информационных весов, что обеспечивает существенное сокращение числа
просматриваемых продукционных правил в стандартном и расширенном
доменах на всех комбинациях подзапросов.
5. Результаты экспериментального исследования алгоритмов, реализующих
разработанные методы ускорения логического вывода и обеспечивающих
полиномиальную сложность логического вывода в базах знаний большой
размерности.
Практическая значимость исследования. Результаты, полученные в
ходе настоящего исследования, могут быть применены в интеллектуальных
технических системах, использующих большие базы данных и знаний.
Разработанные методы доведены до уровня алгоритмов и программ, которые
позволяют создавать интеллектуальные системы на продукционной модели
знаний с базами знаний большой размерности. Полученные практические
оценки скорости поиска решений в зависимости от объемов баз знаний могут
быть использованы на разных этапах проектирования систем логического
вывода для обоснования технических решений для баз знаний большой
размерности.
14
Апробация результатов исследования. Результаты исследования докладывались на 17 всероссийских и международных научных конференциях, в
т.ч. Х Международной конференции «Применение новых технологий в образовании», Троицк - Фонд новых технологий в образовании "Байтик", 1999г.
[26], VI Общероссийской научной конференции «Современная логика: Проблемы теории, истории и применение в науке», СПб, СПбГУ, 2000г. [27], 9-й,
10-й, 11-й и 12-й Всемирных конференциях по продолженному инженерному
образованию World Conference on Continuing Engineering Education (Токио,
Япония, 2004г. [28], Вена, Австрия, 2006г. [29], Атланта, США, 2008г. [30],
Сингапур, 2010г. [31]), Пятом международном симпозиуме по образовательным и информационным системам, технологиям и приложениям (5th
International Symposium on Education and Information Systems, Technologies and
Applications EISTA 2007), Орландо, США, 2007г. [32], Международной конференции по языку Visual Prolog и приложениям (Visual Prolog Application &
Language Conference VIP-ALC'08), Санкт-Петербург, 2008г. [33], Всероссийской конференции «Управление знаниями и технологиями семантического
веба», С.-Петербург, 2010г. [34], международном конгрессе по интеллектуальным системам и информационным технологиям IS&IT'11, Геленджик, 2011г.
[35], IS&IT'12, Геленджик, 2012г. [36], IS&IT'13, Геленджик, 2013г. [37], Всероссийской конференции "Инженерия знаний и технологии Semantic Web"
(KESW 2011) [38], (KESW 2012) [39], [40], [41], (KESW 2013) [42], 4-й Международной конференции по инженерии знаний и онтологическому проектированию KEOD-2012, Барселона, Испания, 2012 г. [43], Всероссийской конференции «Информационные технологии в науке, технике и медицине», Томск,
2012 г. [44], 5-й Российской мультиконференции «Информационные технологии в управлении» (ИТУ–2012). - Санкт-Петербург, 2012г. [45], [46], VIII
Международной научно-практической конференции «Современные информационные технологии и ИТ-образование» [47]. Результаты диссертационного
15
исследования внедрены в ряде учебных заведений и организаций, в т.ч. в
Транспортно-клиринговой палате.
Публикация результатов исследования. Результаты диссертационного
исследования опубликованы в 18 рецензируемых научных изданиях из
перечня рецензируемых научных изданий, в которых должны быть
опубликованы основные научные результаты диссертаций на соискание
ученой степени кандидата наук, на соискание ученой степени доктора наук, в
т.ч. в статьях в журналах «Программирование» [48], [49], [50] (англоязычный
вариант «Programming and Computer Software» [51], [52], [53]), «Известия
вузов. Приборостроение» [54], [55], [56], [57], «Научно-технический вестник
информационных технологий, механики и оптики» [58], [59], [60], [61], [62],
[63], [64], [65], «Известия Томского политехнического университета» [66],
«Искусственный интеллект и принятие решений» [67]. Четыре работы
проиндексированы в системе Scopus [43], [52], [51], [42] и три – Web Of
Science [32], [51], [52]. По результатам исследований опубликованы одно
учебное пособие [68] и монография [69]. Разработанные алгоритмы,
реализованные
на
языке
Prolog,
защищены
в
качестве
объектов
интеллектуальной собственности (приложение) [70], [71], а также внедрены в
ряде университетов и организаций.
Объем и структура работы. Диссертационная работа изложена на 305
страницах, состоит из введения, пяти глав, содержащих 65 рисунков и 22
таблицы,
заключения.
Библиографический
список
включает
120
наименований. В приложении к диссертации представлены документы,
подтверждающие
актуальность
темы
исследования,
свидетельства
о
регистрации прав на интеллектуальную собственность и акты о внедрении
результатов интеллектуальной деятельности.
Во введении обосновываются актуальность темы диссертационной
работы
и
необходимость
создания
интеллектуальных
систем
на
16
продукционной модели знаний, определяются объект, предмет, методы, цель и
задачи исследования, устанавливаются научная новизна и практическая
значимость исследования, приводятся сведения об апробации работы.
В первой главе проводится анализ путей построения интеллектуальных
систем
большой
размерности
и
выполняется
постановка
проблемы
исследования. Обосновывается актуальность применения в интеллектуальных
системах продукционной модели знаний, оценивается место проблемы
ускорения поиска в базах знаний большой размерности. На основе анализа
существующих методов повышения эффективности поиска устанавливается,
что в больших интеллектуальных системах требуется обеспечить редукцию
пространства
поиска.
концептуальная
На
модель
основе
проведенного
интеллектуальной
анализа
системы,
предлагается
использующей
прецеденты для редукции пространства поиска в базах знаний большой
размерности, и модель машины вывода, реализующей механизм управления
прецедентами.
Таким образом, в первой главе сформулирована научная проблема и
предложена концептуальная модель интеллектуальной системы, позволяющая
осуществлять постановку и решение задач разработки общесистемных и
алгоритмических методов быстрого логического вывода в хранилищах знаний
большой размерности, что позволяет формулировать условия выбора состава
методов ускорения логического вывода для конкретных условий или
приложений.
Во второй главе исследуются общесистемные методы повышения
эффективности поиска в базах знаний на основе концептуальной модели
интеллектуальной системы, предложенной в первой главе и в основе которой
лежит редукция пространства поиска как необходимое условие построения
интеллектуальных систем большой размерности. Исследованы методы
устранения повторяющихся ветвей как в пределах одного поиска, т.е. одного
дерева решений, так и использования результатов предыдущих операций
17
поиска в качестве прецедентов для обработки последующих запросов.
Анализируются способы использования прецедентов при прямом и обратном
логическом выводе, а также методы обеспечения актуальности прецедентов в
изменчивых базах знаний и методы управления контекстом при поиске в базах
знаний большой размерности. Построены математические модели управления
прецедентами,
демонстрирующие
полиномиальную
сложность
поиска
решений на основе прецедентов для изменчивых баз знаний. Также
исследуется способ создания прецедентов в мультиагентных системах
методом случайных блужданий, в котором качество найденных решений
является функцией времени работы агентов.
Таким образом, во второй главе выявляются системные закономерности
в пространстве поиска позволившие на основе прецедентного подхода с
воспроизведением механизма интеллектуальных навыков в виде прецедентов
редуцировать пространство поиска и за счет этого сократить структурную
избыточность дерева решений.
В
третьей
главе
обеспечивающие
многомерности
с
в
исследуются
учетом
реальных
закономерности
многообразия
базах
знаний
дерева
проявления
возможность
поиска,
особенностей
разработки
алгоритмических методов, позволяющих редуцировать пространство поиска и
за счет этого сократить параметрическую избыточность дерева решений. Для
редукции пространства поиска предлагается применение индексации и
предварительного отбора фактов, релевантных условиям правил, в результате
чего перебор фактов заменяется операциями над индексами, а ускорение
поиска решений является обратно пропорциональным доле фактов в базе
знаний, релевантных запросу. Дальнейшим развитием этой идеи стали
разработка метода логического вывода с помощью теоретико-множественных
операций над списками кортежей переменных, позволяющая реализовать
машину вывода в среде реляционных СУБД и создать теоретические основы
для реализации быстрого логического вывода методами логического
18
программирования. Полученные результаты позволяют говорить об ускорении
логического
вывода
приблизительно
на
порядок
по
сравнению
с
существующими алгоритмами.
В
четвертой
главе
рассматриваются
методы
редуцирования
пространства поиска на основе информационного подхода. В рамках теории
информации и словарно-контекстного подхода предложены методы оценки
информативности понятий и фактов предметной области, с помощью которых
разработан метод редуцирования пространства поиска за счет рационального
порядка следования утверждений в запросе. Для редуцирования пространства
поиска в больших базах знаний предложено использовать троичную логику,
на основе которой разработан метод организации поиска в расширяющемся
домене, позволяющий доказывать истинность или ложность целей без
применения
допущений
замкнутого
или
открытого
мира
и
при
полиномиальной сложности задачи логического вывода.
Пятая
глава
посвящена
практической
реализации
и
оценке
эффективности методов, разработанных в ходе исследования. Приводится
краткое описание глобальной автоматизированной системы бронирования
авиаперевозок и системы взаиморасчетов на воздушном транспорте, в
которых использованы разработанные методы. Для апробации, тестирования и
оценки эффективности созданных алгоритмов построен план экспериментов,
выбрана программно-аппаратная платформа для проведения экспериментов, а
также построена тестовая база знаний. Проведена серия экспериментов по
измерению эффективности редукции пространства поиска путем индексации и
предварительного отбора фактов, релевантных условиям правил. Выполнена
загрузка тестовой базы знаний в среду реляционных СУБД и проведено
исследование времени
обработки правил как SQL-запросов. Методы
логического программирования для выполнения быстрых реляционных
операций реализованы на языке Prolog и проведено экспериментальное
исследование их производительности на тестовой базе знаний. Разработаны
19
методы управления прецедентами в условиях изменчивости баз знаний и с
помощью экспериментов исследованы временные издержки на поддержание
актуальности прецедентов, в результате чего подтверждена полиномиальная
сложность логического вывода на изменчивых базах знаний с использованием
прецедентов.
В заключении делаются краткие выводы, полученные результаты
обобщаются, оценивается полнота решения поставленных задач.
В приложениях содержатся: текст распоряжения Правительства
Российской Федерации от 20 октября 2010 г. № 1815-р с приложением,
подтверждающим актуальность темы исследования, копии свидетельств о
регистрации прав интеллектуальной собственности на программные средства,
разработанные в рамках исследования, акты о внедрении результатов
интеллектуальной
деятельности,
программы Semantic,
а
также
руководство
пользователя
в которой реализованы разработанные в ходе
диссертационного исследования методы и алгоритмы.
20
ГЛАВА 1. АНАЛИЗ ПУТЕЙ ПОСТРОЕНИЯ ИНТЕЛЛЕКТУАЛЬНЫХ
СИСТЕМ БОЛЬШОЙ РАЗМЕРНОСТИ И ПОСТАНОВКА
ПРОБЛЕМЫ ИССЛЕДОВАНИЯ
1.1. АНАЛИЗ СОВРЕМЕННЫХ ИССЛЕДОВАНИЙ В ОБЛАСТИ ПОСТРОЕНИЯ
ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМ БОЛЬШОЙ РАЗМЕРНОСТИ НА
ПРОДУКЦИОННОЙ МОДЕЛИ ЗНАНИЙ
1.1.1.
Актуальность продукционной модели знаний в
интеллектуальных системах
К интеллектуальным системам (ИС) относятся технические или
программные системы, в функционал которых входит решение задач для
конкретной
предметной
области,
которые
традиционно
считаются
творческими, знания о которых хранятся в памяти такой системы [72].
Творчество здесь понимается в широком смысле: это и функции оператора
технических устройств, в т.ч. транспортных средств, и принятие решений в
управляющих системах, и информационный поиск. В структуре ИС выделяют
интеллектуальный интерфейс, машину логического вывода и базу знаний. База
знаний является основой ИС, определяет ее принадлежность к конкретной
предметной области и возможность решать поставленные перед ИС задачи.
Знания могут представляться различными способами, как показано на
рисунке 1.1. Наиболее древним, но и наиболее широко применяющимся в
настоящее время, является представление знаний в виде естественноязыковых текстов. Поскольку тексты изначально ориентированы на человека,
для его восприятия не требуется подготовки. Недостатками текстового
представления знаний являются возможные неточность, неоднозначность и
противоречивость, а также сложность языковых конструкций и многообразие
языков, которые делают практически невозможным его использование в ИС в
качестве хранилища знаний. Кроме того, языковыми средствами сложно
описать геометрические фигуры, не говоря о более сложных графических
объектах, поэтому тексты снабжают иллюстрациями, которые также не могут
21
восприниматься компьютером. При этом текстовое представление знаний
остается единственным для многих логически строгих документов, таких, как
законы, договоры и др.
Рисунок 1.1 – Разновидности моделей знаний
Изображение как модель знаний обладает наглядностью, не зависит от
языка. Однако, такие изображения как чертежи, электрические схемы, карты и
др. требуют специальных знаний и навыков для их понимания. Кроме того,
такие изображения не обладают полнотой и всегда снабжаются легендой или
тестовыми пояснениями.
Полную противоположность естественно-языковому представлению
знаний составляет математическая либо другая символьная нотация. Формулы
отличаются предельной формализацией и независимостью от языка, однако
требуют
от
человека
специальной
подготовки
и
не
являются
машиночитаемыми. Кроме того, математическая нотация оперирует с
достаточно ограниченным набором переменных (латинские и греческие
символы) и операторов, что делает ее неприменимой для больших предметных
22
областей. Помимо математической существуют и другие нотации, в частности,
нотная запись, обладающая своими достоинствами и недостатками.
Формализация знаний в виде фреймов позволяет абстрагироваться от
грамматики и синтаксиса, но сохраняет зависимость от терминологии. Кроме
того, фреймовая структура диктует также ограниченность контекста заранее
заданными формами. Фреймы широко используются для формализации анкет,
платежных документов и т.п.
Семантические
сети
обладают
хорошей
наглядностью,
обуславливающую их применение для визуализации знаний. При этом в них
отсутствует универсальность, в частности, не отображаются отрицания и
дизъюнкции, а попытки их добавить приводят к существенной потере
наглядности.
Продукционная модель знаний в виде правил на основе импликации
вида ЕСЛИ А ТО B свободна большинства перечисленных недостатков.
Простота такого представления делает его понятным без специальной
подготовки, достаточно только знать особенности операции импликации (из B
не следует А и из ¬А не следует ¬В, но из ¬В следует ¬А).
Сравнение характеристик различных моделей знаний представлено в
таблице 1.1.
Достоинства
продукционной
модели
по
перечисленным
выше
критериям обеспечили их широкое распространение около 30 лет назад в
экспертных системах таких, как MYCIN, PROSPECTOR, DENDRAL и др.
Приведенное в начале параграфа определение ИС не оговаривает ее
масштаба. В отличие от теста Тьюринга, где наличие или отсутствие
искусственного интеллекта напрямую зависит от охватываемого им объема
знаний, здесь речь может идти о достаточно простых технических системах с
узким набором функций, несложными алгоритмами и, следовательно,
небольшой
базой
знаний.
Агентный
подход
получил
широкое
23
распространение именно вследствие узкого контекста, что позволило обойти
проблему экспоненциальной сложности поиска решений.
Таблица 1.1 – Характеристики моделей знаний
Естественный
язык
Символьная
нотация
Семантическая сеть
Продукционная
модель
Полнота
+
+
-
-
-
+
Понятность для человека
+
-
*
+
+
+
Точность
-
+
-
+
+
+
Универсальность
+
-
-
-
-
+
Широкий контекст
+
-
-
-
+
+
Однозначность
-
+
-
+
+
+
Непротиворечивость
-
+
-
*
*
*
Независимость от языка
-
+
+
*
*
+
Наглядность
*
-
+
+
+
+
Характеристики
Графика Фреймы
Постоянный рост производительности ЭВМ привел к тому, что в
последнее время стали появляться ИС большой размерности, базу знаний
которых составляют сотни тысяч и миллионы фактов. Среди них следует
упомянуть ResearchCyc, разработку компании Cycorp (www.cyc.com). Следует
отметить исследовательский характер данной ИС и отсутствие коммерческих
применений.
Кроме проекта Cyc можно отметить разработку ConceptNet, ведущуюся
в MIT, база знаний которой насчитывает более миллиона утверждений на
английском языке и еще базы знаний меньшего объема на девяти других
языках. Изначально ConceptNet позиционировалась как инструмент для
практического моделирования рассуждений над текстами на естественных
языках. Как и Cyc, ConceptNet используется на практике для аннотации
изображений и в задачах распознавания речи, но в силу высокой
чувствительности к контексту, ее применение для декларированных авторами
более сложных задач, в частности, смыслового расширения запросов к базам
24
знаний (query expansion) остается неясным. ConceptNet имеет Web-сервис
Open Mind Common Sense, запущенный в 2000г. и использующий около 14000
поставщиков Web-контента в стиле шаблонов предложений вида «The effect of
eating food is <...>» (Результат приема пищи это …), «A knife is used for <...>»
(Нож используется для …) и т.п. MIT также поддерживает проект ARIA
(Annotation and Retrieval Integration Agent) – программный агент для
автоматической иллюстрации сообщений электронной почты изображениями.
Еще один ресурс, предназначенный для смыслового расширения
запросов, WordNet, разрабатываемый начиная с 1985г. в Принстоне и
оптимизированный для лексической категоризации и определения схожести
слов, состоит из английских слов, организованных в 200 тыс. смысловых
единиц, и иерархических отношений типа «is a». В силу несложной структуры
и вытекающей из этого простоты использования, WordNet является более
успешным по сравнению с ConceptNet [73].
Практически все известные реализации интеллектуальных систем
являются антропоцентрическими и только ассистируют пользователю.
Например, в сервисе Open Mind Common Sense для предложения «A rocket can
<…>»
(ракета
может)
предлагается
несколько
десятков
вариантов,
ранжированных по семантической наполненности, например, hit, coach, land,
slam (поразить цель, наводить, приземляться, наносить удар) и т.д.
Более
чем
скромные
достижения
интеллектуальных
систем
по
сравнению с объемом вложенного труда обычно объясняются двумя
причинами: недостаточным числом знаний начального уровня в базе и
комбинаторной сложностью задачи логического вывода [74]. Действительно, в
отличие от экспертных систем, в которых количество фактов ограничено
возможностями диалога с пользователем или числом сенсоров в составе
встраиваемых ЭС, интеллектуальные системы нуждаются в большом
количестве фактов, которые должны храниться вместе с правилами. При этом
умозаключения в любой предметной области могут потребовать знаний из
25
других областей. М. Мински оценивает знания общего уровня на уровне 30-60
млн. понятий об окружающем мире.
В то же время, благодаря возросшей вычислительной мощности,
существующие
технические
и
информационные
системы
стали
интеллектуализироваться, т.е. принимать на себя творческие функции. К
таким системам можно отнести системы управления технологическими
процессами, включающие в себя подсистемы SCADA, в которых с помощью
интеллектуальных алгоритмов на основе продукционных правил выполняется
ранняя диагностика, позволяющая предотвращать выход управляемых систем
за пределы допустимых параметров или предотвращать аварии. Такие
системы широко используются в энергетике, трубопроводном транспорте, на
предприятиях нефтехимии и др.
Таким образом, продукционная модель знаний является наиболее
предпочтительной для построения интеллектуальных систем в силу полноты,
точности, универсальности, понятности для человека, возможности охвата
широкого контекста, наглядности и независимости от национального языка.
В связи с тем, что интеллектуальными могут быть даже несложные
функции, которые могут встраиваться в стиральные машины, пылесосы и т.п.,
необходимо
ограничить
область
применения
моделей
и
методов,
разрабатываемых в рамках настоящего исследования. Здесь и далее речь будет
идти об интеллектуальных системах большой размерности, где проблема
экспоненциальной сложности поиска решений выступает на первый план.
Интеллектуальной системой большой размерности будем называть ИС,
оперирующей с числом фактов, измеряемым миллионами. Для таких систем
существующие
неэффективными.
методы
ускорения
поиска
решений
являются
26
1.1.2.
Место проблемы ускорения поиска в создании
интеллектуальных систем на продукционной модели знаний
Понятие
комбинаторного
взрыва,
т.е.
экспоненциального
или
сверхэкспоненциального роста сложности решения от размерности входных
данных было знакомо исследователям задолго до появления компьютеров и
попыток их применения к решению задач поиска на дереве решений. Тем не
менее, в основу первых языков логического программирования, в частности
механизма вывода Пролога, был положен обратный логический вывод, от
консеквента к антецедентам с обходом дерева решений сначала в глубину.
Сложность обратного логического вывода Oo(G) для цели G может быть
определена следующей рекуррентной формулой:
RG Ci
Oo (G )  fG   Oo (i, j ),
i 1 j 1
(1.1)
где fG – число фактов, релевантных цели G, RG – число правил,
консеквент которых релевантен цели G, Ci – число условий в i-ом правиле,
Oo(i,j) – сложность резолюции подцели, порожденной j-ым условием i-го
правила. Заранее определить каждую из подцелей невозможно, поскольку они
формируются в момент подстановки переменных в консеквенты правил.
Процесс прямого логического вывода в отличие от обратного вывода
является предсказуемым, и его сложность Оп можно определить следующим
образом:
R Cr
Oп   f (i, j ),
i 1 j 1
(1.2)
где R – количество правил в базе знаний, f(i,j) – число фактов в базе
знаний, релевантных j-му условию j-го правила, Ci – число условий в i-ом
правиле. На уровне средних значений данную формулу можно упростить:
Oп  Rf C ,
(1.3)
27
где f – среднее число фактов, релевантных одному условию правила, С –
среднее число условий в правиле.
Рисунок 1.2 демонстрирует рост размерности дерева решений. Из
представленных данных видно, что возможности наивного вывода не выходят
за рамки однозначных чисел f и c, что соответствует очень простым задачам.
Несущественное ускорение наивного вывода обеспечивает механизм
отсечений в Прологе, который блокирует откат после неудачи и тем самым
позволяет устранять спуск по заведомо бесперспективным ветвям дерева
поиска в случаях, когда решение или единственное, или отсутствует вовсе.
Число вершин дерева поиска
10000000
1000000
c=2
100000
c=4
10000
c=6
1000
c=8
c=10
100
c=12
10
1
2
3
4
5
6
7
8
9
10
Среднее число фактов f
Рисунок 1.2 – Зависимость числа развертываемых вершин от числа
фактов f и числа условий правила с
Однако, использование отсечений, равно как и других аналогичных
приемов привели к тому, что Пролог, будучи анонсированным в качестве
декларативного языка программирования, по факту перестал быть таковым, а
программирование на Прологе стало скорее искусством, что подтверждается
такими изданиями, как широко известная книга Л. Стерлинга и Э Шапиро
[75].
28
Эвристические алгоритмы поиска на дереве решения позволяют
достаточно эффективно преодолевать комбинаторную сложность поиска,
возникающую за счет быстрого роста числа альтернатив. Однако для
успешного применения таких алгоритмов необходимо располагать оценками
перспективности каждой из вершин дерева поиска с точки зрения
продвижения к цели, что делает проблематичным применение эвристики,
созданной для одной задачи, к любым другим.
В качестве эталонной задачи для испытания методов ИИ уже в течение
полувека служит игра в шахматы. Самой мощной шахматной программой ХХ
века, которая победила Гарри Каспарова в 1997 году, являлась Deep Blue,
созданная на платформе суперкомпьютера в компании IBM. На соревнованиях
в 2002 году против Владимира Крамника выступила программа Deep Fritz, уже
на обычном персональном компьютере.
Опыт IBM подтверждает, что эвристические методы, успешно применявшиеся в шахматных программах, невозможно перенести на другие
предметные области. Показательно, что компания IBM объявила о том, что
методы, использованные в проекте Deep Blue, будут применяться при
решении
проблем
прогнозирования
очистки
местностей
погоды,
конструирования
автомобилей,
от
моделирования
разработки
токсичных
загрязнений,
финансовых
данных,
инновационных
методов
медикаментозной терапии1. Несмотря на данные заявления, вычислительный
комплекс Deep Blue после матча с Каспаровым был демонтирован, чего не
должно было произойти при наличии рыночных перспектив данного проекта.
В настоящее время компания IBM работает над проектом Watson, который
пока не имеет практического применения, но предположительно будет
использоваться
в
задачах
медицинской
онкологических заболеваний.
1
http://www.research.ibm.com/deepblue/learn/html/e.shtml
диагностики
и
лечения
29
Таким образом, выбор эвристик всегда является творческим процессом,
а эвристика, позволяющая успешно решить задачу, для которой она была
построена, не обладает свойством переносимости, а значит, является
бесполезной для других задач.
1.1.3.
Анализ существующих методов повышения эффективности
механизмов поиска в продукционных базах знаний большой
размерности
Наиболее известным методом ускорения резолюции правил является
алгоритм RETE, созданный Ч. Форджи в 1982 г. [76], [77] и используемый в
экспертных системах CLIPS, JESS, SOAR и др.
В основу алгоритма положено префиксное дерево, узлами которого
являются условия правил. В каждом узле префиксного дерева создается
список фактов из базы знаний, которые удовлетворяют условиям правила.
Когда факты добавляются в рабочую память, создаются элементы рабочей
памяти (WME – working memory elements). Каждый элемент рабочей памяти
может содержать один кортеж, или каждый факт может быть представлен
набором элементов рабочей памяти, где каждый элемент содержит кортеж
фиксированной длины, обычно триплет.
Узким местом алгоритма RETE является необходимость модификации
префиксного дерева при изменении, добавлении или удалении фактов базы
знаний. При каждой модификации базы фактов префиксное дерево должно
либо обновляться, либо строиться заново. Большинство модификаций
алгоритма RETE, например, Modify-in-place, Scaffolding, Decision Tree [78],
[79], нацелены именно на изменение префиксного дерева. Между тем,
модификация множества фактов происходит в системах ИИ постоянно,
поскольку каждое правило дает в качестве результата новые факты, которые
должны сразу же использоваться в ходе резолюции цели.
30
Ниже приведены результаты исследования быстродействия алгоритма
RETE, которое выполнялось автором совместно с Р.С. Катериненко в среде
редактора
онтологий
Protégé
OWL.
В
качестве
тестовой
нагрузки
использовалось правило
hasParent(?x, ?y) ∧ hasBrother(?y, ?z) → hasUncle(?x, ?z).
Факты hasFather и hasBrother были сгенерированы автоматически.
Снимок экрана с фрагментом базы знаний приведен на рисунке 1.3.
Рисунок 1.3 – Фрагмент базы знаний для тестирования быстродействия
алгоритма RETE
На
рисунке
1.4
приведены
результаты
выполненного
автором
экспериментального исследования быстродействия алгоритма RETE по
сравнению с наивным логическим выводом.
Измеренные значения времени обработки правил для алгоритма RETE
соответствуют первому прогону фактов через правило. Каждое последующее
обращение дает время, близкое к нулю, но любое изменение фактов,
используемых в правиле, приводит к необходимости полного перепостроения
префиксных деревьев.
31
100000
Время, с
10000
1000
Наивный поиск
100
RETE
10
1
5000
10000
15000
20000
Число фактов
Рисунок 1.4 – Быстродействие алгоритма RETE в сравнении с наивным
логическим выводом
В
пользовательском
интерфейсе
Protégé OWL
не
предусмотрен
автоматический контроль изменчивости базы фактов, а машина Jess
запускается вручную. Таким образом, время обработки правил можно считать
в допущении, что префиксные деревья всегда строятся заново.
Алгоритм TREAT предложен Д. Миранкером в 1987 г. в университете
штата Техас [80]. Интерпретатор в продукционных системах повторяет в
цикле следующие операции:
1. Сопоставление. Условия каждого правила сравнивается с текущей
рабочей памятью, в которой хранятся факты. Каждое подмножество
элементов рабочей памяти, удовлетворяющее условиям правила,
называется экземпляром (instantiation). Все экземпляры объединяются в
конфликтный набор (conflict set).
2. Отбор. Из конфликтного набора выбирается подмножество экземпляров,
удовлетворяющих определенному предварительно заданному критерию.
На практике одиночный экземпляр извлекается из конфликтного набора
на основе новизны фактов в рабочей памяти.
3. Действие. Выполнение действия в соответствии с результирующей
частью правила.
32
Обычно большая часть рабочей памяти продукционной системы
остается неизменной в течение цикла ее работы. Следовательно, для
продукционной системы оправдано инкрементное вычисление содержимого
конфликтного набора. Алгоритм RETE, рассмотренный выше, считается
наилучшим для решения этой проблемы. Тем не менее, в литературе нет
сравнительного анализа RETE с другими алгоритмами, но есть исследования,
показывающие, что механизм сохранения состояний в RETE может быть
неэффективным.
Алгоритм TREAT основывается на следующих двух наблюдениях.
Предположим, что в продукционной системе нет условий с отрицанием. Если
единственное действие в результирующей части правила – добавление нового
факта в рабочую память, то конфликтный набор остается неизменным за
исключением добавления новых экземпляров, содержащих этот новый факт.
Второе наблюдение: если единственное действие правила состоит в удалении
элемента рабочей памяти, то новые правила не создаются, а существующие
экземпляры, содержащие удаленные факты, становятся недействительными.
Суть
алгоритма
TREAT
состоит
в
использовании
указанных
наблюдений. Добавления в рабочую память могут быть использованы для
ограниченного поиска новых экземпляров. Удаления происходят путем
непосредственной
проверки
конфликтного
набора
и
удаления
всех
экземпляров, содержащих удаленный элемент рабочей памяти.
Исследования быстродействия алгоритма TREAT, проведенные в [80],
демонстрируют удвоенную скорость по сравнению с RETE на операциях
добавления и удаления фактов. Между тем, иллюстрации работы алгоритмов
RETE и TREAT наглядно демонстрируют, что в сущности оба этих алгоритма
предполагают хранение готовых наборов, которые остается только подставить
в условия правила.
Очевидно, что вместо готовых наборов фактов для подстановки в
условия правил можно непосредственно хранить результаты работы правил,
33
т.е. порождаемые ими факты. Скорее всего, данное представление будет к
тому же более компактным. Но при этом нерешенной останется проблема
изменчивости базы знаний, поскольку не будет сохраняться происхождение
порожденных фактов.
Превращению ИИ из объекта фундаментальных исследований в
прикладную инженерную задачу в значительной степени способствовал
подход, основанный на использовании интеллектуальных агентов. Основные
принципы агентного подхода впервые были изложены в книге Д.А. Поспелова
и В.Н. Пушкина [81], а затем сформулированы А. Ньюэллом и П.
Розенблумом [82]. М. Мински применил концепцию агентов к теории разума,
согласно которой разум – это коллекция полуавтономных, связанных друг с
другом агентов, каждый из которых разумом не обладает [83]. Агентный
подход был реализован в языке программирования ЛОГО и «черепашьей»
графике для ранних моделей персональных ЭВМ. Подход с использованием
агентов означает, что набор входных данных ограничивается возможностями
сенсоров и состоянием базы знаний, а решения должны приниматься даже в
условиях неполноты исходных данных и в реальном масштабе времени.
В определениях Г.С. Осипова2, а также В.Б. Тарасова [84] отмечаются
свойства обучаемости, активности, реактивности, социальности агентов.
Считается, что располагая ограниченным набором исходных данных,
интеллектуальный агент принципиально не может действовать идеально, т.е.
находить действительно наилучшие решения, но он может действовать
рационально, т.е. принимать верные решения, при условии, что система
обладает знаниями о том, что является правильным. Согласно определению,
сформулированному С. Расселом и П. Норвигом [4], для каждой возможной
последовательности актов восприятия рациональный агент должен выбрать
действие, которое, как ожидается, максимизирует его показатели произ-
2
http://www.raai.org/about/persons/osipov/pages/ai/ai.html
34
водительности,
с
учетом
фактов,
предоставленных
данной
после-
довательностью актов восприятия и всех встроенных знаний, которыми
обладает агент.
Информационную модель агента можно описать следующим образом:
S
M
E ,G
env 
 x 
 y 

 env ,
(1.4)
где env – среда, окружающая агента, информация x=S(env) о которой
доступна с помощью сенсоров S, y=M(x), – знания об окружающей среде,
формируемые с помощью модели M, E(y,G) – воздействие на среду (эффект)
для достижения цели G.
Таким образом, по мнению вышеупомянутых авторов, агентный подход
делает сложную проблему решаемой в ущерб качеству принимаемых
решений, поскольку агент не только не обладает полной информацией, но и не
располагает
вычислительными
ресурсами
для
обработки
сложными
алгоритмами всех входных данных, если бы такие данные были ему
предоставлены.
Однако можно легко представить множество ситуаций, в которых при
неполной информации задача имеет рациональное решение, в то время как
наличие полной информации приводит к практической невозможности
получения результата. Пусть система управления светофором располагает
полными данными об участниках дорожного движения: какие перевозятся
грузы, количество пассажиров в каждом автомобиле и автобусе, кто из них
опаздывает и какова цена опоздания, стоимость простоя транспорта и
последствия задержки доставки грузов, токсичность выхлопа каждой машины
и т.д. Наличие разнообразных данных здесь подразумевает необходимость
многокритериального
управления
светофором,
что
катастрофически
усложняет задачу и делает ее решение практически невозможным. В то же
время простейшие алгоритмы, встраиваемые в светофоры, поставленную
перед ними задачу решают удовлетворительно. Другой пример сознательного
35
ограничения контекста – организация военной службы, где с помощью
уставов
регламентируются
все
виды
взаимодействия
между
военнослужащими, что позволяет минимизировать ошибки в интерпретации
приказаний и максимально точно решать поставленные задачи.
Контекстный подход реализован в проекте Cyc компании CyCorp.
(www.cyc.com) в виде микротеорий, позволяющих сделать сепарабельным
процесс
создания
онтологий
и
избегать
противоречий,
неизбежно
возникающих при расширении базы знаний.
Таким образом, основным свойством агента можно считать его
существование в контексте, в рамках которого агент может действовать
рационально. Чем ýже контекст, тем меньше может быть база знаний агента и
проще функции агента. Ограничение контекста делает задачу построения
агента решаемой даже в сложных системах, причем ограниченность данных об
окружающем мире здесь является не недостатком, а преимуществом.
1.1.4.
Анализ существующих реализаций интеллектуальных систем с
позиции антропоморфного подхода
В середине прошлого века, когда только появились ЭВМ, позволяющие
обрабатывать символьные данные, в ИИ преобладал логический подход [85],
[86] на основе математической логики и исчисления предикатов. Скорость, с
которой человек делает умозаключения, невелика, и даже самые первые
компьютеры выполняли логические операции существенно быстрее. Видимо,
этим
обстоятельством
можно
объяснить
неоправданный
оптимизм
сторонников логической школы ИИ относительно сроков его практической
реализации. Современные компьютеры выполняют гораздо больше (в
миллиарды раз) логических операций в единицу времени, чем человек, но при
этом безнадежно проигрывают ему в скорости решения интеллектуальных
задач. Очевидно, что человек не в состоянии соревноваться с машиной в
скорости поиска на дереве решений и использует другие техники.
36
Если применить к искусственному интеллекту антропоморфный подход,
включающий
в
себя
триаду
«знания,
умения
и
навыки»,
хорошо
зарекомендовавший себя в сфере образования, то можно провести следующие
аналогии:
Знания – факты и правила, составляющие традиционную базу знаний в
продукционной модели.
Умения – машина вывода (reasoner, inference engine), программноаппаратные средства, обеспечивающие извлечение известных фактов и
порождение новых фактов путем применения правил.
Навыки для человека – действия, сформированные путем повторения и
доведения до автоматизма. В искусственном интеллекте аналогами навыков
могут считаться прецеденты, т.е. факты, выведенные из правил, а также
простые правила, синтезированные из цепочек правил (путем доказательства
теорем) и позволяющие получать результаты из известных фактов без
сложного поиска.
В таблице 1.2 представлены характеристики некоторых систем ИИ с
точки зрения знаний, умений и навыков, позволяющие констатировать факт:
успешными являются реализации, построенные целиком на навыках или
широко использующие навыки для получения результатов, а системы ИИ без
применения навыков находятся в стадии исследований или отдельных
частных задач.
Таблица 1.2 – Характеристики систем ИИ с точки зрения знаний, умений
и навыков
Проект
Знания
Игровые
программы
Правила игры
Умения
Эвристические
алгоритмы,
альфа-бета
отсечения
Навыки
Успешность
Базы дебютов,
партий лучших
Да
гроссмейстеро
в (шахматы)
37
Проект
Экспертные
системы
Нейронные сети
Логические
агенты
Знания
Факты,
полученные от
пользователя в
диалоге, и
правила
Обучающие
выборки
Данные от
сенсоров
Умения
Машина
вывода
продукционной
системы
Алгоритмы
обучения
Алгоритмы
поведения
Оптическое
распознавание
символов
Словари,
грамматики
Алгоритмы
обучения
Распознавание
речи
Словари
фонем, слов,
грамматики
Алгоритмы
распознавания
слов
Машинный
перевод
Словари,
грамматики
Алгоритмы
перевода
Интеллектуальные системы
Обширные
базы фактов и
правил
Машина
вывода с
алгоритмами
ускорения
Рассмотрим
те
же
разновидности
Навыки
Правила,
реализующие
связи внешних
проявлений с
гипотезами
Обученные
сети
Успешность
Нет
Да
Типовые образы символов,
шаблоны
предложений
Да
Типовые
сочетания слов
Распознавание
отдельных
слов
Нет
На уровне
отдельных
фраз
Нет
На уровне
отдельных
задач
систем
ИИ
в
Да
Да
пространстве
компетенций и контекста (рисунок 1.5). Направления развития ИИ, которые
можно считать успешными, отмечены заливкой.
Характер расположения существующих направлений ИИ в этом
пространстве позволяет выявить следующие закономерности:
1. Существуют реализации систем ИИ, действующих только на основе
знаний в ограниченном контексте.
2. Успешные направления ИИ находятся либо в области узкого
контекста либо в области преобладания навыков.
3. Существует крайне мало реализаций систем ИИ, основанных только
на навыках, но в широком контексте. В качестве одной из немногих
38
успешных реализаций такой системы можно привести IBM Watson
(http://www-03.ibm.com/innovation/us/watson/). Концепция Семантической паутины как раз и может заполнить этот пробел. Обширную
базу фактов Semantic Web в определенной степени можно
рассматривать как овеществленный опыт или навыки.
Широкий
контекст
Semantic Web
Машинный
перевод
IBM Watson
Интеллектуальные
системы
Распознавание речи
Распознавание текстов
Экспертные
системы
Узкий
контекст
Нейронные
сети
Навыки
Игровые
программы
Логические
агенты
Знания
Рисунок 1.5 – Характеристики систем с в пространстве узкий-широкий
контекст и знания-навыки
Таким образом, из вышесказанного можно сделать вывод, что подход к
созданию интеллектуальных систем с широким контекстом (универсальных
ИС) следует искать не на логическом подходе, а с применением механизма
интеллектуальных навыков. Необходимость воспроизведения навыков в ИС в
общем и целом недооценивается [87], [88]. Например, в работе Г.Н. Зверева
[89] информационная модель агента (объективированного субъекта) включает
в себя знания (информацию об объекте) и умения (сенсорный и рефорный
процессы, а также процессы оценки точности знаний и адекватности реакций
агента), но полностью отсутствует механизм навыков. Тем не менее, в ИИ
39
имеется
направление
исследований,
связанных
с
использованием
предыдущего опыта в новых ситуациях – вывод на основе прецедентов.
Вывод на основе прецедентов (case based reasoning, CBR) – это
абдуктивный подход к решению проблем, предложенный Р. Шанком [90], под
руководством которого было создано целое семейство реализаций ИС на этой
основе: CYRUS, MEDIATOR, PERSUADER, CHEF, JULIA, CASEY [91]. В
отличие от логического подхода, т.е. опоры исключительно на знания
предметной области или установления ассоциаций среди обобщенных
отношений между проблемами и их решениями, CBR позволяет применять
специфические знания о предыдущем опыте, содержащемся в конкретных
ситуациях. Новая проблема решается путем нахождения похожего случая в
прошлом и его использования в новой ситуации. Второе важное отличие
состоит в том, что CBR – это подход к решению проблем с постоянным
обучением, поскольку каждый раз, когда задача успешно решена, этот
результат (прецедент) немедленно становится доступным для решения
следующих проблем.
Привлекательность вывода на основе прецедентов для использования в
задачах искусственного интеллекта заключается в возможности устранения
экспоненциального роста сложности задачи поиска на дереве решений. Метод
CBR
приобрел
широкую
популярность
в
последние
годы,
о
чем
свидетельствуют многочисленные публикации, по этой тематике проводятся
ежегодные конференции International Conference on Case-based Reasoning
(ICCBR) (www.iccbr.org), появляются коммерческие программные продукты и
успешные приложения.
Разновидностью
CBR
следует
отнести
аппарат
искусственных
нейронных сетей, в которых вектора обучающего набора данных можно
считать прецедентами, а обученная нейронная сеть отвечает за выбор и
применение прецедента к конкретному случаю. Существуют реализации
экспертных систем, включающих нейронные сети как составную часть для
40
извлечения прецедентов, как например, в работе [92], посвященной созданию
системы диагностики отказов оборудования.
1.2.
КОНЦЕПТУАЛЬНАЯ МОДЕЛЬ ИНТЕЛЛЕКТУАЛЬНОЙ СИСТЕМЫ НА
ОСНОВЕ БАЗЫ ЗНАНИЙ БОЛЬШОЙ РАЗМЕРНОСТИ
1.2.1.
Принципы организации баз знаний с использованием
прецедентов
Интеллектуальная система, реализующая в себе механизм навыков в
виде прецедентов, должна в первую очередь пытаться найти готовое решение,
полученное в процессе обработки предыдущего идентичного запроса, и только
если прецедента не найдено, запускать машину вывода.
На рисунке 1.6 отображен алгоритм работы интеллектуальной системы,
воспроизводящей в себе прецедентную модель знаний и реализованной в виде
технологической платформы в программе Semantic [70]. В первую очередь
поиск выполняется среди ранее найденных решений (прецедентов) и только
если прецедента не найдено, запускается машина вывода, а найденное
решение пополняет базу прецедентов. Отсутствие решения чаще всего
означает,
что
предметная
область
(домен)
выбрана
неверно,
а
противоречивость результата является свидетельством слишком широкого
домена, и требуется его уточнение. В схеме данного алгоритма отсутствует
ветвь для ситуации, когда решение не может быть найдено. Решение в данной
ситуации должно приниматься отдельно для каждого объекта.
Создание интеллектуальной системы с использованием прецедентов
сопряжено с проблемами в части:
 создания прецедентов (необходимость ускорения логического
вывода);
 актуальности прецедентов в условиях изменчивой базы знаний;
 размещения и администрирования прецедентов;
41
 противоречивости фактов;
 открытого и замкнутого мира;
 формирования запросов к базе знаний.
Несмотря на то, что в работе интеллектуальной системы должны
преобладать обращения к прецедентам, чтобы прецеденты появились, их
нужно создать. Хотя прецеденты могут создаваться как эмпирические факты,
нормальным способом их создания следует считать запуск машины вывода,
вследствие
чего
ускорение
логического
вывода
остается
актуальной
проблемой, решению которой посвящена глава 3.
Начало
Запрос
или
вх.сигнал
Формирование
цели
Запуск машины
вывода
Определение
домена поиска
Расширение
домена поиска
Поиск
прецедента
Решение
есть?
нет
да
нет
Найден?
Уточнение
домена поиска
да
Противоречия есть?
да
Результат
или вых.
сигнал
нет
Вывод результата
или принятие
решения
Обновление базы
прецедентов
Конец
Рисунок 1.6 – Алгоритм поиска решений с использованием прецедентов
Приведенный
на
данном
рисунке
алгоритма
не
отражает
то
обстоятельство, что в условиях изменчивой базы знаний (изменения, удаления
или появления новых фактов) прецеденты могут устаревать, поэтому
42
требуется
контролировать
их
актуальность.
Контроль
актуальности
прецедентов может осуществляться в следующие моменты времени:
 при извлечении прецедента из базы знаний;
 периодически по расписанию;
 при появлении событий, которые делают прецеденты
неактуальными.
Подробнее методы управления прецедентами рассмотрены в п. 2.2.1, а
реализация и временные издержки на поддержание актуальности прецедентов
– в разд. 5.6.
1.2.2.
Модель машины вывода для баз знаний большой
размерности
Как показано в работах [34], [31], [58] и в п.1.2.6, Семантическая
паутина (Semantic Web), изначально задуманная как хранилище фактов,
доступных для поиска с помощью интеллектуальных агентов, теоретически
может стать базой знаний глобального искусственного интеллекта, доступного
для встроенных систем, которые изначально не могут опираться на мощную
локальную базу знаний, но имеют доступ к Интернет-ресурсам.
В отличие от логических агентов, рассмотренных в п.1.4.2, агенты для
Семантической
паутины
действуют
не
в
реальном,
а
виртуальном
формализованном пространстве и наряду с данными от сенсоров используют
контекст пользователя. Информационную модель такого агента можно
уточнить следующим образом:
G ,c
SW ,P
usr 
q 
 y 
 usr ,
(1.5)
где usr – пользователь, генерирующий цель, q(G,c) – запрос к базе
знаний, формируемый на основе цели G, дополненной контекстом с
пользователя, y(SW,P) – результат поиска в базе знаний SW и базе прецедентов
43
P. Контекст пользователя, необходимость которого объявлена в концепции
Семантической паутины [93], позволяет формулировать цель G пользователя в
сокращенной форме или полностью автоматически. База прецедентов P
обеспечивает быстрый доступ к ранее извлеченным фактам.
Таким образом, определяющим фактором для успешной реализации
интеллектуальных систем является овеществленный опыт интеллектуального
агента, сохраненный в виде прецедентов, который позволяет или извлекать
готовые факты из памяти или обходиться очень простыми рассуждениями, не
углубляясь в цепочки правил. Для этого база знаний системы искусственного
интеллекта должна быть дополнена базой прецедентов.
Упрощенная
схема
взаимодействия
интеллектуального
агента
с
Семантической паутиной изображена на рисунке 1.7. Если исключить
изображенные на схеме вторичные факты, то мы получим обычную
продукционную систему.
Идея включения прецедентов в базу знаний является достаточно
простой, но порождает сразу несколько проблем:
1. Проблема создания, размещения и администрирования прецедентов.
Объем базы прецедентов может быть достаточно большим, и
накопление фактов требует времени, а хранение и сопровождение –
вычислительных ресурсов.
2. Проблема актуальности базы прецедентов. Как отмечено в п.1.2.1,
вторичные
факты
могут
устаревать,
поэтому
необходимы
мероприятия по поддержанию базы прецедентов в актуальном
состоянии и процедуры валидации, позволяющие убедиться в
актуальности базы прецедентов.
44
Контекст
пользователя
Цели
OWL
Онтологии
(таксономия и
правила)
Интеллектуальный
агент
Решения
Первичные
факты
Вторичные факты
(прецеденты)
Рисунок 1.7 – Система Интеллектуальный агент – Semantic Web
Можно рассматривать следующие варианты решения первой проблемы:
Первый вариант (рисунок 1.8а). Прецеденты создаются на тех же
ресурсах, на которых хранятся первичные факты, и поддерживаются теми же
авторами. Этот вариант может быть реализован при соблюдении следующих
условий:
1. Все первичные факты и правила для вывода из них вторичных фактов
находятся либо на одном и том же ресурсе либо под контролем одних и
тех же авторов или администраторов (модераторов) ресурсов.
2. Модераторы
ресурса
постоянно
контролируют
и
поддерживают
актуальность прецедентов, хранящихся на данном ресурсе.
Преимущество данного варианта состоит в децентрализации процесса
создания
прецедентов,
и
как
следствие,
в
простоте
реализации
интеллектуальных агентов. Кроме того, авторы базы знаний владеют
информацией о том, какие первичные факты являются неизменными, какие –
являются актуальными ограниченное время. Однако перечисленные выше
условия соблюдаются далеко не всегда. В частности, в самой концепции
Семантической паутины предлагается создавать онтологии, общие для всех
45
ресурсов, релевантных предметной области, в качестве шаблонов для
идентификации сущностей, установления типовых свойств и связей, а также
для определения правил.
а)
б)
в)
Интеллектуальный агент
Интеллектуальный агент
Интеллектуальный агент
База
прецедентов
Сервер
прецедентов
База
прецедентов
База
прецедентов
База
знаний
База
знаний
База
знаний
Рисунок 1.8 – Варианты размещения базы прецедентов
В результате правила, применимые к фактам на конкретном ресурсе,
могут располагаться на других ресурсах и быть неизвестными владельцам
этого ресурса.
Второй вариант (рисунок 1.8б). Прецеденты создаются на компьютере
пользователя, и там же функционирует интеллектуальный агент. В этом
случае агент должен постоянно пополнять собственную базу фактов, т.е.
обучаться. Преимущество такого подхода состоит в том, что агент хранит
только факты, которые создавались в реальных запросах своего хозяина в
качестве цели и, возможно, промежуточных результатов. Таким образом,
агент формирует свой личный интеллект, адаптированный к пользователю,
которого
он
обслуживает. Зачатки такого
интеллекта демонстрирует
46
операционная система Windows в виде файла Cookies, в котором сохраняются
предпочтения пользователя.
Недостатком такого подхода можно считать длительность обучения
агента, которую невозможно спрогнозировать. Кроме того, агент мог бы
обучаться в свободное время, когда он не занят обслуживанием владельца, но,
к сожалению, он может это делать только в ходе резолюции целей, которые
пред ним ставят. Далее, прецеденты мало создать. Нужно контролировать их
актуальность и при необходимости удалять или заменять. Это означает, что с
определенной периодичностью все прецеденты нужно вычислять заново.
Кроме того, невозможно предсказать скорость реакции агента на ранних
этапах обучения. Вполне вероятно, что до момента получения первого
результата пройдут годы, т.е. обучение агента может быть сопоставимым с
обучением человека. Это также означает, что такой агент нельзя будет
приобрести, а только «вырастить» с нуля.
Наконец, если число экземпляров интеллектуальных агентов будет
измеряться миллионами, то это означает многократное повторение одних и
тех же процедур обучения.
Третий вариант (рисунок 1.8в). Интеллектуальный агент реализуется
на отдельных ресурсах аналогично тому, как работают современные
поисковые серверы (Google, Yahoo, Yandex и т.п.). Преимущества такого
подхода следующие:
1. Создание прецедентов выполняется один раз и в одном месте, а
использовать их могут все, в т.ч. мобильные клиенты, не располагающие
мощными вычислительными ресурсами.
2. Аналогично процессу индексации ресурсов Интернета поисковыми
серверами, процедуры сопровождения прецедентов могут выполняться в
часы низкой нагрузки.
3. Поисковый сервис, как и все облачные вычисления, может быть легко
коммерциализирован.
47
4. Возможность индексации фактов позволит оптимизировать запросы к
обширным базам прецедентов, а накопление статистики использования
вторичных фактов – состав прецедентов.
Последнее свойство нуждается в пояснении. Пусть цель G заключается в
правиле r(x0,y0) ← c1, c2, …, cn, имеющем n условий ci = pi(xi,yi), pi – предикат, xi
– субъект, yi – объект i-го условия правила, xi, yi=(var|const), i=(0,n). Каждому
ci предикату условия правила соответствует множество фактов Fi = {fi},
имеющее
мощность
Di = |Fi|.
Резолюция
цели
G
заключается
в
последовательном применении условий ci правила r к фактам Fi и
формировании множества векторов (x0,y0), удовлетворяющих всем условиям.
В зависимости от сочетания переменных или констант в условиях правила
мощность множества, образуемого обработкой двух условий ci и cj правила r
 | Fi Fj |, если xi  x j  yi  y j

Di , j   | Fi INNER JOIN Fj |, если xi  y j  yi  x j
 | F  F |, если x  x  y  y .
j
i
j
i
j
 i
(1.6)
Из приведенных здесь формул можно видеть, что в зависимости от
сочетания переменных мощность множества, образованного совместной
обработкой двух условий правила может быть в диапазоне от нуля (если Fi ∩
Fj = Ø) до декартова произведения. Очевидно, что декартово произведение
резко
увеличивает размерность задачи. Пусть имеется правило
для
определения отношения брат/сестра:
(? x ISA person  ? y ISA person  ? x has _ parent ? z 
? y has _ parent ? z  ? x differentFrom ? y)   ? x has _ sibling ? z 
Если в базе знаний имеется 1000 фактов типа (someone ISA person),
обработка первых двух условий правила даст декартово произведение,
мощность которого равна 1000000. Правда, в силу коммутативного свойства
правила, последующие условия (с третьего по пятое) сократят размерность
48
задачи, но общее число операций при обработке правила будет подчиняться
квадратичному закону. Модифицированное правило не будет порождать
декартовых произведений в промежуточных вычислениях, и максимальная
мощность множеств, порождаемых при обработке правил не будет превышать
1000:
(? x ISA person  ? x has _ parent ? z  ? y ISA person 
? x differentFrom ? y  ? y has _ parent ? z)   ? x has _ sibling ? z 
Такая модификация правила в общем случае требует наличия
информации о мощности множеств фактов, к которым это правило
применяется. Данное обстоятельство является еще одним аргументом в пользу
третьего варианта построения интеллектуального агента. Характеристики трех
вариантов размещения базы прецедентов представлены в таблице 1.2.
Таблица 1.2 – Характеристики вариантов размещения базы прецедентов
Вариант
Преимущества
Недостатки
1
 Децентрализация (простота  Необходимость
локального
создания агентов)
размещения
всех
фактов
предметной области
 Возможность
возложить
сопровождение прецедентов  Зависимость от множества
на авторов
авторов
2
 Возможность
создания  Длительное время обучения
персонального агента для
агента
каждого пользователя
 Большие
затраты
на
администрирование
 Многократное
дублирование
базы прецедентов
3
 Широкая доступность
 Простота
коммерциализации
 Возможность оптимизации
 Необходимость
капиталовложений
На рисунке 1.9 приведен упрощенный алгоритм работы сервера
прецедентов.
49
Начало
Интерпретация
запроса
Запрос
Поиск
прецедента
Найден?
нет
да
Проверка
актуальности
прецедента
да
База
прецедентов
Успешно?
нет
Удаление
прецедента
Поиск в базах
знаний
нет
База знаний
Найден?
да
Сохранение
прецедента
Результат
Конец
Рисунок 1.9 – Алгоритм работы сервера прецедентов
50
При поступлении запроса выполняется поиск в базе прецедентов. Если
прецедент найден, выполняется проверка его актуальности путем поиска
наличия в базах знаний фактов, которые использовались при создании
прецедента, и если актуальность подтверждается, то прецедент выдается в
качестве результата. В противном случае прецедент удаляется из базы и
выполняется поиск в базах знаний. Найденное решение сохраняется в качестве
прецедента.
В данном алгоритме реализуется метод управления прецедентами по
запросу. Возможны также методы управления прецедентами по расписанию и
по наступлению событий. Более подробно все три метода изложены в п. 2.2.1,
а их реализация и исследование быстродействия – в разд. 5.6.
1.3. ПЕРСПЕКТИВНЫЕ ИНТЕЛЛЕКТУАЛЬНЫЕ СИСТЕМЫ БОЛЬШОЙ
РАЗМЕРНОСТИ И ПОСТАНОВКА ПРОБЛЕМЫ ИССЛЕДОВАНИЯ
1.3.1. Структура и состав перспективных интеллектуальных систем
большой размерности
Примерами
современных
интеллектуальных
систем
большой
размерности могут служить системы оперативного управления сложными
производственными процессами на объектах промышленности, транспорта,
связи, энергетики и т.п., а одним из объектов, заслушивающих внимания
следует признать аэропорт, сложность которого как объекта управления
обусловлена следующими факторами:
 зависимость от множества внешних факторов, таких, как метеоусловия,
работа других аэропортов и наземного транспорта;
 непредсказуемость поведения пассажиров (опоздания на посадку и
отказы от полета после прохождения регистрации и т.п.);
 сложные технологические графики подготовки самолетов к вылету;
51
 динамический характер основной деятельности (оперативные замены
типов самолетов, объединения и отмены рейсов, чартерные программы).
Упрощенная схема функционирования центра оперативного управления
аэропортом представлена на рисунке 1.10.
Основной задачей центра оперативного управления (ЦОУ) является
организация работы оперативных служб аэропорта в условиях сбоев
суточного плана. Базу данных ЦОУ составляют суточный план полетов, база
штурманского обеспечения (картографическая информация, телеграммы
NOTAM об изменениях на аэродромах и др.), база штилевых заправок, база
метеоданных, технологические графики подготовки самолетов к вылету и др.
Наряду с базой данных ЦОУ использует в своей работе множество правил и
ограничений, относящихся к технологическим процессам обслуживания
прилетов и вылетов, управлению воздушным движением, обслуживанию
пассажиров и др.
База
расписаний
Другие
аэропорты
Авиакомпании
Изменения
плана
полетов
Служба
расписания
Внешние
события
Суточный план
полетов
Группа
контроля
технологического графика
Вылетные
телеграммы
Чартерная
программа
АДП
Служба
управления
суточным
планом
База метеоданных
Технологические графики
Группа
брифинга
База
штурманского
обеспечения
База штилевых
заправок
Служба
управления
возд.движ.
Дирекция по
наземному
обслуживанию
Служба
организации
перевозок
Рисунок 1.10 – Схема функционирования центра оперативного управления
В связи с тем, что ресурсы авиакомпаний (самолеты и экипажи) и
аэропорта (топливозаправщики, тягачи, автобусы, трапы, стоянки, багажные
52
транспортеры, зоны досмотра, паспортного контроля и т.п.) являются
ограниченными, задержка даже одного вылета или прилета может повлечь за
собой цепочку сбоев суточного плана. В таких случаях необходима его
оперативная
корректировка,
представляющая
собой
задачу
многокритериальной оптимизации в условиях недостаточной информации.
Использование механизма дедуктивного вывода из правил позволяет в
несложных случаях автоматически скорректировать суточный план полетов.
Однако в ситуациях массового сбоя суточного плана скорость поиска решений
не позволяет решать эту задачу в реальном масштабе времени, что
обуславливает необходимость привлечения к данной работе большого числа
специалистов в режиме круглосуточного дежурства. Между тем, имеется
возможность сохранять в виде прецедентов результаты предыдущих решений
и использовать их в последующем.
Еще одной из интеллектуальных систем большой размерности является
глобальная автоматизированная система бронирования (АСБ) авиаперевозок,
которая объединяет отдельные национальные и международные АСБ,
глобальные распределительные системы (ГРС), а также перевозчиков и
агентов. Комплекс технических средств глобальной АСБ составляют сотни
серверов на базе мэйнфрейм-компьютеров, сотни тысяч терминалов агентов и
многие миллионы Интернет-клиентов. Каждая АСБ обслуживает некоторое
множество авиакомпаний и осуществляет резервирование и продажу
авиабилетов для этих авиакомпаний. Однако далеко не всегда запрос клиента
может быть выполнен рейсами своих авиакомпаний, и требуется стыковка с
рейсами других авиакомпаний. Кроме того, существуют независимые
(нейтральные) агенты, которые в условиях конкуренции должны предлагать
клиенту наиболее приемлемые для него условия перевозки, для чего
необходимо обращаться к базам данных других АСБ в роли клиентов.
Наконец,
для
обеспечения
взаиморасчетов
используется
транспортно-
клиринговая палата (ТКП), поскольку продажа билетов осуществляется в
53
одном месте, а услуги предоставляются в другом месте или нескольких
местах.
На рисунке 1.11 показана схема организации резервирования и продаж
авиабилетов,
а
также
взаиморасчетов
в
гражданской
авиации
[94].
Информационную базу данных такой распределенной системы составляют
базы данных всех АСБ, которые содержат
 данные об авиакомпаниях, аэропортах, государствах, городах и
географических зонах;
 данные из расписания каждой авиакомпании;
 тарифы на авиаперевозки и сезоны;
 используемые в системе валюты и курсы валют;
 данные о наличии мест на каждый рейс, данные о каждом
бронировании и каждом проданном билете,
Нейтральные
агенты IATA
BSP
Нейтральные
агенты ARC
N
N
N
N
N
N
Нейтральные
агенты ТКП
N
N
ГРС
Амадеус
ГРС
Сэйбр
ГРС
Ворлдспан
ГРС
Галилео
BSP
IATA
АСБ
Габриэл
АСБ
Сэйбр В
АСБ
BABS
ARC
T
C
T
C
T
N
N
АРС СиренаТревел
Другие
АСБ
C
OAG
Зарубежные агенты
Агенты РФ и СНГ
ATCO
Мировые
перевозчики
Перевозчики России
и СНГ
T
СВВТ
ТКП
АСБ
Сирена
C
T
C
Рисунок 1.11 – Структура глобальной автоматизированной системы
бронирования авиаперевозок и взаиморасчетов на воздушном транспорте
54
а также большое количество дополнительных данных (время, требуемое для
перемещения из аэропорта в аэропорт или из терминала в терминал, категории
пассажиров, имеющие право на скидки, нормы бесплатного провоза багажа,
документы, необходимые для покупки билета и др.). Таким образом, процесс
бронирования авиаперевозок представляет собой задачу поиска на дереве
решений с коэффициентом ветвления порядка десятков или даже сотен (число
воздушных трасс из каждого аэропорта) на больших данных. В частности,
только авиационная распределительная система (АРС) «Сирена-Тревел»,
обслуживающая более 17 тыс. терминалов российских агентов, оперирует с
1,2 – 1,5 млн. мест в месяц [94]. При этом на время выполнения запросов
накладываются жесткие ограничения, обусловленные необходимостью не
только обеспечить онлайн режим бронирования, но и сократить длительность
блокировки
мест
во
время
выполнения
транзакций.
Степень
интеллекуализации такой системы ограничивается возможностями реализации
логического вывода в применением правил в диалоговом режиме.
1.3.2. Постановка проблемы исследования
Извлечение знаний в интеллектуальных системах на продукционной
модели знаний представляет собой задачу поиска на дереве решений,
имеющую сложность O(bd), где b – коэффициент ветвления, d – глубина
поиска. Данное обстоятельство обуславливает невозможность решения задач
реального мира методами обхода дерева.
Существующие решения либо ограничиваются узким контекстом, либо
не
используют
в
полной
мере
возможности
дедуктивного
вывода,
ограничиваясь простыми цепочками правил. В алгоритмах поиска решений
сложных
задач
поиска
обычно
используют
эвристики,
обладающие
существенным недостатком – уникальностью для каждой конкретной задачи,
что делает невозможным их применение в других предметных областях.
55
Требуется разработать теоретические и методологические основы
построения контекстно-независимых интеллектуальных систем, в которых
проблема экспоненциальной сложности решается на основе прецедентного
подхода с помощью воспроизведения механизма интеллектуальных навыков в
виде прецедентов – сохраненных результатов предыдущих рассуждений.
Пусть имеется интеллектуальная система <E,K>, где E – машина
вывода, K = <F,R> – продукционная база знаний, F ={f} – множество аксиом
(фактов), R = {r} – множество правил. Пользователь интеллектуальной
системы или объект управления описывается вектором <G, S, X, Z>, где G =
{g} – множество целей, S = {s} – множество состояний, X = {x} – контекст
пользователя или объекта, т.е. множество фактов, описывающих его
окружение, Z = {z} – множество решений. Функционирование ИС
заключается в нахождении решений d(g,s,X) как функции от состояния
объекта, текущей цели и имеющихся знаний об объекте и его окружении
(контексте).
Работа машины вывода состоит в установлении истинности фактов,
обуславливающих истинность цели, а управляющее воздействие должно быть
направлено на изменение состояния объекта s на s‘, соответствующее
поставленной цели. В том случае, если в базе знаний имеется готовое решение
z(g,s,X), извлечение его из базы знаний не представляет проблемы, а если
готового решения нет, требуется применение продукционных правил, т.е.
поиск на дереве решений, и сложность O(bd) работы машины вывода
становится экспоненциальной, где b – коэффициент ветвления (число фактов,
релевантных условию правила), d – глубина поиска, т.е. число условий в
правиле или глубина вложенности правил.
Для
преодоления
экспоненциальной
сложности
поиска
следует
минимизировать количество запусков машины вывода. Этого можно добиться
путем накопления готовых решений (прецедентов) z(g,s,X), сохраняя для
каждой цели g, контекста X и состояния s. Данный подход является аналогом
56
интеллектуальных навыков человека. Основной проблемой здесь является
возможная изменчивость, как объекта, так и контекстного окружения, что
сделает запомненные прецеденты неактуальными. В связи с этим требуется
разработать
методы
управления
прецедентами,
обеспечивающие
их
актуальность.
Так как прецеденты могут быть универсальными либо создаваться для
конкретного объекта и контекста, создание базы прецедентов может
потребовать длительного времени, а в условиях распределенной базы знаний
возникает
задача
размещения
прецедентов.
Прецеденты
могут
быть
приписаны либо к объекту (пользователю), к базе знаний, в которой они
созданы, либо к отдельному серверу прецедентов.
Поскольку создание прецедентов обеспечивается работой машины
логического вывода, необходимо также провести исследование и разработать
методы ускорения поиска на дереве решений.
В связи с тем, что извлечение знаний из Всемирной паутины становится
доступным для все более широкого круга приложений, в т.ч. мобильных,
возникает также проблема автоматической генерации запросов к ресурсам
Интернета, а также управление контекстом поиска.
Таким образом, решение перечисленных проблем создает теоретические
и методологические основы для построения интеллектуальных систем на
продукционной модели знаний, опирающихся на базы знаний большого
объема.
57
ВЫВОДЫ
1. В результате исследования выявлено противоречие, состоящее в том, что
количество интеллектуальных систем на продукционной модели знаний и
их размерность неуклонно возрастают, в то время как существующие
методы поиска развиваются в классических парадигмах восьмидесятыхдевяностых годов ХХ века, и они не могут обеспечить заданное качество
поиска (даже с использованием аппаратной поддержки), ограничиваясь его
ускорением на 2-3 порядка.
2. На основе проведенного анализа исследований в смежных областях
предложено применить прецедентный подход к организации логического
вывода с использованием механизма навыков, что должно обеспечить
ускорение логического поиска в базах знаний большой размерности при
более низких темпах роста сложности, чем у известных алгоритмов.
3. Все
существующие
подходы
к
ускорению
логического
вывода
представляют собой улучшение переборных методов и при этом они либо
игнорируют многомерность баз знаний или учитывают данное их свойство
лишь частично.
4. Сформулирована научная проблема: разработка систем искусственного
интеллекта на продукционной модели знаний, использующих более
быстрые, чем известные, методы логического поиска.
5. Разработана концептуальная модель интеллектуальной системы большой
размерности
на
продукционной
модели
знаний,
использующих
общесистемные и алгоритмические методы быстрого логического вывода в
хранилищах
знаний
большой
размерности,
отличается
учетом
многомерности пространства поиска, что позволяет сформулировать
требования к выбору состава методов ускорения логического вывода для
конкретных условий или приложений.
58
ГЛАВА 2. ОБЩЕСИСТЕМНЫЕ МЕТОДЫ ПОВЫШЕНИЯ
ЭФФЕКТИВНОСТИ ПОИСКА В БАЗАХ ЗНАНИЙ БОЛЬШОЙ
РАЗМЕРНОСТИ
2.1.
РЕДУКЦИЯ ДЕРЕВА РЕШЕНИЙ ПУТЕМ УСТРАНЕНИЯ ПОВТОРЯЮЩИХСЯ
ВЕТВЕЙ
2.1.1. Метод устранения повторяющихся ветвей в пределах одного дерева
решений
Пусть база знаний состоит из множества правил R, образующих цепочки
за счет того, что консеквенты одних правил присутствуют в антецедентах
других правил. Рассмотрим для этой базы знаний классическую задачу
неинформированного
поиска
методом
обратного
вывода
(back
chain
reasoning), сложность которой можно оценить следующим образом. Пусть r –
среднее количество правил, консеквенты которых релевантны запросу при
каждом обращении к базе знаний, n – среднее число условий (антецедентов) в
теле каждого правила, d – средняя глубина вложенности правил. Тогда дерево
поиска будет содержать N вершин:
d
N  r  rn  ( rn)2  ...  ( rn)d  r   ( rn)i .
i 1
(2.1)
Рисунок 2.1 отображает зависимость сложности дерева поиска от числа
правил и количества условий в правиле для числа предикатов в теле правила
n=6. Если скорость поиска считать равной 10000 правил в секунду, то время
полного обхода дерева для r=20, n=6 и d=6 составит 9,5 лет. При этом,
например, Гражданский Кодекс РФ насчитывает 1542 статьи по нескольку
пунктов в каждой. Таким образом, база знаний на основе ГК РФ будет
состоять из нескольких тысяч правил, и любой запрос на юридическую тему
будет обращаться ко всем этим правилам.
Поскольку сходные правила применяются для разных субъектов права,
агент может пытаться применить к конкретному случаю правила для
предпринимателей,
граждан
или
юридических
лиц,
относящиеся
к
59
внутреннему или международному праву. Следовательно, количество правил,
Время обхода дерева
поиска, час
релевантных запросу, может быть достаточно большим.
1E+04
d=2
1E+02
d=4
1E+00
d=6
1E-02
1E-04
1E-06
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Количество правил
Рисунок 2.1 – Зависимость времени обхода дерева поиска от количества
правил
Развертывание вершин дерева поиска на распределенных ресурсах
требует, чтобы эти ресурсы были найдены и загружены. В случае применения
алгоритма обхода дерева сначала вглубь требуется Q операций поиска,
которое может быть вычислено по формуле
Q  1  rn  ( rn)  ...  ( rn)
2
m 1
m 1
  ( rn)i .
i 0
(2.2)
Если использовать алгоритм поиска сначала в ширину, то количество
операций поиска будет равно глубине вложенности правил d, но потребуется
запоминать N-(rn)d (все, кроме последнего уровня) результатов поиска. Для
приведенного выше примера обхода дерева для r=20, n=6 и d=6 потребуется
около 25 терабайт при условии, что одна ссылка занимает 1кбайт памяти.
Таким образом, поиск путем простого перебора может оказаться очень
длительным и даже бесконечным.
В п.1.1.3 рассмотрены алгоритмы ускорения логического вывода,
базирующиеся на создании префиксных деревьев, состоящих из списков
фактов, релевантных условиям правил. При обращении к правилу остается
только подставить в него заранее отобранные факты. Если вместо этих фактов
60
хранить сразу результаты вывода из правил и использовать их как готовые
факты, скорость вывода будет радикально увеличена.
Применение прецедентов к задаче поиска может выглядеть следующим
образом [54]. Результаты успешного поиска могут сохраняться в виде фактов
и будут в дальнейшем доступными для быстрого доступа. Основная проблема
здесь – неизбежное накопление противоречивых фактов при изменении
контекста, которое влечет за собой необходимость их последующего поиска и
удаления в большом массиве накопленных фактов. Кроме того, требуется
отменять применение правил, на которых созданы такие факты. В противном
случае дерево решений станет только более разветвленным, и вместо
сокращения поиска будет иметь место его существенное усложнение.
Применение прецедентов имеет смысл даже внутри одной операции
поиска (кратковременная память). Рассмотрим в качестве примера известную
логическую игру «23 спички». Правила игры следующие: два игрока по
очереди берут из кучки одну, две или три спички. Проигрывает тот, кто берет
последнюю спичку. Ниже приведен фрагмент программы, разработанной
автором на языке Prolog и реализующий логику поиска решения в виде
рекурсивного вызова правила поиска хорошего хода [95]. Хороший ход – это
такой ход, после которого остается одна спичка. Если это невозможно, то
хороший ход – такой ход, после которого у противника нет хорошего хода.
% допустимые ходы
move(1). move(2). move(3).
% правило хорошего хода
% ход, сразу ведущий к выигрышу
good_move( X, M ) :- move(M), X – M = 1.
% если за один ход выиграть невозможно
good_move( X,M ) :move(M),
X1 is X-M,
not(good_move(X1,_)).
61
Рисунок 2.2 отображает фрагмент дерева поиска для промежуточного
состояния 6 спичек. Число в вершине означает количество оставшихся спичек,
дуги
–
ходы
игроков.
Полный
обход
данного
фрагмента
требует
развертывания 28 вершин. Пунктирами на графе обозначены повторяющиеся
фрагменты. Если запоминать результат первого обхода каждого из таких
фрагментов, это избавит от необходимости повторного углубления и сократит
число развертываемых вершин до 12 (выделены заливкой), т.е. более чем в два
раза.
6
5
4
3
2
3
2
1
1
1
2
2
1
1
4
1
3
2
3
2
1
1
1
2
1
1
1
1
Рисунок 2.2 – Обучение на повторяющихся фрагментах дерева поиска
Ниже приведен текст модифицированной программы на языке Prolog,
включающей вывод на основе прецедентов. Полужирным шрифтом отмечены
добавленные предикаты. Обновленная логика программы предусматривает
вначале поиск решения среди запомненных прецедентов, а если такого не
находится, то происходит спуск по дереву, а найденное решение запоминается
в базе прецедентов для использования при поиске на соседних ветвях дерева.
62
% допустимые ходы
move(1). move(2). move(3).
% правило хорошего хода – если есть прецедент
good_move( X, M ) :- precedent(X,M),!.
% если прецедента нет
% ход, сразу ведущий к выигрышу
good_move( X, M ) :- move(M), X – M = 1.
% если за один ход выиграть невозможно
good_move( X,M ) :move(M),
X1 is X-M,
not(good_move(X1,_)),
% добавление прецедента в базу прецедентов
assert(precedent(X,M)).
Полное дерево поиска для начального состояния 23 спички содержит
900140 вершин, а поиск до первого решения – 20009 вершин; в этом случае
запоминание промежуточных результатов сократит обход до 57 вершин или в
351 раз. База прецедентов для этой программы будет выглядеть следующим
образом:
precedent(2,1).
precedent(3,2).
precedent(4,3).
precedent(6,1).
precedent(7,2).
precedent(8,3).
…
precedent(10,1).
precedent(11,2).
precedent(12,3).
precedent(14,1).
precedent(15,2).
precedent(16,3).
Фактически эта база прецедентов содержит в себе выигрышную
стратегию игры, заключающуюся в том, что противнику нужно оставлять 1, 5,
9, 13, 17, 21 спичку. После создания базы прецедентов на всю глубину дерева
решений следующий вызов программы вообще не будет обращаться к дереву
решений. Заметим, что в тексте программы эта стратегия не присутствует, а
программа ее синтезирует самостоятельно.
Вывод на основе прецедентов может порождать большие объемы
вторичных фактов, доступ к которым также может увеличивать общее время
доступа к базе знаний. Пусть в базе знаний имеются F фактов с временем
63
извлечения одного факта tf и R цепочек правил с временем вывода tr. Тогда
среднее время доступа к базе знаний
T = p(f)·F·tf + (1 - p(f))·tr,
(2.3)
где p(f) – вероятность того, что искомый факт имеется в базе знаний, (1 p(f)) – вероятность того, что машина вывода будет обращаться к правилу. Для
простоты можно считать, что система обращается только к одному правилу.
При каждом выводе из правила машина вывода порождает B новых фактов,
которые пополняют базу знаний. Таким образом, при каждом последующем
обращении к базе знаний вероятность обнаружить прецедент без углубления в
цепочки правил постоянно увеличивается, а база вторичных фактов растет,
что тоже может увеличивать время доступа к базе знаний.
Рисунок 2.4. иллюстрирует динамику времени доступа к базе знаний при
p(f) = λF/(λF+R), где λ=Fr/F – доля релевантных фактов при обращении к базе
-6
знаний, R=1000, tf = 10 c, tr = 1000c, B =500. График демонстрирует, что
сначала время доступа к базе знаний падает за счет прямого извлечения
фактов вместо поиска в цепочках правил, затем растет вследствие резкого
увеличения объема базы фактов.
Время доступа, с
1000
100
λ=0.05
λ=0.1
10
λ=0.2
λ=0.4
1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Число циклов обращений к базе х100
Рисунок 2.4. Динамика времени доступа к базе знаний при росте числа
прецедентов
64
В данной гипотетической модели каждое обращение к правилу
генерирует фиксированное число вторичных фактов.
В реальных интеллектуальных системах можно ожидать резкого
увеличения числа вторичных фактов при первом вызове каждого правила за
счет сохранения промежуточных результатов при обработке цепочек правил,
что равносильно распространению комбинаторного взрыва в пространстве
вместо времени. Следовательно, при автоматическом сохранении вторичных
фактов во время обработки правил возникает задача сокращения базы
прецедентов, что является аналогом процесса забывания в человеческом
интеллекте.
Таким образом, при создании прецедентов в пределах одного дерева
поиска имеют место два процесса: редукция глубины дерева за счет замены
повторяющихся ветвей единичными узлами (прецедентами) и увеличение
ширины вследствие роста числа прецедентов.
2.1.2. Ускорение поиска при прямом и обратном логическом выводе
В предыдущем параграфе показано, что сохранение и применение
прецедентов в рамках одного поиска позволяет устранить повторение спуска
по повторяющимся фрагментам дерева поиска. Таким образом, экономия
времени здесь достигается за счет расхода памяти, и далеко не всегда
прецеденты могут быть записаны в такой компактной форме, как это сделано
в приведенном выше примере. Следует заметить, что в данном случае все
прецеденты используются как есть, т.е. не существует проблемы поиска
наиболее подходящего прецедента. Однако такая проблема возникает при
нечетком логическом выводе.
При прямом логическом выводе каждое правило порождает от 0 до bd
новых фактов, где b – число фактов релевантных одному условию правила
(коэффициент ветвления), d – число условий в правиле.
65
Пусть при прямом выводе из правила получены новые факты, которые
пополнили базу фактов. Следовательно, при следующем обращении к базе
знаний для извлечения данных фактов нет необходимости повторно
обрабатывать это правило. Однако, если новые факты будут релевантными
условиям правила (того же самого или любого другого), то потребуется
повторный поиск по всем правилам. При этом будут повторно порождены все
факты, полученные при предыдущем прогоне правил. Естественно, заранее
неизвестно, породит ли новый прогон правил новые факты, и сигналом к
окончанию процедуры прямого вывода может быть только отсутствие новых
фактов на выходе.
Таким
образом,
в
случае
вложенных
правил
запоминание
промежуточных фактов является необходимым, но не приводит к ускорению
вывода. Более того, для исключения многократного дублирования фактов при
каждом добавлении необходимо проверять, нет ли уже такого факта в базе.
Особенность прямого логического вывода состоит в том, что правила
применяются вслепую ко всем известным фактам, поскольку неизвестно,
приведет ли данное правило к цели или нет. Необходимость подставлять в
условия правил все возможные сочетания фактов обуславливает высокую
комбинаторную сложность прямого логического вывода и затраты памяти для
хранения всех промежуточных результатов. Позитивной стороной прямого
логического вывода является порождение всех возможных результатов, даже
если в данный момент требуется выяснить один единственный факт, и
следующий запрос будет выполнен очень быстро, если обратится к факту,
который уже выведен ранее.
Рассмотрим простое генеалогическое дерево (рисунок 2.5), на котором
двусторонние связи – супружеские, а односторонние – родительские.
Указанные связи являются первичными, а остальные – производными от них.
Каждый член семейства может иметь максимум три входящих связи (один
супруг и двое родителей, причем супружеская связь – одна на двоих).
66
M
1
F
1
M
3
M
2
M
4
M
5
F
2
M
6
F3
M
M
7
8
Рисунок 2.5 – Граф родственных отношений с первичными связями
Таким образом, верхний предел числа первичных связей Lp в
генеалогическом дереве равен Lp = 2,5N, где N – число членов семейства.
Дерево на рисунке 4.1 содержит 11 узлов и 17 связей из 27 возможных. Между
тем, в семье каждый связан с каждым родственными отношениями,
имеющими к тому же уникальные названия. Таким образом, общее число
родственных связей L = N(N-1) или для данного примера L =110 (рисунок 2.6).
Кроме того, между двумя узлами генеалогического дерева может
существовать более одной связи: X муж Y, X супруг Y, X близкий_родственник
Y, X родственник Y. Из сказанного следует, что количество порожденных
правилами фактов может быть очень большим, причем большинство
порожденных фактов скорее всего никогда не будут востребованы.
M
1
M
3
F
1
M
4
M
2
M
5
F3
F
2
M
6
M
M
7
8
Рисунок 2.6 – Граф родственных отношений с первичными и
вторичными фактами
67
При обратном логическом выводе целевое утверждение сопоставляется
с фактами и правилами базы знаний. Если найден факт, то цель достигнута,
иначе машина вывода начинает углубляться в правила. Как показано в п. 2.1.1,
порождение новых фактов в результате успешного применения правил на всех
уровнях вложенности последних позволяет значительно сокращать время
поиска на дереве решений, если дерево содержит повторяющиеся фрагменты.
Как и при прямом выводе, результаты поиска могут использоваться в
последующих запросах. В отличие от прямого вывода генерируются только
факты, которые были востребованы хотя бы один раз, следовательно, вывод на
основе прецедентов здесь не будет таким расточительным с точки зрения
памяти.
Таким
образом,
использование
прецедентов
является
более
предпочтительным при обратном логическом поиске, поскольку не требует
дополнительных мер по ограничению роста числа прецедентов.
2.2.
МЕТОДЫ ОРГАНИЗАЦИИ ПОИСКА В ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМАХ
БОЛЬШОЙ РАЗМЕРНОСТИ
2.2.1. Методы обеспечения актуальности прецедентов в изменчивых
базах знаний
Результаты логического вывода могут стать недействительными
(неполными, неактуальными или ложными) при изменении базы знаний,
заключающемся в удалении, появлении новых или изменении существующих
фактов. Следует отметить, что перечисленные случаи соответствуют, главным
образом, модели знаний экспертных систем, в которых факты являются
темпоральными или динамическими. В реальном мире следует различать
первичные факты, которые не могут ни исчезать, ни изменяться, и вторичные
факты, которые являются результатами умозаключений. Первичный факт
может быть удален только в случае, если выявлена его ошибочность.
68
Вторичный факт может стать ложным в случае появления фактов,
отрицающих его. Первичный факт соответствует некоторому событию, а
вторичный – состоянию. Состояния, которые являются неизменными, будем
называть аксиомами.
Таким образом, множество фактов F об окружающем мире можно
разделить на два подмножества:
F = {S, E},
(2.4)
где S = {s}, E = {e} – множества состояний и событий соответственно. Каждое
состояние st в момент времени t может быть или аксиомой (начальным
состоянием), если оно не может меняться, или результатом событий,
определяемым с помощью множества правил R={r}
R: ({st-1}, {et}) → st
(2.5)
исходя из состояний {st-1} в предыдущий момент времени и событий {et},
произошедших в момент t.
Эволюцию фактов в пространстве «состояния – события» иллюстрирует
рисунок 2.7. Прототипом такой модели базы знаний является бухгалтерский
учет, в котором состояния {s} соответствуют остаткам денежных средств на
счетах, материалов на складе и др., события {e} – первичным документам,
вызывающим движение по счетам. Моментальный снимок подмножества
состояний, упорядоченных определенным образом, составляет регистр
бухгалтерского учета.
Для того чтобы получить состояние какого-нибудь счета на текущий
момент, нужно либо провести все вычисления по документам от начального
состояния s0 до текущего дня t
et = f(s0, e1, e2, …, et-1),
либо просто взять данные из регистра.
(2.6)
69
Но, чтобы быть уверенным, что данные в регистре верные, необходимо
знать, что все документы проведены.
Таким образом,
1) все многообразие фактов в базах знаний состоит из множества
состояний S = {s} (моментальных снимков) и множества событий E =
{e}, обуславливающих переходы из одного состояния в другое с
помощью правил R = {r};
2) определение состояния объекта в произвольный момент времени
требует вычисления либо всех переходов от начального состояния до
текущего
путем
обработки
множества
событий
об
объекте,
предшествующих этому моменту, либо всех переходов от сохраненного
состояния до текущего момента;
3) запомненное текущее состояние объекта st является текущим до тех пор,
пока не произойдет событие et+1, изменяющее состояние данного
объекта.
Множество состояний в момент i
Si = {si}
Событие ei+1
Множество правил
R ={r}
Множество состояний в момент i+1
Si+1 = {si+1}
Событие ei+2
Множество правил
R ={r}
Множество состояний в момент i+2
Si+2 = {si+2}
Рисунок 2.7 – Эволюция фактов в пространстве «состояния – события»
70
Необходимым условием применимости такой модели базы знаний
является вычислимость каждого состояния si как функции от события ei и
состояния в предыдущий момент времени si-1:
si =θ(ei, si-1).
(2.7)
Пусть состояние si является функцией не только события ei и состояния
si-1, но и состояния si-2:
si =θ(ei, si-1, si-2).
a)
S1
1
б)
S3
e2
2
S1
e2
S21
1
1
S2
S1
(2.8)
e2
e3
S3
1
e3
S22
S3
S1
2
2
e2
e33
S3
2
Рисунок 2.8 – Декомпозиция состояний
Рисунок 2.8а иллюстрирует данную ситуацию. Здесь событие e2
приводит к состоянию s2 из двух возможных состояний s11 и s12, а событие e3 в
зависимости от предыдущего состояния s11 или s12 вызывает переход в
состояния s31 и s32. Вполне очевидно, что такая неоднозначность обусловлена
неудачным кодированием состояний. Достаточно подвергнуть состояние s2
декомпозиции на два состояния s21 и s22, как показано на рисунке 2.8б, чтобы
данную неоднозначность устранить.
Ниже приведена упрощенная схема базы знаний в пространстве
«состояния – события», допускающая создание универсальных правил для
71
обновления состояний при появлении новых событий. Определим состояния и
события Пролог-предикатами status и event соответственно:
status(<subject>, <predicate>, <object>, <date>).
event(<subject>, <event>, <date>).
Аргумент date в предикате status соответствует дате, начиная с
которой данное состояние является истинным. Для неизменных состояний эта
дата может быть любой; главное, чтобы она была раньше любого события в
базе знаний.
Определим также допустимые переходы из одного состояния в другое:
jmp(<class>, <event>, <oldstate>, <newstate>).
Предикат jmp определяет класс субъектов и события, к которым
применимы переходы из состояния oldstate в состояние newstate.
Например, для класса aircraft и состояния воздушного движения
(flightState) допустимыми являются следующие переходы:
jmp(aircraft, engineStart, flightState, parking, taxying).
Руление
Взлет
Набор высоты
Горизонт.
полет
Круг
Стоянка
Посадка
Снижение
Декомпозиция
состояния
«Посадка»
Парашютирование
Выравнивание
Планирование
Выдерживание
Пробег
Приземление
Рисунок 2.9 – Граф состояний воздушного судна
Задание
допустимых
переходов
помогает
систематизировать
знания
предметной области, как показано на рисунке 2.9, где приведен граф
72
состояний воздушного судна, на котором определены все возможные
состояния и все разрешенные переходы из одного состояния в другое.
Так, для состояния «Горизонтальный полет» единственно допустимым
является переход в состояние «Снижение», а для состояния «Круг» состояния «Посадка» и «Набор высоты». Все остальные переходы являются
запрещенными.
Начало
D=текущая
дата
Найти очередное
событие E на дату D
нет
Найдено?
да
Конец
Найти состояние S,
меняющееся на S1
событием E
Найдено?
нет
да
Удалить состояние S,
добавить состояние S1
Рисунок 2.10 – Блок-схема алгоритма обновления состояний событиями
текущего дня
73
На рисунке 2.10 показана блок-схема алгоритма, выполняющего поиск
всех событий на текущую дату и реализующего обновление всех состояний,
управляемых этими событиями, т.е. для которых имеется разрешенный
переход из исходного состояния в следующее.
Правила для обновления состояний выглядят следующим образом:
update_facts(Instance, Event, Date) :status(Instance, is_a, Class,_),
status(Instance, Predicate, CurrentStatus,_),
jmp(Class,Event,Predicate,CurrentStatus, NewStatus),
retractall(status(Instance, Predicate, _, _)),
assert(status(Instance,Predicate, NewStatus, Date)),
fail.
update_facts(_,_,_).
update_all :get_time(T),stamp_date_time(T,
date(Y,M,D,_,_,_,_,_,_),0),
event(Subject, Event, date(Y,M,D)),
update_facts(Subject, Event,date(Y,M,D)),
fail.
update_all.
Задание
цели
update_all
вызывает
обработку
всех
событий,
произошедших сегодня и обновление всех состояний, к которым эти события
относятся.
Таким образом, представление фактов в пространстве «состояния –
события» позволяет, во-первых, легко добавлять в базу новые первичные
факты (события) по мере их появления, во-вторых, достаточно просто
модифицировать
базу
вторичных
фактов
(состояний),
последующее
извлечение которых является такой же простой процедурой, как и обращение
к первичным фактам.
Формирование базы знаний в пространстве «состояния-события» с
использованием прецедентов влечет за собой проблему контроля актуальности
прецедентов в условиях изменчивости базы фактов. В данной работе
74
предлагаются три варианта организации контроля актуальности прецедентов,
как показано на рисунке 2.11:
1. В момент обращения к прецеденту выполняется поиск возможных
событий, изменяющих или отменяющих данный прецедент
(прецеденты, управляемые запросами, рисунок 2.11а).
2. Обновление всех прецедентов с определенной периодичностью
(прецеденты, управляемые расписанием, рисунок 2.11б).
3. В момент появления события выполняется поиск и обновление
всех
прецедентов,
относящихся
к
участникам
события
(прецеденты, управляемые событиями, рисунок 2.11в).
а)
б)
в)
Найти прецедент
Найти прецедент
Найти все события
после прецедента
Найти все
события после
обновления
Обработать
события
Обработать
события
Событие
Найти все
прецеденты
Обработать
событие
Обновить
прецедент
Выдать результат
Обновить
прецедент
Выдать результат
Обновить
прецеденты
Рисунок 2.11 – Алгоритмы управления прецедентами по запросу (а), по
расписанию (б) и по наступлению события (в)
75
Первый способ гарантирует актуальность прецедентов, но требует
дополнительных временных затрат при каждом обращении к любому
прецеденту.
Для этого выполняется обработка всех событий, произошедших с
момента создания прецедента, т.е. вместо всех событий от состояния s0
обрабатываются только часть, от состояния st-1, где t-1 – момент выполнения
предыдущего запроса. Чтобы это стало возможным, необходимо вместе с
прецедентом сохранять время его создания. Второй вариант, управление
прецедентами по расписанию имеет право на существование в тех случаях,
когда появлением новых фактов, изменением или удалением существующих в
промежутке между двумя обновлениям базы прецедентов можно пренебречь.
Первый вариант замедляет процесс извлечения фактов из базы знаний,
второй приводит к увеличению времени удаления фактов из базы. Если
изменчивость базы знаний невелика, то использование второго варианта
является оправданным, в противном случае целесообразно применять первый
вариант.
В связи с тем, что управление по расписанию не гарантирует
актуальности прецедентов, в дальнейшем ограничимся первым и третьим
способом:
1. Актуальность прецедента проверяется при каждом обращении к
нему. В этом случае с прецедентом должны быть сопоставлены
все факты, на основе которых он был получен. Триплет ff
прецедента
может
быть
представлен
следующим
образом:
ff(s, p, o, n, L), где n – идентификатор прецедента, L – список
идентификаторов
первичных
фактов,
связанных
с
данным
прецедентом.
2. При удалении каждого первичного факта удаляются все связанные
с ним прецеденты. Для этого необходимо сканировать списки L во
76
всех прецедентах. Очевидно, что такой подход может привести к
большим временным затратам. Решение может заключаться в
создании для каждого i–го первичного факта индекса в виде
x(i, Ni), где i – идентификатор факта, Ni – множество связанных с i–
м фактом прецедентов. В таком случае при удалении i–го
первичного факта необходимо удалить множество Ni вторичных
фактов.
При первом подходе среднее время t1 извлечения прецедента с
тестированием его актуальности определяется формулой
t1 = ½ η |P| + ½ ηm|F| = ½ η(|P| + m|F|),
(2.9)
где η – время извлечения одного факта, P – множество прецедентов, m –
среднее число первичных фактов, использованных при выводе прецедента.
При втором подходе среднее время t2 извлечения прецедента
t2 = ½ η|P|,
(2.10)
а среднее время td удаления прецедентов для каждого удаляемого первичного
факта потребует полного сканирования всей базы прецедентов и составит
td = η|P|.
(2.11)
Как видно из приведенных формул, время обращения к базе прецедентов
может существенно отличаться от времени извлечения первичного факта, но
при увеличении размера базы знаний время растет линейно, а не
экспоненциально.
Если в условии правила присутствуют вызовы других правил,
применение прецедентов позволяет устранить вложенность правил и
существенно сократить время обработки правила. Среднее время tc создания
одного прецедента
1
tc   | F |k | P |n ,
2
(2.12)
77
где k – среднее число условий правила, унифицируемых фактами, n –
среднее число условий правила, унифицируемых консеквентами других
правил. Здесь имеет место степенная зависимость времени вывода вторичного
факта от числа условий в правиле.
Таким образом, в изменчивых базах знаний актуальность прецедентов
может контролироваться либо при обращении к каждому прецеденту, либо
при каждом обновлении базы фактов. В обоих случаях имеет место
полиномиальная сложность извлечения прецедентов.
2.2.2. Метод управления контекстом при поиске в базах знаний
большой размерности
Извлечение знаний из конкретного документа, созданного на основе
известной онтологии, практически ничем не отличается от обработки SQLзапросов к БД. Если же конкретный документ не определен, возникает
проблема его поиска. Поиск с помощью серверов, ориентированных на
человека (Google, Yahoo, Yandex и др.), бесполезен, поскольку теги HTML и
любой другой разметки не индексируются. В последнее время появился ряд
сервисов,
таких,
как
SWOOGLE
(http://swoogle.umbc.edu/),
SWSE
(http://swse.org/) и др., позволяющих осуществлять поиск формализованных
данных. Необходимость извлечения документов интеллектуальным агентом, в
т.ч. с использованием таких поисковых сервисов делает актуальной задачу
автоматической оценки релевантности найденных документов запросу.
Каждый документ определен на некотором контексте, который должен
быть понятен читателю документа. Если название документа не полностью
определяет контекст, то контекст уточняется во вводной части. В лингвистике
контекст есть фрагмент текста минус определяемая единица [96]. Таким
образом, контекст ξ(m) для сообщения m устанавливается как ξ(m) = <C, L, P,
I, V>–m, где C – множество классов объектов, L – множество отношений или
78
предикатов (связей) между объектами, P – множество свойств объектов, I –
множество экземпляров объектов, V – множество значений. Следовательно,
для каждого следующего mi+1 сообщения предыдущее сообщение mi
включается в состав контекста: ξ(mi+1) = ξ(mi-1) +mi.
Данное определение является антропоморфным, ориентировано на
речевое взаимодействие и предполагает, что субъект и объект такого
взаимодействия
обладают
интеллектом
и
могут
идентифицировать
(установить) контекст для каждого коммуникационного акта. В случае
информационного поиска установление контекста может быть простым
только для локальных БЗ, как, например, это делается с помощью
микротеорий в продукте ResearchCyc компании Cycorp (www.cyc.com). Автор
запроса к БЗ должен знать, каким образом факты в базе знаний группируются
в
микротеории,
и
эксплицитно
указывать
микротеорию
в
запросе.
Необходимость владения микротеориями, идентификаторами элементов БЗ, а
также специальным языком запросов делает взаимодействие с такой БЗ
подобным работе с базой данных, которая доступна только для программиста,
а не конечного пользователя.
Таким образом, в данной работе под контекстом
, где U –
универсум, мы будем понимать множество понятий предметной области D,
устанавливаемое
между
участниками
информационного
обмена
и
позволяющее обмениваться короткими сообщениями. Другое назначение
контекста – ограничение предметной области, позволяющее сократить
размерность задачи поиска и избежать противоречивости фактов. Обычно
контекст устанавливается в начале коммуникационного акта путем его
краткого описания, которое при необходимости может уточняться. Таким
образом, для правильной интерпретации сообщений все участники обмена
информацией должны владеть контекстом. Визуализация знаний также
требует использования контекста, как это сделано, в частности, в
79
разработанной автором программе Semantic, предназначенной для создания
БЗ, извлечения и визуализации знаний.
В концепции Семантической паутины (Semantic Web) извлечение знаний
возлагается на интеллектуальные агенты. Агент самостоятельно отыскивает
требуемую информацию, формулируя при необходимости запросы к другим
агентам. В отличие от SQL-запросов к БД (SELECT … FROM … WHERE …)
запросы к БЗ, в частности, на языке SPARQL не содержат конструкции FROM,
поскольку запрос всегда выполняется в пределах целого документа. Поиск же
документа должен выполняться по контексту запроса. Это означает, что
извлечение
фактов
из
Семантической
паутины
представляет
собой
двухфазный процесс, показанный на рисунке 2.12. Поскольку точное
совпадение контекста документа и контекста запроса является идеальным
случаем, данный процесс не всегда завершается успешно и может итеративно
повторяться.
Поиск и извлечение
документов
Контекст
запроса
Пользователь или
агент
Запрос
Документы
Поиск и извлечение
фактов
Результат
Факты
Рисунок 2.12 – Процесс извлечения фактов из Семантической паутины
На рисунке 2.13 показаны все возможные сочетания контекста запроса Q
и контекста предметной области (домена) D:
A. запрос породил набор фактов, ни один из которых не является
релевантным (отсутствие решений);
80
B. найдена часть релевантных
фактов и некоторое количество
нерелевантных (решение есть, но оно не полно и противоречиво);
C. найдены все релевантные факты и часть нерелевантных (решение
полное, но противоречивое);
D. найдена часть релевантных фактов и при этом нет нерелевантных
(решение непротиворечивое, но неполное);
E. найдены все релевантные факты и ни одного нерелевантного
(целевое состояние: решение полное и непротиворечивое).
A
Контекст
запроса
B
D
C
Контекст
домена
Контекст
запроса
Контекст домена
Контекст
запроса
Контекст
домена
Контекст запроса
Контекст
домена
E
Контекст запроса
=
контекст домена
Рисунок 2.13 – Множество сочетаний контекста запроса и контекста
домена
В таблице 2.1 приведены условия появления данных сочетаний и
признаки, с помощью которых можно идентифицировать каждое из
состояний. Если запрос не привел к состоянию E, его следует изменить.
Ограничим модификации запросов двумя операциями: x – обобщение запроса
(расширение контекста) и y – уточнение запроса (сужение контекста).
81
Таблица 2.1 – Условия появления сочетаний признаков
Ид.
Решение
Условие
Наличие Полнота Противоречивость
Q
D
A
0
0
0
B
1
0
1
C
1
1
1
QD
D
1
0
0
QD
E
1
1
0
QD
Q
D   &Q
D Q
D
Граф на рисунке 2.14 отображает конечный автомат, в котором
разрешенными являются только переходы, приближающие к целевому
состоянию E (не отдаляющие от E).
x
x
A
x
B
x
x
D
y
x
y
E
y
C
y
Рисунок 2.14 – Конечный автомат поиска решения
Расширение пространства поиска может привести к увеличению
времени извлечения фактов за счет применения правил, и это обстоятельство
требует исследования, результаты которого изложены в разд. 4.3.
Таким образом, в результате проведенного исследования разработан
метод управления контекстом поиска в распределенных базах знаний большой
82
размерности, позволяющий за счет использования ограниченного набора
операций находить решения, обладающие полнотой и непротиворечивостью.
2.3. МЕТОДЫ СОЗДАНИЯ ПРЕЦЕДЕНТОВ МЕТОДОМ СЛУЧАЙНЫХ БЛУЖДАНИЙ С
ИСПОЛЬЗОВАНИЕМ МНОЖЕСТВА АГЕНТОВ
2.3.1. Исследование мультиагентного подхода и метода случайных
блужданий в задаче поиска
Мультиагентные
искусственного
системы
интеллекта,
как
–
достаточно
и
агентный
молодое
подход,
направление
послуживший
своеобразным катализатором становления искусственного интеллекта как
прикладной науки в последние 15 лет [4]. В этом направлении ведут
исследования А. Энгельбрехт [97], В.Б. Тарасов [87], Б.К. Лебедев [98], В.И.
Городецкий [99] и многие другие. Раньше других многоагентные системы
рассматривали в своей книге [81] Д.А. Поспелов и В.Н. Пушкин (в отсутствие
термина «агент» они называли их автоматами).
Мультиагентные системы базируются на следующих принципах [100]:
 Автономность. Агенты, по меньшей мере, частично, автономны.
 Локальность. Ни один из агентов не обладает полной информацией о
системе, либо система является слишком сложной, чтобы агент мог
практически использовать такие знания.
 Децентрализация. Не существует агента, управляющего другими
агентами. В противном случае система становится одноагентной.
Роевой интеллект (swarm intelligence) – это область знаний, возникшая
из биологических исследований, и которая быстро проникла в компьютерные
технологии. Построение математических моделей коллективного поведения
социальных насекомых, таких, как пчелы или муравьи, позволяет понять, как
можно использовать их в решении оптимизационных задач.
83
Исследование социально-сетевой структуры роя позволяет выяснить,
как отдельные особи обмениваются информацией и как агрегированное
поведение
отдельных
экземпляров
формирует
мощный
организм.
Компьютерный роевой интеллект находит свое отражение в методах
эволюционного программирования, эволюционных стратегиях, генетических
алгоритмах. Наблюдение согласованных движений птиц в стаях стало основой
создания методов оптимизации частиц роя (particle swarm optimization). На
основе поведения муравьев были реализованы алгоритмы оптимизации
муравейника (ant colony optimization), структурной оптимизации, анализа
данных (data mining) и кластеризации данных [97].
Наблюдение
за
поведением
представителей
живой
природы,
объединяющихся в колонии, показывает, что целью объединения обычно
является не защита от хищников. Наоборот, муравьи в муравейнике более
уязвимы
вследствие
высокой
скученности.
Коллективное
поведение
обеспечивает лучшие условия жизни для каждой особи за счет разделения
труда (если этот слово «труд» применимо к животным или насекомым). При
этом интеллект отдельного экземпляра колонии или роя невелик, но рой в
целом демонстрирует высокую организацию и результаты, недостижимые
даже для представителей фауны, находящихся на более высоких уровнях
развития.
Данное свойство коллективного поведения насекомых и животных
напоминает определение разума, предложенное Марвином Мински, как
совокупность полуавтономных агентов, взаимодействующих друг с другом и
по отдельности не обладающих разумом [83]. Подобно тому, как отдельные
группы нейронов в мозгу человека, обученные на решение частных задач,
самоорганизуются в один мощный интеллект, участники роя поступают
аналогичным образом.
П. Норвиг и С. Рассел упоминают метод случайного восхождения к
цели, как один из возможных путей решения задачи поиска [4]. Чаще всего
84
случайный поиск используют для нахождения глобального максимума
многомерной функции. Правда, там речь идет о поиске с откликом, т.е.
информированном поиске, при котором имеется эвристика, позволяющая на
каждом шаге оценивать степень близости к цели. В работе [101] доказано, что
случайный поиск приблизительно в три раза уступает в скорости симплексметодам. Разновидностью случайного поиска является мультистарт, в котором
начальная точка выбирается произвольно, а затем из нее делается локальный
градиентный спуск [102].
Рассмотрим, можно ли применить метод случайного поиска при полном
отсутствии информации о близости к цели (неинформированный поиск).
Вероятность p достижения цели при однократном случайном перемещении по
дереву поиска на величину средней глубины дерева вычисляется просто:
p = 1/ bd,
(2.13)
где b – коэффициент ветвления дерева поиска, d – средняя глубина
дерева. Среднее число попыток A до первого достижения цели при
равномерном распределении вероятностей ветвления в каждой ветви дерева
bd
bd
A   p(1  p ) i  
i 1
i 1
i 1
1
1 i 1
(1

) i.
bd
bd
(2.14)
В качестве объекта исследования рассмотрим транспортную сеть (рис.
2.15) размерностью N×N, состоящую из узлов и дуг, где узлы соответствуют
перекресткам, а дуги – улицам. Участники движения (агенты) совершают
поездки из одного узла в другой. Нахождение оптимального маршрута требует
знания взаимного положения узлов и дорожной обстановки. В противном
случае размерность задачи поиска не позволит решить ее в разумные сроки.
Длительность поиска
методом сначала в ширину определяется
формулой
T = tbd,
(2.15)
85
Рисунок 2.15 – Топология сети для исследования скорости поиска
маршрутов
где t – время развертывания одного узла, b – коэффициент ветвления, d –
глубина поиска (средняя длина маршрута). На рис. 2.14 показаны результаты
измерения среднего времени T поиска маршрута в сети от размерности
транспортной сети N методом поиска сначала в ширину, реализованного в
программе на языке Prolog (сплошная линия). Для вычисления времени T по
формуле (2.15) необходимо располагать значениями t, b и d. Средняя
протяженность оптимального маршрута (глубина поиска) для данной
топологии сети равна 2N/3, а коэффициент ветвления b = 2 при N=2 и b → 3
при N → ∞. Величину t можно определить только экспериментальным путем.
Однако подобрать t для формулы (2.15) не удалось, а для результатов
натурных экспериментов была найдена аппроксимирующая функция
TN = tb2N,
(2.16)
где время развертывания одного узла t = 0,15·10-5 подобрано для конкретного
компьютера, на котором проводились измерения. Рис. 2.16 демонстрирует
качество аппроксимации с помощью формулы (2.16) в сравнении и
экспериментальными данными. Подстановка в формулу (2.16) значения
размерности сети N=10 даст среднее время поиска около 1,5 часов, что
неприемлемо для большинства применений.
86
1000
100
Время, с
10
1
0,1
3
4
5
6
7
8
9
Эксперимент
0,01
Ожидаемые
значения
0,001
0,0001
Размерность сети N
Рисунок 2.16 – Зависимость времени поиска сначала в ширину от
размерности сети
Теперь найдем сложность поиска методом случайных блужданий в
сравнении с поиском сначала в ширину. Среднее число развертываемых
вершин дерева поиска сначала в ширину Vb определяется следующим образом:
Vb = bd/2.
Среднее число развертываемых
вершин для
(2.17)
метода случайных
блужданий Vr, исходя из формулы (2.14) будет равно
bd
Vr  dA  d 
i 1
1
1
(1  d )i 1 i.
d
b
b
(2.18)
На рис. 2.17 приведено сравнение числа развертываемых вершин при
случайном поиске в сравнении с поиском сначала в ширину. Как и ожидалось,
случайные блуждания без устранения повторного посещения вершин дают
существенно большее число развертываемых вершин до первого достижений
цели, что делает такой подход совершенно бесперспективным. При этом
средняя глубина d для поиска сначала в ширину равна 2/3N, в то время как при
случайных блужданиях глубина должна быть равна длине самого длинного
маршрута, иначе цель может вообще не быть достигнута.
87
Число развертываемых вершин V
100000000
10000000
1000000
100000
10000
Поиск в ширину
Случайный поиск
1000
100
10
1
N=3
N=4
N=5
N=6
N=7
N=8
Размерность сети N
Рисунок 2.17 – Сравнение сложности методов поиска в ширину и случайного
поиска без устранения повторного посещения вершин
Таким образом, мы получили вполне закономерный результат: при
случайных блужданиях найти кратчайший маршрут практически невозможно,
а даже найденный маршрут, скорее всего, кратчайшим не будет. Он всего
лишь
уложится
в
заданное
ограничение,
в
данном
случае
равное
манхэттенскому расстоянию по диагонали сети.
Если не стремиться к нахождению кратчайшего пути, то агент может
продолжать блуждание до бесконечности. В этом случае, при каждом шаге от
текущей точки к следующей с вероятностью p цель будет достигнута:
p
1
,
N 1
2
(2.19)
а среднее число L пройденных дуг до цели составит


L  ip(1  p)i1  i
i 1
i 1
1
1 i1
(1

) .
N 2 1
N 2 1
(2.14)
88
Очевидно, что при таком методе возможны многократные повторения
движения по одним и тем же участкам сети (петли), но при этом, рано или
поздно, агент достигнет цели.
Если агент запоминает уже пройденные узлы, то он сможет избегать их
повторного посещения. Правда, в этом режиме возможны тупиковые
ситуации, при попадании в которые поиск должен начинаться заново. Средний
путь до цели L1 для такой разновидности поиска будет равен
L1 
N 2 1
 i(1
i 1
i
N i
2
i
) (1 
j 1
1
).
N j
2
(2.20)
На рис. 2.18 показаны расчетные зависимости средней длины маршрута
при случайном поиске и поиске в ширину, а также сложности поиска в
Число развертываемых вершин
ширину (числа развертываемых вершин) от размерности сети.
100000000
10000000
Длина случайного
маршрута
1000000
Сложность поиска в
ширину
100000
Длина опт.маршрута
10000
1000
100
10
1
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
Размерность сети N
Рисунок 2.18 – Сравнение поиска в ширину и метода случайных
блужданий
Средняя длина маршрута при случайном поиске рассчитывалась по
формуле (2.20). Приведенные здесь данные показывают, что длина маршрута
89
при случайном поиске отличается от оптимальной длины в большую сторону
приблизительно на порядок, но сложность случайного поиска на 3 - 7
порядков ниже поиска путем перебора.
Причина такой экономии состоит в том, что при случайном поиске
отсутствует цель, и любой маршрут считается успешным, если только не
совпадает с ранее проложенным. Разумеется, в некоторых случаях стоимость
расчета кратчайшего пути соизмерима со стоимостью перемещения по этому
пути, что имеет место, например, в сетях передачи данных.
Но и здесь рассматривать случайный поиск как практически значимый
было бы можно, если бы не было эффективных алгоритмов маршрутизации, в
частности, адаптивный централизованный алгоритм (Routing Control Center,
RCC) или дистанционно-векторный алгоритм (Distance Vector Routing) [103].
Очевидно, что десятикратное превышение длин маршрутов по сравнению с
оптимальными нельзя признать приемлемым. Улучшить ситуацию может
только многократное прокладывание маршрутов с сохранением наилучших
решение, т.е. обучение агента.
Если при случайных блужданиях агент вправе на каждом шаге выбирать
любое направление, то возможны заведомо маршруты неэффективные,
например, как показано на рис. 2.19.
Рисунок 2.19 – Пример нерационального маршрута при случайном
поиске
90
Для устранения таких неэффективных маршрутов интеллект агентов
можно усилить, добавив запоминание исходного направления и запретив при
случайных
блужданиях
движение,
противоположное
первоначально
выбранному (алгоритм с исключением реверса) (рисунок 2.20).
Вариант «а» предполагает, что агент размещается в произвольно
выбранном узле сети и случайно выбирает одно из четырех направлений
(толстые
стрелки).
При
последующих
блужданиях
разрешаются
все
направления (тонкие стрелки), кроме противоположного первоначальному.
а
)
б
)
Рисунок 2.20 – Допустимые направления поиска в алгоритме агента «ни
шагу назад»
Вероятно, такой алгоритм будет плохо прокладывать диагональные
маршруты, хотя при данной топологии сети движение по диагонали зигзагами
не более эффективно, чем перемещение по катетам. Заметим, что в реальной
транспортной задаче постоянные повороты лишь замедляют движение. Тем не
менее, был рассмотрен вариант «б» на рис. 2.19, в котором агент
первоначально выбирает одно из восьми направлений. Если выбраны
диагонали, то при последующих блужданиях разрешены только два
направления.
Ниже приведен фрагмент Пролог-программы, реализующий случайные
блуждания по вариантам: а) – rnd_fwd4 и б) – rnd_fwd8.
rnd_fwd4 :random_pair_of_points(Start,_),!, % стартовая точка
I is random(4),
% случайный розыгрыш направления
91
nth0(I, [[j,l,h],[l,h,k],[h,k,j],[k,j,l]],Dirs),
rnd_fwd4_(Dirs, Start,Start,[Start]).
rnd_fwd4_(Ds, Start,X,Points) :findall(D, (arcnfo(X,_,D,_),memberchk(D,Ds)),Directions),
length(Directions,LenD),
( LenD>1,I is random(LenD),
nth0(I, Directions,D),!
;
LenD = 1, nth0(0,Directions,D),!
),
arcnfo(X,Y,D,_),
\+ memberchk(Y,Points),
upd_rou(Start, Y, Points),
rnd_fwd4_(Ds, Start,Y, [Y|Points]).
rnd_fwd8 :random_pair_of_points(Start,_), !, % стартовая точка
I is random(8), % случайный розыгрыш направления
nth0(I, [[j,h],[j,l],[k,h],[k,l],[j,l,h],
[l,h,k],[h,k,j],[k,j,l]], Dirs),
rnd_fwd8_(Dirs, Start,Start,[Start]).
rnd_fwd8_(Ds, Start,X,Points) :findall(D,(arcnfo(X,_,D,_),memberchk(D,Ds)), Directions),
length(Directions,LenD),
( LenD>1,I is random(LenD), nth0(I, Directions,D),!
;
LenD = 1, nth0(0,Directions,D),!
),
arcnfo(X,Y,D,_),
\+ memberchk(Y,Points),
upd_rou(Start, Y, Points),
rnd_fwd8_(Ds, Start,Y, [Y|Points]).
upd_rou(_,_,[_]) :- !. % Обновление базы маршрутов
upd_rou(Start,Y,_) :- rou(Start,Y,_),!.
% Маршрут уже есть
upd_rou(Start,Y,Points) :% Обновление маршрутов
retractall(rou(Start,Y,_)), % от стартовой
assert(rou(Start, Y, [Y|Points])),
% и от всех промежуточных точек
retractall(rou(Y, Start,_)),
reverse([Y|Points], RevPoints),
assert(rou(Y,Start, RevPoints)),
delete(Points, Start, Points1),
last(Points1,Start1),
upd_rou(Start1,Y,Points1).
92
Рисунок 2.21 показывает результаты моделирования полностью
случайных блужданий, а также с использованием двух вариантов алгоритма с
исключением реверса.
Время покрытия сети маршрутами T, c
10000
1000
100
10
1
4
0,1
5
6
7
8
9
10
11
12
13
14
15
Вариант а)
Вариант б)
0,01
Полностью случайные блуждания
Поиск в ширину
0,001
Размерность сети N
Рисунок 2.21 – Время покрытия сети с применением алгоритма «ни шагу
назад»
Для сравнения показано также время поиска в ширину. В связи с тем,
что при случайных блужданиях доля маршрутов стремится к 100% по
экспоненте, эксперименты завершались при 95%-ном покрытии сети
маршрутами. Такая постановка эксперимента несущественно влияет на время,
зато значительно уменьшает дисперсию при нескольких выполнениях одного
и того же опыта. Результаты экспериментов, приведенные на данном рисунке,
показывают, что уже начиная с размерности сети 8х8, сеть полностью
покрывается маршрутами быстрее, чем поиск в ширину находит один
маршрут, и экономия растет приблизительно на два порядка при каждом
увеличении размерности сети на два узла по каждой координате. На самом
деле эффект многоагентного поиска еще выше и скорость поиска должна
расти линейно при увеличении числа агентов.
93
Таким
образом,
реализуемость
в
логического
результате
поиска
данного
методом
исследования
случайных
показана
блужданий,
отличающегося сохранением в виде прецедентов наилучших результатов
поиска, позволяющего получать решения для всего пространства параметров
быстрее, чем переборные методы находят одно решение.
2.3.2. Исследование эффективности создания прецедентов методом
случайных блужданий
Убедившись, что при неинформированном поиске случайные блуждания
дают существенное ускорение, но не решают проблему экспоненциального
роста сложности поиска, рассмотрим, что изменится, если множество агентов
(рой) сможет обмениваться опытом. Попытаемся оценить эффективность
многоагентного подхода к решению задачи поиска, ограничив интеллект
агентов
только
способностью
совершать
случайные
блуждания
и
обмениваться информацией о своих перемещениях.
Предположим, что имеется множество агентов (участников движения),
которые совершают поездки с заданными целями и запоминают результаты в
общей базе данных. Если маршрут, соединяющий две точки, уже имеется в
базе, но длительность нового маршрута меньше, чем уже запомненного, то
данные в базе обновляются. Таким образом, после множества поездок всех
агентов роя рано или поздно будут найдены кратчайшие маршруты для всех
пар начальных и конечных точек.
Как и в предыдущих экспериментах, вместо нахождения одного
конкретного маршрута мы ставим задачу найти все возможные маршруты в
сети. Если между текущей позицией агента и целью уже есть проложенный
маршрут, он присоединяется к текущему маршруту. Если между стартовой и
финишной точкой есть промежуточная точка, к которой уже есть маршруты от
старта и финиша, то маршрут строится из двух уже проложенных отрезков.
94
Исследование данного подхода проводилось на компьютерной модели,
написанной на языке SWI-Prolog.
Сеть представлена фактами вида
% arc – дуга. Аргументы – узлы.
arc(1,2). arc(2,3). arc(3,4).
arc(1,5). arc(2,6). arc(3,7). arc(4,8).
…
Предикаты Пролога, реализующие случайные блуждания, приведены
ниже.
% Случайные блуждания
find_route(random,_Mode,Start,Finish,Points) :find_route_random(Start,Start,Finish,[],Points).
find_route_random(_,Middle,Finish,Points,ResPoints) :( arc(Middle,Finish),
ResPoints = [Finish|Points]
; rou(Middle,Finish,LastPoints),
append(LastPoints,Points,ResPoints)
), !.
find_route_random(Start,CurMiddle,Finish,Points,ResPoints) :findall(Middle_, arc(CurMiddle,Middle_), Middles),
mixlist(Middles, MixedMiddles),
MixedMiddles = Middles,
( member(Middle, MixedMiddles),
Middle \== Start,
\+ memberchk(Middle, Points),
find_route_random(Start,Middle,Finish,
[Middle|Points], ResPoints)
;
find_route_random(Start,Start,Finish,[],ResPoints)
).
Зависимость времени покрытия сети T от размерности N представлена
на рисунке 2.22. Полученные результаты показывают, что агенты покрывают
всю сеть маршрутами приблизительно на два порядка быстрее, чем поиск в
ширину в среднем находит один маршрут. Поскольку каждый найденный
маршрут сохраняется в базе маршрутов, эта база довольно быстро становится
полной, а дальнейшие перемещения агентов только сокращают длины
95
маршрутов. Таким образом, рой агентов достаточно быстро дает все решения,
пусть даже и не идеальные.
Время покрытия сети маршрутами T, c
10000
1000
100
10
1
4
5
6
7
8
9
10
11
12
13
14
15
Многоагентный поиск
0,1
Один агент, вариант б)
0,01
Поиск в ширину
0,001
Размерность сети N
Рисунок 2.22 – Зависимость времени покрытия T от размерности сети N
Модифицируем поведение агентов следующим образом. Пусть агенты
вначале совершают короткие поездки на заданную глубину от каждой
исходной точки сети, покрывая маршрутами еѐ окрестности. После этого сеть
покрывается маршрутами с использованием следующих правил:
 Проверяется, не известен ли маршрут:
­ от стартовой точки до точки, соседней с финальной;
­ от точки, соседней со стартовой, до финальной точки.
­ Если маршрут известен, то он дополняется финальной или
стартовой точкой.
 Проверяется, нет ли такой пары маршрутов, что финальная точка
одного маршрута совпадает со стартовой точкой другого. Если
есть, эти маршруты сцепляются.
96
На рисунке 2.23 показаны результаты наблюдений процесса покрытия
сети маршрутами для третьего метода. Здесь глубина D предварительного
покрытия сети маршрутами в окрестностях каждого узла менялась от одного
до семи узлов.
Время покрытия сети маршрутами, с
120
100
D=1
D=2
D=3
D=4
D=5
D=6
D=7
80
60
40
20
0
Размерность сети N
Рисунок 2.23 – Время покрытия сети при предварительном покрытии
окрестностей каждой точки
Результаты,
представленные
на
рисунке
2.23,
демонстрируют
существенное замедление процесса покрытия всей сети при расширении
радиуса предварительного покрытия. Это означает, что в данном случае
повышение интеллекта отдельного агента только снижает скорость получения
решения.
Для количественной оценки качества покрытия сети введѐм понятие
оптимальность как отношение минимальной суммарной длины маршрутов к
их фактической суммарной длине. При D>3 с уменьшением D уменьшается и
время покрытия сети маршрутами, и, менее заметно, оптимальность. При D=3
достигается
минимальное
время
покрытия
сети
с
приемлемой
оптимальностью.
При дальнейшем уменьшении D время покрытия сети практически не
убывает, но оптимальность начинает значительно снижаться. Рисунок 2.24
97
демонстрирует скорость сходимости процесса поиска решений, полученную
Показатель оптимальности
экспериментальным путем для размерностей сети 8х8, 10х10 и 12х12.
1
0,9
N=12
N=10
0,8
N=8
0,7
0,6
0
10
20
30
Время покрытия сети, с
Рисунок 2.24 – Сходимость процесса поиска решений
Графики на данном рисунке показывают, что средняя протяженность
маршрута приближается к оптимальной по асимптоте. Таким образом, здесь
действует закон сохранения: выигрыш времени получен за счет потери
качества. Получить покрытие сети кратчайшими маршрутами можно лишь
после длительного поиска.
Результаты исследования роевого интеллекта применительно к частной
задаче поиска маршрутов в транспортной сети показывают, что этот метод
показывает удовлетворительные результаты, причем не требует эвристик. В
отличие от других методов (либо решение оптимальное, либо его нет вовсе)
качество решения здесь является функцией от длительности обучения.
Примечательно, что сеть полностью покрывается маршрутами существенно
быстрее, чем классические алгоритмы находят единственный маршрут.
Скорость нахождения решений зависит не от индивидуального интеллекта
агентов, а главным образом, от способности агентов обмениваться опытом.
98
Исследования, представленные в данном разделе, проводились совместно с
магистрантом К.А. Булыгиным.
Таким образом, положительный эффект применения многоагентного
поиска с сохранением лучших результатов заключается в том, что эти
результаты играют роль прецедентов, а постоянное обновление найденных
лучших результатов делает качество полученных решений функцией времени
случайных блужданий.
99
ВЫВОДЫ
В процессе детализации концептуальной модели интеллектуальной
системы выявлены системные закономерности в пространстве поиска,
позволившие
на
основе
прецедентного
подхода
с
воспроизведением
механизма интеллектуальных навыков в виде прецедентов редуцировать
пространство поиска и за счет этого сократить структурную избыточность
дерева решений. На основе проведенного исследования:
а) разработан метод редукции дерева решений, учитывающий наличие в
нем
повторяющихся
ветвей,
позволяющий
за
счет
замены
цепочек
рассуждений единичными узлами сократить глубину поиска;
б) сформулированы условия применимости прецедентов в базах знаний
большой размерности, учитывающие особенности алгоритмов прямого и
обратного логического вывода;
в) разработаны методы организации темпоральных баз знаний,
использующих организацию прецедентов в пространстве события-состояния, а
также способы контроля актуальности фактов, позволяющие обеспечивать их
непротиворечивость в базах знаний;
г) разработан метод управления контекстом поиска в распределенных
базах знаний большой размерности, позволяющий за счет использования
ограниченного набора операций находить решения, обладающие полнотой и
непротиворечивостью;
д) показана реализуемость логического поиска методом случайных
блужданий, отличающегося сохранением в виде прецедентов наилучших
результатов поиска, позволяющего получать решения для всего пространства
параметров быстрее, чем переборные методы находят одно решение;
д) для поиска методом случайных блужданий с использованием
множества агентов установлено, что качество получаемых решений является
100
функцией времени поиска, и это позволяет получать удовлетворительные
решения в кратчайшее время.
101
ГЛАВА 3. АЛГОРИТМИЧЕСКИЕ МЕТОДЫ УСКОРЕНИЯ ПОИСКА
В ИНТЕЛЛЕКТУАЛЬНЫХ СИСТЕМАХ НА ОСНОВЕ БАЗЫ
ЗНАНИЙ БОЛЬШОЙ РАЗМЕРНОСТИ
3.1.
ИНДЕКСАЦИЯ И ПРЕДВАРИТЕЛЬНЫЙ ОТБОР ФАКТОВ БАЗЫ ЗНАНИЙ,
РЕЛЕВАНТНЫХ УСЛОВИЯМ ПРАВИЛ
3.1.1. Теоретические предпосылки и обоснование целесообразности
индексации фактов
Анализ работы программ на языке Пролог, а также оболочек экспертных
систем показывает, что машины вывода Пролога и ЭС устроены очень просто:
все факты извлекаются из базы знаний в порядке их следования в файле. Это
является допустимым для баз знаний небольшого объема, но по мере
увеличения числа фактов их извлечение может замедлять работу машины
вывода. Решением данной проблемы, апробированным в СУБД, является
индексация. Рассмотрим, как данный подход может сократить время
логического вывода в продукционных системах.
База знаний продукционной системы может быть описана следующим
образом: KB = <F, R>, где F = {f} – множество фактов, f = <s, p, o>, s –
субъект, p – предикат, o – объект, s, p, o = const, R = {r} – множество правил,
состоящих из импликаций r = <{c}→{g}>, c, g=<sr, pr, or>, c – антецедент
правила, g – консеквент правила (цель), sr – субъект, pr – предикат, or – объект,
sr, or= var|const, pr= const. Триплеты a, с представляют собой хорновские
дизъюнкты, которые могут быть пропозиционными формулами либо
формулами первого порядка.
При обратном логическом выводе резолюция цели G = <sg, pg,og>
заключается в унификации (matching) триплета <sg, pg, og> с множеством
фактов {f} в базе знаний или консеквентами правил {g}, а сложность вывода
определяется рекуррентной формулой (1.1), приведенной в п. 1.1.2. В случае
прямого логического вывода антецеденты правил с унифицируются со всеми
102
фактами f базы знаний, и сложность вывода описывается формулой (1.2). Как
при прямом, так и при обратном выводе, сложность вывода растет по
экспоненциальному закону. Для экспертных систем сложность логического
вывода не является определяющей, поскольку число фактов, унифицируемых
с условиями правил, ограничено либо числом переменных, устанавливаемых в
диалоге с пользователем, либо числом сенсоров для встраиваемых экспертных
систем реального времени.
К тому же оптимизация работы экспертной системы заключается в том,
чтобы построить деревья поиска таким образом, чтобы минимизировать число
вопросов, задаваемых пользователю. Когда же в состав базы знаний наряду с
правилами входит большое число фактов, комбинаторная сложность задачи
логического вывода выступает на первый план.
Основная проблема здесь заключается в том, что релевантность фактов
условиям правил обычно устанавливается по формальному признаку – имени
предиката, т.е. отношения, связывающего субъект и объект, поскольку
продукционные системы строятся на основе логики первого порядка, в
которой предикат не может быть переменной. Число фактов Fr(G),
релевантных запросу (цели) G = {<si, pi, oi>}, где i = (1, n), n – число условий в
запросе,
Fr (G ) 
F ( s  si , p  pi , o  oi ) .
(3.1)
i
В том случае, если в консеквенте правила используются переменные,
значения которым еще не присвоены (свободные переменные), то условию
правила, включающему в себя свободные переменные, будут релевантны все
предикаты с этим именем, и число Fr(G) существенно возрастает. Граничный
случай,
когда
все
переменные
являются
свободными,
отображается
следующей формулой:
Fr (G ) 
F ( p  pi ) .
i
(3.2)
103
Здесь наблюдается дивергенция между степенью детализации запроса и
числом фактов, релевантных запросу, которая приводит к увеличению
сложности поиска при росте числа условий. Если извлечение фактов из базы
знаний выполняется в ходе обработки правила, как это, в частности, делается в
Прологе, после обработки каждого условия присваиваются значения
переменным, используемым в этом условии, и следующие условия могут
оперировать уже с конкретными значениями, что сужает пространство поиска.
Наибольшее сокращение числа релевантных фактов достигается, если в
первую очередь обрабатывать условия, порождающие наименьшее число
результатов, поэтому в Прологе и аналогичных машинах вывода написание
запросов для больших баз знаний является искусством, поскольку требует
владения, как логикой вывода, так и предметной областью.
За счет сокращения числа фактов, сопоставляемых с условиями правил,
можно добиться существенного ускорения логического вывода. Алгоритмы
RETE и TREAT, рассмотренные в п. 1.1.3, как раз и обеспечивают
подстановку
в
условия
правил
фактов,
которые
дадут
успешное
сопоставление. Но фактически использование данных алгоритмов означает,
что для каждого условия правила заранее создается список фактов, которые
будут использоваться при обращении к правилу. Во-первых, это приводит к
многократному дублированию базы фактов, во-вторых, к необходимости
поддерживать все эти списки в актуальном состоянии, т.е. обновлять при
каждой модификации базы фактов.
Таким образом, существующие алгоритмы редукции пространства
поиска, основанные на построении префиксных деревьев, преобразуют
временную сложность логического вывода в пространственную сложность и
при этом являются чувствительными к модификациям баз знаний, что
ограничивает их применимость для баз знаний большой размерности и
обуславливает необходимость разработки алгоритмических методов, в
104
которых учитывается параметрическая избыточность пространства поиска и
изменчивость баз знаний.
3.1.2.
Алгоритм индексации и предварительного отбора фактов для
редуцирования пространства поиска
Машина вывода Пролога, как и другие аналогичные механизмы,
обрабатывает факты в порядке их следования путем простого перебора. Такой
подход работает только для небольших баз знаний и соответствует
представлениям начала 70-х гг., когда создавался язык Пролог. Ниже
рассматривается
разработанный
автором
метод
индексации
и
предварительного отбора фактов [59], позволяющий применить индексы,
широко используемые в СУБД, для продукционных систем.
Теорема 3.1. Для предварительного отбора фактов для подстановки в
правило при поиске в базе знаний достаточно ограничиться операцией
пересечения индексов.
Доказательство. Пусть базу фактов образуют триплеты вида субъектпредикат-объект либо субъект-атрибут-значение, представление которых в
нотации языка Prolog может выглядеть следующим образом:
f(s, p, o).
Здесь s – субъект, p – предикат (отношение, связывающее субъект и
объект), o – объект, f – предикат Пролога, идентифицирующий данный атом
как факт базы знаний. Напомним, что логика первого порядка не допускает
переменные в качестве предикатов и операции над ними. Факты можно
отсортировать по какому-нибудь аргументу, и тогда поиск по этому признаку
будет быстрым, но аргументов в этих фактах три, поэтому необходимы
индексы.
Проиндексируем факты базы знаний. Присвоим каждому факту в базе
знаний порядковый номер i, тогда нумерованный факт будет записан, как
показано ниже.
105
fn(i, s, p, o).
Для множества термов T = {t}, встречающегося в фактах, построим
индекс в виде
X  {x}  {(t, w,{itw})},
(3.3)
где w – место данного терма в атоме (в качестве субъекта, предиката или
объекта), {itw} – множество номеров фактов, имеющих терм t в роли w,
w = (‗s‘ |‘p‘ | ‘o‘). Резолюция цели заключается в установлении истинности
условий и присвоении значений переменным.
Теперь, при обращении к правилу, тело которого состоит из множества
условий {c1, c2, …, ck}, где cj = (sj, pj, oj), sj – субъект, pj – предикат, oj – объект,
(s; o) = (t; v), v – переменная, pj = t. Поскольку в логике первого порядка не
допускается использование переменных в качестве предиката, каждое из
условий cj может иметь одно из четырех сочетаний термов и переменных:
(t, t, t); (t, t, v); (v, t, t); (v, t, v).
Для каждого из cj условий правила извлечение релевантных фактов для
перечисленных сочетаний термов заключается в нахождении пересечений
множеств индексов:
 {its } {itp } {ito }, s j  const, o j  const;
 {i } {i }, s  var, o  const;
 tp
to
j
j
Ij  
{its } {itp }, s j  const, o j  var;

s j  var, o j  var .
{itp },
(3.4)
Таким образом, число фактов, отобранных для условия cj правила
зависит от сочетания переменных и констант в условии.
Каждой переменной v, используемой в j-ом условии, из списков Iju можно
поставить в соответствие множество кортежей {i,ui}, где i –— номер факта,
i  I j , ui – значение переменной v, извлекаемое из i-го факта. Если переменная
v используется более чем в одном условии правила, пересечение
106
Uv (c j ) 
{u j }
jc
(3.5)
множеств значений переменной во всех условиях с правила, в которых эта
переменная используется, позволит сократить число фактов, необходимых для
унификации этих условий. Для получения списка фактов Ivj, содержащих
переменную v для j-го условия правила, где эта переменная встречается,
достаточно выполнить операцию реляционного деления
I vj 
 j, u   u .
j
v
(3.6)
Наконец, если в условии правила cj участвуют более одной переменной,
то пересечение списков
Ij 
vc j
I vj
(3.7)
для каждой из двух переменных даст окончательный список фактов, которые
релевантны j-му условию правила.
Теорема доказана.
Таким образом, на основе формул (3.4 – 3.7) может быть построен
алгоритм предварительного отбора релевантных фактов для подстановки в
условия правила, включающий в себя набор реляционных операций над
индексами и значениями переменных, отличающийся тем, что факты
отбираются непосредственно перед обращением к правилу, что позволяет
редуцировать пространство поиска как в статичных, так и в динамичных базах
знаний.
3.1.3. Оценка эффективности использования индексов и
предварительного отбора фактов для редуцирования пространства
поиска
Теорема 3.2. Индексация и предварительный отбор фактов сокращают
время поиска Тr обратно пропорционально δd, где δ – доля фактов в базе
знаний, релевантных запросу, d – число утверждений в запросе.
107
Доказательство. Пусть F={f} – множество фактов в базе, Fr={fi} –
множество фактов, релевантных i-му утверждению запроса Q, η – время
извлечения одного факта, N=card(F), d =card(Q). Тогда время обработки
запроса Q без индексации T = (ηN)d, а с индексацией
d
Tx   card( fi ).
(3.8)
i 1
Тогда
T

Tx
 ( N )d
d
 card( fi )
.
(3.9)
i 1
Допуская, что card(f1)= card(f2)= …= card(fϭ)= Nr ,
d
T ( N )d  N 

  d
d
Tx ( N r )  N r 
(3.10)
Теорема доказана.
Предлагаемый здесь метод реализован в разработанной автором
программе Semantic [70]. Поскольку прямой логический вывод предполагает
независимую обработку каждого правила, длительность вывода имеет
линейную
зависимость
от
числа
правил.
Следовательно,
оценку
быстродействия можно оценивать на одном правиле. Тестирование данного
метода проводилось на базе знаний, описывающей родственные отношения.
Факты вида субъект-is_parent-объект создавались с помощью генератора
случайных чисел. Фрагмент сгенерированной базы фактов приведен ниже.
f("9","is_parent","1504").
f("2533","is_parent","3029").
f("1041","is_parent","2287").
f("41","is_spouse","675").
f("1055","is_parent","2799").
f("8","is_parent","1984").
f("2481","is_parent","3078").
f("1009","is_parent","2533").
f("27","is_parent","1514").
f("2287","is_parent","3097").
f("72","is_parent","1484").
f("2799","is_parent","3053").
f("1016","is_parent","2481").
f("21","is_parent","1456").
Экземпляры субъектов и объектов тестовой базы фактов сгенерированы
с помощью формулы:
108
N = RND(1000) + G·1000,
где G – номер поколения, RND(1000) – случайное число в диапазоне (0,
1000). Таким образом, старшему поколению соответствует диапазон чисел от
0 до 999, поколению их детей – числа от 1000 до 2000 и т.д.
Правило, которое использовалось для измерения времени вывода,
описывает отношение типа прапрародитель и имеет три условия:
r([с("?x1", "is_parent", "?x2"),
с("?x2", "is_parent", "?x3"), % антецедент
с("?x3", "is_parent", "?x4")],
[f("?x1", "is_grandgrandparent", "?x4")]). % консеквент
Приведенный ниже график (рисунок 3.1) показывает зависимость
времени работы программы логического вывода в зависимости от числа
фактов в базе знаний.
350
300
Индексированный поиск
Время, с
250
Наивный поиск
200
150
100
50
0
1000
2000
3000
4000
Количество фактов
Рисунок 3.1 – Зависимость времени логического вывода от числа фактов
в базе знаний
Эксперименты на тестовом наборе фактов показали, что эффективность
индексации фактов зависит также от результативности правил. Если доля
фактов, релевантных правилу невелика, то время вывода с использованием
индексов стремится к нулю. Если каждая комбинация исходных фактов
109
приводит к успешной резолюции (ситуация, на практике, маловероятная), то
использование индексов только увеличивает время за счет издержек на
индексацию. На рисунке 3.2 приведены результаты экспериментального
исследования величины Ti / Tn, равной отношению времени Ti обработки
фактов с индексами и предварительным отбором по отношению к времени Tn
наивного логического вывода в зависимости от отношения числа Fr фактов,
релевантных данному правилу, к общему числу F фактов в базе знаний для
F=4000:
Ti / Tn = θ(Fr / F).
(3.11)
Проведенные эксперименты демонстрируют практически линейный
характер данной зависимости и свидетельствуют о том, что максимальное
ускорение данный метод даст при Fr / F → 0.
0,12
0,1
0,08
Ti / Tn
0,06
0,04
0,02
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Доля фактов, релевантных правилу, Fr / F, %
Рисунок 3.2 – Зависимость ускорения вывода от доли фактов, релевантных
правилу
Недостатком метода индексации фактов в предлагаемом виде является
неявное предположение, что сопоставление условий правила с фактами
110
происходит по полному совпадению. При этом если обеспечить сравнение на
больше или меньше реализовать с помощью индексов достаточно просто, то
для предикатов подобия похоже на, приблизительно равно индексы построить
сложнее.
Таким образом, теоретически доказано и экспериментальным методом
подтверждено, что предварительный отбор фактов, релевантных условиям
правила, обеспечивает редукцию дерева решений обратно пропорционально
доле релевантных фактов в базе знаний.
3.2.
МЕТОД ЛОГИЧЕСКОГО ВЫВОДА НА ОСНОВЕ ТЕОРЕТИКОМНОЖЕСТВЕННЫХ ОПЕРАЦИЙ
3.2.1. Обоснование возможности реализации логического вывода в
реляционной модели знаний
Продукционная модель представления знаний оперирует с фактами,
состоящими из триплетов субъект-предикат-объект и субъект-атрибутзначение. Данная модель является аналогом ER-модели (Entity-Relation) и,
следовательно, может быть помещена в среду реляционной СУБД, как
показано в таблице 3.1 для фрагмента базы знаний, описанного в п.3.1.3.
Таблица 3.1 - Представление фактов в таблицах реляционной СУБД
Таблица has_sex
Субъект
Таблица parent
Таблица is_a
Объект
Субъект
Объект
Субъект
Объект
sergey
male
sergey
nikita
sergey
person
nikita
male
sergey
andrey
natalia
person
natalia
female
natalia
nikita
nikita
person
egor
male
andrey
egor
egor
person
…
…
nikita
stepan
…
…
Такая модель данных являет собой пример классического представления
данных в СУБД, в котором база данных состоит из множества таблиц, каждая
111
из
которых
содержит
кортежи,
объединенные
общим
отношением,
связывающим субъект и объект (предикатом). Преимущество
такого
представления – компактность, поскольку сам предикат вынесен в имя
таблицы. Кроме того, в разных таблицах могут использоваться разные типы
данных для субъектов и объектов. Недостаток такого подхода заключается в
том, что появление в базе новых предикатов влечет за собой создание новых
таблиц, количество которых может бесконтрольно увеличиваться, что
приводит к проблемам администрирования базы данных.
Альтернативным способом хранения фактов в реляционной СУБД
может быть размещение всех фактов в одной таблице (таблица 3.2).
Таблица 3.2 – Представление всех фактов в одной таблице
Таблица Факт
Субъект
Предикат/Атрибут Объект/Значение
sergey
has_sex
male
nikita
has_sex
male
natalia
has_sex
female
sergey
parent
nikita
Такое представление фактов является свободным от недостатка,
указанного выше. Однако здесь мы имеем другую проблему: сущности
должны иметь один и тот же тип данных. При таком представлении все
значения, используемые в базе, должны приводиться к единому формату,
например, текстовому, а операции над такими данными должны проводиться с
соответствующим преобразованием форматов. Помимо фактов продукционная
модель основывается на правилах вида ЕСЛИ-ТО. Наиболее известным
языком представления правил в глобальной семантической сети (Semantic
Web) является язык SWRL 3 , имеющий синтаксис расширения языка XML.
3
http://www.w3.org/Submission/SWRL
112
Применение
правила
заключается
в
интерпретации
кортежа
<R, EC, ER, L, S, LV>, где R – множество ресурсов, LV – множество литералов,
LV⊆R, EC – отображение классов и типов данных на подмножества R и LV, ER
– отображение свойств на бинарные отношения в R, L – отображение
литералов, используемых в правиле, на элементы LV, S – отображение
индивидуальных имен, заданных в правиле, на элементы EC.
В связи с нечитабельностью текстов SWRL для редактирования правил
обычно используется другое представление, более удобное для человека и
близкое к синтаксису языка Prolog, как, например, это предлагается в модуле
SWRL Tab редактора онтологий Protégé4:
hasParent  ? x1,? x2  hasBrother ? x2,? x3  hasUncle ? x1,? x3
Здесь с вопросительного знака начинаются переменные, а предикат
находится не в центре триплета, а вынесен за скобки. Таким образом, в
большинстве правил условия совпадают с фактами базы знаний, а переменные
получают значения в ходе унификации. Пусть правило имеет k условий
c(s1, p1, o1), c(s2, p2, o2),..., c(sk, pk, ok), где pi – предикат, где si, oi – либо
константа, либо переменная. Правила такого вида имеют ограниченную
логику, поскольку позволяют унифицировать только совпадение с фактами.
Стандарт SWRL предусматривает возможность наряду с предикатами из
фактов использовать в правилах функции над переменными, в частности –
математические операции. Для целей настоящего исследования ограничимся
предикатами неравенства c(si, differentFrom, oi). Заметим, что в стандарте
SWRL отсутствуют отрицания. На первый взгляд, это существенно
ограничивает возможности правил, однако это соответствует допущению
открытого мира (Open World Assumption, OWA) [104], в котором отсутствие
информации о факте не означает автоматически отсутствия этого факта.
Предикаты не могут быть переменными, что соответствует логике первого
4
http://protégé.stanford.edu
113
порядка. Следует отметить, что написание очень сложных правил требует
высокой квалификации, в то время как любые сложные правила могут быть
подвергнуты декомпозиции. Кроме того, логический вывод из цепочек правил
может быть более быстрым за счет анализа и отсечений промежуточных
результатов, заведомо противоречащих цели.
Таким образом, поскольку продукционная модель знаний подобна ERмодели баз знаний, а набор операций в антецедентах правил является
подмножеством
операций
языков
запросов
СУБД,
база
знаний
на
продукционной модели может быть преобразована в реляционную модель и
обрабатываться в среде СУБД. Применение реляционных СУБД для
реализации логического поиска, отличающегося использованием преимуществ
данной инструментальной среды в виде поддержки работы с индексами и
списками, позволит заменить поиск отдельных решений массовой обработкой
базы фактов продукционными правилами.
3.2.2. Реализация логического вывода с помощью теоретикомножественных операций
В разд. 3.1 предложен метод ускорения логического вывода за счет
индексации и предварительного отбора фактов для условий правила. Для
каждого условия правила с помощью индексирования из всего множества
фактов подбираются только те факты, предикат которых совпадает с
предикатом условия правила, а для остальных аргументов выполняется
операция пересечения над индексами. Использование предварительного
отбора фактов позволяет сократить размерность задачи поиска решений
обратно пропорционально доле фактов, задействованных для каждого
правила.
Ниже
излагается
предложенный
автором метод
реализации
логического вывода в продукционных системах с помощью реляционных
операций над множествами переменных [55].
114
Пусть в результате отбора фактов для условий правила c(s1, p1, o1),
c(s2, p2, o2),..., c(sk, pk, ok), где si, oi – либо константа, либо переменная,
получены множества кортежей T = {{ti}}, ti=(xi1, xi2), если в условии правила
две переменные, ti =(xi1), если одна переменная. Таким образом, для правила
из k условий, получаем k таблиц приблизительно следующего вида:
x11
x12
Если
два
x21
или
более
x22
условий
...
xi1
имеют
...
общую
xk1
xk2
переменную,
то
соответствующие таблицы оказываются связанными общим ограничением. В
противном случае результат будет состоять в декартовом произведении
таблиц, что обычно лишено смысла.
Таблицы могут иметь связи следующих типов.
1. Соединение двух таблиц по совпадению значений одной или более
переменных у пары таблиц. В этом случае две таблицы
объединяются реляционным оператором INNER JOIN.
2. Фильтрация таблицы по условию сравнения значения переменных
между собой или переменной и значения. Данная функция
выполняется с помощью условия WHERE (...).
Рассмотрим на конкретных примерах, как условия правил могут
транслироваться в операторы SQL. Для упрощения импорта базы знаний в
СУБД создадим для фактов единственную таблицу F, состоящую из столбцов
Subject, Predicate, Object, для хранения субъекта, предиката и объекта
соответственно. Запрос на языке SQL для вывода фактов о вышеупомянутом
отношении дядя-племянник(ца) будет выглядеть следующим образом:
SELECT F_1.Object AS Uncle, F.Object AS Nephew
FROM F INNER JOIN F AS F_1 ON F.Subject=F_1.Subject
WHERE (((F.Predicate)="is_parent")
AND ((F_1.Predicate)="has_brother"));
115
Более сложное правило для отношения падчерица на языке SWRL:
hasChild  ? x1,? x 2   hasSpouse  ? x1,? x3 
hasSex  ? x 2, female   hasChild  ? x 4,? x 2  
differentFrom  ? x1,? x4   differentFrom  ? x3,? x4   hasStepDaughter ? x3,? x2 
Данное правило будет иметь следующий эквивалент на языке SQL:
SELECT DISTINCT
F_1.Object AS Step_parent, F_2.Object AS Step_daughter
FROM
((F INNER JOIN F AS F_1 ON F.Subject=F_1.Subject)
INNER JOIN F AS F_2 ON F.Object=F_2.Object)
INNER JOIN F AS F_3 ON F_3.Subject=F_2.Object
WHERE
F.Predicate="is_parent"
AND F_1.Predicate = "is_spouse"
AND F_2.Predicate="is_parent"
AND F.Subject <> F_2.Subject
AND F_1.Object<>F_2.Subject
AND F_3.Predicate="has_sex"
AND F_3.Object="female")
Таким образом, экспериментальным путем подтверждена возможность
трансляции правил продукционной модели знаний в запросы на языке SQL
3.3.
РЕАЛИзАЦИЯ БЫСТРЫХ РЕЛЯЦИОННЫХ ОПЕРАЦИЙ МЕТОДАМИ
ЛОГИЧЕСКОГО ПРОГРАММИРОВАНИЯ
Набор базовых операций реляционной алгебры включает в себя
пересечение X ∩ Y (INTERSECT), вычитание X  Y (DIFFERENCE),
объединение X U Y (UNION), соединение
(INNER JOIN), проекцию,
дополнение (NOT) и фильтрацию (WHERE) [105]. Таблицы 3.3, 3.4, 3.5, 3.6
иллюстрируют некоторые из указанных реляционных операций.
116
Таблица 3.3 – Пересечение множеств
→
X
←
XY
Y
sergey
nikita
nikita
nikita
andrey
andrey
andrey
egor
natalia
stepan
Таблица 3.4 – Вычитание множеств
XY
→
X
←
Y
sergey
sergey
nikita
nikita
natalia
andrey
andrey
egor
natalia
stepan
Таблица 3.5 – Объединение множеств
XY
→
X
←
Y
sergey
sergey
nikita
nikita
nikita
andrey
andrey
andrey
egor
natalia
natalia
stepan
egor
stepan
Таблица 3.6 – Соединение таблиц
Parent 1
→
←
Grandparent
Parent 2
sergey
nikita
sergey
nikita
stepan
sergey
nikita
nikita
stepan
sergey
andrey
egor
nikita
stepan
andrey
egor
natalia
nikita
stepan
andrey
egor
natalia
nikita
natalia
andrey
egor
natalia
nikita
sergey
andrey
sergey
andrey
natalia
andrey
natalia
andrey
117
Списки
отличаются
от
множеств
возможностью
наличия
повторяющихся элементов. В рамках настоящего исследования списки не
содержат повторяющихся элементов, но в дальнейшем мы будем говорить
вместо множеств о списках, под которыми понимается не только теоретикомножественные сущности, но и агрегаты данных в терминах языков
программирования. Ниже приведены правила, реализующие операцию
пересечения списков.
 Y
intersect 0

X  x  X s , x Y ,
xZ
X  x  X s , x Y ,
Z
Xs
Xs
Y
Z
intersect1
(3.12)
Y
Z
intersect 2.
Первое правило (intersect0) определяет, что пересечением пустого
списка с любым списком является пустой список. Второе правило (intersect1)
устанавливает, что если голова x первого списка X содержится во втором
списке, то результирующий список будет конкатенацией x и пересечением
хвоста первого списка Хs co вторым списком Y. Наконец, третье правило
(intersect2) задает, что если голова x списка X не содержится в списке Y, то
пересечением списков X ∩ Y будет пересечение хвоста первого списка Хs и
второго списка Y. Реализация над двумя списками операции пересечения
предполагает в среднем развертывание nxny/2 вершин дерева поиска (список Y
сканируется до первого появления искомого значения), где nx, ny – количество
элементов в списках X и Y соответственно.
Рисунок 3.3 иллюстрирует многопроходность операции пересечения
списков.
118
Y
nikita
andrey
egor
stepan
Y
X
sergey
nikita
X ∩Y
andrey
nikita
egor
andrey
nikita
stepan
andrey
Y
nikita
natalia
andrey
egor
stepan
Y
nikita
andrey
egor
stepan
Рисунок 3.3 – Пересечение списков
Причина многопроходности операции пересечения состоит том, что по
мере укорачивания первого списка второй список остается неизменным,
поскольку удаление уже найденного элемента также представляет собой
рекурсивную процедуру.
Отсортируем списки X={x} и Y={y} по возрастанию значений. В этом
случае оба списка можно обрабатывать совместно. Правила для операции
пересечения отсортированных списков приведены ниже.
119
 Y
intsorted 0

X  x  X s , Y  x  Ys ,
xZ
X
X  x  X s , y  Y  YS , x  y ,
Xs
Z
Z
intsorted1
Ys
Z
Xs
(3.13)
intsorted 2
Z
X  x  X s , Y  y  YS , x  y ,
Ys
Y
Z
intsorted 3.
Первое правило (intsorted0), как и в (3.12), задает, что пересечение
пустого списка с любым списком имеет результатом пустой список, и задает
условие выхода из рекурсии. Второе правило (intsorted1) определяет, что если
два списка X и Y имеют одинаковую голову x, то пересечением X ∩ Y является
конкатенация x·Z, где Z = Xs ∩ Ys, Xs и Ys – хвосты списков X и Y
соответственно. Третье правило (intsorted2) устанавливает, что если первый
элемент x списка X больше первого элемента y списка Y, то из дальнейшего
рассмотрения
следует
исключить
y.
Аналогично,
последнее
правило
(intsorted3) устанавливает, что если x<y, то исключить нужно x. Таким
образом, оба списка сканируются параллельно, и дерево поиска будет состоять
из
nx+ny
вершин.
Рисунок
3.7
иллюстрирует
процесс
пересечения
отсортированных списков.
Y
andrey
X
egor
X ∩Y
nikita
andrey
stepan
nikita
andrey
natalia
nikita
sergey
Рисунок 3.7 – Пересечение отсортированных списков
Ниже приведены правила, реализующие операцию разности списков
(вычитания).
120
 Y
difference0

X  x  X s , x Y ,
Z
X  x  X s , x Y ,
xZ
Xs Y
Z
difference1
(3.14)
Xs Y
Z
difference2.
Правило difference0 определяет, что разность пустого списка с любым
списком дает пустой список. Правило difference1 обеспечивает исключение из
результирующего списка Z элемента x, присутствующего в обоих списках X и
Y. Правило difference2, наоборот, включает в результирующий список элемент
x, присутствующий в первом списке X, но отсутствующий в списке Y. Как и в
операции пересечения списков, второй список Y сканируется до первого
появления искомого значения для каждого элемента первого списка X, и
реализация операции вычитания предполагает в среднем развертывание nxny/2
вершин дерева поиска.
Если отсортировать оба списка, то, как и в случае пересечения, оба
списка можно сканировать параллельно. Правила для операции вычитания
отсортированных списков приведены ниже.
X s  Ys
X  x  X s , Y  x  Ys ,
 Y
Z
diffsorted 0
diffsorted1

Z
X Y
X  x  X s , y  Y  YS , x  y , s
Z diffsorted 2
Z
X  Ys
X  x  X s , Y  y  YS , x  y ,
Z diffsorted 3.
Z
(3.15)
Первое правило (diffsorted0), как задает, что вычитание из пустого
списка любого списка имеет результатом пустой список, и задает условие
выхода из рекурсии Правило diffsorted1 редуцирует задачу путем исключения
из рассмотрения совпадающих первых элементов списков X и Y. Правила
diffsorted2 и diffsorted3 обеспечивают исключения из рассмотрения первого
121
элемента первого списка (если x<y) или первого элемента второго списка
(если x>y). Таким образом, как и при операции пересечения отсортированных
списков, оба списка сканируются параллельно, и дерево поиска будет состоять
из nx+ny вершин.
Операция объединения множеств состоит из суммы двух вычитаний
множеств плюс их пересечение:
X U Y = (X - Y) + (Y - X) + (X ∩Y),
т.е. требует трех операций, либо может быть реализована с помощью
следующих правил.
X  x  X s , x Y ,
 Y
union0
Y
Z
X  x  X s , x Y ,
Xs
xZ
Xs
Y
Z
union1
(3.16)
Y
Z
union2.
Первое правило (union0) задает, что объединение пустого списка с
любым списком имеет результатом исходный список, и задает условие выхода
из рекурсии. Здесь второе правило (union1) задает исключение из первого
списка X первого элемента x, если он присутствует во втором списке. Третье
правило (union2), наоборот, обеспечивает включение в результирующий
список Z элемента x, если он отсутствует во втором списке. Таким образом,
результирующий список включает в себя элементы обоих списков, причем
каждый из них присутствует в выходном списке не более одного раза. В
отличие
от
предыдущих
операций
пересечения
и
вычитания
неотсортированных списков, описанных правилами (3.12) и (314), здесь
развертывается nxny вершин, поскольку сканируются все элементы, а не до
первого появления.
Если отсортировать списки, то правила для операции объединения
список будут выглядеть следующим образом:
122
 Y
unionsorted0
Y

X
X
Xs
X  x  X s , x  x  Ys ,
unionsorted1
Y
Z
unionsorted2
Z
X  x  X s , y  Y , x  y,
Xs
Ys
Z
xZ
(3.17)
union2.
Наиболее часто в процессе интерпретации условий правил требуется
соединение двух множеств кортежей (x1, x2, …, xm) и (y1, y2 ,..., yk) по
совпадению значений переменных xi = yj. В реляционной алгебре данной
функции соответствует операция INNER JOIN. Операция соединения двух
списков X и Y представляет собой декартово произведение с фильтрацией, а
количество развертываемых вершин дерева поиска для данной операции
составляет nxny,

Y

joinsorted0
X  ( x1 , x2 )  X s ,
( x1 , x2 )
A
A B

X

Y
,
X  ( x1 , x2 )  X s , Y  ( y1 , y2 )  Ys , x1  y1 ,
joinsorted1
Xs
Y
B
( y1 , y2 )  Y
Z
joinsorted3
Xs
Z
( x1 , x2 )
Z
Ys
( x1 , x2 )
Z
( x1 , x2 , y2 )  Z
Ys
Y  ( y1 , y2 )  Ys , x1  y1 ,
joinsorted4
Z
Y  ( y1 , y2 )  Ys , x1  y1 ,
joinsorted2
joinsorted5.
(3.17)
123
Правила joinsorted0 и joinsorted1 определяют, что соединение с пустым
множеством порождает пустое множество. Правило joinsorted1 устанавливает,
что результатом соединения двух списков кортежей, X=(x1,x1)ˑXs и Y=(y1,y2)ˑYs
является конкатенация двух соединений
и
. Правило
joinsorted3 определяет, что соединение кортежа (x1,x1) со списком Y=(y1,y2)ˑYs
дает в результате пустой список, если x1<y1, поскольку во всех кортежах в Ys
также будет выполняться условие x1<y1 вследствие отсортированности Ys.
Следовательно,
кортеж
(x1,x1)
должен
исключаться
из
дальнейшего
рассмотрения. Правило joinsorted4 означает, что если x1>y1, то кортеж (y1,y2)
исключается из операции соединения. Наконец, правило joinsorted4 означает
включает в результирующий список элемента (y1,x2,y2) в случае, если x1=y1.
Число развертываемых вершин дерева решений для соединения
отсортированных списков
N ( x, y )  nx  n y   nxi n yj если xi  y j , (nxi  1  n yj  1), (3.18)
i, j
где nxi, nyj, – количество повторяющихся значений в первом и втором
списке соответственно. Если пренебречь возможностью повторения одних и
тех же значений в обоих списках (nxi>1  nyj>1), а также пренебречь случаями
(nxi >1  nyj=0) и (nxi=0  nyj>1), то формулу (3.18) можно упростить:
N(x,y) = nx + ny+ dx+ dy,
(3.19)
где dx, dy, – число дубликатов значений в списках X и Y соответственно.
Таким образом, число развертываемых вершин дерева поиска близко к
суммарной длине списков X и Y.
В таблице 3.6 обобщены данные о каждой из реляционных операций и
их сложности, измеряемой числом развертываемых вершин дерева поиска.
Приведенные здесь данные демонстрируют, что сложность поиска на одном
правиле сокращается в ny/2 раз.
124
Таблица 3.6 – Реализация операций реляционной алгебры без сортировки и с
сортировкой
Реляционная операция
Эквивалентный
оператор SQL
Сложность
операции для
произвольных
списков
Пересечение
X∩Y
INTERSECT
nxny/2
n x + ny
Разность
XY
MINUS
nxny/2
n x + ny
Объединение
X UY =(X-Y)+
(Y-X)+(X ∩Y)
UNION
nxny/2
n x + ny
JOIN
nxny
nx + ny+ dx+ dy
Соединение X
Сложность
операции для
отсортированных
списков
Таким образом, предложены алгоритмы, реализующие логический
вывод с помощью теоретико-множественных операций над кортежами
переменных
методами
использованием
логического
отсортированных
программирования,
списков
кортежей
обеспечивает полиномиальную сложность поиска.
отличающиеся
переменных,
что
125
ВЫВОДЫ
В процессе исследования выявлены закономерности дерева поиска,
обеспечивающие
с
учетом
многообразия
проявления
особенностей
многомерности в реальных базах знаний возможность разработки комплекса
алгоритмических методов ускорения логического вывода в интеллектуальных
системах на продукционной модели знаний, отличающийся возможностью
ускорения
логического
вывода
в
различных
вариантах
проявления
многомерности данных и знаний, что позволило выбирать для практических
целей наилучшую комбинацию вариантов разработанных алгоритмов, в т.ч.:
а)
алгоритм
предварительного
отбора
релевантных
фактов
для
подстановки в условия правила, включающий в себя набор реляционных
операций над индексами и значениями переменных, отличающийся тем, что
факты отбираются непосредственно перед обращением к правилу, что
позволяет редуцировать пространство поиска как в статичных, так и в
динамичных
базах
знаний.
При
этом
теоретически
доказано
и
экспериментальным методом подтверждено, что предварительный отбор
фактов, релевантных условиям правила, обеспечивает редукцию дерева
решений обратно пропорционально доле релевантных фактов в базе знаний;
б) применение реляционных СУБД для реализации логического поиска,
отличающегося использованием преимуществ данной инструментальной
среды в виде поддержки работы с индексами и списками, позволяющего
заменить поиск отдельных решений массовой обработкой базы фактов
продукционными правилами;
в) алгоритмы, реализующие логический вывод с помощью теоретикомножественных операций над кортежами переменных методами логического
программирования, отличающиеся использованием отсортированных списков
кортежей переменных, что обеспечивает полиномиальную сложность поиска.
126
ГЛАВА 4.
МЕТОДЫ РЕДУЦИРОВАНИЯ ПРОСТРАНСТВА ПОИСКА
НА ОСНОВЕ ИНФОРМАЦИОННОГО ПОДХОДА
4.1. МЕТОД ОЦЕНКИ ИНФОРМАТИВНОСТИ ПОНЯТИЙ И УТВЕРЖДЕНИЙ В БАЗАХ
ДАННЫХ И ЗНАНИЙ
4.1.1. Словарно-контекстный метод оценки информативности понятий
предметной области
С количественной оценкой информации связана в первую очередь
передача данных. В теории передачи информации превалирует энтропийный
подход К. Шеннона, который в 1948 г. предложил единицу информации бит
[106] как величину энтропии для одного из двух равновероятных событий.
Общая формула энтропии H(x) для n состояний случайной величины x
n
H ( x )   p( xi )log2 p( xi ).
(4.1)
i 1
Для двоичной пары (0,1) энтропия равна единице при условии равной
вероятности нуля и единицы. Таким образом, число двоичных разрядов в
точности соответствует числу битов информации при условии, что для всех
разрядов вероятности нулей и единиц равны. Количество информации I
определяется как двоичный логарифм числа состояний:
I  log 2 n.
(4.2)
А.Н. Колмогоров рассматривал количество информации I(x:y) в
переменной x относительно связанной с ней переменной y. Наряду с
комбинаторным подходом Шеннона он предлагал вероятностный подход,
также основанный на энтропии:
HW ( y | x )   p( y | x ) log2 p( y | x );
IW  H w ( y )  HW ( y | x ) , (4.3)
y
и алгоритмический подход, согласно которому количество информации IA(x:y)
определяется сложностью функции KA(y|x) преобразования переменной x в
переменную y (длиной программы p):
127
 min l ( p)
K A ( y | x)  
;

,
если

p
[

(
p
,
x
)

y
]

I A  ( x : y )  K A ( y )  K A ( y | x ).
(4.4)
В отличие от Шеннона у Колмогорова количество информации –
величина, которая может быть отрицательной [107]. Положительной стороной
теории
информации
Колмогорова
является
возможность
вычислять
информативность связанных событий, однако сложность таких вычислений
оказывается чрезмерной. На основании вышеизложенного представляется
целесообразным использовать для оценки информативности понятий и фактов
подход Шеннона.
Количество
информации
в одной букве русского алфавита (в
предположении, что вероятности появления в слове всех букв равны)
приблизительно равно пяти битам, что соответствует пяти двоичным
разрядам, которыми русский алфавит как раз и может быть закодирован.
Следует признать, что механическое перенесение энтропии алфавита на
составляемые с его помощью слова лишено смысла, иначе слова из редко
встречающихся букв будут более информативными, а английский текст менее
информативным, чем русский, поскольку не только латинский алфавит
содержит меньше знаков, но и английские слова обычно короче русских.
Существует гипотеза, выдвинутая 75 лет назад Г. Ципфом и заключающаяся в
том, что часто используемые слова обычно короче, а значимость слова
обратно пропорциональна его встречаемости [108]. Таким образом, длинные
слова все же несут в себе больше информации. Один из аргументов в пользу
данной гипотезы состоит в том, что количество информации, получаемое в
единицу времени при чтении текста или слушании речи, не должно сильно
варьироваться, иначе информация не будет усвоена [109]. Видимо, этим
обстоятельством объясняется тот факт, что алфавитный подход к определению
количества информации в тексте активно используется в школьных курсах
128
информатики [110], хотя количество информации в одном и том же слове
«скорость» на английском языке (speed) и немецком (Geschwindigkeit) будет
различаться в три раза.
Слово – это код для обозначения понятия, причем код – заведомо
избыточный. Пусть средняя длина слова равна шести знакам, каждый из
которых кодируется пятью битами, т.е. имеет 32 значения, если игнорировать
букву «ѐ». В таком случае максимальное число слов равно 326 ≈ 1 млрд. слов;
это означает, что избыточность составляет не менее двух порядков. Если
рассматривать слово как минимальную лексическую единицу (атом), то к его
информативности можно применить подход Шеннона. Применяя формулу
(4.1) для словаря D, получим значение энтропии
|D|
H ( D)   p( wi )log2 p( wi ),
(4.5)
i 1
где |D| – мощность словаря, wi – i-е слово словаря, p(wi) – вероятность
появления слова wi, которая может быть вычислена следующим образом:
∑
(4.6)
где ni – число экземпляров слова wi в множестве текстов. Таким образом,
энтропия словаря зависит от набора текстовых документов, использующих
данный словарь. Вычисление энтропии словаря не представляется возможным
по следующим причинам.
1. Постоянно растущее число документов. По состоянию на конец
декабря 2011 года поисковая система Google проиндексировала
более 25 млрд. ресурсов, в то время как на конец декабря 2009
года их число не превышало 10 млрд. Поисковые системы строят и
поддерживают частотные словари для целей ранжирования
результатов поиска и располагают возможностями для вычисления
энтропии слов. Однако растущее число документов может
129
привести к тому, что информативность текста, не подверженного
изменениям, будет постоянно меняться.
2. Синонимия и полисемия. Автоматическая обработка документов в
целях вычисления энтропии словаря невозможна, поскольку одно
и то же слово может использоваться для обозначения разных
понятий (полисемия) равно, как разные слова могут обозначать
одни и те же понятия (синонимия), а энтропия слова вне его
значения лишена смысла.
3. Многоязычность. Глобальное множество текстовых документов
разделяется на подмножества в соответствии с числом языков.
Разные языки имеют отличающиеся по количеству слов словари.
Данное обстоятельство может привести к тому, что один и тот же
документ, переведенный на разные языки, будет обладать разной
информативностью. Решением данной проблемы может быть
создание глобального словаря, включающего в себя понятия из
всех языков. Однако сложность этой задачи не оставляет надежд
на ее решение в ближайшем будущем.
Если пренебречь разной частотностью слов, составляющих словарь, то
количество информации I(w,D) в слове w, определенном на множестве D
(словаре), можно определять как
I(w,D) = log2|D|,
(4.7)
где |D| – мощность словаря, w D. Здесь мы сталкиваемся с проблемой
определения |D|. Автор текста владеет одним словарным запасом, а его
читатели – другим. Следовательно, информативность текста становится
субъективной
характеристикой,
что,
впрочем,
соответствует
действительности. Например, если читатель встречает незнакомое слово,
лежащее вне его словаря, то информативность этого слова для него равна
130
нулю. Кроме того, богатый словарный запас из одной области знаний
бесполезен для написания или восприятия текста из другой области.
В работе С. Пиантадоси [109], в порядке пересмотра теории Ципфа,
делается попытка вычислить информативность слова w в контексте с:
I ( w, c)   P(C  c | W  w) log P(W  w | C  c),
(4.8)
c
где в качестве контекста используется ближайшее окружение слова. Данный
подход основывается на свойстве нестационарности естественного языка, в
условиях которой вероятности слов меняются в зависимости от контекста. На
основании этого делается упор на статистическую зависимость между
словами, а контекстом слова w считает N слов, предшествующих w.
Рациональное
зерно
в
этих
рассуждениях
–
контекст,
однако
его
интерпретация слишком узкая. Здесь контекст – это даже не предложение, а
словосочетание.
Попытаемся определить, каким образом можно измерить количество
информации если не в произвольных текстах, то, по меньшей мере, в
понятиях, используемых в науке и технике. Отметим следующее:
1. Любые понятия и термины существуют в контекстном окружении.
Выражение «характеристики поля» имеет совершенно разные значения
в журналах по физике, агрономии или в футбольном обозрении.
2. Информативность разных понятий разная. Слово «монголоид» означает
принадлежность одной из четырех рас, «китаец» – представитель одной
из примерно двухсот наций, «Конфуций» – с одной стороны, один из
миллиардов людей, живших на Земле, а с другой стороны – один из
немногих величайших мыслителей всех времен и народов.
3. В каждом контексте все понятия определяются на некотором уровне
абстракции. Если речь идет о студенческой группе, то понятие
«студент» нас интересует как объект преподавания или член
131
студенческого сообщества, но не как биологический индивид. Мы
абстрагируемся от его анатомии или спортивных достижений.
4. Слово, обозначающее понятие, может нести смысловую нагрузку, а
может абстрагироваться от смысла. Например, Меконг означает
«красная река», что в определенной степени отражает ее свойства, но
названия Волга или Нева не имеют явно выраженного смысла, а Тихий
океан имеет скорее свойство противоположное своему названию.
Идея контекста неявно присутствует в подходе Колмогорова к оценке
количества информации: «Реальные объекты, подлежащие нашему изучению,
очень
(неограниченно?)
существующими
сложны,
объектами
но
связи
исчерпываются
между
при
двумя
более
реально
простом
схематизированном их описании» [107].
Пусть понятие Ei определено на множестве Ei 1  Ei , имеющем
мощность ni. Тогда количество информации I(Ei), содержащейся в Ei, будет
равно
I ( Ei )  log2 ni .
(4.9)
В свою очередь, само множество Ei+1 является понятием более высокого
уровня, определенного на множестве Ei  2  Ei 1 . Аналогично, понятие Ei
является понятием более высокого уровня для множества Ei-1. Таким образом,
мы получаем иерархию понятий, информативность которых на каждом уровне
можно вычислить. Обобщающее множество Ei+1 будем называть контекстом
множества Ei (Рисунок 4.1). Похожий подход использовался В.В. Фоминым в
задаче проектирования информационных систем [111].
132
…
Ei+1={Ei}
Ei={Ei-1}
…
Рисунок 4.1 – Вложенность контекста
При объединении нескольких уровней контекста информативность
I(Ei, Ej) понятия Ei в контексте Ej определяется как
j
I ( Ei , E j )   log 2nk .
(4.10)
k i
Рассмотрим этот подход на примере университета [60]. В контексте
студенческой группы, состоящей из 25 человек, информативность выбора
конкретного студента равна log225 = 4,644. Пусть 4 группы образуют поток, 6
потоков (по годам поступления) – кафедру, факультет объединяет пять
кафедр, а университет насчитывает 12 факультетов. Тогда информативность
выбора студента из всего потока, показанная в таблице 4.1, будет равна 6,644,
из всех студентов кафедры – 9,234 и т.д.
Таким образом, устанавливая уровень контекста, можно определить
количество информации, которое несет тот или иной выбор, а при
необходимости – расширить контекст, например, как в таблице 4.1, до уровня
страны или в мировом масштабе.
133
Таблица 4.1 – Информативность выбора студента на разных уровнях
контекста
К-во информации I(n), бит
Уровень
контекста
Мощность
множества n
Для контекста
Для студента
Группа
25 студентов
4,644
4,644
Поток
4 группы
2,0
6,644
Кафедра
6 потоков
2,59
9,234
Факультет
5 кафедр
2,32
11,554
Университет
12 факультетов
3,58
15,134
Страна
600 университетов
9,23
…
Земля
…
…
…
Следует отметить, что мощность множеств в разных контекстах на
одном уровне может быть разной. В таком случае информативность
однотипных событий также будет отличаться, что вполне логично. Однако
при объединении общим контекстом информативность, вычисляемая по
формуле
(4.10),
также
будет
разной.
Из
таблицы
видно,
4.2
что
информативность выбора студента зависит от численности его группы, числа
групп в потоке, числа потоков, образующих кафедру.
Таблица 4.2 – Информативность выбора студента при наличии разной
численности групп и потоков
Группа
4100
Группа
4101
Группа 4102
Группа
4103
Группа
4104
Группа 4105
n
I(n)
n
I(n)
n
I(n)
n
I(n)
n
I(n)
n
I(n)
16
4
10
3,32
18
4,17
22
4,46
19
4,25
20
4,32
Поток 1 (4 группы: n=4; I(n) = 2)
6
5,32
6,17
Поток 2 (n=2; I(n) = 1)
6,46
5,25
5,32
Кафедра ВТ (2 потока: n=2; I(n) = 1)
7
6,32
7,17
7,46
6,25
6,32
134
Как результат, информативность выражения «студент кафедры А» не
является одинаковой для всех студентов, обучающихся на данной кафедре.
Решение может заключаться в том, чтобы на каждом уровне контекста
вычислялась суммарная мощность множества всех сущностей:
I (ei , E j )  log 2
 n.
ni E j
(4.11)
i
Таким образом, в рассматриваемом примере информативность выбора
студента из потока вычисляется исходя из численности всех студентов потока,
выбор студента, принадлежащего кафедре – исходя из общего числа
студентов, обучающихся на кафедре, и т.д., как показано в таблице 4.3.
Таблица 4.3 – Информативность выбора студента, полученная на всем
множестве сущностей
Группа
4100
Группа
4101
Группа 4102
Группа
4103
Группа
4104
Группа 4105
n
I(n)
n
I(n)
n
I(n)
n
I(n)
n
I(n)
n
I(n)
16
4
10
3,32
18
4,17
22
4,46
19
4,25
20
4,32
Поток 1 (66 студентов: n=66; I(n) = 6,044)
Поток 2 (n=39; I(n) =
5,28)
Кафедра А (105 студентов: n=105; I(n) = 6,71)
Предложенный
словарно-контекстный
метод
вычисления
инфор-
мативности понятий, отличающийся использованием в качестве базы словаря
предметной
области,
обеспечивает
независимость
оценки
количества
информации как от субъективных факторов автора и получателей сообщений,
так и от способов кодирования данных.
4.1.2. Метод оценки информативности фактов в базах знаний
В работе С. Рассела и П. Норвига [4] предлагается строить дерево
решений с учетом вероятностей каждой из ветвей. В применении к задаче
поиска в продукционной модели знаний такой подход требует оценки
135
информативности утверждений, составляющих запрос или продукционное
правило. Существующие подходы к оценке информативности фактов можно
охарактеризовать следующим образом.
В работе В. Петровского
научного
факта,
как
меры
5
дается определение информативности
неопределенности,
устраняемой
в ходе
эмпирической проверки гипотезы. При этом вполне допускается, что
результаты прогнозов, касающихся исхода эксперимента (эксп), могут
соответствовать эмпирическим (эмп) результатам по критерию совпадения
выборочных
средних
разброс экспертных
разброс реальных
информативности
значений
оценок
(Мэксп
может
эмпирических
научного
факта
=
Мэмп);
существенно
данных.
в то
же
превосходить
Эмпирической
Петровский
время
предлагает
мерой
считать
статистически значимое различие между выборочными дисперсиями (Dэксп –
Dэмп) или, соответственно, между выборочными стандартными отклонениями
прогнозируемого и реального положения дел (dэксп – dэмп). В том случае, если
разброс экспертных оценок меньше разброса эмпирических (при равенстве
средних), то статистически достоверная разница выборочных дисперсий
(стандартных отклонений) свидетельствует о неоднозначности научного
факта, или, что скорее, о том, что научный факт описывает частный случай. В
данном методе декларируется энтропийный подход, что вполне оправданно,
но при этом количественная мера каждого факта становится привязанной к
метрикам событий, которые описывает факт. Например, информативность
научного факта, что вода кипит при +100°С, будет измеряться не в битах, а в
градусах Цельсия.
В книге Н. Валгиной [112] делается анализ информативности текста как
степени его смысло-содержательной новизны для читателя, которая заключена
5
http://petrowskiy.ru/publish/personalogia.html
136
в теме и авторской концепции, системе авторских оценок предмета мысли. С
этой точки зрения читатели составляют три группы:
1) соответствующие авторской ориентации;
2) не достигшие уровня тезауруса автора;
3) читатели, тезаурус которых превышает тезаурус автора.
Для читателей третьей группы информативность текста приближается к
нулю, а избыточность – к 100%. Читателям второй группы не хватит базовых
знаний, что отрицательно скажется на полезности информации. И только для
читателей первой группы текст будет максимально полезен (рисунок 4.2).
Таким образом, мы получаем еще одно подтверждение необходимости
определения информативности фактов в определенном контексте.
Избыточность
1
00%
Информативность
б
0
)
а
)
Тезаурус автора
в
)
Тезаурус читателя
Рисунок 4.2 – Информативность и избыточность текста для читателя
Предположим, что количество
информации
I(w,D) в слове
w,
определенном на словаре (контексте) D, известно. Минимальной же
смысловой единицей текста является не слово, а фраза или предложение
подобно тому, как единицей количественных данных является число, а не
цифра.
137
При
этом
разрядность
числа
далеко
не
всегда
отражает
его
информативность. Нельзя сказать, что число 5 менее информативно, чем
число 1000000. Информативность числа определяется исключительно числом
его возможных состояний.
Например, температура тела человека измеряется трехзначным числом с
одним знаком после запятой. Исходя из разрядности числа температуры,
можно сделать ошибочный вывод о том, что количество информации в
значении температуры тела человека определяется исходя из количества
состояний трехзначного числа (0,0° – 99,9°)
3
I(t°) = log210 ≈ 10 бит.
Между тем, диапазон температуры тела человека лежит в пределах 35 –
42°, следовательно, число возможных значений измеряемой температуры
составляет не 1000, а только 70, и I(t°) = log270 ≈ 6,13 бит. Аналогичным
образом, информативность I(s) фразы s определяется не числом слов, а
множеством их возможных размещений (не сочетаний, поскольку порядок
слов несет смысл):
I  s   log 2 Ank ,
(4.12)
где k – длина фразы, n = |D| – мощность множества словаря. Приведенная
выше формула не может быть применена, поскольку
 во-первых, не отражает подмножество возможных размещений, а
включает в себя все размещения;
 во-вторых, невозможно установить значение k, поскольку здесь
должна использоваться максимальная длина фразы;
 в-третьих, мощность словаря – величина субъективная.
На основании вышесказанного мы приходим к невозможности точного
вычисления количества информации в текстах на естественных языках. Этот
вывод совпадает с мнением А.Н. Колмогорова [107].
138
Невозможность точного вычисления информативности фразы не
означает, что число слов в тексте не может служить приблизительной оценкой
его информативности. В качестве примера рассмотрим два выражения:
«британец» и «подданный ее Величества Королевы Елизаветы II». С одной
стороны, эти понятия эквивалентны, с другой – различаются по количеству
слов, а значит, информации, в шесть раз. Однако при внимательном
рассмотрении тождественность этих выражений оказывается не абсолютной.
На самом деле второе выражение более информативно, поскольку британец
может быть подданным короля Георга VI-го или любого другого британского
монарха. Выражение «современный британец» уже более приближено ко
второму высказыванию, но опять-таки не идентично, поскольку привязано к
времени, уточнение которого потребует дополнительных слов. Любые
попытки привести первое выражение по смыслу ко второму неизбежно
увеличат число содержащихся в нем слов.
Не претендуя на измерение информации в произвольных текстах, тем не
менее, можно попытаться вычислить количество информации, содержащееся в
формализованных знаниях, а именно в элементарных фактах [60]. Если
лексической единицей является слово (атом), то семантической единицей
(аналогом молекулы) является факт. Пусть имеется факт вида (s,p,o), где s –
субъект,
s  S , p – предикат, p  P, o – объект, o  O. Предположим, что
руководствуясь
методом,
рассмотренным
выше,
мы
имеем
оценки
информативности субъекта I(s), предиката I(p) и объекта I(o), вычисленные по
отдельности для некоторого контекста. Очевидный способ вычисления
информативности факта
I(s,p,o) = I(s) + I(p) + I(o),
(4.13)
что эквивалентно выбору факта из декартова произведения F  S  P  O –
множества всех возможных сочетаний субъектов, предикатов и объектов.
139
Такая оценка является завышенной, поскольку включает в себя заведомо
несуществующие сочетания субъектов, предикатов и объектов.
Рассмотрим простой мир (контекст) T = (E, P, F), где E – множество
сущностей, P – множество предикатов, для которого имеется набор фактов
F={f}:
1.
2.
3.
4.
Волга впадает в Каспийское море.
Нева впадает в Балтийское море.
Самара стоит на Волге.
Рига стоит на Даугаве.
Таким образом, данный контекст насчитывает 7 сущностей E = {e} =
(Волга, Даугава, Нева, Каспийское море, Балтийское море, Самара, Рига),
которые могут выступать в качестве субъекта или объекта, и два предиката
P = (впадает, стоит на). Исходя из этих данных, количество информации,
содержащееся в любом из фактов f = (s,p,o) контекста T, будет равно
I(f) = I(e) + I(p) + I(e) = log27 + log22 + log27 = 2,8+1+2,8 = 6,6 бит,
что соответствует выборке из декартова произведения E  P  E , мощность
которого равна | E  P  E |  98 . Объем информации, содержащейся во всем
контексте T
I(T) = I({f}) = I(f)|F| = 6,6*4 = 26,46 бит.
В составе декартова произведения присутствуют все комбинации
сущность-предикат-сущность (e, p, e), включая такие бессмысленные, как
«Нева впадает в Неву» и т.п. Фрагмент такого декартова произведения
E  P  E приведен в таблице 4.4. Декартово произведение E  P  E дает
наряду с возможными сочетаниями сущностей и предикатов также заведомо
невозможные, следовательно, информативность фактов, вычисленная на
декартовом произведении, является завышенной.
140
Таблица 4.4 – Фрагмент декартова произведения E  P  E
Субъект
Предикат
Объект
Волга
впадает
Волга
Волга
впадает
Нева
Волга
впадает
Самара
Волга
впадает
Рига
Волга
впадает
Каспийское море
Волга
впадает
Балтийское море
Волга
впадает
Даугава
Нева
впадает
Волга
Нева
впадает
Нева
…
…
…
Найдем пересечение множеств понятий, включающих субъект, предикат
и объект, на множестве фактов, как показано на рисунке 4.3.
Пересечение { f ( s, y , z ) : s  S} { f ( x, p, z ) : p  P} включает в себя
подмножество кортежей {(s, p)}, встречающихся в фактах F контекста T
(проекция подмножества фактов на плоскость Предикаты-Субъекты), а
пересечение { f ( x, p, z ) : p  P} { f ( x, y, o) : o  O} – подмножество кортежей
{(p, o)} (проекция на плоскость Предикаты-Объекты). Пересечение
 ( S , P , O )  { f ( x , y , o ) : x  S  y  O } { f ( s , y , z ) : y  P  z  O}
{ f ( x , p , z ) : x  S  z  O}
(4.14)
даст подмножество допустимых в контексте базы знаний кортежей
{(s, p, o)}, среди которых есть неверные, как (Нева, впадает, Каспийское
море), но нет принципиально невозможных.
141
Предикаты
{впадает}
Декартово произведение:
{Самара, Рига, Волга, Нева}
×
{Волга, Нева}
{впадает, стоит на}
×
{Каспийское море,
Балтийское море}
{Каспийское море, Балтийское море,
Волга, Даугава}
{(Волга, впадает, Каспийское море),
(Волга, впадает, Балтийское море),
(Нева, впадает, Каспийское море),
(Нева, впадает, Балтийское море)}
{стоит на}
{Волга, Даугава}
{Самара, Рига}
Субъекты
{(Самара, стоит на, Волга),
(Самара, стоит на, Даугава),
(Рига стоит на, Волга),
(Рига, стоит на, Даугава)}
Объекты
Рисунок 4.3 – Пересечение понятий на множестве фактов
При этом
I ( )  log 2 ({ f ( x, y, o) : x  S  y  O} { f ( s, y, z ) : y  P  z  O}
{ f ( x, p, z ) : x  S  z  O}).
(4.15)
В таблице 4.4 кортежи в декартовом произведении E  P  E , входящие в
Ψ(S,P,O) выделены полужирным шрифтом и приведены отдельно в таблице
4.5, состоящей из восьми строк.
Таблица 4.5 – Пересечение Ψ(S, P, O) контекста T
Субъект
Предикат
Объект
Волга
впадает
Каспийское море
Волга
впадает
Балтийское море
Нева
впадает
Каспийское море
Нева
впадает
Балтийское море
142
Субъект
Предикат
Объект
Самара
стоит на
Волга
Самара
стоит на
Даугава
Рига
стоит на
Волга
Рига
стоит на
Даугава
Таким образом, количество информации, содержащееся в триплете
f=(s, p, o)
для
контекста
T
I (( S , P, O))  log 2 8  3бит, а общее
количество информации в контексте T, включающего в себя 4 факта, составит
I (T )  I ( ( S , P, O)) | F |  3  4  12 бит,
где |F| - мощность множества фактов в базе. Однако таким образом мы часть
знаний выносим в контекст верхнего уровня, а именно, обобщенные знания о
том, что реки впадают в моря, в озера или в другие реки, что горы имеют
высоту, а города – население и т.д.
Введем в контекст множество классов C = {c} = {река, море, город} и
определим принадлежность сущностей e к классам c, т.е. введем множество
предикатов для отношений между экземпляром и классом Pec = (is a или ISA) и
установим множество фактов Fec = {fec}:
1.
2.
3.
4.
5.
6.
7.
Волга ISA река.
Даугава ISA река.
Нева ISA река.
Рига ISA город.
Самара ISA город.
Каспийское море ISA море.
Балтийское море ISA море.
Количество информации, заключенное в любом из этих фактов
I(fec) = I(e, ISA, c) = log27 + log21 + log23 = 2,8+0+1,58 = 4,38 бит,
а объем информации, содержащейся во всех этих фактах
I(Fec) = I(e, ISA, c) |{e,ISA,c}| = 4,38*7 = 30,66 бит.
Введем факты Fcc = {fcc}, определяющие отношения между классами:
143
1. Река впадает в море.
2. Город стоит на реке.
Количество информации, содержащееся в любом из этих фактов, равно
I(fcc) = I(c,p,с) = log23 + log22 + log23 = 1,58 + 1 + 1,58 = 4,16 бит,
а суммарная информация, содержащаяcя в этих фактах
I(Fcc) = I(fcc) | Fcc| = 4,16*2 = 8,32 бит.
Таким образом, суммарное количество информации, заключенное в
контексте, подвергнутом классификации, или в таксономическом контексте
T‘ = (E, E, C, F, P, Pec, Fcc, Fec),
I(T‘) = I(F,Ψ(S,P,O)) + I(Fec) + I(Fcc) = 12+30,66 + 8,32 = 50,98 бит.
Эта величина почти в два раза превосходит информативность контекста
T, но и число фактов увеличилось почти в 3 раза, с 4 до 13. Рисунок 4.4
иллюстрирует информативность фактов в контексте T‘. Факт «Волга впадает в
Каспийское море» в данном контексте имеет информативность всего 3 бита,
но это значение вытекает из фактов, что Волга – это река, Каспий – это море, а
реки в данном контексте впадают только в моря, а не в озера или в другие
реки.
река
впадает в
море
I = 4,16
I = 4,38
SA
Волга
II = 4,38
впадает в
SA
Каспий
I=3
Рисунок 4.4 – Информативность фактов в таксономическом контексте
Итак, классификация в пределах контекста снижает количество
информации, несущей каждым фактом, а значит, и величину энтропии, что
является ожидаемым результатом. Общая величина энтропии, однако,
144
возрастает, поскольку вводятся новые сущности и, следовательно, система не
является замкнутой.
Рассмотрим в качестве практического примера онтологию, содержащую
в упрощенном виде классическое описание гражданского самолета как
летательного аппарата (рисунок 4.5).
Турбовинтовой
Турбореактивный
Турбовентиляторный
тип
Летающая
лаборатория
число моторов
Двигатель
назначение
Санитарный
Пассажирский
Транспортный
Двухмоторный
Трехмоторный
тип
Пожарный
Одномоторный
Газотурбинный
Поршневой
Бизнес-джет
имеет
4-х-моторный
С V-образным
стабилизатором
Самолет
С разнесенным
вертикальным
стабилизатором
имеет
Учебнотренировочный
тип
Биплан
С центр.
вертикальным
стабилизатором
тип
Планер
Спортивный
имеет
Оперение
Моноплан
Шасси
тип
тип
Высокоплан
С хвостовым
колесом
Низкоплан
Среднеплан
С носовой
стойкой
Фюзеляж
тип
С центр.
горизонтальным
стабилизатором
С Т-образным
стабилизатором
Крыло
форма
Велосипедное
Прямое
Лыжи
тип
Узкий
Широкий
Двухпалубный
Стреловидное
Поплавки
Дельтавидное
Обратной
стреловидности
Эллиптическое
Оживальное
Рисунок 4.5 – Граф онтологии «Самолет»
145
Любой самолет (экземпляр класса «Самолет») может быть представлен с
помощью данной онтологии набором триплетов. Ниже приведены факты,
описывающие в данной онтологии самолет АН-148.
(АН-148, назначение, Гражданский)
(АН-148, число_моторов, Двухмоторный)
(АН-148, имеет, Планер)
(АН-148.Планер, тип, Моноплан)
(АН-148.Планер.Моноплан, тип, Высокоплан)
(АН-148.Планер, имеет, Фюзеляж)
(АН-148.Планер.Фюзеляж, тип, Узкий)
(АН-148, имеет, Двигатель)
(АН-148.Двигатель.Газотурбинный, тип, Турбовентиляторный)
(АН-148, имеет, Шасси)
(АН-148.Шасси, тип, С_носовой_стойкой)
(АН-148, имеет, Крыло)
(АН-148.Крыло, форма, Стреловидное)
(АН-148, имеет, Оперение)
(АН-148.Оперение, тип, С_центр._вертикальным_стабилизатором)
(АН-148.Оперение. С_центр._вертикальным_стабилизатором, тип,
С_Т-образным_стабилизатором)
(АН-148, назначение, Гражданский)
(АН-148, число_моторов, Двухмоторный)
(АН-148, имеет, Планер)
(АН-148.Планер, тип, Моноплан)
(АН-148.Планер.Моноплан, тип, Высокоплан)
(АН-148.Планер, имеет, Фюзеляж)
(АН-148.Планер.Фюзеляж, тип, Узкий)
(АН-148, имеет, Двигатель)
(АН-148.Двигатель.Газотурбинный, тип, Турбовентиляторный)
(АН-148, имеет, Шасси)
(АН-148.Шасси, тип, С_носовой_стойкой)
(АН-148, имеет, Крыло)
(АН-148.Крыло, форма, Стреловидное)
(АН-148, имеет, Оперение)
(АН-148.Оперение, тип, С_центр._вертикальным_стабилизатором)
(АН-148.Оперение. С_центр._вертикальным_стабилизатором, тип,
С_Т-образным_стабилизатором)
Таблица
4.6
содержит
оценки
информативностей
каждого
из
утверждений в рассматриваемой онтологии, вычисленные с помощью
формулы (6.21). Общая информативность онтологии «самолет» равна сумме
146
значений информативности фактов, составляющих данную онтологию:
I(Самолет) = 21,67 бит. Это означает, что каждый экземпляр самолета,
скажем, «Ан-148», несет в себе 21,67 бит информации.
Таблица 4.6 – Оценка количества информации в онтологии «Самолет»
предикат
Число объектов
назначение
8
К-во
информации
3
имеет
2
1
4
2
2
1
тип
3
1,59
имеет
4
2
тип
2
1
Моноплан
тип
2
1
Шасси
Вертикальное
оперение
Оперение с
центральным
вертикальным
стабилизатором
тип
5
2,32
тип
3
1,59
тип
2
1
Фюзеляж
тип
3
1,59
Крыло
форма
6
2,58
Субъект
Самолет
Двигатель
Газотурбинный
двигатель
Планер
число
моторов
тип
Чтобы оценить информативность конкретного контекста, необходимо
определить объем словаря, а также его подмножеств в фактах, составляющих
базу знаний. Очевидно, что вычислить информативность фактов можно только
для полностью формализованной предметной области, но не в произвольных
текстах.
Таким образом, в результате проведенного исследования предложен
метод оценки информативностей утверждений вида субъект-предикат-объект,
использующий словарно-контекстный подход и теоретико-множественную
147
обработку корпуса фактов, позволяющий получать правдоподобные значения
количества информации в фактах для последующего использования в задачах
поиска.
4.1.3. Оценка информативности данных в реляционной базе
Базы данных представляют собой пример формализованных знаний, к
которым также может быть применен предлагаемый метод. Обычно объем баз
данных измеряется размером занимаемой памяти, но такая оценка далеко не
всегда отражает количество содержащейся в них информации. Между тем,
располагать такой оценкой полезно для оценки качества проектирования баз
данных, сравнения разных СУБД и других задач управления знаниями.
Словарь нормализованной базы данных образуют D таблиц следующего
вида,
Таблица 1
ID1
Value1
Таблица 2
ID2
Value2
которые будем называть словарными таблицами. Идентификаторы G = {ID1,
ID2,…} используются в таблицах базы данных вместо значений Value и тем
самым позволяют избежать повторения. Количество информации в каждом giм идентификаторе словаря определяется следующим образом:
I(gi) = log2D + log2di,
(4.16)
где D – число таблиц словаря, di – число строк в i-й таблице словаря.
Таблицы
базы
данных,
строки
которых
содержат
кортежи
идентификаторов, будем называть основными таблицами. Каждая строка Lj j-й
основной таблицы, состоящая из Fi полей, имеет информативность
Fj
Fj
Fj
i 1
i 1
i 1
I  L j    I ( gi )   (log2 D  log2 d i )  Fi log 2 D   log 2 d i , (4.17)
148
а информативность всей таблицы Tj, состоящей из nj строк, равна сумме
величин информативности всех строк или
Fj
Fj
i 1
i 1
I T j   n j  I ( gi )  n j  (log 2 D  log 2 di ) 
Fj
 n j Fj log 2 D  n j  log 2 di ,
(4.18)
i 1
Кроме таблиц перечисленных типов в базе могут присутствовать
смешанные таблицы, состоящие из словаря, каждому элементу которого
сопоставлены идентификаторы. Это означает, что словарь может быть
расширен, и в качестве словаря могут использоваться все N таблиц базы
данных:
Fj
Fj
i 1
i 1
I T j   n j  I ( gi )  n j  (log 2 N  log 2 di ) 
Fj
 n j Fj log 2 N  n j  log 2 di .
(4.19)
i 1
Количество информации во всех N таблицах базы данных
N
Fj
j 1
i 1
I  N    n j ( Fj log2 N   log2 d i ).
(4.20)
Проиллюстрируем процесс измерения количества информации на
простой базе данных, содержащей сведения об автомобилях в контексте
автосалона. Для каждого автомобиля имеются данные о производителе, типе
кузова (седан, купе, универсал, …), двигателе (бензин или дизель) и
трансмиссии (механическая или автоматическая). Базы данных изначально
имеют ограниченный контекст, и поэтому вычисление мощности словарей не
представляет проблемы. Инфологическая модель базы Car приведена на
рисунке 5.7.
Таблицы Body (тип кузова, 3 значения), EngineFuel (тип топлива, 2
значения), TransType (тип трансмиссии, 2 значения) и Country (страна, 5
значений) являются словарными, и их информативности равны 1.59, 1.0, 1.0 и
3.17 соответственно.
149
Таблица Engine имеет 20 строк (все автомобили имеют 20 вариантов
двигателя) и включает в себя ссылку на тип топлива FuelID. Информативность
данной ссылки
I(GFuelID) = log2nFuelID + log2N = 1,0 + 3 = 4 бит.
Кроме типа топлива двигатель характеризуется рабочим объемом
Displacement, измеряемым литрами.
Таблица Body (I=1,59)
BodyID (3)
Таблица Car (I=21,18)
ModelName (10)
BodyName
Таблица Engine (I=170,24)
BodyID
EngineID (16)
EngineID
EngineFuelID
TransmissionID
Displacement (100)
BrandID
I=1,59
EngineFuel (I=1,0)
FuelID (2)
I=6,64
I=1,0
EngineFuelName
Таблица Transmission (I=21,0)
Таблица TransType (I=1)
TransmissionID (3)
TransTypeID
TransSpeedsNum (8)
I=1,0
TranstypeID (2)
I=3,0
TransTypeName
Таблица Brand (I=24,85)
BrandID (4)
Таблица Country (I=3,17)
BrandName
CountryID (5)
CountryID
CountryName
I=3,17
Рисунок 4.6 – Информативность таблиц и полей базы данных Car
Чтобы избежать повторения значений, следовало бы выделить значения
Displacement в отдельную таблицу, но поскольку данное поле имеет числовой
формат,
можно
пренебречь
некоторой
избыточностью
и
хранить
непосредственно значение в литрах с одним знаком до и после десятичной
точки. В таком случае информативность данного поля составит log2100=6,64
бит. Для небольшой базы, состоящей из десятка автомобилей, погрешность
оценки информативности данного поля будет велика (реальное число
150
значений данного параметра не превысит 10, а log210=3,32), но при
увеличении числа объектов эта ошибка будет уменьшаться. Информативность
строки таблицы Engine будет равна
I(LEngine) = I(GFuelID) + I(Dispalcement) = 4 + 6,64 = 10,64 бит,
а информативность всей таблицы I(TEngine) = 16·10,64 = 170,24 бит.
Таблица Brand имеет 4 строки и включает в себя ссылку на код страны
CountryID. Информативность данной ссылки
I(GCountryID) = log2nCountry + log2N = 3,17+ 3 = 6,17 бит.
Информативность таблицы Brand вычисляется следующим образом:
I(TBrand) = nBrand I(GCountryID) = 4·6,17 = 24,85 бит.
Аналогичным образом мы можем вычислить количество информации в
остальных таблицах базы данных (приведены справа от имени каждой
таблицы на рисунке 2.7). Информативность таблицы Car, содержащей данные
о 10 автомобилях, будет равна
I(TCar) = 10(4log2N+ log2nBody+ log2nBody+ log2nBody+ log2nBody) = 21,18 бит,
а количество информации в базе
I(dbCar) = I(TCar)+I(TEngine)+I(TBody)+I(TTransmission)
+I(TBrand)+I(TFuel)+I(TTransType)+I(TCounry) = 244 бит.
Следует отметить, что в предлагаемом подходе игнорируются не только
символьные обозначения понятий, но и символьная идентификация таблиц и
полей базы данных. Все эти идентификаторы необходимы только для
восприятия человеком и не требуются интеллектуальному агенту.
Предлагаемый
метод
оценки
информативности
баз
данных,
отличающийся использованием словарно-контекстного подхода, позволяет
абстрагироваться от способов кодирования данных и именования метаданных,
151
может быть полезен также для оптимизации структуры в процессе
проектирования баз данных.
4.1.4. Метод редуцирования пространства поиска за счет рационального
порядка следования утверждений в запросе
Составление запросов к базам знаний, равно как и написание правил
является
в
значительной
степени
искусством,
поскольку
логически
идентичные, но по-разному построенные запросы могут существенно
различаться по времени выполнения. С точки зрения чистого логического
программирования размерность дерева решений инвариантна относительно
порядка следования доказываемых утверждений. Однако если первыми в
запросе встречаются независимые друг от друга утверждения, то результатом
будет декартово произведение релевантных им фактов, а если эти
утверждения связаны между собой, то выполняется их пересечение или
соединение, что может существенно сократить размерность результата.
Проблема здесь состоит в том, что заранее неизвестно, какое из утверждений
запроса породит больше результатов и как утверждения запроса связаны
между собой. В связи с тем, что составление запросов к базам знаний может
возлагаться на интеллектуальные агенты, задача рационального составления
запроса является актуальной.
В книге Рассела и Норвига [4] при поиске в условиях неопределенности
дерево решений предлагается строить, начиная с наиболее информативных
вопросов. Данный подход базируется на вероятностных рассуждениях, где
первичной является статистика, и все вероятности могут быть вычислены. При
обработке запросов к базе знаний отсутствуют априорные данные о связности
утверждений цели, поэтому речь может идти только об эвристических методах
оценки информативности запросов.
Оценивать информативность запроса предлагается следующим образом:
152
1. Если утверждение qi запроса содержит только константы или связанные
переменные, I(qi) = log2|D|, где D – домен.
2. Если утверждение qi запроса содержит в качестве субъекта и объекта
свободные переменные, I(qi) = log2|{pred}|.
3. Если утверждение qi запроса содержит только одну свободную
переменную, I(qi) = log2|{pred}|+log2|{subj}|, если свободной переменной
представлен объект, или I(qi) = log2|{pred}|+log2|{obj}|, если свободной
переменной представлен субъект.
4. Если
переменная
использовалась
в
утверждении
запроса
q i,
в
утверждениях qj, j>i, эта переменная считается связанной.
Оценивать запрос предлагается с помощью эвристики
m
I   I ( qi ) .
i 1
(4.21)
Для нахождения максимальной эвристики необходимо вычислить ее для
всех перестановок утверждений запроса. На рисунке 4.7 приведены
результаты экспериментального исследования времени обработки запроса от
порядка следования утверждений.
Каждый из запросов состоял из четырех утверждений. Наилучший и
наихудший порядки определялись опытным путем.
Пример одного из запросов в виде правила, устанавливающего
отношение «двоюродные братья/сестры», приведен ниже.
cousin(A,B):parent(X,A), parent(Y,B), parent(Z,X), parent(Z,Y).
Очевидно, что в таком виде первые два условия порождают декартово
произведение всех фактов, к которому будут применяться остальные два
условия, т.е. это пример самого неудачного порядка следования условий в
правиле. Если переупорядочить антецеденты следующим образом:
cousin(A,B):-
153
parent(Z,X), parent(Z,Y), parent(X,A), parent(Y,B),
то второе условие будет иметь в качестве первого аргумента связанную
переменную Z, и результатом первых двух условий правила будет множество
пар братьев/сестер, что существенно меньше декартова произведения.
Проведенный эксперимент демонстрирует, что во всех случаях
упорядочение подзапросов на основе эвристической функции (4.21) дает
наилучший результат. Таким образом, применение метода вычисления
информативности
возможность
фактов
и
автоматического
запросов
в
базах
составления
знаний
запросов,
обеспечивает
обеспечивающих
построение минимально возможного дерева решений.
Время обработки, с
8
Наилучший порядок
7
Эвристика
6
Случайный порядок
5
Наихудший порядок
4
3
2
1
0
Запрос Запрос Запрос Запрос Запрос Запрос Запрос Запрос
1
2
3
4
5
6
7
8
Рисунок 4.7 – Результаты экспериментального исследования порядка
следования утверждений в запросе
Таким образом, предложенный метод упорядочения элементов запроса
или антецедентов продукционного правила, отличающийся использованием
оценки их информативностей, позволяет редуцировать пространство поиска за
счет рациональной организации дерева решений.
154
4.2. ПРИМЕНЕНИЕ ТРОИЧНОЙ ЛОГИКИ ДЛЯ РЕДУЦИРОВАНИЯ ПРОСТРАНСТВА
ПОИСКА
4.2.1. Модель базы знаний в троичной логике
В базах знаний интеллектуальных систем обычно хранятся факты вида
«субъект-предикат-объект». В бинарной логике обращение к любому факту
порождает один из двух результатов: истина, если данный факт имеет место, и
ложь в остальных случаях. Такими случаями могут быть как наличие факта,
эксплицитно отрицающего искомый факт, так и отсутствие данных об
интересуемом факте. Невозможность дискриминации отрицания факта и
отсутствия информации о нем может приводить к неправильным логическим
выводам и, как следствие, к принятию неверных решений.
Существующая теория принятия решений в условиях неопределенности
в основном оперирует с вероятностно-статистическими методами, с помощью
которых вычисляется достоверность проверяемых гипотез. Узким местом
здесь является необходимость накапливать статистику в качестве источника
исходных данных. Вместо обработки данных, достоверность которых часто
является недостаточной, но отнимает много времени, предлагается ограничить
исчисление высказываний в базах знаний простейшим набором операций
троичной логики, предложенной Лукасевичем [113], но попытаться извлечь
максимум полезной информации из имеющихся знаний, в т.ч. из факта
отсутствия знаний.
Пусть базу знаний составляют бинарные факты вида fact(<subject>,
<predicate>, <object>), где subject – субъект, predicate – предикат, object –
объект. Здесь и далее будем придерживаться нотации языка Prolog. Введем
три состояния троичной переменной: «1» – истина, «-1» – ложь и «0» –
возможно. Определим для троичных переменных операции отрицания,
конъюнкции и дизъюнкции с помощью следующих таблиц истинности [50] ,
[53] (таблица 4.7):
155
Таблица 4.7 – Таблицы истинности базовых функций в троичной логике
X
-1
X
1
X
-1
Y
-1
X Y
-1
X Y
-1
0
0
-1
0
-1
0
1
-1
-1
1
-1
1
0
0
0
0
0
1
0
1
1
1
1
1
Троичные факты должны наряду с аргументами бинарных фактов иметь
четвертый
аргумент
–
признак
достоверности
(Certainty):
ternary(<subject>, <predicate>, <object>, <certainty>). Явное
отрицание факта обычно связано с объектами, которые могут находиться в
одном из взаимоисключающих состояний, и может быть обнаружено с
помощью специальных правил. Таким образом, располагая только базой
знаний в бинарной логике, можно преобразовать все бинарные факты в
троичные. Установим следующие правила для такого преобразования:
fact  ternary ( fact ,1);
[ ,   fact ]  ternary ( fact , 1);
 fact ,[ ,   fact ]  ternary ( fact , 0).
Первое правило устанавливает истинность факта (Certainty = 1), если
соответствующий бинарный факт имеется в базе, и может записываться на
языке Prolog следующим образом:
ternary(Subj, Pred, Obj,1) :- fact(Subj,Pred,Obj).
Второе правило устанавливает ложность факта (Certainty = -1) для
субъекта, имеющего взаимоисключающие состояния, является контекстнозависимым и должно определяться индивидуально для каждого факта.
Например, для принятия решения о посадке воздушного судна необходимо
располагать метеоданными, а конкретно, посадка разрешается при отсутствии
156
бокового ветра. Пусть факт о наличии бокового ветра относительно взлетнопосадочной полосы ВПП1 записывается следующим образом:
fact(ветер, поперек, ВПП1).
В бинарной логике отсутствие данного факта в базе знаний независимо
от причины (ветер вдоль ВПП или метеоданные отсутствуют) породит
отрицание, что может привести к ложному решению о допустимости посадки.
В троичной логике отрицание данного факта задается в явном виде для
случаев, когда ветер отсутствует или направлен вдоль ВПП X:
ternary(ветер, поперек, X, -1) :fact(ветер, вдоль, X).
ternary(ветер, поперек, X, -1) :fact(ветер, отсутствует, X).
Третье
правило
устанавливает,
что
факт
является
возможным
(Certainty=0) в случае, если для него нет ни подтверждающих, ни отрицающих
фактов:
ternary(Subj,Pred,Obj,0) :not(fact(Subj,Pred,Obj)),
not(ternary(Subj,Pred,Obj,-1)).
В
отличие
от
второго
первое
и
третье
правила
являются
универсальными и могут применяться ко всем фактам бинарной базы знаний.
Третье правило отличается от остальных тем, что имеет в качестве
антецедентов несуществующие факты и, следовательно, может порождать
троичный факт только по запросу, а не в результате обработки бинарной базы.
Если в базе знаний для одного и того же бинарного факта присутствуют
одновременно троичные факты с признаками достоверности 1 и -1, это
является
свидетельством
противоречивости
базы
знаний
и
может
использоваться для ее верификации.
Построение правил на языке Prolog в троичной логике имеет
особенность, заключающуюся в том, что с точки зрения машины вывода
любое правило всегда завершается успехом. Если правило оперирует
157
несколькими троичными фактами, конъюнкция условий правила всегда
возвращает истину, а достоверность результата должна вычисляться как
минимальное значение достоверности всех условий правила. Ниже приведен
текст правила, определяющего, что длина и ширина ВПП X соответствуют
аэродрому класса А (длина не менее 3200 м, ширина не менее 60м).
ternary (X, класс, А, Cty) :ternary (X, длина, 3200+, Cty1), Cty1>=0,
ternary (X, ширина, 60+, Cty2), Cty2>=0,
Cty is min(Cty1,Cty2).
Это правило возвращает значение Cty = 1 (истину) в случае, если длина
и ширина ВПП соответствуют классу A, Cty = -1 (ложь), если хотя бы один из
параметров не удовлетворяет условиям, и Cty = 0 (возможно), если в базе
знаний отсутствует информация о длине или ширине ВПП. Следует отметить,
что с точки зрения машины вывода Пролога здесь все утверждения в правиле
возвращают истину. В то время как в двоичной логике можно ограничиться
первым положительным решением, здесь требуется обработать все правила и
выбрать решение с максимальным значением достоверности из набора (1, 0, 1).
Таким образом, модель базы знаний в троичной логике, отличающаяся
наличием трех состояний логических переменных, позволяет выявлять не
только истинность или ложность цели, но также отсутствие решения, что
является необходимым условием расширения домена поиска.
4.2.2. Визуализация и объяснение результатов рассуждений в троичной
логике
В том случае, если в процессе логического вывода в троичной логике
установлено значение достоверности результата Certainty = 0, требуется
расширение домена поиска. Однако, при этом неизвестно направление
расширения домена, поскольку неизвестно, какой из отсутствующих в базе
158
знаний фактов препятствует установлению истинности результата. Для
установления таких отсутствующих фактов предлагается возвращать вместе с
результатом обработки запроса список фактов, вовлеченных в процесс
логического вывода и имеющих достоверность, равную нулю, в следующем
виде:
[<консеквент правила>, [<факт1>],…, [<фактN>]].
Данный список можно интерпретировать как фразу в сослагательном
наклонении: «<Консеквент правила> был бы истинным, если бы истинными
были <факт1>,…, <фактN>». Такая модификация правил позволяет придать
информационной системе новое качество – способность объяснять причины
неудачи поиска решения, вызванные отсутствием отдельных фактов в базе
знаний. В отличие от экспертных систем, в которых недостающие сведения
запрашиваются в ходе диалога с пользователем, здесь не требуется вовлекать
пользователя в процесс моделирования рассуждений, что позволяет избежать
необходимости
специальным
образом
упорядочивать
правила
для
минимизации числа задаваемых вопросов.
Правило, устанавливающее состояние «возможно» для отсутствующих
фактов и возвращающее в качестве последнего аргумента отсутствующий
факт, должно быть модифицировано следующим образом:
ternary(Subj, Pred, Obj, 0, [Subj,Pred,Obj]) :not(fact(Subj, Pred, Obj)),
not(ternary(Subj, Pred, Obj, -1)).
Модифицированное правило, определяющее классность аэродрома,
приведено ниже.
ternary(X, класс, А, Cty, [X,класс,A,[Cond1,Cond2]]) :ternary (X, длина, 3200, Cty1, Cond1), Cty1>=0,
ternary (X, ширина, 60, Cty2, Cond2), Cty2>=0,
Cty is min(Cty1,Cty2).
159
Если при обращении к данному правилу достоверность результата равна
1 или -1, то последний аргумент содержит пустой список, иначе – один или
два факта, недостающие для установления истинности консеквента правила.
Если в условиях правила встречаются вызовы других правил, то
результирующий список фактов будет иметь древовидную структуру.
Рассмотрим теперь особенности реализации в троичной логике операции
отрицания. Для включения в антецеденты правила отрицательного условия
достаточно инвертировать достоверность в данном условии правила.
Создадим еще одно правило, задающее возможность совершения
посадки воздушного судна VS на ВПП X при условии соответствия класса
ВПП классу воздушного судна и отсутствия бокового ветра,
ternary(VS, посадка_разрешена, X, Cty,
[VS, посадка_разрешена, X, [Cond1,Cond2,НЕ,Cond3]]) :ternary(VS, класс, С, Cty1, Cond1),Cty1>=0,
ternary(X, класс, С, Cty2, Cond2), Cty2>=0,
ternary(ветер, поперек, X, Cty3, Cond3), Cty3<=0,
Cty is min(Cty1, Cty2, -Cty3).
и укажем цель
ternary(A340, посадка_разрешена, ВПП1, Cty, Explanation).
Если в базе знаний присутствуют факты о классе воздушного судна
fact(A340, класс, А)
и длине ВПП1
fact(ВПП1, длина, 3200),
но отсутствуют факты о ширине ВПП1
fact(ВПП1, ширина, 60)
и ветре
fact(ветер, поперек, ВПП1),
то будет получена достоверность ответа Cty = 0 и следующее объяснение
условия положительного решения:
[А340, посадка_разрешена, ВПП1,
[[ВПП1, класс, А, [ВПП1, ширина, 60]], НЕ, ветер, поперек, ВПП1].
160
Предложенный
метод
построения
правил
позволяет
устранить
недостатки интеллектуальных систем на продукционной модели знаний,
обусловленные
бинарной
логикой,
а
также
получать
решения,
не
ограниченные простой констатацией фактов. Моделирование рассуждений с
объяснением условий, при которых цель может быть достигнута, приближает
интеллектуальные информационные системы к экспертным системам в части
объяснения
полученных
результатов,
а
также
позволяет
упростить
верификацию фактов в базах знаний.
Цепочки умозаключений при использовании вложенных правил и
большого числа фактов могут быть очень длинными, что неизбежно сделает
объяснение в виде списка фактов нечитаемым для человека. Однако списковая
структура является удобной для интерпретации компьютером, что позволяет
относительно
просто
визуализировать
такие
списки
в
виде
графов
семантических сетей, как это делается при визуализации баз знаний, методы
которой предложены автором в работах [51], [48]. Другая проблема, связанная
с
объяснением
результатов,
заключается
в
возможном
наслаивании
отрицаний, что также может существенно затруднить интерпретацию
результатов.
А340, посадка_разрешена, ВПП1
ВПП1, класс, А
НЕ
ветер, поперек, ВПП1
ВПП1, ширина, 60
Рисунок 4.8 – Визуализация условия истинности факта «А340,
посадка_разрешена, ВПП1»
161
Эта проблема также может решаться в процессе визуализации с
помощью семантических графов. Пример такой визуализации условий
истинности факта «А340, посадка_разрешена, ВПП1» из рассмотренного
выше примера приведен на рисунке 4.8. В интеллектуальных системах с
большим числом фактов и правил можно ожидать выдачи на каждый запрос
множества вариантов ответа, различающихся комбинациями фактов в условии
его успешности. Интерпретация вариантов ответа также может представлять
собой достаточно сложную задачу.
Последний недостаток обусловлен тем, что в троичной логике не
учитывается количество фактов, участвующих в операциях конъюнкции и
дизъюнкции, в то время как в нечеткой логике имеется возможность заменять
конъюнкции и дизъюнкции не минимумом и максимумом, а использовать
формулы Байеса либо произвольные зависимости. Частичного решения
данной проблемы можно достичь, если сортировать все решения по длине
списка условий и выбирать решения с минимальным числом неопределенных
фактов.
Таким образом, предложенный способ построения продукционных
правил в троичной логике, отличающийся формированием списков фактов,
истинность которых требуется установить для доказательства цели, позволяет
визуализировать результаты логического вывода и определять направления
расширения домена поиска.
4.2.3.
Исследование временных характеристик вывода в троичной
логике
Сложность логического вывода в бинарной логике, измеряемая числом
развертываемых узлов на дереве поиска, для поиска в глубину составляет
O(bm) узлов, где b – коэффициент ветвления, m – глубина поиска [4].
Коэффициент ветвления для поиска с помощью правила равен числу
комбинаций фактов, релевантных условиям правила. В случае троичной
162
логики каждый двоичный факт представляется одним из трех фактов,
имеющих значение достоверности +1, 0 или -1, и если в бинарной базе знаний
часть фактов может отсутствовать, то в троичной логике для любого из
условий правила находится или создается факт с соответствующим значением
достоверности. В результате этого коэффициент ветвления поиска в троичной
логике всегда выше, чем в двоичной.
На
рисунке
4.9
представлены
результаты
экспериментального
исследования времени извлечения фактов из тестовой базы знаний,
сформированной в п. 4.2.2.
300
250
Двоичная логика,
m=1
Время, с
200
150
Троичная логика,
m=1
100
Двоичная логика,
m=2
50
0
0
10000
20000
30000
40000
50000
Троичная логика,
m=2
Число фактов в базе знаний
Рисунок 4.9 – Время извлечения 100000 фактов в двоичной и троичной логике
Результаты
проведенных
экспериментов
демонстрируют
приблизительно трех-пятикратное замедление извлечения знаний в троичной
логике по сравнению с бинарной, что с учетом затрат на вычисления
достоверности каждого троичного факта и формирование списков для
объяснения результатов соответствует ожидаемым значениям. В данном
эксперименте сравнивалась только скорость наивного дедуктивного вывода в
двоичной и троичной логике, чтобы оценить степень влияния на скорость
163
вывода этих дополнительных операций. Оценка перспектив применения к
троичной логике общесистемных и алгоритмических методов ускорения
логического вывода является предметом дальнейших исследований.
4.3.
АНАЛИЗ МЕТОДОВ ОРГАНИЗАЦИИ ПОИСКА В РАСШИРЯЮЩЕМСЯ ДОМЕНЕ
4.3.1. Поиск решений в допущениях замкнутого и открытого мира
Концепция агентного подхода, упоминаемая в п. 1.1.4, содержит в
качестве основной парадигмы восприятие окружающей среды с ограниченным
разрешением и частичное (локальное) представление этой среды. Тем самым,
агент решает задачу в условиях неопределенности. Продуктивность агентного
подхода обусловлена, на наш взгляд, двумя обстоятельствами.
Во-первых, локальное представление среды обуславливает применение
простых алгоритмов поведения агента, что обеспечивает радикальную
редукцию пространства поиска. Следовательно, агентный подход – это
контекстный подход.
Во-вторых, доступность данных об окружающем мире только с
помощью сенсоров (источник знаний) влечет за собой необходимость
реализации в агенте когнитивных функций (алгоритмы интерпретации знаний
– умения) и накопления им эмпирического опыта (интеллектуальных
навыков).
Таким образом, агент в полной мере использует классическую триаду
знания-умения-навыки, как показано на рисунке 4.9. Однако повсеместное
распространение и доступность Интернета привели к тому, что любой
человек, консультируясь во Всемирной паутине, может демонстрировать
сколь угодно глубокую эрудицию в любой предметной области и
руководствоваться
деятельности.
ею
в
повседневной
жизни
и
профессиональной
164
ОКРУЖАЮЩАЯСРЕДА
СЕНСОРЫ
ЗНАНИЯ
Алгоритмы интерпретации
данных = УМЕНИЯ
Эмпирический опыт = НАВЫКИ
Рисунок 4.9 – Антропоморфная модель агента, воспроизводящего знания,
умения и навыки
Точно так же интеллектуальный агент, решающий узкую задачу и
имеющий локальное представление окружающей среды с помощью сенсоров,
может быть подключен к сети Интернет, чтобы получать информацию,
устраняющую неопределенность. Продуктивность такой идеи подтверждается
исследованиями университета г. Эйндховен в Нидерландах, направленными
на создание специального сегмента сети Интернет для роботов. Создаваемый
там
проект
RoboEarth
информационной
предназначен
(http://www.roboearth.org)
поддержки
роботов-санитаров
и
открывает
для
новое
направление – облачную робототехнику (cloud robotics).
Таким образом, созданы предпосылки для создания интеллектуальных
систем реального времени (ИСРВ) или встроенных интеллектуальных систем,
использующих базы знаний большой размерности. При этом, однако, мы
наблюдаем
переход
в
другое
состояние,
связанное
с
расширением
пространства поиска решений или многомерностью пространства поиска.
Отрицание замкнутости информационного пространства интеллектуального
агента означает необходимость выхода за рамки пространства понятий и
связей предметной области.
165
Следствием такого отказа является необходимость принятия допущения
открытого мира (Open World Assumption, OWA). В замкнутом мире (Closed
World Assumption, CWA) неудача поиска решения означает его отрицание
(negation as failure). В открытом мире отрицание есть противоречие (negation
as contradiction). Иными словами, истинность высказывания не зависит от
того, известно это конкретному наблюдателю или нет. Допущение открытого
мира предъявляет особые требования как к представлению знаний, так и к
логике их извлечения. Стандарты Semantic Web уже содержат в себе
допущение открытого мира, т.е. пересмотр концепции искусственного
интеллекта здесь уже состоялся. Более того, если в среде Semantic Web
необходимо создать замкнутый мир, как например, в примере решения
логической задачи Эйнштейна, опубликованном в группе пользователей
Semantic Web (Semantic Web User Group, SWUG –http://semanticfuture.net),
необходимо специальным образом описывать классы и экземпляры.
Допущение открытого мира влечет за собой не бинарную, а троичную
логику, поскольку к двум состояниям T = ―истина‖ и F = ―ложь‖ добавляется
промежуточное состояние I = ―неизвестно‖, соответствующее отсутствию
решения, где
F  I  T, F  T,
T  F,
I  I.
Однако существующие машины вывода оперируют с двоичной логикой,
следствием чего является возможность появления противоречий (парадоксов).
Механическое перенесение правил процедурной семантики в декларативную
также способствует появлению противоречивости. Например, в декларативной
семантике для правила ЕСЛИ А ТО В ИНАЧЕ С, истинность утверждения А
означает истинность В и неопределенность С, в то время как в процедурной
семантике активируется одно из действий В или С в зависимости от
истинности предиката А [89].
Практическая реализация допущения открытого мира является весьма
проблематичной,
поскольку
может
привести
к
неконтролируемому
166
расширению домена и, следовательно, к неприемлемому времени поиска даже
для тривиальных запросов. Основная причина OWA – необходимость
различать отрицание цели и отсутствие доказательств ее истинности. Между
тем, та же цель может быть достигнута применением троичной логики,
оперирующей
с
тремя
состояниями:
истина,
ложь
и
неизвестность
(возможность) цели. Как продемонстрировано в п. 4.2.2, применение троичной
логики позволяет не только различать отрицание цели и недостаточность
информации для доказательства ее истинности, но также извлекать данные о
том, каких фактов недостаточно для достижения цели. Иными словами,
результатом поиска в троичной логике может быть не только установление
истинности, ложности или неопределенности цели, но также направление
расширения пространства поиска в случае неудачи.
Таким образом, предлагаемый в работе подход к поиску решений в
многомерной базе знаний, отличающийся использованием троичной логики
для дискриминации состояний отсутствия решения и недостаточности данных
для его поиска, что обеспечивает контролируемое расширение домена поиска.
4.3.2. Исследование временных характеристик поиска в узком домене
Как показано в п. 2.2.2, для успешного поиска решения контекст запроса
должен соответствовать домену поиска (рисунок 2.13). Если домен поиска
слишком узкий, вероятность найти решение будет низкой, а если домен
слишком широкий, то повышается вероятность получения противоречивых
результатов, а поиск решения потребует неприемлемо много времени. Таким
образом, возникает задача рационального выбора домена поиска. При
антропоцентрическом поиске эта задача возлагается на человека, и он с этой
задачей обычно справляется. Если же поиск выполняет интеллектуальный
агент, то требуется определить домен, т.е. обозначить границы поиска.
167
Пусть p – вероятность того, что домен D1 полностью соответствует
запросу Q={q}, k=|dq|/|D1| – доля фактов, релевантных предикату q запроса.
Тогда вероятность позитивного результата каждого из qi предикатов запроса к
домену D1 p(qi) = pk, а поскольку запрос Q составлен конъюнкцией m
предикатов, вероятность положительного результата всего запроса Q
p(Q)=(pk)m. Вероятность негативного результата предиката qi p(qi )  p(1  k ) и
всего запроса p(Q)  1  (1  p(1  k ))m . Вероятность получения результата,
положительного или отрицательного,
p(Q  Q)  ( pk )m  1  (1  p(1  k ))m .
(4.22)
В остальных случаях решение найдено не будет и потребуется
расширить поиск до домена D2. По формуле (4.22) построены показанные на
рисунке 4.10 зависимости вероятностей получения решения или его отрицания
в сокращенном домене D1 от вероятностей присутствия всех фактов,
требуемых в запросе, для m=3.
0,7
0,6
p(Q٧⌐Q)
0,5
0,4
k=0,6
0,3
k=0,8
k=1,0
0,2
0,1
0
0,1
0,2
0,3
0,4
0,5
p
Рисунок 4.10 – Зависимость вероятности получения результата в сокращенном
домене от вероятности того, что домен полностью соответствует запросу
168
Таким
образом,
теоретически
обоснована
линейная
зависимость
вероятности нахождения решения в узком домене от степени соответствия
домена запроса домену поиска.
4.3.3. Исследование скорости поиска в расширяющемся домене
Теорема 4.1. Поиск в расширяющемся домене имеет полиномиальную
сложность от мощности домена.
Доказательство. Пусть N – число фактов в базе знаний, η – среднее
время доступа к одному факту, Ai – число атрибутов или классов, релевантных
i-му условию запроса, i = (1, n). При обработке запроса первое условие
применяется в среднем к A1/ 2 атрибутам (классам), второе условие
проверяется при условии, что первое условие выполнено, а вероятность
данного события p1=1/A1, и т.д. Речь здесь идет не о ветвлении поиска, а о
фильтрации фактов, поэтому нет и экспоненциального роста сложности
поиска.
Таким образом, среднее время T обработки запроса на извлечение
фактов для точно определенного домена
A
A
A1
A
 p1 2  p1 p2 3  ...  p1 p2 ... pn 1 n ) 
2
2
2
2
A3
An
A1 A2
1 n Ai
  N (1  

... 
)   N (1   i 1 ).
2 2 A1 2 A1 A2
2 A1 A2 ... An 1
2 i 1
 Ak
T   N (1 
(4.23)
k 1
Если принять A=A1= A2=…= An, то при n ≥ 2
T   N (1 
A 1
1
1
( A  3)
 
 ... 
) N
,
n 1
2 2 2A
2A
2
(4.24)
если пренебречь малыми значениями членов ряда, заключенных в скобки.
В случае поиска в расширенном контексте для каждого условия запроса
из базы знаний должны извлекаться факты с близкими значениями атрибутов.
Пусть δi – число допустимых значений i-го атрибута. При этом для каждого
169
атрибута в условии запроса число извлекаемых фактов удваивается, поскольку
требуются дополнительные факты, характеризующие близость атрибутов.
Тогда среднее время Tx обработки запроса на извлечение фактов для
расширенного контекста
Tx = N (1  A1 
1 A2
A1

1 2 A3
A1 A2
 ... 
n 1
n
 N (1  A1   Ai 
i 1
j 1
j
Aj
1 2 ... n 1 An
A1 A2 ... An 1
)
(4.25)
).
Для случая, когда A=A1= A2=…= An и δ=δ1= δ2=…= δn при n≥2,
Tx = N (1  A   
2
A
 ... 
 n1
An 2
)   N (1  A   ),
(4.26)
если также пренебречь малыми значениями членов ряда.
В том случае, если контекст расширяется до целого класса, то для i-го
условия запроса атрибут может принадлежать j-му классу, включающему Ci
экземпляров. Первое условие запроса порождает в среднем A1+C1 обращений к
базе знаний. Вероятность успешного выполнения первого условия p1=1/C1.
Тогда среднее время Tс обработки запроса на извлечение фактов в пределах
класса для каждого из условий запроса
Tc   N (1  A1  C1 
An  Cn
A2  C2 A3  C3

 ... 
)
C1
C1C2
C1C2 ...Cn 1
n
  N (1  
i 1
Ai  Ci
i 1
C
j 1
).
(4.27)
j
Для случая, когда A = A1= A2=…= An и С = С1= С2=…= Сn
Tc   N (1  A  C 
A
A 1
A
1
 1  2   ...  n  n 1 ).
C
C
C
C
C
(4.28)
Теорема доказана.
Таким образом, подтверждается целесообразность выбора домена
поиска методом его постепенного расширения.
170
В том случае, если решение в домене D1 не найдено, вместо повторного
поиска в домене D2 можно воспользоваться результатами поиска в D1. Как
показано в работах [43], [36], при обработке запросов в троичной логике
целесообразно сохранять список неопределенных утверждений, конъюнкция
которых, будучи истинной, обеспечит истинность цели. Эти утверждения
могут возвращаться пользователю в качестве результата, объясняющего,
почему решение не найдено, однако большое число альтернативных решений
с неопределенными утверждениями сделают такой результат нечитаемым. В
любом случае обработка списков может использоваться для сокращения
размерности поиска. Ниже изложен алгоритм поиска в расширяющемся
домене.
1. Если при обработке первого утверждения q1 запроса Q ответ не
получен, утверждение q1 преобразуется в неопределенный факт u1,
который заносится в список. В отличие от обычных фактов здесь
могут
присутствовать
появления
свободные
неопределенного
переменные.
факта
при
Вероятность
обработке
первого
утверждения p(u1) = 1 – p, где p – вероятность того, что домен
релевантен утверждению запроса.
2. Машина вывода переходит к следующему утверждению запроса Q, и
поиск продолжается на основе полученных результатов обработки
утверждения q1, среди которых может присутствовать факт u1.
3. Если
решений
для
очередного
утверждения
q2
нет,
то
неопределенный факт u2 добавляется в список неопределенных
фактов:
новый,
если
решение
для
q1
было
получено,
и
существующий, если решения не было.
Таким образом, формируется множество списков для всех альтернативных
решений. Среднее число таких списков
171
s  (1– p)  r | D1 | (1– p)  (r | D1 |)2 (1– p)   r | D1 |
m 1
1 – p  
 (1 – p)(r | D1 |)m ,
(4.23)
а среднее число неопределенных фактов во всех s списках
ns 
m
(1– p)(r | D1 |)m .
2
(4.24)
Если считать все неопределенные факты в списках уникальными, то
условие экономии времени при поиске в расширяющемся домене:
m
m
(r|D1|) + nsr|D2| << (r|D2|) .
Упростив данное неравенство и пренебрегая несущественными членами,
получим
| D1 |
 1  p .
| D2 |
(4.25)
Данное соотношение означает, что поиск в расширяющемся домене
оправдан, если отношение объемов узкого и расширенного доменов намного
меньше вероятности неудачи поиска в узком домене. Иными словами,
основная часть фактов, релевантных запросу, должна находиться в узком
домене.
На рисунке 4.10 представлены результаты исследования времени вывода
для m =3 при соотношении |D1|/|D2| = 0,2.
База знаний была построена с помощью генератора случайных чисел и
включала в себя триплеты (субъект, предикат, объект) с числовыми
значениями субъектов и объектов. Предикаты определяли родственные
отношения (сын, внук, правнук). Полученные результаты показывают, что
время поиска решений практически обратно пропорционально вероятности
того, что решение будет найдено в узком контексте.
172
100
90
Время доступа, с
80
70
60
p=0,2
50
p=0,4
40
p=0,6
30
p=0,8
20
10
0
10000
20000
30000
40000
50000
60000
70000
80000
Число фактов в домене n
Рисунок 4.10 – Зависимость времени поиска решений от числа фактов n и
вероятности p того, что домен релевантен утверждению запроса
Для
проверки
приведенных
выше
результатов
математического
моделирования было организовано экспериментальное исследование скорости
извлечения
фактов,
которое
производилось
в
среде
SWI-Prolog
синтетической базе фактов, фрагмент которой представлен ниже.
t(1, isa, matematician).
t(2, isa, player).
t(3, isa, restorer).
t(4, isa, graver).
t(5, isa, informatics).
t(6, isa, conductor).
…
t(painter, isa, artist).
t(graphic_artist, isa,artist).
…
t(matematician, isa,scientist).
…
t(conductor, isa, musician).
t(singer, isa, musician).
t(korea, isa, asia).
t(china, isa, asia).
…
t(england, isa, europe).
t(1,lives_in,denmark).
t(2,lives_in,korea).
t(3,lives_in,mexico).
t(4,lives_in,spain).
t(5,lives_in,usa).
t(6,lives_in,switzerland).
t(painter, id, 1).
t(graphic_artist, id, 2).
t(matematician, id, 13).
t(conductor, id, 23).
t(singer, id, 24).
t(korea, id, 1).
t(china, id, 2).
t(england, id, 12).
на
173
t(usa, isa, america).
t(usa, id, 13).
Базу составляют сгенерированные случайным образом факты о
субъектах, идентифицируемых числами и имеющих атрибуты «профессия» и
«страна». Страны группируются в континенты, а профессии – в классы
(ученый, художник, инженер, …). Кроме того, атрибуты имеют численные
идентификаторы, присвоенные таким образом, чтобы близкие значения
идентификаторов соответствовали близким профессиям или
соседним
странам. В точном запросе выбирались все представители конкретной
профессии, проживающие в конкретной стране, в расширенном запросе –
профессии и страны, имеющие смежные идентификаторы, а в поиске по
классам – субъекты, представляющие класс профессий и континент.
На рисунке 4.11 представлены теоретические результаты и данные,
полученные с помощью экспериментов для поиска в точно заданном
контексте, а также поиска в ближайшем окружении заданного контекста и в
классе, объединяющем все контексты уровнем выше. Приведенные здесь
результаты демонстрируют, во-первых, хорошее совпадение теоретических
результатов с экспериментами, во-вторых, линейный рост сложности поиска
при увеличении числа фактов в базе данных, в-третьих, заметно большее
время поиска в ближайшем окружении заданного контекста по сравнению с
поиском в пределах целого класса. Последнее обстоятельство объясняется
тем, что при поиске в целом классе делается меньше проверок условий.
Представленные результаты исследования демонстрируют линейный
рост сложности поиска в расширяющемся домене, что позволяет использовать
предложенную концептуальную модель интеллектуального агента для
извлечения знаний в базах знаний большой размерности, в т.ч. хранящихся на
распределенных ресурсах в сети Интернет.
174
3
Время поиска, с
2,5
Точный поиск
(эксперимент)
2
Поиск в ближайшем
окружении (эксперимент)
1,5
Поиск в классе
(эксперимент)
Точный поиск (модель)
1
Поиск в ближайшем
окружении (модель)
0,5
Поиск в классе (модель)
0
Число фактов в базе знаний
Рисунок 4.11 – Временные характеристики поиска в расширяющемся домене
Таким образом, в результате исследований получено экспериментальное
подтверждение
целесообразности
применения
логического
вывода
в
расширяющееся домене, если большая часть фактов, требуемых для вывода,
размещается в узком домене.
175
ВЫВОДЫ
В процессе диссертационного исследования выявлены структурные
особенности баз знаний большой размерности, позволившие на основе
информационных весов главных направлений поиска обеспечить сокращение
размерности дерева решений в стандартном и расширенном доменах, в т.ч.:
а)
разработать
словарно-контекстный
метод
вычисления
инфор-
мативности понятий, отличающийся использованием в качестве базы словаря
предметной области, обеспечивающий независимость оценки количества
информации как от субъективных факторов автора и получателей сообщений,
так и от способов кодирования данных;
б) предложить метод оценки информативностей утверждений вида
субъект-предикат-объект, использующий словарно-контекстный подход и
теоретико-множественную обработку корпуса фактов, позволяющий получать
правдоподобные
значения
количества
информации
в
фактах
для
последующего использования в задачах поиска;
в)
предложить
отличающийся
позволяющий
именования
метод
оценки
использованием
абстрагироваться
метаданных
и
от
информативности
баз
словарно-контекстного
способов
оптимизировать
подхода,
кодирования
структуры
данных,
данных
в
и
процессе
проектирования баз данных;
г) разработать метод упорядочения элементов запроса или антецедентов
продукционного
правила,
отличающийся
использованием
оценки
их
информативностей, позволяющий редуцировать пространство поиска за счет
рациональной организации дерева решений;
д) построить модель базы знаний в троичной логике, отличающаяся
наличием трех состояний логических переменных, позволяющая выявлять не
только истинность или ложность цели, но также отсутствие решения, что
является необходимым условием расширения домена поиска;
176
е) предложить способ построения продукционных правил в троичной
логике, отличающийся формированием списков фактов, истинность которых
требуется установить для доказательства цели, позволяющий визуализировать
результаты логического вывода и определять направления расширения домена
поиска;
ж) предложить подход к поиску решений в многомерной базе знаний,
отличающийся
использованием
троичной
логики
для
дискриминации
состояний отсутствия решения и недостаточности данных для его поиска, что
обеспечивает контролируемое расширение домена поиска;
з)
теоретически
обосновать
линейную
зависимость
вероятности
нахождения решения в узком домене от степени соответствия домена запроса
домену поиска;
и) получить экспериментальное подтверждение целесообразности
применения логического вывода в расширяющееся домене, если большая
часть фактов, требуемых для вывода, размещается в узком домене.
177
ГЛАВА 5. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ И ОЦЕНКА
ЭФФЕКТИВНОСТИ РАЗРАБОТАННЫХ МЕТОДОВ
5.1. ПРИМЕНЕНИЕ РАЗРАБОТАННЫХ МЕТОДОВ В ИНТЕЛЛЕКТУАЛЬНЫХ
СИСТЕМАХ БОЛЬШОЙ РАЗМЕРНОСТИ НА ВОЗДУШНОМ ТРАНСПОРТЕ
5.1.1 Реализация методов ускорения поиска решений в системе
технологического обслуживания кассира
Одной из реализаций интеллектуальных систем большой размерности
является автоматизированная система бронирования, краткая характеристика
которой приведена в п. 1.3.1. Процесс бронирования перевозок с рабочего
места кассира или интернет-клиента является многофазным [94], как показано
на рисунке 5.1.
Формулировка
намерений клиента
Расписания
авиакомпаний
Ввод данных
клиента
Оптимизация
маршрута и услуг
Базы
тарифов
Формирование PNR
Базы мест
Получение
перевозочных
документов
Тарификация
маршрута и
оформление
перевозочной
документации
Рисунок 5.1 – Многофазный процесс бронирования перевозок
На каждой фазе требуется обращение к распределенным базам данных,
размещенным на ресурсах компаний Сирена-Тревел, Амадеус, Сэйбр,
Габриэл, Галилео, а поиск в базах данных, состоящих из миллионов записей,
определяется деревом решений с глубиной от 1 до 4 (количество стыковочных
178
маршрутов) и коэффициентом ветвления порядка сотен. Фрагмент дерева
решений для поиска маршрута показан на рисунке 5.2.
Исх. пункт
R1
R3
R2
A1
R6
A1
R7
A2
R8
R9
R.4
А3
A2
R10
R5
R11
R12
А4
А4
А4
А5
R13
Пункт назначения
А5
А5
R14
Пункт назначения
Пункт назначения
Рисунок 5.2 – Фрагмент дерева маршрутов
На данном графе вершины А1, А2, … отражают аэропорты, а дуги R1,
R2, … – связывающие их рейсы. Если два аэропорта связывают несколько
рейсов, это приводит к тому, что вершины аэропорта прилета на графе
размножаются (пунктирные эллипсы). Поиск маршрута заключается в
нахождении связи между исходным пунктом и пунктом назначения при
выполнении множества ограничений, в т.ч. минимально и максимально
допустимое время ожидания стыковочных рейсов, наличие мест на каждый
рейс и др. После этого выбранные маршруты сортируются в порядке
возрастания основного предпочтения клиента: времени в пути, числа
пересадок или цены билета.
Метод индексации и предварительной обработки фактов, релевантных
условиям запроса, предложенный в работах [54], [59], [56], в применении к
поиску маршрута в упрощенном виде можно представить следующим
образом. Для всех рейсов вида R=(D, dd, td, A, da, ta), где D – аэропорт вылета,
179
dd и td – день недели и время вылета, A – аэропорт прилета, da и ta – день
недели и время прилета, составляются индексы следующего вида:
x(D, {R});
x(dd, {R});
x(td, {R});
x(A, {R});
x(da, {R});
x(ta, {R}).
Каждый из индексов содержит списки рейсов для каждого аэропорта
вылета и прилета, а также рейсов, выполняющихся в данный день недели и в
данное время суток.
После выяснения требований клиента система формирует несколько
запросов Q, отличающихся числом промежуточных посадок (Si):
Q1 = (D, dd, _, A, _, _);
Q2 = (D, dd, _, S1, d1, t1), (S1, d1, t1+, A, _, _);
Q3 = (D, dd, _, S1, d1, t1), (S1, d1, t1+, S2, d2, t2), (S2, d2, t2+, A, _, _);
…
Здесь знак подчеркивания означает, что значение переменной для
запроса несущественно (анонимная переменная), а t1+ – время, отличающееся в
большую сторону от t1 на величину, превышающую время пересадки с рейса
на рейс. В целях простоты изложения материала здесь не учитывается
возможный переход через сутки для стыковочных рейсов.
Предварительный отбор фактов для каждого запроса состоит в
составлении списков рейсов из каждого индекса и нахождении пересечений
списков. Более подробно алгоритм обработки индексов изложен в работе [3].
Результатом поиска в индексах является список рейсов, удовлетворяющих
условиям поиска, сокращенный на 1-3 порядка по сравнению с исходным.
Такой разброс диапазона редукции пространства поиска объясняется
различием степеней свободы в зависимости от конкретного запроса. Если
исходный пункт или пункт назначения – небольшие города, то коэффициент
ветвления дерева поиска существенно меньше, чем для авиационных хабов.
180
Поскольку зависимость предпочтений клиентов от характеристик
маршрутов не всегда является монотонной, то либо предлагаемые варианты
могут не устраивать пассажира, либо число вариантов может быть слишком
большим. В этой связи целесообразно сохранять ранее составленные и
оплаченные маршруты в качестве прецедентов и предлагать их следующим
клиентам в качестве готовых вариантов.
Такой подход не только позволяет сократить время поиска решений, но
также учитывать дополнительные факторы, которые не хранятся в базах
знаний. В частности, недалеко от аэропорта г. Рейкьявика находится спакурорт «Голубая лагуна» на геотермальном озере, и многие пассажиры
трансатлантических рейсов предпочитают делать там остановку на несколько
часов для посещения курорта. Сохранение истории бронирований в виде
прецедентов позволяет в предлагать такой вариант в качестве приоритетного
несмотря на то, что данные об этом курорте в системе отсутствуют, и
предоставление такого рода сервисов в функционал системы бронирования
перевозок не входит.
Таким образом, применение разработанных методов и алгоритмов в
автоматизированной
системе
бронирования
авиаперевозок
обеспечило
редукцию пространства поиска и сокращение времени обработки транзакций.
5.1.2. Реализация методов управления прецедентами в системе
взаиморасчетов на воздушном транспорте
Применение в АРС «Сирена-Тревел» и СВВТ ТКП (отмечены на
рисунке
1.11
заливкой)
результатов
диссертационного
исследования
заключалось в
 сохранении и использовании цепочек стыковочных маршрутов,
составленных
при
выполнении
предыдущих
операций
бронирования;
 формировании перечня услуг для часто летающих пассажиров;
181
 сохранении типовых условий применения тарифов;
 формировании типовых реакций на отмены рейсов.
Сохранение результатов предыдущих операций поиска и найденных
решений в виде прецедентов позволило не только в среднем на 20% сократить
время поиска в базах данных, но также предлагать в первую очередь
апробированные решения, что сокращает время диалога с пользователем.
Целью организации взаиморасчетов на воздушном транспорте является
исключение встречных платежей между участниками процесса перевозок,
достигаемое за счет использования взаимозачетов (клиринга). Задача
оптимизации взаиморасчетов в СВВТ не имеет формального алгоритма, но в
силу наличия обширной статистики здесь может использоваться механизм
прецедентов, изложенный в работах [35], [114], [69]. Рассмотрим упрощенную
модель взаиморасчетов, в котором первичным фактом или событием является
запись об одном проданном или отмененном месте на рейс Е = (R, P, B, С, ds,
dd), где R – номер рейса, P – агент (принципал), B – перевозчик (бенефициар),
С – уплаченная (возвращенная) сумма, ds – дата продажи билета, dd – дата
перевозки. При этом дата расчетов dp находится в диапазоне ds< dp< dd.
Вторичным фактом (состоянием) будем считать регистр S = (R, P, С, dd),
который обновляется после каждого события E.
Задача заключается в нахождении суммы платежа на дату расчетов dp,
максимально приближенной к значению С на дату перевозки dd. Для
включения механизма прецедентов предложено создавать факты вида T = (R,
P, С1, C2, dd), где С1 – сумма в регистре S на дату dp, C2 – сумма
окончательного расчета агента P с перевозчиком P за рейс R, выполняемый в
день dd. Вместо расчета прогноза сумм, подлежащих уплате, может быть
использован сохраненный прецедент. Поскольку суммы, уплаченные за билет,
зависят от множества факторов, вероятность найти прецедент, в точности
повторяющий текущую ситуацию, невелика. В связи с этим значение С1
округляется с точностью 10%.
182
Таким образом, применение прецедентов в алгоритмах взаиморасчетов
на воздушном транспорте позволило приблизительно на треть сократить
время обработки транзакций по интерактивной отчетности при сохранении
точности прогнозирования взаимно компенсируемых объемов денежных
потоков за счет клиринга.
5.2. ПЛАНИРОВАНИЕ И ОРГАНИЗАЦИЯ ЭКСПЕРИМЕНТАЛЬНОГО
ИССЛЕДОВАНИЯ
Для экспериментального исследования разработанных методов в
диссертации использовалась синтетическая база знаний и обычный ноутбук на
процессоре Intel Atom с тактовой частотой 1,6 ГГц и оперативной памятью
объемом 2ГБ, работающий под операционной системой Windows 7.
5.2.1. Обоснование выбора программно-аппаратной платформы для
экспериментов
Несмотря на то, что реальные интеллектуальные системы большой
размерности функционируют на совершенно других ресурсах, в основном, на
серверах mainframe, выбор аппаратной платформы в виде обычного ноутбука
вполне может быть обоснован.
Во-первых, одной из главных проблем компьютерных экспериментов
является проблема воспроизводимости результатов. Выбранный способ
организации
экспериментов
обеспечивает
достаточный
уровень
воспроизводимости как тестовой базы знаний, так и самих экспериментов.
Во-вторых,
реальные
ИС
большой
размерности
работают
в
многопользовательском режиме, предоставляющем каждой транзакции набор
ресурсов, сопоставимый с ресурсами персонального компьютера.
В-третьих,
чем
сложнее
вычислительная
система,
на
которой
проводятся эксперименты, тем больше в ней процессов, неконтролируемых со
183
стороны экспериментатора (процессов операционной системы, других
пользовательских процессов и т.п.). Получить же в монопольное пользование
для
проведения
экспериментов
какой-либо
датацентр
практически
невозможно.
В-четвертых,
использование
маломощного
компьютера
в
силу
существенной доли затрат вычислительных ресурсов задачами операционной
системы дает пессимистические оценки полученных результатов.
Недостатком выбранного способа организации экспериментов является
то, что здесь не учитывается распределенность баз данных и знаний.
Теоретически можно разместить данные на «облачных» серверах, но это сразу
приведет к непредсказуемым временным издержкам Интернет-провайдеров и
облачных сервисов. Поэтому предлагаемая организация экспериментов
представляется наиболее разумной.
В качестве программной платформы для проведения экспериментов
использовались следующие инструментальные программные средства:
1. Среда
разработки
SWI-Prolog
(http://www.swi-prolog.org),
полностью бесплатный продукт с открытым ядром, изначально
разработанный в университете Амстердама для целей изучения
языка Пролог, но к настоящему времени доведенный до уровня,
пригодного для приложений реального мира.
2. Среда программирования Visual Prolog 7.4 Personal Edition
(http://www.visual-prolog.com). Персональное издание Visual Prolog
является бесплатным вариантом коммерческого издания Visual
Prolog Commercial Ed. Основным отличием персонального издания
является то, что его лицензионное соглашение запрещает
разработку на Прологе коммерческих программ, что для целей
данного исследования не является существенным.
3. JESS (http://herzberg.ca.sandia.gov) – среда разработки экспертных
систем на языке Java (Java Expert System Shell) с бесплатной
184
академической лицензией. JESS разработан в Национальной
лаборатории «Сандия» в г. Ливерморе и является расширением
среды CLIPS. Для настоящего исследования этот продукт
интересен тем, что включает в себя улучшенную версию
алгоритма ускорения логического вывода RETE [76], описание
которого разработчик прекратил публиковать, поэтому других
доступных способов оценить быстродействие данного алгоритма
не существует.
4. Apache Jena (http://jena.apache.org), разработка компании HP Labs –
среда с открытыми исходными текстами для создания приложений
Semantic Web и Linked Data. В данной среде проводились
исследования методов логического вывода с использованием
прецедентами [114].
5. MySQL (http://www.mysql.com) – наиболее распространенная
реляционная СУБД с открытыми исходными кодами.
6. MS Access (http://www.microsoft.com) – реляционная СУБД в
составе Microsoft Office.
7. Oracle
Database
10g
Express
Edition
(Oracle
XE,
http://www.oracle.com) – бесплатный вариант одной из наиболее
мощных реляционных СУБД.
Перечисленные
инструментальные
программные
средства,
за
исключением MS Access, являются свободно распространяемыми и не
предъявляют
специфических
требований
к
аппаратным
средствам,
следовательно, организация экспериментов не требует дополнительных
затрат.
Таким образом, для проведения вычислительных экспериментов создана
программно-аппаратная среда, отличающаяся использованием свободно
распространяемого
программного
обеспечения,
воспроизводимость экспериментальных исследований.
что
обеспечивает
185
5.2.2. Состав и организация тестовой базы знаний
Тестовая база знаний для проведения экспериментов по исследованию
производительности поиска решений в интеллектуальных системах должна
удовлетворять следующим требованиям.
1. Масштабируемость, т.е. возможность варьирования размера базы
знаний в широких пределах, от нескольких тысяч до миллионов
фактов.
2. Однородность,
под
которой
понимается
сопоставимое
число
разновидностей фактов, соотношение которых остается неизменным
при масштабировании базы знаний.
3. Возможность контролировать глубину поиска с применением правил.
Перечисленные требования призваны обеспечить воспроизводимость
экспериментов, в т.ч. в рамках одной серии с разным числом фактов, и делают
невозможным применение фактов из реальных баз знаний, например, таких,
как адресная база жителей Санкт-Петербурга. Наиболее приемлемым
способом создания тестовой базы знаний является построение фактов с
помощью генератора случайных чисел. Создаваемые факты могут быть
абстрактными, однако, для контроля правильности применения правил им
полезно придать осмысленность.
На основании вышеизложенного для исследования времени поиска с
помощью генератора случайных чисел была создана база фактов, отражающих
родительские отношения (is_parent), супружеские связи (is_spouse) и
гендерную принадлежность (has_sex). Эти отношения выбраны неслучайно,
поскольку являются первичными, а все остальные – производными от них. С
помощью правил можно задавать любые производные отношения, глубина
поиска для которых заранее известна (отношения дед-внук, мачеха-падчерица
и т.п.) либо неизвестна (предок-потомок).
186
Субъекты и объекты родственных отношений в тестовой базе
идентифицируются числами. Для того, чтобы исключить циклические связи,
используются разные диапазоны чисел для каждого поколения. Так, например,
родители представлены числами в диапазоне (0,999999), а их дети –
(1000000,1999999), внуки – (2000000, 2999999). Таким образом, супруги
(предикат is_spouse) принадлежат одному поколению, дети (объект для
предиката is_parent) на одно поколение моложе (диапазон чисел на 1000000
больше). Равномерность распределения лиц мужского и женского пола в базе
фактов обеспечивается тем, что мужчины обозначаются нечетными числами, а
женщины – четными.
Фрагмент тестовой базы фактов приведен ниже.
f(9, is_parent, 1504647).
f(1009655,
f(25033, is_parent, 1029348). f(1554766,
f(27875, is_parent, 1514658). f(1043573,
f(2287, is_parent, 1097685). f(1411266,
f(723467,is_parent, 1484488). f(1055367,
…
f(1545476, is_spouse, 1839333).
f(43766, is_spouse, 347852).
is_parent,
is_parent,
is_parent,
is_parent,
is_parent,
2533565).
2839334).
2287668).
2675368).
2279936).
…
f(1545476, has_sex, female).
f(43767, has_sex, male).
К базе фактов могут быть применены правила, например,
% отношение отец – ребенок (глубина поиска 2)
f(X,is_father,Z) :- f(X,is_parent,Y), f(X,has_sex,male).
% отношение прапрародитель – правнук (правнучка)
%(глубина поиска 2)
f(X,is_grandparent,Z) :- f(X,is_parent,Y), f(Y,is_parent,Z).
% отношение мачеха – пасынок (глубина поиска 5)
f(X,is_step_mother,Z) :f(A,is_parent,Z), f(B,is_parent,Z), f(X,is_spouse,A),
f(X,has_sex,female), f(Z,has_sex, male), X \= B.
187
Таким образом, для проведения вычислительных экспериментов с целью
подтверждения
научных
результатов,
полученных
в
диссертационном
исследовании, была синтезирована база знаний, отличающаяся возможностью
масштабирования при сохранении основных параметров, что позволяет
проводить
эксперименты
с
базами
знаний
большой
размерности
с
использованием правил с различной глубиной поиска.
5.3. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ РАЗРАБОТАННЫХ МЕТОДОВ И
ИССЛЕДОВАНИЕ ИХ ПРОИЗВОДИТЕЛЬНОСТИ
5.3.1. Реализация индексации и предварительного отбора фактов,
релевантных условиям правил
Теоретическое
обоснование
предварительного
отбора
проиндек-
сированных фактов было сделано в п. 3.1.1 и 3.1.2. Рассмотрим данный
алгоритм на простом примере фактов, устанавливающих родственные
отношения, описанные в п. 5.2.2. Для наглядности в данном примере будут
использоваться не численные, а осмысленные значения аргументов субъектов
и объектов. Пусть имеется база знаний, состоящая из следующих фактов,
имеющих сквозную нумерацию. Здесь и далее будем придерживаться нотации
языка Prolog.
fn(1, sergey, has_sex,male).
fn(2, nikita, has_sex,male).
fn(3, sergey, is_a, person).
fn(4, natalia,is_a, person).
fn(5, nikita, is_a, person).
fn(6, egor, has_sex,male).
fn(7, natalia,has_sex,female).
fn(14,egor, is_a, person).
fn(8, sergey, is_parent,
fn(9, sergey, is_parent,
fn(10,natalia,is_parent,
fn(11,natalia,is_parent,
fn(12,nikita, is_parent,
fn(13,andrey, is_parent,
nikita).
andrey).
nikita).
andrey).
stepan).
egor).
Построим для этих фактов индекс по формуле (3.3):
x(sergey, s, [1,3,8,9]).
x(nikita, s, [2,5,12]).
x(natalia,s, [4,7,10,11]).
x(andrey, s, [13]).
x(egor, s, [6, 14]).
x(male, o, [1,2,6]).
x(person, o, [3,4,5,14]).
x(female, o, [7]).
x(nikita, o, [8,10]).
x(andrey, o, [9,11]).
188
x(has_sex,p, [1,2,6,7]).
x(stepan, o, [12]).
x(is_a, p, [3,4,5,14]).
x(egor, o, [13]).
x(is_parent,p,[8,9,10,11,12,13]).
Программный код на языке Prolog, реализующий построение такого
индекса, приведен ниже.
indexNewFact(t(S,P,O)) :- fn(_, S, P, O),!.
indexNewFact(t(S,P,O)) :indx(I),!,
retractall(f(S, P, O)),
retractall(o(S, P, O)),
assertz(fn(I, S, P, O)),
indexTerm('s', S, I),
indexTerm('p', P, I),
indexTerm('o', O, I),
retractall(indx(_)),
I1 = I+1,
assert(indx(I1)),!.
indexNewFact(_) :writef("(005E) Error indexing a new fact!\n").
indexTerm(SPO, Term, I) :retract(i(SPO, Term, List)),
assert( i(SPO, Term, [I | List])),!.
indexTerm(SPO, Term, I) :assert(i(SPO, Term, [I])).
Здесь и далее приводятся исходные тексты, составляющие программу
Semantic [70].
Создадим правила в виде r(conditionList, resultingList) с
использованием переменных, начинающихся с вопросительного знака, где
conditionList
– список условий, resultingList – список триплетов
результата. Первое правило устанавливает, что субъект является мужчиной,
если он является человеком и имеет мужской пол.
r([c(“?x”,is_a,person), c(“?x”,has_sex,male)],
[f(“?x”,is_a,man)].
Используем индекс для отбора фактов и находим пересечение значений
переменной ?x, используемых во всех условиях:
189
[sergey,natalia, nikita, egor] ∩ [sergey, nikita, egor] =
[sergey, nikita, egor].
Ниже
приведены
предикаты
на
языке
Prolog,
реализующие
предварительный отбор фактов, удовлетворяющих условиям правила.
preSelectFacts([], Out, Out1) :- % выход из рекурсии
!,
reduceFactsList(Out, Out1),
% сокр. списков путем пересечения
retractAll(kbPreselected(_,_)),
indxToFacts(Out1),% созд. сп. фактов для unifyBodyOfRule
negativeToFacts(Out),
% добавляем без сокращения список для триплетов отрицания
constToFacts(Out).
% без изменений также список триплетов без переменных
% ----------------------рекурсия -----------------------preSelectFacts([t(S,P,O) | RestBody], VarAndFacts,Out) :frontchar(S, X,_), X='?',
frontchar(O, Y,_), Y<>'?',
% субъект переменная
equal(O1,O),
equal(P1,P),
i('o', O1, Olist),
% индекс по объекту
i('p', P1, Plist),
% и по предикату
Slist = list::intersection(Olist, Plist),
% пересечение списков =
список всех возможных субъектов
updateFactList(vf(t(S, P1, O1), Slist),
VarAndFacts, VarAndFactsNew),
preSelectFacts(RestBody, VarAndFactsNew, Out),
!.
preSelectFacts([t(S,P,O) | RestBody], VarAndFacts,Out) :% объект переменная
frontchar(S, X,_), X<>'?',
frontchar(O, Y,_), Y='?',
i('s', S1, Slist),
equal(S1,S),
i('p', P1, Plist),
equal(P1,P),
Olist = list::intersection(Slist, Plist),
updateFactList(vf(t(S1,P1,O),Olist),
VarAndFacts, VarAndFactsNew),
preSelectFacts(RestBody, VarAndFactsNew, Out),!.
preSelectFacts([t(S,P,O) | RestBody], VarAndFacts,Out) :frontchar(S, X,_), X='?',
frontchar(O, Y,_), Y='?'
190
% субъект и объект переменные
equal(P1,P),
i('p', P1, Plist),
updateFactList(vf(t(S, P1, O),Plist), VarAndFacts,
VarAndFactsNew),
preSelectFacts(RestBody, VarAndFactsNew, Out),!.
preSelectFacts([t(S,P,O) | RestBody], VarAndFacts,Out) :frontchar(S, X,_),
X<>'?',
frontchar(O, Y,_),
Y<>'?',
% субъект и объект
константы
equal(S1,S),
equal(P1,P),
equal(O1,O),
fn(N,S1,P,O1),
updateFactList(vf(t(S, P1, O),[N]), VarAndFacts,
VarAndFactsNew),
preSelectFacts(RestBody, VarAndFactsNew, Out).
Далее, фильтруем списки фактов, требуемых для резолюции каждого
условия правила, включая в них только значения термов, попавшие в
пересечение. Для первого условия это факты (3, 5, 6), а для второго – (1, 2, 6).
Таким образом, для резолюции правила требуется унифицировать условия
правила с пятью фактами. Если не использовать индекс, то каждое условие
правила нужно сопоставлять со всеми 13-ю фактами, всего 26 фактов.
Исходный текст на языке Prolog, реализующий пересечение термов,
представлен ниже.
% нахождение пересечения термов по именам переменных
intersectByName([], List, List).
% Var - перем., SO - роль, Num - номер условия в правиле
intersectByName([tr(Var, SO1, Num1, NumList1, List1)| Rest],
TrCum, ListFinal) :% NumList - список номеров фактов, List - список термов
( membTermList(tr(Var, SO2, Num2, NumList2, List2), Rest),
% TrCum - накапливаемый список переменных и
Num1<>Num2, % связанных с ними фактов
List3 = list::intersection(List1, List2),
modifyNumList(NumList1, List1, List3, [], NumList11),
191
% список фактов,термов,сокращенный список,[],результирующий
modifyNumList(NumList2, List2, List3, [], NumList22),
termRemove(tr(Var,SO2,Num2,NumList2,List2),Rest,Rest2),
intersectByName([tr(Var,SO2,Num2,NumList22,List3)|Rest2],
[tr(Var,SO1,Num1,NumList11,List3)|TrCum],ListFinal),!
;
intersectByName(Rest, [tr(Var, SO1, Num1, NumList1,
List1) | TrCum], ListFinal)
).
% нахождение пересечения номеров фактов в условиях правила
intersectByNum([], List, List).
% Var - перем., SO - роль, Num - номер условия в правиле
intersectByNum([tr(Var1, SO1, Num, NumList1, _) | Rest],
TrCum, ListFinal):% NumList - список номеров фактов, List - список термов
( membTermList(tr(Var2, SO2, Num, NumList2,List2),Rest),
% TrCum - накапливаемый список
Var1<>Var2,
NumList3 = list::intersection(NumList1, NumList2),
termRemove(tr(Var2, SO2,Num,NumList2,List2),Rest,Rest2),
intersectByNum([tr(Var2,SO2,Num,NumList3,[])|Rest2],
[tr(Var1,SO1,Num,NumList3,[])|TrCum], ListFinal),!
;
intersectByNum(Rest, [tr(Var1, SO1, Num, NumList1, [])
| TrCum],
ListFinal)
).
membTermList(H, [H|_]).
membTermList(X, [_|T]) :membTermList(X,T).
termRemove(H, [H|T], T) :-!.
termRemove(X, [H|T],[H| Y]) :- termRemove(X,T,Y).
modifyNumList([],_,_,Destination, Destination) :- !.
modifyNumList([N|Source], [H|FullList], SparsedList, Dest,
Destination) :( list::isMember(H, SparsedList),
modifyNumList(Source, FullList, SparsedList,
[N|Dest], Destination),!
;
modifyNumList(Source,FullList,SparsedList, Dest,
Destination)
).
192
Рисунок 5.3 иллюстрирует процесс отбора фактов для правила
?x is_a man, приведенный в таблице 5.1.
?x= sergey
?x= nikita
?x= egor
?x is_a man
?x is_a person
i=(3,4,5,14)
?x= sergey
?x= natalia
?x= nikita
?x= egor
p = is_a
o = person
(3, sergey, is_a, person).
(4, natalia, is_a, person).
(5, nikita, is_a, person).
(14, egor, is_a, person).
(3, sergey, is_a, person).
(4, natalia, is_a, person).
(5, nikita, is_a, person).
(14, egor, is_a, person).
?x has_sex male
i=(1,2,6)
?x= sergey
?x= nikita
?x= egor
p = has_sex
o = male
(1, sergey, has_sex, male).
(2, nikita, has_sex, male).
(6, egor, has_sex, male).
(1, sergey, has_sex, male).
(2, nikita, has_sex, male).
(6, egor, has_sex, male).
(7, natalia, has_sex, female).
Рисунок 5.3 – Иллюстрация индексации и предварительного отбора
фактов
Здесь можно увидеть аналогию с процессами создания альфа и бета
деревьев в алгоритме RETE и конфликтного набора в алгоритме TREAT.
Единственным, но существенным отличием является тот факт, что здесь не
требуется создавать списки фактов для каждого правила заранее, а вся
процедура выполняется непосредственно перед обращением к правилу.
193
Таблица 5.1 – Предварительный отбор фактов для правила
?x is_a man
1-е условие правила
2-е условие правила
?x, is_a, person
?x, has_sex, male
Индекс для используемых
термов
x(is_a, p, [3,4,5,14]).
x(person, o, [3,4,5,14]).
x(has_sex, p, [1,2,6,7]).
x(male, o, [1,2,6]).
Пересечение по номерам
?x, s, [3,4,5,14]
?x, s, [1,2,6]
?x = [sergey, natalia, nikita,
egor]
?x = [sergey, nikita,
egor]
Исходное условие
Значения переменной
Пересечение по значениям
[sergey, nikita, egor]
Отфильтрованный индекс
?x, s, [3, 5,6]
?x, s, [1,2,6]
Заметим, что после завершения данной процедуры результатом является
готовый список значений переменной ?x без подстановки отобранных фактов
в правило. Иными словами, решение здесь получено без запуска машины
вывода.
Создадим
более
сложное
правило,
определяющее
отношение
«прародитель» (grandparent):
r([c(“?x”, parent,“?y”),c(“?y”, parent,“?z”)], [f(“?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) для
второго условия.
194
Находим пересечение номеров фактов, соответствующих каждой из
переменных, в каждом из условий. Для первого условия (8,9,10,11,12,13) ∩
(8,9,10,11) = (8,9,10,11), для второго – (12,13) ∩ (8,9,10,11,12,13) = (12,13).
Таким образом, мы добиваемся того, что каждому из условий правила в
процессе унификации будут предъявляться только факты, гарантированно
порождающие результаты (таблица 5.2).
В отличие от алгоритмов RETE и TREAT здесь добавление нового факта
в базу знаний не требует сложных вычислений. Для этого нужно только
присвоить факту номер и модифицировать три индекса, соответствующие
субъекту, предикату и объекту, либо создать новые индексы, если данные
сущности встречаются в первый раз.
Таблица 5.2 – Предварительный отбор фактов для правила grandparent
Исходное условие
Индекс для
используемых термов
Пересечение по номерам
Значения переменной
Пересечение по
значениям
Отфильтрованный
индекс
Таким
образом,
1-е условие правила
2-е условие правила
―?x‖, is_parent, ―?y‖
―?y‖, is_parent, ―?z‖
x(is_parent, p,
[8,9,10,11,12,13]).
x(is_parent, p,
[8,9,10,11,12,13]).
?x, 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]
реализация
алгоритма
индексации и предварительного отбора фактов, релевантных условиям
правила или запроса, подтвердившая свою работоспособность на тестовой
базе знаний.
195
5.3.2. Экспериментальное исследование времени обработки
правил SWRL как запросов SQL
В п.3.2.1 обоснована возможность реализации логического поиска в
реляционной модели знаний, что позволяет моделировать рассуждения с
использованием баз знаний, помещенных в среду реляционных СУБД.
Использованию базы знаний должна предшествовать операция загрузки
данный в соответствующую среду, которая вносит свой вклад в виде
накладных расходов. Таким образом, суммарное время обработки правил T с
использованием СУБД складывается из длительности следующих этапов:
T = tload + m(tsel + tstore),
где tload – время загрузки фактов в базу данных, tsel – время выполнения
запроса, tstore –время добавления результатов запроса в новые факты базы
знаний, m – количество запросов к СУБД в ходе поиска решений в течение
жизненного цикла базы знаний.
Длительность логического вывода вычислялась для SQL запросов,
выполняемых в среде СУБД MS ACCESS, OracleXE и MySQL в сравнении с
наивным выводом,
реализованным на языке Visual Prolog версии 7.2.
40
35
Время, с
30
MS Access
25
Prolog
20
OracleXE
15
MySQL
10
5
0
5000
10000
15000
20000
Количество фактов
Рисунок 5.4 – Длительность загрузки и индексации фактов
196
Помимо стандартного обратного вывода, используемого машиной
вывода Prolog на языке Prolog были также реализованы правила, аналогичные
операторам INNER JOIN, в сочетании с индексацией фактов.
На
рисунке
5.4
представлены
результаты
экспериментального
исследования времени загрузки и индексации фактов tload в среду СУБД MS
Access, MySQL, OracleXE, а также в среду SWI-Prolog.
Приведенные на рисунке 5.5 графики зависимостей времени обработки
правила для отношения отчим/мачеха — пасынок/падчерица демонстрируют,
что обработка запросов в среде СУБД выполняется почти на три порядка
быстрее, чем обычный переборный поиск, выполняемый машиной вывода
Пролога. Реализация логического вывода методами реляционной алгебры в
среде Prolog приблизительно в четыре раза медленнее по сравнению с SQL
запросом в СУБД MS ACCESS.
По сравнению с реализацией алгоритма RETE в составе оболочки
экспертных систем JESS здесь достигнут приблизительно трехкратный
прирост производительности.
10000
Время, с
1000
MS Acсess
Oracle XE
100
Prolog
MySQL
RETE JESS
10
Наивный вывод
1
5000
10000
15000
20000
Число фактов
Рисунок 5.5 – Длительность обработки правила в различных
инструментальных средах
197
Эксперименты с импортом базы знаний, построенной на продукционной
модели, в среду СУБД показали, что скорость логического вывода возрастает
более чем на три порядка по сравнению с наивным логическим выводом и
несколько выше скорости вывода, обеспечиваемой алгоритмом RETE.
Ускорение следует отнести на счет развитых механизмов индексации и
операций над множествами, присутствующих в современных СУБД. К
недостаткам такого подхода следует считать необходимость трансляции
правил базы знаний в конструкции на языке SQL. В этой связи представляет
интерес исследование возможности реализации логического вывода в средах
логического
программирования
методами
реляционной
алгебры.
Эксперименты, описанные в данном разделе, проводились совместно с Р.С.
Катериненко.
Таким образом, с помощью вычислительных экспериментов на
синтетической
логического
базе
поиска
знаний
в
среде
подтверждены
реляционных
возможность
СУБД
и
реализации
приблизительно
трехкратный выигрыш в скорости по сравнению с известными алгоритмами
ускорения логического вывода с учетом дополнительных затрат на загрузку
баз знаний в СУБД.
5.3.3. Реализация быстрых операций реляционной алгебры в
среде Visual Prolog
В разд. 3.3 были представлены теоретические основы для реализации
операций реляционной алгебры, имеющих полиномиальную сложность и
включающих в себя пересечение X ∩ Y (INTERSECT), вычитание X  Y
(DIFFERENCE), объединение X U Y (UNION) и соединение
(INNER JOIN).
Ниже приведен текст встроенного предиката для пересечения списков
list:intersection, входящего в состав библиотеки list языка Visual Prolog
7.4 (http://www.visual-prolog.com). Как и в разд. 3.3, вместо множеств мы будем
говорить о списках. Во-первых, список – это агрегат данных, с которым
198
манипулирует Prolog; во-вторых, списки допускают повторяющиеся значения,
сохранение которых необходимо в некоторых операциях.
predicates
intersection : (Elem* ListA, Elem* ListB) –
> Elem* IntersectionAB.
clauses
intersection([],_) = [].
intersection([X|Xs],Ys) = [X|intersection(Xs,Ys)]:isMember(X,Ys), !.
intersection([_|Xs],Ys) = intersection(Xs,Ys).
Библиотечный предикат list::isMember вызывает извлечение в
среднем ny/2 элементов списка Y, для каждого элемента списка X, что и
обуславливает низкую скорость работы данного предиката.
Отсортируем списки X={x} и Y={y} по возрастанию значений. В этом
случае оба списка можно обрабатывать совместно, и дерево поиска будет
состоять из nx+ny вершин. Таким образом, ожидаемое ускорение обусловлено
переходом от квадратичной к полиномиальной зависимости сложности поиска
от числа фактов, обоснование которого изложено в разд. 3.3. Сортировка
списков в Прологе также имеет полиномиальную сложность.
Разработанный
автором
предикат
нахождения
пересечения
отсортированных списков intersectSorted, включенный в разработанную
автором библиотеку быстрых предикатов для обработкти списков [71],
представлен ниже.
predicates
intersectSorted : (Elem* ListX, Elem* ListY) –
> Elem* IntersectionXY.
clauses
intersectSorted([],_) = [] :-!.
intersectSorted(_,[]) = [] :-!.
intersectSorted([Y|Xs],[Y|Ys]) =
[Y|intersectSorted(Xs,[Y|Ys])] :-!.
intersectSorted([X|Xs],[Y|Ys]) =
199
intersectSorted([X|Xs],Ys) :- X>Y,!.
intersectSorted([_|Xs],[Y|Ys]) =
intersectSorted(Xs,[Y|Ys]).
Первый и второй предикаты intersectSorted определяют, что
пересечение пустого списка с любым списком дает в результате пустой
список,
и
обеспечивают
выход
из
рекурсии.
Третий
предикат
intersectSorted обеспечивает включение совпадающих элементов в голове
первого и второго списков в результирующий список, содержащий
пересечение хвостов этих списков. Четвертый предикат intersectSorted
обеспечивает удаление головы из второго списка, если X > Y, и рекурсивный
вызов
поиска
пересечения
оставшихся
частей
списков.
Аналогично,
последний предикат удаляет голову из первого списка, если X < Y и вызывает
рекурсивно предикат intersectSorted. Отсечения в конце всех предикатов,
кроме
последнего,
обеспечивают
редукцию
дерева
поиска,
задавая
детерминистичность операций пересечения списков.
Отсортированность списков позволяет не просматривать список Y
сначала для каждого элемента списка X, а продолжать с элемента, на котором
остановился просмотр для предыдущего элемента. Таким образом, два списка
сканируются параллельно.
Библиотечный предикат для нахождения разности двух списков
list::difference приведен ниже. Здесь также используется библиотечный
предикат list::isMember, который вызывает извлечение в среднем ny/2
элементов списка Y, для каждого элемента списка X
clauses
difference([], _) = [].
difference([V | Rest], L) = difference(Rest, L) :isMember(V, L),
!.
difference([V | Rest], L) = [V | difference(Rest, L)].
200
Если оба списка отсортировать по возрастанию, то здесь также можно
сканировать оба списка параллельно. Похожим на intersectSorted образом
была реализована операция вычитания множеств XY с помощью предиката
differenceSorted:
predicates
differenceSorted :
(Elem* ListX, Elem* ListY) –> Elem* ListXExceptListY.
clauses
differenceSorted([],_) = [] :-!.
differenceSorted(R,[]) = R :-!.
differenceSorted([X|Xs],[X|Ys]) =
differenceSorted(Xs,[X|Ys]) :-!.
differenceSorted([X|Xs],[Y|Ys]) =
[X|differenceSorted(Xs,[Y|Ys])] :- X<Y,!.
differenceSorted([X|Xs],[_Y|Ys]) =
differenceSorted([X|Xs],Ys).
Стандартный предикат объединения множеств, также использующий
просмотр всего второго списка предикатом isMember для каждого элемента
первого списка, приведен ниже.
predicates
union : (Elem* ListA, Elem* ListB) -> Elem* UnionAB.
clauses
union([], R) = R.
union([X | Xs], Ys) = union(Xs, Ys) :isMember(X, Ys),
!.
union([X | Xs], Ys) = [X | union(Xs, Ys)].
Создание
отдельного
предиката
unionSorted
для
операции
объединения позволило автору существенно сократить размерность данной
задачи:
predicates
unionSorted : (Elem* ListX, Elem* ListY) –
Elem* UnionXY.
clauses
unionSorted([],R) = R :-!.
unionSorted(R,[]) = R :-!.
201
unionSorted([X|Xs],[X|Ys]) = unionSorted(Xs,[X|Ys]) :-!.
unionSorted([X|Xs],Ys) = [X|unionSorted(Xs,Ys)].
В составе библиотек Visual Prolog отсутствует стандартный предикат для
операции соединения двух списков, которой в реляционной алгебре
соответствует операция INNER JOIN. Ниже представлен текст разработанного
автором предиката innerJoinSorted, реализующего данную операцию над
двумя множествами кортежей {(x1, x2)} и {(y1, y2)} по совпадению x1 = y1.
predicates
innerJoinSorted:(t{X,X}* ListX, t{X,X}* ListY,
t{X,X,X}* JoinXY) -> t{X,X,X}* JoinXYfinal.
innerJoinSorted1:(t{X,X}, t{X,X}*, t{X,X}*, t{X,X,X}*)
procedure (i,i,o,o).
clauses
innerJoinSorted([], _, Final) = Final :- !.
innerJoinSorted([t(X1,X2)|Xresidue],Y,In)=
innerJoinSorted(Xresidue,YtoLookUp,Out) :innerJoinSorted1(t(X1, X2), Y, YtoLookUp, XY),
Out = list::append(XY, In).
innerJoinSorted1(_, [], [], []) :- !.
innerJoinSorted1(t(X1,_X2),[t(Y1,Y2)|Yresidue],
[t(Y1,Y2)|Yresidue],[]) :X1 < Y1, !.
innerJoinSorted1(t(X1,X2), [t(Y1,_)|Yresidue],
YlookUp,XY) :X1 > Y1, !,
innerJoinSorted1(t(X1,X2), Yresidue, YlookUp, XY).
innerJoinSorted1(t(X1,X2),[t(Y1,Y2)|Yresidue],
[t(Y1,Y2)|YlookUp], [t(X1,X2,Y2)|XY]) :innerJoinSorted1(t(X1,X2),Yresidue,YlookUp,XY).
Правила соединения отсортированных списков включают в себя два
предиката. Предикат innerJoinSorted определяет соединение двух списков
кортежей, а innerJoinSorted1 – соединение кортежа (первый аргумент) со
списком
кортежей.
Первый
экземпляр
предиката
innerJoinSorted
определяет, что соединение любого списка кортежей с пустым списком
порождает пустой список. Второй предикат innerJoinSorted устанавливает,
202
что результатом соединения двух списков кортежей, X = (x1, x1)·Xs и
Y=(y1, y2)·Ys является конкатенация двух соединений
и
.
Первый экземпляр предиката innerJoinSorted1 определяет, что соединение
любого кортежа с пустым списком порождает пустой список. Второй
экземпляр предиката innerJoinSorted1 определяет, что соединение кортежа
(x1, x1) со списком Y = (y1, y2)·Ys дает в результате пустой список, если x1<y1,
поскольку во всех кортежах в Ys также будет выполняться условие x1<y1
вследствие отсортированности Ys. Следовательно, кортеж (x1, x1) должен
исключаться из дальнейшего рассмотрения. Третий экземпляр предиката
innerJoinSorted1 означает, что если x1 > y1, то кортеж (y1,y2) исключается из
операции
соединения.
Наконец,
последний
экземпляр
предиката
innerJoinSorted1 включает в результирующий список элемента (y1, x2, y2) в
случае, если x1 = y1.
Таким образом, алгоритмы реализации быстрых реляционных операций
методами
логического
программирования
успешно
апробированы
в
программной среде Prolog. Полный список быстрых Пролог-предикатов для
реализации операций реляционной алгебры приведен в приложении 4.
5.3.4. Исследование быстродействия быстрых предикатов
Пролога для операций над множествами
Для
исследования
быстродействия
использовались
множества
положительных чисел, полученные с помощью генератора случайных чисел.
Предикат,
формирующий
список
положительных
чисел
экспериментальной базы фактов, представлен ниже.
predicates
generate:(positive,positive,positive*) procedure(i,i,o).
clauses
generate(0,_,[]) :- !.
generate(N,Range,[Num1|Residue]) :Num1=math::random(Range),generate(N-1,Range,Residue).
для
203
Наивный логический вывод был реализован итеративными предикатами,
приведенными ниже. Здесь f1(X), f2(X) и f(X) — исходные и
результирующий факт соответственно.
% Пересечение
isec() :- f1(X), f2(X), assert(f(X)), fail.
isec().
% Вычитание
idiff() :- f1(X), not(f2(X)), assert(f(X)), fail.
idiff().
% Соединение
ijoin() :f1(t(X1,X2)), f2(t(X1,Y2)), assert(f3(t(X1,X2,Y2))), fail.
ijoin().
Приведенные в таблице 5.3 и на рисунке результаты вычислительных
экспериментов показывают, что логический вывод с использованием
реляционных операций над отсортированными множествами на три-четыре
порядка быстрее стандартного обратного вывода машины вывода Пролога, в
то время как Пролог-предикаты реляционной алгебры дают ускорение не
более чем на два порядка по сравнению со стандартным выводом.
Таблица 5.3 – Результаты измерения быстродействия Пролог-предикатов для
обработки списков
Характеристика
Время обработки N фактов, с
5
N=10
N=2·105
N=4·105
N=8·105
Время сортировки списков
3,1
4,5
14,4
30,6
Время сортировки кортежей
3,73
6,5
18,11
36
Пересечение списков, наивный вывод
360
1536
5800
Пересечение списков, библ.предикат
1400
6530
22506
Пересечение быстрый предикат
0,08
0,15
0,33
Объединение списков, библ.предикат
2020
7203
22563
Объединение списков, быстрый предикат
0,09
0,28
0,56
1,13
Вычитание списков, быстрый предикат
0,09
0,17
0,36
1,2
0,73
204
Сортировка библиотечным предикатом list::sort демонстрирует
также высокую скорость, поэтому даже если считать, что сортировка
выполняется перед каждой реляционной операцией, выполнение реляционных
операций над отсортированными списками более чем на два порядка быстрее,
чем выполняется стандартный логический вывод Пролога.
Предложенные здесь Prolog-предикаты, не требуют больших объемов
оперативной памяти, поскольку во всех предикатах нехвостовая рекурсия (tail
recursion) отсутствует. Объем памяти, занимаемой тестовой программой за
вычетом памяти для хранения базы фактов, в течение всего процесса
обработки тестовых фактов не превышает 10Мб.
Графики на рисунке 5.6 иллюстрируют результаты, представленные в
таблице 5.2. Для сравнения здесь приведены также временные характеристики
вывода в среде Protégé JESS, полученные в п. 1.1.3. Операции над
множествами выполняются со скоростью, приблизительно на два порядка
бóльшую, чем демонстрирует JESS, реализованный в виде плагина Protégé.
К сожалению, сопоставить эти скорости на одних и тех же количествах
фактов не представилось возможным, поскольку при длинах списков,
меньших 100000, в Прологе время выполнения быстрых предикатов стремится
к нулю. При этом время сортировки списков превышает приблизительно на
порядок время работы быстрых предикатов, но выполнение сортировки
требуется только при изменениях базы фактов.
Натурные испытания позволили также проверить применимость
формул, приведенных в таблице 3.6 (глава 3, разд. 3.3) для оценки времени
вывода в предположении о том, что время вывода
T = tN,
где t – время развертывания одной вершины дерева поиска, N – число вершин.
205
Время сортировки списков
100000
Время сортировки кортежей
Пересечение списков,
наивный вывод
10000
Пересечение списков,
библ.предикат
Пересечение быстрый
предикат
Время выполнения операции, с
1000
Объединение списков,
библ.предикат
Объединение списков,
быстрый предикат
100
Вычитание списков, быстрый
предикат
Соединение кортежей,
наивный вывод
10
Соединение кортежей,
быстрый предикат
Пересечение списков,
библ.предикат
Пересечение быстрый
предикат
1
Объединение списков,
библ.предикат
Объединение списков,
быстрый предикат
0,1
Вычитание списков, быстрый
предикат
Соединение кортежей,
наивный вывод
0,01
Соединение кортежей,
быстрый предикат
Число фактов
RETE в JESS
Рисунок 5.6 – Результаты экспериментального исследования времени
обработки списков и кортежей переменных
Рисунок 5.7 демонстрирует, что данная формула применяться может как
для наивного логического вывода, так и вывода с помощью операций
реляционной алгебры.
206
Время обработки, с
100000
10000
Расчетное время, с
1000
Измеренное время, с
100
100000
200000
400000
800000
Число фактов
Рисунок 5.7 – Время наивного логического вывода для операции
пересечения множеств
-8
При этом время t составляет порядка 4*10 с для наивного вывода,
-7
2,8*10 с для стандартных предикатов, реализующих реляционные операции, и
-7
4*10 с для быстрых предикатов. Наконец, на рисунке 5.8 сведены вместе
результаты исследования быстродействия алгоритма RETE, вывода в среде
СУБД Oracle и быстрых предикатов Пролога для соединения кортежей –
наиболее востребованной операции при реализации логического вывода
методами реляционной алгебры.
Рисунок 5.8 показывает, что быстрых Пролог-предикатов для работы
над множествами демонстрируют существенно бóльшую скорость работы по
сравнению теми же операциями в среде СУБД и тем более, по сравнению с
алгоритмом RETE2, реализованным в JESS, при условии, что кортежи уже
отсортированы.
Следует ожидать, что СУБД могут проявить себя лучшим образом на
очень больших объемах фактов, поскольку в них лучше реализованы
механизмы индексации и кеширования больших баз данных, в то время как
Пролог будет испытывать проблемы с организацией стека и других областей
памяти, динамически выделяемых программе.
207
Время обработки, с
25
20
15
RETE JESS
10
Oracle
5
Соединение кортежей,
быстрый предикат
0
Число фактов
Рисунок 5.8 – Сравнение быстродействия RETE, Oracle и соединения
кортежей в среде Prolog
Испытываемый экземпляр JESS с бесплатной академической лицензией
мог не быть предназначенным для работы с большими базами знаний.
Возможно, коммерческие версии JESS демонстрируют более высокую
скорость.
Таким
образом,
методом
вычислительных
экспериментов
на
синтетической базе знаний большой размерности установлено, что логический
вывод методами реляционной алгебры выполнятся на порядок быстрее, чем
существующими методами ускорения вывода.
5.3.5. Методы управления прецедентами в условиях
изменчивости баз знаний
В п. 2.2.1 предложены три способа контроля актуальности прецедентов:
по запросу, по расписанию и по наступлению события, делающего прецедены
неактуальными. Ниже
приводится
описание
практической
реализации
механизма управления прецедентами всеми тремя способами в среде Prolog,
встроенного в машину вывода программы Semantic [70]. Для управления
208
прецедентами всеми тремя перечисленными способами необходимо снабжать
каждый прецедент (вторичный факт) fd списком первичных фактов fp, из
которых он был получен: fd = θ({fp}).
Ниже приведен шаблон правила rule, накапливающего список индексов
первичных фактов во все вторичные факты, включая факты, выводимые из
вторичных фактов.
% первый аргумент факта – индекс.
f([1], fact1).
f([2], fact2).
…
rule(derive_fact) :- f(List1, fact1),
f(List2, fact2),
…,
f(ListC, factC),
% формирование производного факта
derive_fact is func(fact1, fact2,…, factC),
ListD is concat(List1, List2,…, ListC),
% занесение нового факта в базу
assert( f(ListD, derived_fact) ).
Тогда
 для первого варианта при каждом обращении к прецеденту fd
требуется установить истинность фактов {fp} и если
{fp} = false,
удалить прецедент fd ;
 для второго варианта периодически следует извлекать из базы
знаний все прецеденты {fd} и для каждого из них проверить наличие
всех фактов {fp}, удалив прецеденты, для которых выполняется
условие {fp} = false;
 для третьего варианта при появлении события fp следует удалить из
базы и заново вывести все прецеденты, имеющие fp в списке
первичных фактов.
209
Как было показано в п. 2.2.1, первый способ гарантирует актуальность
прецедентов, но увеличивает время их извлечения за счет проверки наличия в
базе всех первичных фактов, являющихся его антецедентами. Правило для
такой проверки приведено ниже.
f(List, derived_fact) :- check_derived_fact(List).
check_derived_fact([H|T]) :- f([H],_).
check_derived_fact([_|T]) :- check_derived_fact(T).
Кроме того, для такой проверки при порождении прецедента требуется
сохранять время создания, поскольку вместо всех событий обрабатываются
только часть, а именно – события, произошедшие после создания
предыдущего прецедента.
Ниже приведено правило
для
порождения
вторичного факта hasWife (имеет жену), который создается в случае, если
последним событием для субъекта Person было заключение брака.
hasWife(Person, Wife) :hasWife(Person, Wife, Date0),
% Найти для Person все даты событий > даты прецедента
findall(Date,
(subject(E,Person),date(E,Date),Date>Date0), Dates),
max_list(Dates, LastDate), % Последняя дата
date(LastEvent, LastDate), % и ее событие
type(LastEvent, marriage), % имеет тип “marriage”
wife_name(Event, WifeName),
retractall(maritalStatus(Person, _,_)),
% Создание прецедентов
assert(maritalStatus(Person, married, LastDate)),
retractall(hasWife(Person,_,_)),
assert(hasWife(Person, Wife, LastDate)),!.
hasWife(Person, Wife) :% Если событий не было
hasWife(Person, Wife, _).
Второй способ не гарантирует актуальности прецедентов и может
применяться только для редко меняющихся состояний. Периодичность
обновления прецедентов должна быть выше, чем частота событий. Ниже
приведен
упрощенный
текст
Пролог-предикатов,
обновляющий
все
210
прецеденты для субъектов, вступивших
в брак после предыдущего
обновления.
updateHasWife :lastUpdate(Date0),
% дата последнего обновления
% Найти всех, кто вступил в брак после последнего обновления
findall(Person, (subject(E,Person), type(E,marriage),
date(E,DateM), DateM > Date0),Persons),
updatePerson(Persons,Date0).
% Обновление прецедентов для всех найденных людей
updatePerson([],_).
updatePerson([Person|Rest], Date0) :% Найти для Person все даты событий> даты предыдущего
% обновления
findall(DateM, (subject(E,Person), type(E,marriage),
date(E,DateM), DateM > Date0), Dates),
max_list(Dates, LastDateM),
date(LastEventM, LastDateM),
wife_name(LastEventM, Wife),
retractall(hasWife(Person,_)),
% Обновить
assert(hasWife(Person, Wife)),
% прецеденты
retractall(maritalStatus(Person,_,_)),
assert(maritalStatus(Person, married)),
updatePerson(Rest, Date0).
Наконец, третий способ обновления прецедентов в момент события, или
точнее, когда об этом событии стало известно. Текст Пролог-программы,
обновляющий
для
события
Event
соответствующие
ему
прецеденты,
представлен ниже.
updateEventDrivenFacts(Event) :type(Event, marriage), % Если событие - marriage
subject(Event, Person),
wife_name(Event, Wife),
retractall(hasWife(Person,_)), % Создание прецедентов
assert(hasWife(Person, Wife)),
retractall(maritalStatus(Person, _)),
assert(maritalStatus(Person, married)).
updateEventDrivenFacts(Event) :type(Event, divorce), % Если событие – divorce
repeat,
subject(Event, Person),
object(Event, Wife),
211
retractall(hasWife(Person,_)), % Удаление прецедента
retractall(hasEx_Wife(Person,_)), % Создание новых
assert(hasEx_Wife(Person, Wife)), % прецедентов
retractall(maritalStatus(Person, _)),
assert(maritalStatus(Person, divorced)).
updateEventDrivenFacts(_). % Если событие не породило фактов
Последний пример демонстрирует, что создание прецедентов проще
всего делать при появлении событий в базе знаний. Однако такой подход
может использоваться только для локальных баз знаний, в которых событие не
порождает фактов на удаленных ресурсах, о которых ресурсу, хранящему
данное событие, может быть ничего не известно. Данное обстоятельство не
является
неразрешимой
проблемой,
если
база
знаний
построена
с
использованием онтологий, в которых имеется таксономия понятий и правила
для
порождения
прецедентов,
известные
всем
участников
процесса
формализации знаний.
Оценим временные характеристики каждого из перечисленных способов
управления прецедентами. Пусть некий процесс описывается множеством
состояний S = {s} и событиями E = {e}, а средний интервал между событиями
равен ε, а интервал между запросами к фактам, соответствующим состояниям,
равен ζ. Для прецедентов, управляемых запросами, среднее число событий,
которые нужно обработать для получения факта Nq = ζ/ε. Если управление
прецедентами выполняется по расписанию с интервалом η, то среднее число
фактов, которые должны быть обработаны для данного процесса при каждом
запуске по расписанию Nt = ε/η, а вероятность актуальности факта s при
запросе в момент t, если последний запуск обновления фактов произошел в
момент te, при простейшем потоке событий
p(t, s)  e( t te )/ .
(5.1)
Для прецедентов, управляемых событиями, факты всегда являются
актуальными, и при запросах не требуется их обработка. Возможны
212
избыточные действия по актуализации прецедентов в случае, если факты
обновляются чаще, чем происходят запросы к ним. Среднее число обновлений
фактов на один запрос Ne = ε / ζ.
Рисунок 5.9 показывает характер зависимости числа событий, которые
требуется обрабатывать, от интенсивности запросов 1/ζ при неизменных
интервалах между событиями ε, и периодичности расписания η.
Приведенные здесь графики демонстрируют рост предпочтительности
прецедентов, управляемых событиями при увеличении интенсивности
запросов. Поскольку актуальность прецедентов, управляемых расписанием, не
гарантируется, применимость такого метода управления прецедентами
Число обрабатываемых событий
является ограниченной.
Прецеденты
Управляемые запросами
Управляемые
расписанием
Управляемые событиями
Интенсивность запросов 1/σ
Рисунок 5.9 – Зависимость числа обрабатываемых событий от
интенсивности запросов
Следует отметить, что полная реализация в информационной системе
концепции открытого мира, в которой отсутствие информации о факте не
означает отсутствия такого факта, приведет к парадоксу, заключающемуся в
том, что никакое состояние объекта не может считаться актуальным,
поскольку основывается на отсутствии событий, меняющим данное состояние.
213
Таким образом, в ходе исследования практически реализованы
алгоритмы контроля актуальности прецедентов, управляемого запросами,
расписанием
и
событиями,
которые
продемонстрировали
их
работоспособность на базах знаний большой размерности.
5.3.6. Исследование временных издержек на поддержание
актуальности прецедентов
Для исследования производительности предлагаемых методов в среде
SWI-Prolog была сгенерирована база фактов, содержащих отношения
has_child,
для
родственные
которых
отношения.
созданы
правила,
Субъекты
и
определяющие
объекты
вторичные
отношения
has_child
идентифицировались псевдослучайными целыми числами, выбираемыми в
диапазонах (0, 999999), (1000000, 2999999), (2000000, 3999999), (3000000,
4999999), (4000000, 5999999) таким образом, что в базе фактов оказались
представленными четыре поколения.
Время, затрачиваемое на создание прецедентов, исследовалось на
правилах, состоящих из двух антецедентов (has_sibling, has_grandchild,
has_grandgrandchild). Данные, отображенные на рисунке 5.10, подтверждают
практически
линейную
зависимость
этого
времени
от
произведения
размерностей фактов, используемых в правиле, представленную формулой
(5.13).
Для исследования времени извлечения и проверки актуальности
(верификации) прецедентов в качестве тестового было выбрано правило,
определяющее
отношение
(has_third_cousin).
«четвероюродный
брат/сестра»
214
10000
1000
Время, с
100
10
1
0,1
0,01
1,00E+06
1,00E+07
1,00E+08
1,00E+09
1,00E+10
1,00E+11
Размерность |F|·|F|
Рисунок 5.10 – Время обработки фактов правилом, состоящим из двух
антецедентов
Текст данного правила приведен ниже.
r(X,has_third_cousin,Y,J,S) :ff(A,has_grandgrandchild,X,_,L1),
ff(A, has_sibling, B,_,_),
ff(B,has_grandgrandchild,Y,_,L2),
flatten([L1,L2], Flist),
list_to_ord_set(Flist, S),
retractall(ff(X, has_third_cousin, Y, _, _)),
inc_j(J),
assert(ff(X, has_third_cousin, Y, J, S)).
Здесь
используются
«правнук/правнучка»
прецеденты,
определяющие
(has_grandgrandchild)
и
отношения
«
«брат/сестра»
(has_sibling). Данные прецеденты были найдены и сохранены в базе
прецедентов до вызова данного правила, благодаря чему среднее время поиска
одного решения не превысило 0,5 c.
В таблице 5.4 приведены результаты экспериментального исследования
среднего времени создания, извлечения и верификации одного прецедента в
зависимости от числа первичных фактов в базе знаний, а также удаления
фактов и связанных с ними прецедентов.
215
Таблица 5.4 – Результаты экспериментальных исследований времени
создания, извлечения и верификации прецедентов
Время для одного факта
Число
Общее
удаленУдаление
число
ных Создание Извлече- Верифипервичного
вторичвторич- вторичние
кация
факта и
ных
ных
ного
вторич- вторичного связанных с
фактов
фактов факта ного факта факта
ним
прецедентов
Число
первичных
фактов
Число
фактов
has_
third_
cousin
4000
908
9605
5665
0,0004
0,00002
0,00441
0,0044
8000
1000
43935
18781
0,0022
0,00004
0,006
0,0087
12000
1000
116506
45140
0,0054
0,00009
0,012
0,0182
16000
1000
233274
82163
0,017
0,00030
0,011
0,0211
24000
1000
1220084 149617
0,083
0,00064
0,015
0,0312
32000
1000
1770149 164599
0,324
0,00086
0,021
0,0479
40000
1000
1946656 177929
0,426
0,00091
0,022
0,0554
На рисунке 5.11 представлены графики, полученные из формул (4.2) и
(4.4) в сравнении с полученными результатами экспериментов. Несмотря на
то, что модель базы знаний является весьма грубой и не отражает деталей
процесса обработки фактов, в частности, временных затрат на организацию
рекурсивных вызовов, полученные результаты подтверждают практически
линейный рост всех измеренных времен при увеличении числа первичных
фактов.
При этом время верификации прецедентов всего лишь на порядок
меньше времени создания прецедентов, что делает нецелесообразной
проверку актуальности прецедентов при каждом обращении к ним. Данный
подход может быть оправданным только для прецедентов, верификация
которых не требуется, если их актуальность не может быть утрачена.
216
0,06
0,05
Верификация
(факт)
Время, с
0,04
Удаление (факт)
0,03
0,02
Верификация
(модель)
0,01
Удаление
(модель)
0
4000
8000
12000
16000
24000
32000
40000
Число первичных фактов в базе знаний
Рисунок 5.11 – Результаты экспериментального исследования времени
обработки прецедентов
Извлечение прецедентов без проверки актуальности выполняется
приблизительно на три порядка быстрее, чем обработка правил. Удаление всех
прецедентов, связанных с удаляемым фактом, соизмеримо по времени
выполнения с верификацией прецедента, но выполняется один раз и при этом
гарантирует актуальность всех оставшихся прецедентов.
Существующие оболочки экспертных систем имеют встроенные
алгоритмы
ускорения
поиска
на
дереве
решений,
поэтому
интерес
представляет также анализ целесообразности использования механизма
прецедентов в таких средах. Ниже приведены результаты экспериментального
исследования скорости логического вывода с прецедентами в Java-среде
разработки приложений для Semantic Web JENA. Данное исследование
проводилось совместно с А.С. Балгайраковой и Д.В. Ковбаско [114]. В
качестве тестовой базы знаний использовалось такое же множество фактов и
правил, как и в проведенном эксперименте в среде Prolog. В таблице 5.5
приведены результаты измерения времени создания прецедентов и извлечения
фактов из правил в среде JENA.
217
Таблица 5.5 – Время создания и извлечения прецедентов в среде JENA
Количество
первичных фактов
Время
создания
одного
прецедента,
с
Время
извлечения
одного факта на
основе базы
прецедентов, с
Суммарное
время
создания
прецедента и
извлечения
факта, с
Время
извлечения
одного факта
непосредственно
из правил, с
4000
0,0019
0,0006
0,0025
0,0295
8000
0,0031
0,0008
0,0039
0,0874
10000
0,0034
0,0017
0,0051
1,0483
20000
0,0099
0,0245
0,0344
2,0037
30000
0,0162
0,0384
0,0546
2,9472
40000
0,0407
0,1347
0,1754
3,7345
50000
0,0813
0,6477
0,729
5,6782
60000
0,1974
1,4623
1,6597
8,864
70000
1,4278
2,3745
3,8023
10,1422
80000
2,4271
3,9758
6,4029
15,1256
90000
2,7854
5,4768
8,2622
19,4578
100000
3,5647
6,2471
9,8145
23,7812
Данные в таблице 5.5 и на рисунке 5.12 демонстрирует более чем
двукратное ускорение вывода в среде JENA, достигаемое путем сохранения
промежуточных результатов в виде прецедентов даже для единичного запроса
к фактам, создаваемым с применением цепочек правил. Использование
прецедентов в случае множественных запросов обеспечивает ускорение как
минимум в 3 раза. Таким образом, можно заключить, что использование
механизма
прецедентов
позволяет
используемого алгоритма RETE.
улучшить
характеристики
широко
218
100
10
Время, с
1
0
20000
40000
60000
80000
100000
120000
0,1
0,01
0,001
Количество фактов
Время изв лечения одного факт а на основ е базы перв ичных факт ов
Суммарное в ремя создания прецедент а и изв лечения факт а.
Рисунок 5.12 – Временные характеристики обработки правил в среде Jena
Попутно
можно
заметить,
что
среда
JENA
демонстрирует
приблизительно десятикратное ускорение обработки запросов по сравнению
обратным логическим выводом, реализованном в Прологе.
Таблица 5.6 – Сравнительные характеристики методов редукции пространства
поиска
Универсальность
Сложность
Эвристики
-
эксп.
Кратность
сокращения
дерева
поиска,
порядков
1-5
Префиксные деревья
(RETE)
+
эксп.
3
широкий
Индексация и
предварительный
отбор фактов
+
эксп.
1-3
широкий
Теоретикомножественные
операции над
списками кортежей
переменных
+
эксп.
3
широкий
Метод
Домен
узкий
219
Вывод на основе
прецедентов (CBR)
-
эксп.
1-2
узкий
Прецеденты в
качестве
интеллектуальных
навыков
+
полиномиальная
3-5
широкий
В таблице 5.6 сведены характеристики существующих и разработанных
методов редукции пространства поиска, которые свидетельствуют о том, что
методы и алгоритмы, разработанные в ходе диссертационного исследования
отличаются универсальностью, т.е. не зависят от домена, а также при
комплексном использовании обеспечивают сокращение дерева поиска на 3-5
порядков при полиномиальной сложности логического поиска.
Таким образом, экспериментальным способом подтверждено, что
использование прецедентов обеспечивает полиномиальную сложность задачи
логического вывода и позволяет ускорить логический поиск на 3-5 порядков
по сравнению с переборными методами.
220
ВЫВОДЫ
1. В ходе диссертационного исследования показана практическая
реализуемость и эффективность разработанных методов при внедрении в
системы технологического обслуживания кассиров автоматизированной
системы бронирования авиаперевозок и организацию взаиморасчетов на
воздушном транспорте, что позволило сократить время электронного
оформления билетов и время обработки транзакций по интерактивной
отчетности на 12%.
2. Для подтверждения достоверности полученных результатов в работе
выполнен ряд экспериментальных исследований, обеспечивших получение
сравнительных оценок известных и разработанных алгоритмов, в т.ч.:
а) создана программно-аппаратная среда, отличающаяся использованием
свободно распространяемого программного обеспечения, что обеспечивает
воспроизводимость экспериментальных исследований;
б)
для
подтверждения
проведения
научных
вычислительных
результатов,
экспериментов
полученных
в
с
целью
диссертационном
исследовании, синтезирована база знаний, отличающаяся возможностью
масштабирования при сохранении основных параметров, что позволяет
проводить
эксперименты
с
базами
знаний
большой
размерности
с
использованием правил с различной глубиной поиска;
в) выполнена практическая реализация алгоритма индексации и
предварительного отбора фактов, релевантных условиям правила или запроса,
подтвердившая свою работоспособность на тестовой базе знаний;
г) с помощью вычислительных экспериментов на синтетической базе
знаний подтверждены возможность реализации логического поиска в среде
реляционных СУБД и приблизительно трехкратный выигрыш в скорости по
сравнению с известными алгоритмами ускорения логического вывода с
учетом дополнительных затрат на загрузку баз знаний в СУБД;
221
д) алгоритмы реализации быстрых реляционных операций методами
логического программирования успешно апробированы в программной среде
Prolog, а методом вычислительных экспериментов на синтетической базе
знаний большой размерности установлено, что логический вывод методами
реляционной алгебры выполнятся на порядок быстрее, чем существующими
методами ускорения вывода;
е) в ходе исследования практически реализованы алгоритмы контроля
актуальности
прецедентов,
управляемого
запросами,
расписанием
и
событиями, которые продемонстрировали их работоспособность на базах
знаний большой размерности;
ж) экспериментальным способом подтверждено, что использование
прецедентов обеспечивает полиномиальную сложность задачи логического
вывода и позволяет ускорить логический поиск на 3-5 порядков по сравнению
с переборными методами.
222
ЗАКЛЮЧЕНИЕ
В ходе исследований в рамках диссертационной работы выявлено
основное противоречие в области построения интеллектуальных систем на
продукционной модели знаний, состоящее в том, что требования к объему и
широте охвата базами знаний понятий и закономерностей реального мира
неуклонно возрастают, а существующие методы логического поиска не могут
обеспечить требуемое качество поиска, ограничиваясь его ускорением на 2-3
порядка.
Причина
данного
противоречия
заключается
в
том,
что
существующие методы поиска не учитывают многомерность баз знаний или
учитывают
ее
лишь
частично.
В
результате
проведенного
анализа
сформулирована научная проблема: разработка систем искусственного
интеллекта на продукционной модели знаний, использующих более быстрые,
чем известные, методы логического поиска.
На основе анализа исследований в смежных областях предложено
применить прецедентный подход к организации логического вывода с
использованием механизма навыков, что должно обеспечить потенциально
большее ускорение логического поиска в базах знаний большой размерности
при более низких темпах роста сложности, чем у известных алгоритмов.
Реализация данного утверждения потребовала разработки концептуальной
модели интеллектуальной системы большой размерности на продукционной
модели знаний, учитывающей многомерное описание пространства поиска,
ориентированное на использование методов быстрого логического вывода.
В процессе детализации концептуальной модели интеллектуальной
системы выявлены системные закономерности в пространстве поиска,
позволившие
на
основе
прецедентного
подхода
с
воспроизведением
механизма интеллектуальных навыков в виде прецедентов редуцировать
пространство поиска и за счет этого сократить структурную избыточность
223
дерева решений, в результате чего разработан ряд общесистемных методов, в
т.ч.:
а) разработан метод редукции дерева решений, учитывающий наличие в
нем
повторяющихся
ветвей,
позволяющий
за
счет
замены
цепочек
рассуждений единичными узлами сократить глубину поиска;
б) сформулированы условия применимости прецедентов в базах знаний
большой размерности, учитывающие особенности алгоритмов прямого и
обратного логического вывода;
в) разработаны методы организации темпоральных баз знаний,
использующих организацию прецедентов в пространстве события-состояния, а
также способы контроля актуальности фактов, позволяющие обеспечивать их
непротиворечивость в базах знаний;
г) разработан метод управления контекстом поиска в распределенных
базах знаний большой размерности, позволяющий за счет использования
ограниченного набора операций находить решения, обладающие полнотой и
непротиворечивостью;
д) показана реализуемость логического поиска методом случайных
блужданий, отличающегося сохранением в виде прецедентов наилучших
результатов поиска, позволяющего получать решения для всего пространства
параметров быстрее, чем переборные методы находят одно решение;
д) для поиска методом случайных блужданий с использованием
множества агентов установлено, что качество получаемых решений является
функцией времени поиска, и это позволяет получать удовлетворительные
решения в кратчайшее время.
Помимо
системных
закономерностей
в
ходе
диссертационного
исследования выявлены особенности многомерности в реальных базах знаний,
позволившие
разработать
алгоритмические
методы,
обеспечивающие
редукцию пространства поиска и за счет этого сокращение параметрической
избыточности дерева решений, в т.ч.:
224
а)
алгоритм
предварительного
отбора
релевантных
фактов
для
подстановки в условия правила, включающий в себя набор реляционных
операций над индексами и значениями переменных, отличающийся тем, что
факты отбираются непосредственно перед обращением к правилу, что
позволяет редуцировать пространство поиска как в статичных, так и в
динамичных базах знаний;
б) применение реляционных СУБД для реализации логического поиска,
отличающегося использованием преимуществ данной инструментальной
среды в виде поддержки работы с индексами и списками, позволяющего
заменить поиск отдельных решений массовой обработкой базы фактов
продукционными правилами;
в) алгоритмы, реализующие логический вывод с помощью теоретикомножественных операций над кортежами переменных методами логического
программирования, отличающиеся использованием отсортированных списков
кортежей переменных, что обеспечивает полиномиальную сложность поиска.
В процессе исследования выявлены структурные особенности баз
знаний большой размерности, позволившие на основе информационных весов
главных направлений поиска обеспечить сокращение размерности дерева
решений в стандартном и расширенном доменах на всех комбинациях
подзапросов, в т.ч.:
а)
разработать
словарно-контекстный
метод
вычисления
инфор-
мативности понятий, отличающийся использованием в качестве базы словаря
предметной области, обеспечивающий независимость оценки количества
информации как от субъективных факторов автора и получателей сообщений,
так и от способов кодирования данных;
б) предложить метод оценки информативностей утверждений вида
субъект-предикат-объект, использующий словарно-контекстный подход и
теоретико-множественную обработку корпуса фактов, позволяющий получать
225
правдоподобные
значения
количества
информации
в
фактах
для
последующего использования в задачах поиска;
в)
предложить
отличающийся
позволяющий
именования
метод
оценки
использованием
абстрагироваться
метаданных
и
от
информативности
баз
словарно-контекстного
способов
оптимизировать
подхода,
кодирования
структуры
данных,
данных
в
и
процессе
проектирования баз данных;
г) разработать метод упорядочения элементов запроса или антецедентов
продукционного
правила,
отличающийся
использованием
оценки
их
информативностей, позволяющий редуцировать пространство поиска за счет
рациональной организации дерева решений;
д) построить модель базы знаний в троичной логике, отличающаяся
наличием трех состояний логических переменных, позволяющая выявлять не
только истинность или ложность цели, но также отсутствие решения, что
является необходимым условием расширения домена поиска;
е) предложить способ построения продукционных правил в троичной
логике, отличающийся формированием списков фактов, истинность которых
требуется установить для доказательства цели, позволяющий визуализировать
результаты логического вывода и определять направления расширения домена
поиска;
ж) предложить подход к поиску решений в многомерной базе знаний,
отличающийся
использованием
троичной
логики
для
дискриминации
состояний отсутствия решения и недостаточности данных для его поиска, что
обеспечивает контролируемое расширение домена поиска;
з)
теоретически
обосновать
линейную
зависимость
вероятности
нахождения решения в узком домене от степени соответствия домена запроса
домену поиска;
226
и) получить экспериментальное подтверждение целесообразности
применения логического вывода в расширяющееся домене, если большая
часть фактов, требуемых для вывода, размещается в узком домене.
В ходе исследования подтверждена практическая реализуемость и
эффективность
разработанных
методов
при
внедрении
в
системы
технологического обслуживания кассиров автоматизированной системы
бронирования авиаперевозок и систему взаиморасчетов на воздушном
транспорте, что позволило сократить время электронного оформления билетов
и время обработки транзакций по интерактивной отчетности на 12%.
Для подтверждения достоверности полученных результатов в работе
выполнен ряд вычислительных экспериментов, обеспечивших получение
сравнительных оценок известных и разработанных алгоритмов, в т.ч.:
а) создана программно-аппаратная среда, отличающаяся использованием
свободно распространяемого программного обеспечения, что обеспечивает
воспроизводимость экспериментальных исследований;
б)
синтезирована
база
знаний,
отличающаяся
возможностью
масштабирования при сохранении основных параметров, что позволяет
проводить
эксперименты
с
базами
знаний
большой
размерности
с
использованием правил с различной глубиной поиска;
в) выполнена практическая реализация алгоритма индексации и
предварительного отбора фактов, релевантных условиям правила или запроса,
подтвердившая свою работоспособность на тестовой базе знаний;
г) подтверждены возможность реализации логического поиска в среде
реляционных СУБД и приблизительно трехкратный выигрыш в скорости по
сравнению с известными алгоритмами ускорения логического вывода с
учетом дополнительных затрат на загрузку баз знаний в СУБД;
д) алгоритмы реализации быстрых реляционных операций методами
логического программирования успешно апробированы в программной среде
Prolog, а методом вычислительных экспериментов на синтетической базе
227
знаний большой размерности установлено, что логический вывод методами
реляционной алгебры выполнятся на порядок быстрее, чем существующими
методами ускорения вывода;
е)
практически
реализованы
алгоритмы
контроля
актуальности
прецедентов, управляемого запросами, расписанием и событиями, которые
продемонстрировали их работоспособность на базах знаний большой
размерности;
ж) экспериментальным способом подтверждено, что использование
прецедентов обеспечивает полиномиальную сложность задачи логического
вывода и позволяет ускорить логический поиск на 3-5 порядков по сравнению
с переборными методами.
Таким образом, представленные выше результаты диссертационного
исследования
позволяют
утверждать,
что
сформулированная
научная
проблема – разработка систем искусственного интеллекта на продукционной
модели
знаний,
использующих
более
быстрые
по
сравнению
с
существующими методы логического поиска – решена с учетом принятых
ограничений и допущений, что подтверждается внедрением результатов и
проведенными вычислительными экспериментами.
228
СПИСОК СОКРАЩЕНИЙ И УСЛОВНЫХ ОБОЗНАЧЕНИЙ
ИИ
искусственный интеллект
ИС
интеллектуальная система
ИСРВ
интеллектуальная система реального времени
СУБД
система управления базами данных
ЭС
экспертная система
CBR
Case Based Reasoning (вывод на основе прецедентов)
CWA
Closed World Assumption
HTML
Hypertext Markup Language
HTTP
HyperText Transfer Protocol
IQ
Intelligence Quotinent
OWA
Open World Assumption
OWL
Web Ontology Language
RDF
Resource Description Framework
RuleML
Rule Markup Language
SQL
Structurized Query Language
SWRL
Semantic Web Rule Language
URI
Uniform Resource Identifier
URL
Uniform Resource Location
W3C
WorldWide Web Consortium
XML
eXtended Markup Language
229
ТЕРМИНЫ И ОПРЕДЕЛЕНИЯ
В тексте диссертации применены следующие термины с соответствующими определениями.
1. база знаний: Разновидность базы данных, предназначенная для сбора, организации, поиска и использования информации человеком или машиной.
2. интеллект (intelligence): Способность субъекта ставить перед собой цели
и добиваться их достижения.
3. искусственный интеллект: В контексте данной работы под искусственным интеллектом, в основном, понимается моделирование когнитивной деятельности на компьютерах.
4. интеллектуальная система: Техническая или программная система, способная решать задачи, традиционно считающиеся творческими, принадлежащие конкретной предметной области.
5. интеллектуальная система реального времени: Интеллектуальная система, реализованная во встроенной вычислительной системе.
6. интеллектуальный агент: Искусственная сущность, самостоятельно извлекающая информацию из различных источников для выполнения цели, заданной человеком.
7. компетентностный подход: Прецедентный подход к исследованию проблем ИИ, основанный на триаде «знания – умения – навыки», обычно используемой в образовании.
8. контекст: Пространство понятий предметной области, ограниченное целями коммуникационного акта.
9. онтология: Наука, изучающая бытие; в данной работе – наиболее общее
формальное описание универсума или предметной области.
230
10. продукционная модель знаний: Представление знаний в виде совокупности правил и использовании машины логического вывода.
11. продукционная система: Модель вычислений, основанная на продукционной модели знаний.
12. семантическая сеть: Информационная модель предметной области, состоящая из триплетов субъект-предикат-объект, объединенных в виде ориентированного графа.
13. ситуационное управление: Метод решения сложных задач управления,
заключающийся в замене множества состояний объекта управления обобщенными ситуациями, для каждой из которых имеется обозримое множество решений.
14. экспертная система: Программа, воспроизводящая в себе навыки эксперта и тиражирующая их для менее квалифицированных пользователей.
15. Case Based Reasoning: Вывод на основе прецедентов, метод решения задач путем адаптации и использования известных решений.
16. Closed World Assumption: Допущение замкнутого мира, в котором, любое
утверждение, истинность которого не подтверждена, считается ложным.
17. HyperText Markup Language: Язык гипертекстовой разметки, основной
язык представления документов на Интернет-ресурсах
18. HyperText Transfer Protocol: Протокол обмена между Интернетресурсами и программами-браузерами.
19. Intelligence Quotinent: Количественная оценка уровня интеллекта.
20. Open World Assumption: Допущение открытого мира, в котором истинность утверждения не зависит от того, что известно конкретному наблюдателю или агенту.
231
21. Resource Description Framework – Язык представления фактов в Интернете 3-го поколения.
22. Rule Markup Language – Язык записи правил в Интернете 3-го поколения.
23. Semantic Web, Глобальная семантическая сеть – Семантическая Паутина, Интернет 3-го поколения.
24. Structurized Query Language – Структурированный язык запросов, используемый в системах управления базами данных.
25. Semantic Web Rule Language – Язык записи правил в Семантической паутине.
26. Uniform Resource Identifier – Последовательность символов, однозначно
идентифицирующая Web-ресурс.
27. Uniform Resource Location – Стандартизованный метод записи адресов
ресурсов в сети Интернет.
28. Web Ontology Language – Язык представления онтологий в Семантической паутине.
29. World Wide Web Consortium – консорциум, созданный для разработки и
внедрения технологических стандартов для Семантической паутины.
30. World Wide Web – Всемирная паутина, Интернет.
31. eXtended Markup Language – расширение языка HTML, языка разметки
гипертекстовых документов.
232
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1.
Винер, Н. Кибернетика / Н.Винер // М.: Советское радио. – 1968.
2.
Шеннон, К. Работы по теории информации и кибернетике / Клод Шеннон
// М.: Изд-во иностранной литературы. – 1963. – С. 830.
3.
Turing, A. Computing Machinery and Intelligence / AlanTuring // Mind, October – 1950. – С. 433-460.
4.
Рассел, С. и Норвиг, П. Искусственный интеллект: современный подход =
Artificial Intelligence: A Modern Approach (AIMA) / C. Рассел, П. Норвиг //
М.: "Вильямс". – 2007. – С. 1424. – ISBN 0-13-790395-2.
5.
Мински, М. и Паперт, С. Искусственный интеллект / М. Мински, С. Паперт // Univ. of Oregon Press. – 1972.
6.
Заде, Л. Роль мягких вычислений и нечеткой логики в понимании, конструировании и развитии информационных/интеллектуальных систем / Л.
Заде // Новости Искусственного Интеллекта. – 2001. –№ 2-3, с. 7-11.
7.
Noyes, James. Fundamentals of Artificial Intelligence - Lisp / J. Noyes // Lexington, MA : Copyrighted material. – 1992. – ISBN 978-0669194739.
8.
Vapnik, V. N. Statistical Learning Theory / V.N. Vapnik // NY: John Wiley. –
1998.
9.
Shapiro, Stuart C. Encyclopedia of Artificial Intelligence / Stuart C. Shapiro
and David Eckroth // NY:Wiley. – 1987.
10. Поспелов, Д. А. Ситуационное управление. Теория и практика / Д.А. Поспелов // – М.: Наука. – 1986. – С. 228.
11. Искусственный интеллект. Справочник в трех томах / под ред. В. Н. Захарова, Э. В. Попова, Д. А. Поспелова, В. Ф. Хорошевского // М.: Радио и
связь. – 1990.
12. Аверкин, А. Н., Гаазе-Раппопорт, М. Г. и Поспелов, Д.А. Толковый словарь по искусственному интеллекту / А. Н. Аверкин, М. Г. ГаазеРаппопорт, Д.А. Поспелов // М.: Радио и связь. – 1992.
233
13. Гаврилова, Т. А. и Червинская, К. Р. Извлечение и структурирование знаний для экспертных систем / Т. А. Гаврилова, К. Р. Червинская // М.: Радио и связь. – 1992. – С. 200.
14. Гаврилова, Т. А. и Хорошевский, В. Ф. Базы знаний интеллектуальных
систем / Т. А. Гаврилова, В.Ф. Хорошевский // СПб: Питер. – 2000. – С.
382.
15. Тарасов, В. Б. Системно-организационный подход в искусственном интеллекта / В. Б.Тарасов // Программные продукты и системы. – 1999. –
№3.– С. 6-13.
16. Тарасов, В. Б. От многоагентных систем к интеллектуальным организациям: философия, психология, информатика / В. Б.Тарасов // М.: Эдиториал
УРСС. – 2001. – С. 352.
17. Еремеев, А. П. и Королев, Ю. И. Средства моделирования на основе темпоральных сетей Петри для интеллектуальных систем поддержки принятия решений / А. П. Еремеев, Ю. И. Королев // Тез. докл. Тринадцатой
национальной конференции по искусственному интеллекту КИИ-2012. –
Белгород. – 2012. –URL: http://www.raai.org/resurs/papers/kii2012/doclad/eremeev.doc.
18. Чернавский, Д. С. Синергетика и информация: Динамическая теория информации / Д. С. Чернавский // URSS.RU. – 2013. –C. 304. – ISBN 978-5397-03391-6.
19. Bundy, Alan, и др. Rippling: Мeta-level Guidance for Mathematical Reasoning / A. Bundy e.a. // Cambridge University Press. – 2005. – С. 216. –URL:
http://www.inf.ed.ac.uk/publications/report/0315.html.
DOI:10.2277/052183449X.
20. Cycorp: The Cost of Common Sense // Technology Review. Wood, Lamont. –
March, 2005.
234
21. Musen, Mark A. Automated generation of model-based knowledge-acquisition
tools / M.A. Musen // London : Pitman Publishing. – 1989. – ISBN 0-27308812-2.
22. Люгер, Дж. Ф. Искусcтвенный интеллект: стратегии и методы решения
сложных проблем. Изд. 4-е. / Дж. Ф. Люгер // Издательский дом "Вильямс". – 2003. – С. 864. – ISBN 5-8459-0437-4.
23. Kurzweil, Raymond. The Age of Intelligent Machines /. Kurzweil // Copyrighted Materials. – January, 1992. – ISBN 0-262-61079-5.
24.
Братко, Иван. Программирование на языке ПРОЛОГ для искусственного
интеллекта / Иван Братко // М. : Мир. – 1990. – С. 560.
25. Бобцов, А. А. Адаптивное и робастное управление неопределенными системами по выходу / А.А.Бобцов // СПб: Наука. – 2011. – С.174.
26. Бобцов, А. А. и Никифоров В.О. Адаптивное управление по выходу: Проблематика, прикладные задачи и решения / А.А. Бобцов, В.О. Никифоров
// Научно-технический вестник информационных технологий, механики и
оптики. – 2013. – Вып.1.– С.1-14. – ISSN 2226-1494.
27. Советов, Б. Я. и Яшин, А. И. Однородный математический метод процессов планирования и управления / Б. Я. Советов, А. И. Яшин // Известия
СПбГЭТУ "ЛЭТИ". – 2012 . №5. – С.31-35.
28. Бессмертный, И. А. Концепция построения обучающей экспертной симулирующей системы [электронный ресурс] / И. А. Бессмертный, З. О. Джалиашвили, М. В. Зиньков // Материалы X Международной конференции
"Применение новых технологий в образовании". – Троицк. – 2001, –URL:
http://www.bytic.ru/cue99M/cfd6l3d8yy.html.
29. Бессмертный, И. А. О корректности отношений в базах знаний / И. А.
Бессмертный, З. О. Джалиашвили // Тез. докл. VI Общеросс. научн. конф.
"Современная логика: Проблемы теории, истории и применение в науке".
– СПб: СПбГУ. – 2000.
235
30. Bessmertny, Igor. Artificial Intelligence: A Teaching Experience / I.
Bessmertny, V. Kulagin // Proceedings of 9th IACEE World Conference on
Continuing Engineering Education (WCCEE– 2004). – Tokyo, Japan. – 2004.
31. Bessmertny, Igor. An Approach to Building Learning Expert Systems / I.
Bessmertny, V. Kulagin // Proceedings of 10th World Conference on Continuing Engineering Education (WCCEE– 2006). – Vienna, Austria. – 2006.
32. Bessmertny, Igor. Semantic Network as a Knowledge Base in Training Systems / I. Bessmertny, V. Kulagin // Proceedings of 11th IACEE World Conference on Continuing Engineering Education (WCCEE– 2008). – Atlanta,
GA,USA. – 2008.
33. Bessmertny, Igor. Semantic Web and Global Artificial Intelligence [CD-ROM
] / I. Bessmertnyy,. Katerinenko // Proceedings of 12th IACEE World Conference on Continuing Engineering Education (WCCEE– 2010). – Singapore :
Research Publishing. – 2010. – ISBN 978-981-08-7156-7.
34. Bessmertny, Igor. An Intellectual Agent in Training Systems / I. Bessmertny //
Proceedings of The 5th International Symposium on Education and Information Systems, Technologies and Applications. – Orlando, FL, USA. – 2007.
Vol. 1, – С.86-89.
35. Bessmertny, Igor. Visual Prolog and Semantic Networks at Knowledge Visualization / I. Bessmertny // Proceedings of Visual Prolog Application & Language Conference. – СПб. – 2008. – С.107-111.
36. Бессмертный, И. А. Semantic Web и продукционная модель знаний / И.А.
Бессмертный, Р.С. Катериненко // Труды всероссийской конф. "Управление знаниями и технологиями семантического веба". – СПб: СПбГУ ИТМО. – 2010. – С.183-185. – ISBN 978-5-7577-0369-5.
37. Бессмертный, И. А. Компетентностная модель искусственного интеллекта
/ И.А. Бессмертный, Р.С. Катериненко // Труды конгресса по интеллектуальным системам и информационным технологиям IS&IT'11. – М.: Физ-
236
матлит; Минобрнауки РФ; РАИИ; Технологический институт ЮФУ. –
2011. – Т. 3, – С.11-16. – ISBN 978-5-9221-1329-8.
38. Бессмертный, И. А. Применение троичной логики в интеллектуальных
системах на продукционной модели знаний / И. А. Бессмертный // Труды
Конгресса по интеллектуальным системам и информационным технологиям "IS&IT'12". –М.: Физматлит. – 2012. –Т. 1, – С. 409-414. – ISBN 9785-9221-1329-8.
39. Бессмертный, И. А. Поиск в базах знаний в базисе троичной логики и
расширяющемся домене / И.А. Бессмертный, Ю.А. Королева // Труды
Mеждународного конгресса по интеллектуальным системам и информационным технологиям IS&IT'2013. – М.: Физматлит. – 2013. – Т. 1. – С.
128-132.
40. Бессмертный, И. А. Эффективный логический вывод в продукционной
модели с помощью баз данных с вертикальной архитектурой / И.А. Бессмертный, Р.С. Катериненко // Сб. трудов Всеросс. конф. "Инженерия
знаний и технологии Semantic Web– 2011" . – СПб: НИУ ИТМО. – 2011. –
С. 150-157. – ISBN 978-5-7577-0390-9.
41. Бессмертный, И. А. Верификация систем управления проектами с помощью продукционных правил на основе двоичных диаграмм решений /
И.А. Бессмертный, Р.С. Катериненко, Н.С. Пичугин // Труды Международной научно-практической конференции «Инженерия знаний и технологии семантического веба» KESW-2012. – СПб: НИУ ИТМО. – 2012. –
С. 235-243. – ISBN 978-5-7577-0410-4.
42. Бессмертный, И. А. Разработка онтологического описания технических
индикаторов / И.А. Бессмертный, Р.С. Катериненко, Н.С. Пичугин // Труды Международной научно-практической конференции «Инженерия знаний и технологии семантического веба» KESW-2012. – СПб: НИУ ИТМО.
– 2012. – С. 68-74. – ISBN 978-5-7577-0410-4.
43. Бессмертный, И. А. Создание тезауруса предметной области на основе
237
автоматического извлечения ключевых слов из документов / И.А.
Бессмертный, А.Б. Нугуманова // Труды Межд. научно-практ. конф.
«Инженерия знаний и технологии семантического веба» KESW-2012. –
СПб: НИУ ИТМО. – 2012. – С. 89-102. – ISBN 978-5-7577-0410-4.
44. Bessmertny, I., Nugumaniva, A. Applying the Latent Semantic Analysis to the
Issue of Automatic Extraction of Collocations from the Domain Texts / I.
Bessmertnyi, A. Nugumanova // Communications in Computer and
Information Science. Proc. of 4th Conf. on knowledge engineering and
Semantic Web, Oct. 7 - 9, Saint Petersburg - 2013.
45. Bessmertnyi, I. About creating intelligence systems in ternary logic
[CD_ROM] / I. Bessmertnyi, A. Nevidimov, S. Eliseev // Proc. of 4th Int'l
Conf. on knowledge engineering and ontology development. – Barcelona :
SciTePress. – 2012. – С. 161-165. – ISBN 978-989-8565-30-3.
46. Бессмертный, И. А. Построение семантических отношений между ключевыми понятиями предметной области с помощью латентного семантического анализа / И.А. Бессмертный, А.Б. Нугуманова // Тез.докл. Всеросс.
конф. Информационные и математические технологии в науке, технике,
медицине. – Томск : ТПУ. – 2012. – С. 91-93.
47. Бессмертный, И. А. Верификация информационного наполнения системы
управления проектами с помощью продукционных правил / И.А. Бессмертный, Р.С. Катериненко // Тез. докл. 5-й Российской мультиконференции «Информационные технологии в управлении» (ИТУ– 2012). –
СПб: – 2012. – С. 79-83.
48. Бессмертный, И. А. Применение троичной логики в интеллектуальных
информационно-управляющих системах / И.А. Бессмертный, Ю.А. Королѐва // Тез. докл. 5-й Российской мультиконференции «Информационные
технологии в управлении» (ИТУ– 2012). – СПб. – 2012. – С. 567-572.
49.
Бессмертный, И. А. Реализация алгоритма извлечения ключевых слов из
текстов предметной области на основе модели MapReduce / И. А. Бессмертный, А. Т. Каримов, А. О. Новоселов и А. Б. Нугуманова // Труды
238
VIII Международной научно-практической конференции "Современные
информационные технологии и ИТ-образование", М., 2013.
50. И. А. Бессмертный и Ю. А. Королева. О построении интеллектуальных
систем в троичной логике // Программирование. –М.: Pleiades Publishing,
Ltd. – 2014. ––№ 1. – С. 31-35.
51. Бессмертный, И.А. Визуализация знаний на основе семантической сети /
И.А. Бессмертный // Программирование. –М.: Pleiades Publishing, Ltd. –
2010. –Т. 36. –№ 4. – С. 16-24. – ISSN 0132-3474.
52. Бессмертный, И.А. Метод ускорения логического вывода в продукционной
модели
знаний
/
И.А.Бессмертный,
Р.С. Катериненко
//
Программирование. – М.: Pleiades Publishing, Ltd. – 2011. – Т. 42. –№ 4. –
С. 76-80. – ISSN 0132-3474.
53. I. Bessmertny. On Constructing Intellectual Systems in Ternary Logic //
Programming and Computer Software. – 2011. –№ 1, – C. 43-46.
54. Bessmertny, I.A. Knowledge Visualization Based on Semantic Networks //
Programming and Computer Software. –М.: Pleiades Publishing, Ltd.
Distributed Worldwide by Springer. – 2010. –Vol. 36. –N 4. – С.197-204.
55. Bessmertnyi, I.A. Inference acceleration in production model of knowledge /
I.A. Bessmertnyi,.S. Katerinenko // Programming and Computer Software. –
М.: Pleiades Publishing, Ltd. Distributed Worldwide by Springer. – 2011. –
Vol. 42. – N 4. – С.197-199.
56. Бессмертный, И.А. Методы
интеллектуального
агента
поиска
/
информации
И.А. Бессмертный
с
использованием
//
Изв.
вузов.
Приборостроение. –– 2009. –№ 12. – С. 26-31.
57. Бессмертный, И.А. Применение реляционных операций для логического
вывода в продукционных системах / И.А. Бессмертный // Известия вузов.
Приборостроение. – 2010. –Т. 53. – Вып. 10. – Вычислительная техника. –
С. 34-37.
58. Бессмертный, И.А. Методы поиска информации в продукционных
239
системах / И.А. Бессмертный // Изв. вузов Приборостроение. – 2011. –№.
6. – С. 56-59.
59. Бессмертный И.А. Управление контекстом в информационных системах /
И.А. Бессмертный // Известия вузов. Приборостроение. Сборник трудов
сотрудников кафедры ВТ. – 2012. – С. 7-13.
60. Бессмертный, И.А. Семантическая паутина и искусственный интеллект /
И.А. Бессмертный // Научно-технический вестник СПбГУИТМО. – 2009.
–Т. 64. – Вып. 6. – С. 77-83.
61. Бессмертный, И.А. Теоретико-множественный подход к логическому
выводу в базах знаний / И.А. Бессмертный // Научно-технический вестник
СПбГУИТМО. – 2010. –Т. 66. – Вып. 2. – С. 43-48.
62. Бессмертный, И.А. Оценка количества информации в базах знаний / И.А.
Бессмертный // Научно-технический вестник СПбГУИТМО. – 2011. –
Вып. 2. – С. 146-149.
63. Бессмертный, И.А. Быстрый логический вывод в среде программирования
Visual Prolog / И.А. Бессмертный // Научно-технический вестник
СПбГУИТМО. –– 2010. –Т. 67. – Вып. 3. – С. 50-56.
64. Бессмертный, И.А. Ассоциативный поиск данных с помощью нейронной
сети / И.А. Бессмертный, А.А. Коваль, Р.О. Белоус // Научно-технический
вестник СПбГУИТМО. – 2005. –№19. – Вып. «Программирование,
управление и информационные технологии». – С. 132-139.
65. Бессмертный,
И.А.
Многоагентный
подход
к
решению
задач
неинформированного поиска / И.А. Бессмертный, К.А. Булыгин //
Научно-технический вестник СПбГУИТМО. – 2011. – Т. 74. – Вып. 4. – С.
98-102.
66. Бессмертный, И.А. Контекстный подход к реализации интеллектуальных
систем / И.А.Бессмертный, Д.В.Ковбаско, А.С. Балгайракова // Научнотехнический вестник НИУИТМО. – 2011. – Вып. 6. – С. 145.
67. Бессмертный И.А., Катериненко Р.С. Верификация данных в системах
240
отслеживания
задач
с
помощью
продукционных
правил
/
И.А. Бессмертный, Р.С. Катериненко // Научно-технический вестник
информационных технологий, механики и оптика. – 2013. ––№ 1(83). – С.
86-90.
68. Бессмертный, И.А. Метод автоматического построения тезаурусов на основе статистической обработки текстов на естественном языке /
И.А.Бессмертный, А.Б. Нугуманова // Известия Томского политехнического университета. – 2012. – Т. 321. –№ 5. – С. 125-130.
69. Бессмертный, И.А. Контекстный подход к оценке количества информации в базах знаний / И.А. Бессмертный // Искусственный интеллект и
принятие решений. – 2013. –№3. – С.40-47.
70. Бессмертный, И.А. Искусственный интеллект / И.А. Бессмертный // – СПб:
СПбГУ ИТМО. – 2010. – 132 с. –URL:
http://window.edu.ru/resource/274/69274/files/itmo443.pdf.
71. Бессмертный, И.А. Интеллектуальные системы на продукционной модели
знаний: Проблемы практической реализации / И.А. Бессмертный //
Saarbrücken: LAP Lambert Academic Publishing GmbH & Co. KG. – 2012. –
С. 225. – ISBN 978-3-8473-4142-0.
72. Бессмертный, И. А. Программа Semantic / И.А. Бессмертный // Св-во о
праве интеллектуальной собственности №2011614275 от 30.05.2011.
73. Бессмертный, И. А. Библиотека быстрых Пролог-предикатов для обработки списков / И.А. Бессмертный // Св-во о праве интеллектуальной собственности 20122611773 от 16.02.2012.
74.
Аверкин, А. Н., Гаазе-Рапопорт, Д. А. и Поспелов, Д. А. Толковый словарь по искусственному интеллекту / А. Н. Аверкин, Д. А. Гаазе-Рапопорт
и Д. А. Поспелов // М.: Радио и связь, 1992, – С. 256.
75. Ming-Hung, Hsu, Ming-Feng, Tsai и Hsin-Hsi, Chen. Query Expansion with
ConceptNet and WordNet: An Intrinsic Comparison / Hsu Ming-Hung, Tsai
241
Ming-Feng, Chen.Hsin-His // Proceedings of the Third Asia Information Retrieval Symposium. – Singapore. – October 16-18, 2006. – С. 1-13.
76. Minsky, Marvin. HAL's Legacy. – 2001's Computer as dream and reality / M.
Minsky, [ред.] David G. Stork // MIT. – 2000. – ISBN 0-262-19378-7.
77. Стерлинг, Л. и Шапиро, Э. Искусство программирования на языке Пролог
/ Л.Стерлинг, Э.Шапиро // М.: Мир. – 1990. –ISBN: 5-0300-0406-8.
78. Forgy, C. RETE: A fast algorithm for the many pattern/many object pattern
match problem / C. Forgy // Artificial Intelligence. – 1982. – Vol. 19. – С. 1737.
79. Madden, Neil. Optimizing RETE for low-memory, multiagent systems / N.
Madden // Proceedings of Game-On– 2003: 4th International Conference on
Intelligent Games and Simulation. London. – November. – 2003. – С. 77-81.
80. Doorenbos, Robert B. Production Matching for Large Learning Systems /.B.
Doorenbos // PhD Theses : University of South California. – 1995. – C. 208.
81. Tambe, M., Kalp, D. и Rosenbloom, P. S. An efficient match algorithm for
production systems with linear-time match / M.Tambe, D.Kalp, P. S. Rosenbloom // Proceedings of the Fourth IEEE International Conference on Tools
with Artificial Intelligence. – 1992. – С. 36-43.
82. Miranker, D. P. TREAT: A Better Match Algorithm for Production Systems /
D. P. Miranker // AAAI-87 Proceedings. – 1987. – С. 42-47. –URL:
http://www.aaai.org/Papers/AAAI/1987/AAAI87-008.pdf.
83. Поспелов, Д. А. и Пушкин, В. Н. Мышление и автоматы / Д. А. Поспелов,
В. Н. Пушкин // М.: Советское радио. – 1972. – С. 224.
84. Newell, Allen, Laird, J.E. и Rosenbloom, P.S. SOAR: An architecture for general intelligence / A. Newell, J.E. Laird, P.S. Rosenbloom // Artificial Intelligence. – 1987. –№1. – Т. 33. – С. 1-64.
85. Minsky, Marvin. The Society of Mind / M. Minsky // New York : Simon and
Schuster. – 1986.
242
86. Thomason, Richmond. The Stanford Encyclopedia of Philosophy (Spring–
2009 Edition) /. Thomason // Stanford : Logic and Artificial Intelligence. –
2009.
87. Тей, А., Грибомон, П. и Луи, Дж. Логический подход к искусственному
интеллекту: от классической логики к логическому программированию:
Пер.с франц. / А.Тей, П. Грибомон и Дж. М. Луи // М.: Мир. – 1990. –
ISBN 5-03-001636-8.
88. Осипов, Г. С. Искусственный интеллект: Состояние исследований и
взгляд в будущее [электронный ресурс] / Г.С. Осипов // URL:
http://www.raai.org/about/persons/osipov/pages/ai/ai.html.
89. Зверев, Г. Н. Объективные многозначные логики в интеллектуальных системах моделирования и обработки информации / Г. Н. Зверев // Вестник
УГАТУ. – 2003. – Т. 4, – №1, – С. 20-34.
90. Schank, Roger. Dynamic Memory: A Theory of Learning in Computers and
People /. Schank // New York : Cambridge University Press. – 1982.
91. Aamodt, Agnar и Plaza, Enric. Case-Based Reasoning: Methodological Variations, and System Approaches / A. Aamodt, E. Plaza // AICom - Artificial Intelligence Communications. – IOS Press. – 1994. – Т. 7:1. – С. 39-59.
92. Jha, G. A hybrid case based reasoning and neural network approach to online
fault diagnosis / G. Jha, S.C. Hui, S. Foo // Proc. 3rd International ICSC Symposia on Industrial Automation (IIA'99) and Soft Computing (SOCO'99). –
Genoa, Italy. – 1999. – С. 376-381.
93. Berners-Lee, Tim, The Semantic Web / Tim Berners-Lee, James Hendler и Ora
Lassila // Scientific American Magazine. – May, 2001.
94. Горин, В. С. и Махарев, Э. И. Продажа услуг пассажирского транспорта /
В. С. Горин и Э. И. Махарев // М.: Высшая школа, 2010, p. 783.
95. Бессмертный, И.А. Искусственный интеллект / И.А. Бессмертный // СПб:
СПбГУИТМО. – 2010. – С. 132.
243
96. Торсуева, И. Г. Контекст. Лингвистический энциклопедический словарь /
И. Г. Торсуева // М.: СЭ. – 1990. – С. 238-239.
97. Engelbrecht, A. Fundamentals of Computational Swarm Intelligence / A. Engelbrecht // Wiley, John & Sons, –2006. – p. 672.
98. Лебедев, Б. К. Разбиение на основе эволюционной адаптации / Б. К. Лебедев // Известия ТРТУ. Тематический выпуск "Интеллектуальные САПР",
–№ 3, –1999.
99. Городецкий, В. И., Карсаев, О. В., Самойлов, В. В. и Серебряков, С. В.
Прикладные многоагентные системы группового управления / В. И. Городецкий, О. В. Карсаев, В. В. Самойлов и С. В. Серебряков, // Искусственный интеллект и принятие решений, pp. 3-24, – №2. –2009.
100. Wooldridge, M. An Introduction to MultiAgent Systems / M. Wooldridge //
John Wiley & Sons Ltd, 2002, p. 366.
101. Налимов В. В. и Чернова, Н. А. Статистические методы планирования
экстремальных экспериментов / В. В. Налимов и Н. А. Чернова // М.:
Наука, 1965, p. 340.
102. Чипига, А. Ф. и Колков, Д. А. Анализ методов случайного поиска глобальных экстремумов многомерных функций / Ф. Чипига и Д. А. Колков
// Фундаментальные исследования, № 2, pp. 24-26, 2006.
103. Cisco Systems. Руководство Cisco по междоменной многоадресатной
маршрутизации = Interdomain Multicast Solutions Guide // М.: Вильямс,
2004, p. 320.
104. Surhohe, Lambert M., Tennoe, Mariam T. и Henssonow, Susan F. Open World
Assumption / L.M. Surhohe, M. T. Tennoe, S.F. Henssonow // Book on demand. – 2010. – ISBN 978-6-1314-1731-3.
105. Дейт, К. Дж. Введение в системы баз данных = Introduction to Database
Systems. Изд. 8-е / К.Дж. Дейт // М.: Вильямс. – 2006. – С. 1328. – ISBN 00321-19784-4.
244
106. Shannon, Claude. A Mathematical Theory of Communication / C. Shannon //
Bell System Technical Journal. – July, October, 1948. – Vol. 27. – С. 379-432,
623-656.
107. Колмогоров, А. Н. Теория информации и теория алгоритмов / А. Н. Колмогоров // М.: Наука. – 1987. – С. 218.
108. Wentian, Li. Random Texts Exhibit Zipf‘s-Law-Like Word Frequency Distribution / L. Wentian // IEEE Transactions on Information Theory. Santa Fe Institute. – 1992. –№6. – Vol. 38, – С. 1842-1845.
109. Piantadosi, S., Tily, H. и Gibson, E. Word lengths are optimized for efficient
communication [электронный ресурс] / S. Piantadosi, H. Tily, E. Gibson //
Proceedings of the National Academy of Sciences. – USA. – 2011. –URL:
http://web.mit.edu/piantado/www/papers/PNAS-2011-Piantadosi1012551108.pdf. – DOI: 10.1073/pnas.1012551108.
110. Семакин, И. Г. и Шеина, Т. Ю. Преподавание базового курса информатики в средней школе. Методическое пособие. 3-е, исправленное / И. Г. Семакин, Т. Ю. Шеина // М.: БИНОМ. – 2006.
111. Фомин В. В. и Фомина, И. К. Кусочно-спиральная модель объективирования в процессе проектирования информационных систем / В. В. Фомин
и И. К. Фомина // Программные продукты и системы, № 2, pp. 61-62,
2008.
112. Валгина, Н. С. Теория текста: Учебное пособие / Н. С. Валгина // М.: Мир
книги. – 1998. – С. 210. –URL: http://www.hi-edu.ru/ebooks/xbook029/01/about.htm.
113. Лукасевич, Я. Аристотелевская силлогистика с точки зрения современной
формальной логики / Я. Лукасевич // М.: Иностранная литература. – 1959.
114. Бессмертный, И. А. Исследование вывода на основе прецедентов для базы
знаний в среде JENA / И. А.Бессмертный, А. С. Балгайракова, Д.С. Ковбаско // Вестник КазНТУ. – Алматы . – 2012. – №2. – С. 255-258. – ISSN
1680-9211.
245
115. Gödel, K. On formally undecidable propositions of Principia Mathematica and
related systems [электронный ресурс] / K. Gödel // URL:
http://www.research.ibm.com/people/h/hirzel/papers/canon00-goedel.pdf.
116. Anderson, J. The architecture of cognition. Cognitive science series / J. Anderson // Cambridge, MA. Harvard University Press. – 1983.
117. Richens, Richard. Preprogramming for mechanical translation / Richard Richens // Mechanical Translation. –July, 1956. –№ 3 (1). – С. 20-25.
118. Brooks, A. New Approach to Robotics / A. Brooks // Science. September. –
1991. – С. 1227-1232. –URL: http://people.csail.mit.edu/brooks/papers/newapproaches.pdf.
119. Stork, David. Scientist on the Set: An Interview with Marvin Minsky. mitpress.mit.edu. [В Интернете] / D. Stork // –URL: http://mitpress.mit.edu/ebooks/Hal/chap2/two1.html.
120. Frantti, Tapio и Jutila, Mirjami. Embedded fuzzy expert system for Adaptive
Weighted Fair Queueing / T. Frantti, M. Jutila // Expert Systems with Applications: An International Journal. – 2009. – Т. 36. –№8.
246
ПРИЛОЖЕНИЕ 1
ПРАВИТЕЛЬСТВО РОССИЙСКОЙ ФЕДЕРАЦИИ
РАСПОРЯЖЕНИЕ
от 20 октября 2010 г. № 1815-р
МОСКВА
О государственной программе Российской Федерации
"Информационное общество (2011 - 2020 годы)"
1. Утвердить прилагаемую государственную программу Российской
Федерации "Информационное общество (2011 - 2020 годы)".
2. Минкомсвязи России:
по согласованию с Минэкономразвития России и Минфином России в
течение 6 месяцев после утверждения методических указаний по разработке и
реализации государственных программ, разрабатываемых в соответствии с
постановлением Правительства Российской Федерации от 2 августа 2010 г.
№ 588
"Об утверждении
эффективности
Порядка
государственных
разработки,
программ
реализации
Российской
и
оценки
Федерации",
представить в установленном порядке предложения о внесении изменений в
Программу, утвержденную настоящим распоряжением;
совместно с Минфином России в соответствии с постановлением
Правительства
Российской
Федерации
от
24 мая
2010 г.
№ 365
247
"О координации
мероприятий
по
использованию
информационно-
коммуникационных технологий в деятельности государственных органов"
ежегодно по результатам проведения оценки документов, используемых при
планировании мероприятий по информатизации государственных органов,
представлять
предложения
утвержденную
настоящим
мероприятий,
выполняемых
о
внесении
распоряжением,
за
счет
изменений
в
части
средств,
в
Программу,
финансирования
предусмотренных
федеральным бюджетом на соответствующий финансовый год и плановый
период на реализацию целевых программ и содержание государственных
органов.
Председатель Правительства
Российской Федерации
В.Путин
ПРИЛОЖЕНИЕ № 3
к государственной программе
Российской Федерации
"Информационное общество
(2011 - 2020 годы)"
Мероприятия государственной программы Российской Федерации
"Информационное общество
(2011 - 2020 годы)", финансируемые за счет средств иных источников в
2011 - 2020 годах
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
Повышение качества жизни граждан и улучшение условий развития бизнеса
в информационном обществе
1.
Создание и
развитие
электронных
сервисов в области
здравоохранения
создание и внедрение комплексных
информационных систем в области
здравоохранения;
Минздравсоцразв
ития России
создание и развитие единого портала по
вопросам здравоохранения ("Здоровье
России");
Минздравсоцразв
ития России
создание и внедрение комплексных
информационно-аналитических систем в
области здравоохранения, в том числе
федеральной электронной медицинской
библиотеки, портала главных
специалистов и социальной сети
медицинских работников и экспертных
систем;
Минздравсоцразв
ития России
создание и ведение медицинских
электронных паспортов территорий и
медицинских электронных паспортов
медицинских учреждений;
Минздравсоцразвития России
оснащение станций скорой помощи
современными информационными
системами обработки вызовов и
диспетчеризации, в том числе с
использованием системы ГЛОНАСС
Минздравсоцразв
ития России
249
Ответственный
исполнитель
(соисполнитель)
Задача Программы
Мероприятие Программы
2.
Создание и
развитие
электронных
сервисов в области
здравоохранения.
Создание и
развитие
электронных
сервисов в области
образования и
науки
создание федерального регистра
медицинского и фармацевтического
персонала. Создание систем
непрерывного дистанционного обучения
врачей, обеспечение их рабочих мест
доступом к необходимым справочникам и
классификаторам
Минздравсоцразв
ития России
3.
Создание и
развитие
электронных
сервисов в области
образования и
науки
развитие информационных систем,
предназначенных для повышения
качества оказания услуг в области
образования и науки;
Минобрнауки
России
социальная адаптация и развитие
творческих способностей лиц с
ограниченными возможностями здоровья
посредством использования современных
информационных технологий и
дистанционных образовательных
технологий;
Минобрнауки
России
подача в электронном виде документов в
высшие учебные заведения с
приложением результатов единого
государственного экзамена;
Минобрнауки
России
разработка государственной
автоматизированной системы,
обеспечивающей деятельность,
направленную на развитие потенциала
инициативной и талантливой молодежи;
Росмолодежь
создание Национального климатического
информационного центра
Росгидромет
создание мобильных комплексов для
обеспечения доступа граждан Российской
Федерации к электронным
информационным ресурсам,
направленным на сохранение и
популяризацию культурного наследия
народов Российской Федерации;
Минкультуры
России
4.
Создание и
развитие
электронных
сервисов в области
культуры и спорта
250
Задача Программы
Мероприятие Программы
создание порталов по вопросам спорта и
туризма "Туристический атлас России",
"Спорт России"
5.
6.
Развитие сервисов
для упрощения
процедур
взаимодействия
общества и
государства с
использованием
информационных
технологий.
Перевод
государственных и
муниципальных
услуг в
электронный вид
Развитие сервисов
для упрощения
процедур
взаимодействия
общества и
государства с
использованием
информационных
технологий.
Развитие
инфраструктуры
доступа к сервисам
электронного
Ответственный
исполнитель
(соисполнитель)
Минспорттуризм
России
совершенствование градостроительной
Минрегион
деятельности, осуществления контрольно- России
надзорных и разрешительных функций и
оптимизация предоставления
государственных услуг в области
градостроительной деятельности за счет
использования информационных
технологий;
совершенствование контрольнонадзорных и разрешительных функций и
оптимизация предоставления
государственных услуг в сфере
здравоохранения, социального развития,
санитарно-эпидемиологического
благополучия и потребительского рынка
за счет использования информационных
технологий;
Минздравсоцразв
ития России
совершенствование контрольнонадзорных и разрешительных функций и
оптимизация предоставления
государственных услуг в сфере сельского
хозяйства за счет использования
информационных технологий
Минсельхоз
России
создание национальной системы
идентификации персональных данных в
Российской Федерации. Введение единого
идентификатора персональных данных;
Минкомсвязь
России
создание единой государственной
информационной системы учета,
планирования и контроля социальных
услуг, оказываемых гражданам
Российской Федерации на основе
использования универсальной
электронной карты;
Минкомсвязь
России
251
7.
8.
Ответственный
исполнитель
(соисполнитель)
Задача Программы
Мероприятие Программы
государства
разработка типовой системы обработки
заявлений получателей государственных
услуг, интегрированной с сервисом
предварительной записи, электронной
очередью и телефонными центрами
обращения граждан;
Минкомсвязь
России
реализация механизмов совершения
платежей за государственные услуги в
электронном виде, предоставление
плательщикам квитанций, уведомление
администраторов доходов о поступивших
платежах в реальном режиме времени
Казначейство
России
создание системы электронного
голосования в рамках развития
избирательной системы в Российской
Федерации;
Минкомсвязь
России
совершенствование процедур
приглашения иностранных граждан и
удостоверения их личности на территории
Российской Федерации
ФМС России
обеспечение доступности сервисов
электронного правительства на основе
развития центров общественного доступа
Минкомсвязь
России
Развитие сервисов
для упрощения
процедур
взаимодействия
общества и
государства с
использованием
информационных
технологий
Развитие
инфраструктуры
доступа к сервисам
электронного
государства
Построение электронного правительства и
повышение эффективности государственного управления
252
9.
Ответственный
исполнитель
(соисполнитель)
Задача Программы
Мероприятие Программы
Обеспечение
перевода в
электронный вид
государственной
учетной
деятельности
создание межведомственной
интегрированной автоматизированной
системы федеральных органов
исполнительной власти, осуществляющих
контроль в пунктах пропуска через
государственную границу Российской
Федерации;
Минкомсвязь
России
формирование единого государственного
реестра автомобильных дорог;
Минтранс России
создание и ведение единой
информационной системы по
техническому регулированию;
Ростехрегулирова
ние
развитие государственной системы
изготовления, оформления и контроля
паспортно-визовых документов нового
поколения;
Минкомсвязь
России
создание государственной
информационной системы в области
технического регулирования
Таможенного союза;
Минпромторг
России
технологическое обеспечение перевода
государственной учетной деятельности в
электронный вид (в том числе архивной
информации учетных систем);
Минкомсвязь
России
создание единой федеральной
информационной системы в сфере
государственной регистрации прав и
кадастрового учета недвижимости;
Минэкономразвития России
создание информационных ресурсов
(кадастров), содержащих сведения об
инженерной и коммунальной
инфраструктуре;
Минэкономразвития России
создание всероссийской базы данных
документов об образовании
Рособрнадзор
253
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
10. Обеспечение
перевода в
электронный вид
государственной
учетной
деятельности.
Создание и
развитие
государственных
межведомственных
информационных
систем,
предназначенных
для принятия
решений в
реальном времени
объединение адресно-справочных и
ФМС России
паспортных учетов, ретроконверсия
адресно-справочных данных, обеспечение
предоставления информации
уполномоченным органам и организациям
(органам МВД России, ФСБ России, ФНС
России, ЦИК России, Росстата, МИДа
России, военкоматам, ЗАГСам и др.) в
автоматическом режиме;
автоматизация пофамильных оперативно- МВД России
справочных картотек и архивных картотек
Главного информационно-аналитического
центра и информационных центров МВД
России, Главного управления внутренних
дел, управлений внутренних дел по
субъектам Российской Федерации
11. Повышение
эффективности
внедрения
информационных
технологий на
уровне субъектов
Российской
Федерации и
муниципальных
образований
развитие мероприятия "Электронный
регион" и "Электронный муниципалитет"
формирование информационной системы
обеспечения деятельности по развитию
территорий, в том числе городов и иных
поселений;
Минкомсвязь
России
Минрегион
России
развитие телекоммуникационной
инфраструктуры электронного
правительства, в том числе, устойчиво
функционирующей при чрезвычайных
ситуациях и в условиях чрезвычайного
положения;
Минкомсвязь
России
создание единой системы удаленного
интерактивного обучения госслужащих в
области информационных и
коммуникационных технологий
Минкомсвязь
России
254
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
12. Обеспечение
перевода в
электронный вид
государственной
учетной
деятельности.
Повышение
эффективности
внедрения
информационных
технологий на
уровне субъектов
Российской
Федерации и
муниципальных
образований
формирование инфраструктуры
обеспечения семантической и
технологической совместимости
государственных информационных
систем
Минкомсвязь
России
13. Создание и
развитие
специальных
информационных и
информационнотехнологических
систем
обеспечения
деятельности
органов
государственной
власти, в том числе
защищенного
сегмента сети
Интернет и
системы
межведомственног
о электронного
документооборота
развитие государственной системы
правовой информации;
создание системы централизованного
управления телекоммуникационной
инфраструктурой;
ФСО России
создание информационной
инфраструктуры для формирования
государственной системы учета
государственных контрактов;
Минэкономразвития России
создание системы хранения электронных
документов для поддержки
авторизованного юридически значимого
электронного документооборота между
субъектами отношений налоговой сферы
ФНС России
14. Формирование
единого
пространства
юридически
значимого
электронного
взаимодействия
создание и развитие информационной
системы "Электронный нотариат";
создание и развитие государственной
автоматизированной системы
"Законотворчество";
Минюст России
развитие информационной системы
"Парламентский портал"
Минкомсвязь
России
Минкомсвязь
России
Минкомсвязь
России
255
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
15. Формирование
единого
пространства
юридически
значимого
электронного
взаимодействия.
Создание и
развитие
государственных
межведомственных
информационных
систем,
предназначенных
для принятия
решений в
реальном времени
развитие государственной
автоматизированной системы
"Правосудие";
формирование и развитие
инфраструктуры универсальной
электронной карты
Минэкономразви
тия России,
Минюст России
Минкомсвязь
России
16. Создание и
развитие
государственных
межведомственных
информационных
систем,
предназначенных
для принятия
решений в
реальном времени
создание государственной
информационно-аналитической системы
контрольно-счетных органов;
Минкомсвязь
России
создание автоматизированной
информационной системы управления
водохозяйственным комплексом
Российской Федерации;
Росводресурсы
создание государственной
автоматизированной информационной
системы в области государственного
регулирования тарифов в сфере
деятельности организаций коммунального
комплекса "Тарифы и цены"
ФСТ России
17. Создание
создание системы единого адресного
инфраструктуры
пространства Российской Федерации
пространственных
данных Российской
Федерации
уполномоченный
федеральный
орган
исполнительной
власти
256
Задача Программы
18. Обеспечение
перевода в
электронный вид
государственной
учетной
деятельности.
Создание и
развитие
государственных
межведомственных
информационных
систем,
предназначенных
для принятия
решений в
реальном времени
Мероприятие Программы
создание единой государственной
информационной системы обеспечения
деятельности Высшей аттестационной
комиссии Министерства образования и
науки Российской Федерации
Ответственный
исполнитель
(соисполнитель)
Минобрнауки
России
Развитие российского рынка информационных и телекоммуникационных технологий,
обеспечение перехода к экономике, осуществляемой с помощью информационных
технологий
19. Стимулирование
отечественных
разработок в
области
информационных
технологий
создание отечественных инновационных
технических изделий в сфере
информационных технологий;
Минкомсвязь
России
создание отечественного
телекоммуникационного оборудования;
Минпромторг
России
создание и организация производства
отечественного оборудования для
высокоскоростных спутниковых сетей
широкополосного доступа
сантиметрового и миллиметрового
диапазонов длин волн;
Минкомсвязь
России
создание интеллектуальных систем
мониторинга и контроля состояния
технически сложных объектов;
Минкомсвязь
России
актуализация цифровой картографической Минэкономосновы схем территориального
развития России,
планирования Российской Федерации
Минрегион
России
257
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
20. Формирование
социальноэкономической
статистики
развития
информационного
общества
формирование социально-экономической
статистики развития информационного
общества
Росстат
21. Развитие
экономики и
финансовой сферы
с помощью средств
информационных
технологий
создание доверенной среды заключения
сделок и регистрации договорных
отношений в электронной форме.
Электронный архив и документооборот
бизнеса;
Минкомсвязь
России
создание и развитие информационнотехнологической инфраструктуры
национальной платежной системы
Минфин России
22. Развитие
технопарков в
сфере высоких
технологий
развитие технопарков в сфере высоких
технологий
Минкомсвязь
России
23. Подготовка
квалифицированны
х кадров в сфере
информационных
технологий
развитие системы переподготовки и
повышения квалификации учителей
информатики общеобразовательных
учреждений в соответствии с едиными
требованиями
Минобрнауки
России
Преодоление высокого уровня различия в использовании информационных технологий
регионами, различными слоями общества и создание базовой инфраструктуры
информационного общества
24. Развитие
телерадиовещания
создание технологической возможности
развития телерадиовещания (реализация
комплекса мероприятий федеральной
целевой программы "Развитие
телерадиовещания в Российской
Федерации на 2009 - 2015 годы")
Минкомсвязь
России
258
Задача Программы
25. Развитие
телерадиовещания.
Развитие базовой
инфраструктуры
информационного
общества
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
формирование современной
инфраструктуры связи и
телекоммуникаций, включая обеспечение
широкополосного доступа к сети
Интернет. Организация точек доступа WiFi на базе таксофонов;
Минкомсвязь
России
поддержка развития электронных средств
массовой коммуникации;
Минкомсвязь
России
разработка методологических, правовых и
организационных основ деятельности
общественного телерадиовещания в
Российской Федерации
Минкомсвязь
России
создание элементов типовой
информационной инфраструктуры
региона, в том числе в г. Сочи, связанных
с подготовкой и проведением
XXII Олимпийских зимних игр и
XI Паралимпийских зимних игр 2014 года
в г. Сочи;
Минкомсвязь
России
обеспечение преодоления высокого
уровня различия в использовании
информационных технологий между
субъектами Российской Федерации
Минкомсвязь
России
27. Популяризация
возможностей и
преимуществ
информационного
общества
мероприятия по популяризации новых
возможностей информационного
общества среди населения и бизнеса
Минкомсвязь
России
28. Повышение
готовности
населения и
бизнеса к
возможностям
информационного
общества, в том
числе обучение
использованию
современных
информационных
технологий
создание сети региональных центров
справочно-методической и технической
поддержки общеобразовательных
учреждений по использованию
информационных технологий и
электронных образовательных ресурсов в
учебном процессе
Минобрнауки
России
26. Развитие базовой
инфраструктуры
информационного
общества
259
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
Обеспечение безопасности в информационном обществе
29. Обеспечение
технологической
независимости
Российской
Федерации в
отрасли
информационных и
телекоммуникацио
нных технологий.
Противодействие
использованию
потенциала
информационных и
телекоммуникацио
нных технологий в
целях угрозы
национальным
интересам
Российской
Федерации
развитие суперкомпьютерных и гридтехнологий
развитие единой системы оповещения и
вызова экстренных служб, в том числе на
базе системы ГЛОНАСС (ГЛОНАСС +
112 + ЭРА ГЛОНАСС);
Минкомсвязь
России
МЧС России
создание и внедрение информационноаналитической системы "Безопасный
город";
МВД России
перевод органов государственной власти
на российскую программную платформу
Минкомсвязь
России
30. Противодействие
использованию
потенциала
информационных и
телекоммуникацио
нных технологий в
целях угрозы
национальным
интересам
Российской
Федерации.
Развитие
технологий защиты
информации,
обеспечивающих
неприкосновенност
ь частной жизни,
личной и семейной
тайны, а также
безопасность
информации
ограниченного
доступа
комплексная информационная система
мониторинга промышленной
безопасности;
организация единого защищенного
информационного пространства органов
государственной власти на основе
применения современных комплексных
систем информационной безопасности;
Ростехнадзор
развитие средств защиты информации,
шифрования и идентификации
ФСБ России
ФСБ России
260
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
31. Противодействие
использованию
потенциала
информационных и
телекоммуникацио
нных технологий в
целях угрозы
национальным
интересам
Российской
Федерации
обеспечение видеонаблюдения,
автоматического обнаружения и
распознавания целей и тревожных
ситуаций в режиме реального времени по
видеоизображению и формирование в
режиме реального времени базы данных
распознанных целей;
ФСБ России
создание системы распределенных
ситуационных центров для обеспечения
национальной безопасности
ФСО России
32. Обеспечение
развития
законодательства и
совершенствование
правоприменитель
ной практики в
сфере
информационных
технологий
совершенствование законодательства в
сфере информационных технологий
совершенствование законодательства в
области авторского права
Минкомсвязь
России
Минкультуры
России
Развитие цифрового контента и сохранение культурного наследия
33. Оцифровка
объектов
культурного
наследия, включая
архивные фонды
создание централизованного хранилища
информации о составе национального
библиотечно-информационного фонда и
обязательного экземпляра электронных
изданий;
Минкомсвязь
России
разработка обучающего цифрового
Минкультуры
мультимедийного и интерактивного
России
контента, включая создание
стереоскопических 3D коллекций о
значимых мероприятиях в сфере культуры
и о культурном наследии народов России;
261
Задача Программы
Мероприятие Программы
Ответственный
исполнитель
(соисполнитель)
создание национального библиотечного
Минкультуры
ресурса с унифицированным каталогом на России
базе оцифрованных фондов Российской
государственной библиотеки, Российской
национальной библиотеки, Президентской
библиотеки имени Б.Н.Ельцина,
библиотек государственных академий
наук Российской Федерации, а также
государственных и муниципальных
публичных библиотек;
34. Развитие средств
обработки и
предоставления
удаленного
доступа к
цифровому
контенту
создание универсального национального
интернет-портала "Знание";
Минкомсвязь
России
создание электронного образа Красной
книги Российской Федерации и
публикация ее в сети Интернет;
Минприроды
России
формирование и ведение
Государственного каталога Музейного
фонда Российской Федерации, сводного
каталога библиотек России, создание базы
данных об объектах культурного наследия
народов России для описания памятников
истории и культуры России;
Минкультуры
России
создание электронного портала в сети
Интернет "Гостелерадиофонд - достояние
России", перевод архивных фондов аудиовидео произведений в электронный вид
Минкомсвязь
России
реализация мероприятия "Модельные
сельские библиотеки";
Минкультуры
России
создание единой информационнопоисковой системы документов
Архивного фонда Российской Федерации;
Минкультуры
России
подключение к сети Интернет
учреждений культуры, в первую очередь
публичных государственных и
муниципальных библиотек
Минкультуры
России
_______________________
262
ПРИЛОЖЕНИЕ 2
Свидетельства о регистрации авторского права на объект
интеллектуальной собственности
263
264
ПРИЛОЖЕНИЕ 3
Акты о внедрении результатов интеллектуальной собственности
265
266
267
268
269
270
ПРИЛОЖЕНИЕ 4
Библиотека быстрых Пролог-предикатов для обработки
отсортированных списков, обеспечивающих извлечение знаний методами
реляционной алгебры
/***************************************************************
Библиотека быстрых предикатов для обработки отсортированных
списков в среде Visual Prolog 7.3.
В отличие от встроенных предикатов для работы со списками
выполняются быстрее на 2-3 порядка
(за исключением isaSorted, который
быстрее стандартного в 2 раза).
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
/***************************************************************
Быстрый предикат для нахождения пересечения отсортирован­
ных списков
Разработан для компилятора Visual Prolog 7.3
Аргумент 1: Исходный список 1
(должен быть отсортирован по возрастанию)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию)
Возвращаемое значение: отсортированный список, содержа­
щий элементы, присутствующие в обоих списках
Пример: intersectSorted([1,2,3,4,7,9],[2,3,4,6,7,9])
возвращает [2,3,4,7,9]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
class predicates
intersectSorted : (Elem* ListX, Elem* ListY) -> Elem* IntersectionXY.
clauses
intersectSorted( [],_) = [] :-!.
intersectSorted( _,[]) = [] :-!.
intersectSorted( [Y|Xs], [Y|Ys] ) =
[Y|intersectSorted( Xs, [Y|Ys] )] :- !.
intersectSorted( [X|Xs], [Y|Ys] ) =
intersectSorted( [X|Xs], Ys ) :- X > Y, !.
intersectSorted( [_|Xs], [Y|Ys] ) = intersectSorted( Xs, [Y|Ys] ).
271
/***************************************************************
Быстрый предикат для нахождения разности отсортированных списков
Разработан для компилятора Visual Prolog 7.3
Аргумент 1: Исходный список 1
(должен быть отсортирован по возрастанию)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию)
Возвращаемое значение: отсортированный список, содержащий эле­
менты, присутствующие в первом списке,
но отсутствующие во втором.
Пример: differenceSorted([1,2,3,4,7,9],[2,3,4,6,7,9,10])
возвращает [1]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
class predicates
differenceSorted : (Elem* ListX, Elem* ListY) > Elem* ListXExceptListY.
clauses
differenceSorted( [],_) = [] :-!.
differenceSorted( R,[]) = R :-!.
differenceSorted( [X|Xs], [X|Ys] ) =
differenceSorted(Xs,[X|Ys]) :- !.
differenceSorted( [X|Xs], [Y|Ys] ) =
[X|differenceSorted( Xs,[Y|Ys] )] :- X < Y, !.
differenceSorted( [X|Xs], [_Y|Ys] ) =
differenceSorted( [X|Xs],Ys ).
/***************************************************************
Быстрый предикат для объединения отсортированных списков
Разработан для компилятора Visual Prolog 7.3
Аргумент 1: Исходный список 1
(должен быть отсортирован по возрастанию)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию)
Возвращаемое значение: отсортированный список, содержа­
щий элементы,
присутствующие хотя бы в одном из двух исходных списков.
Пример: unionSorted([1,2,3,4,7,9],[2,3,4,6,7,9,10])
возвращает [1,2,3,4,6,7,9,10]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
class predicates
unionSorted : (Elem* ListX, Elem* ListY) -> Elem* UnionXY.
272
clauses
unionSorted(
unionSorted(
unionSorted(
unionSorted(
[], R )
R, [] )
[X|Xs],
[X|Xs],
= R :-!.
= R :-!.
[X|Ys] ) = unionSorted(Xs,[X|Ys]) :-!.
[Y|Ys] ) = [X|unionSorted( Xs, [Y|Ys] )] :X < Y, !.
unionSorted( [X|Xs], [Y|Ys] ) = [Y|unionSorted( [X|Xs], Ys )].
/***************************************************************
Быстрый предикат для соединения отсортированных кортежей,
каждый из которых состоит их двух элементов,
по совпадению первых элементов.
Разработан для компилятора Visual Prolog 7.3
Аргумент 1: Исходный список 1 (должен быть отсортирован
по возрастанию первого элемента кортежа)
Аргумент 2: Исходный список 2 (должен быть отсортирован
по возрастанию первого элемента кортежа)
Аргумент 3: Пустой список
Возвращаемое значение: отсортированный список,
содержащий кортежи, состоящие
из общего первого элемента и вторых элементов соединяе­
мых кортежей.
Пример: innerJoinSorted([1,2,3,4,7,9],[2,3,4,6,7,9],[])
возвращает [t(3,4,6),t(7,9,9]]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
domains
t{T1,T2} = t(T1,T2).
t{T1,T2,T3} =t(T1,T2,T3).
class predicates
innerJoinSorted:( t{X,X}* ListX, t{X,X}* ListY, t{X,X,X}* JoinXY )
-> t{X,X,X}* JoinXYfinal.
innerJoinSorted1:( t{X,X}, t{X,X}*, t{X,X}*, t{X,X,X}* )
procedure (i,i,o,o).
clauses
innerJoinSorted( [], _, Final ) = Final :- !.
innerJoinSorted( [t(X1,X2)|Xresidue], Y, In )=
innerJoinSorted( Xresidue, YtoLookUp, Out ) :innerJoinSorted1( t(X1, X2 ), Y, YtoLookUp, XY ),
Out = list::append( In, XY ).
innerJoinSorted1( _, [], [], []) :- !.
innerJoinSorted1( t(X1,_X2), [t(Y1,Y2)|Yresidue],
[t(Y1,Y2)|Yresidue],[] ) :X1<Y1, !.
innerJoinSorted1( t(X1,X2), [t(Y1,_)|Yresidue], YlookUp, XY) :-
273
X1 > Y1, !,
innerJoinSorted1( t(X1,X2), Yresidue, YlookUp, XY).
innerJoinSorted1( t(X1,X2),[t(Y1,Y2)|Yresidue],
[t(Y1,Y2)|YlookUp], [t(X1,X2,Y2)|XY] ) :innerJoinSorted1( t(X1,X2),Yresidue,YlookUp,XY ).
/***************************************************************
Быстрый предикат для проверки вхождения значения
в отсортированный список.
Является аналогом отношения ISA - экземпляра к классу.
Разработан для компилятора Visual Prolog 7.3
Аргумент 1: Проверяемое значение
Аргумент 2: Список (должен быть отсортирован по возрастанию)
Возвращаемое значение: Истина, если значение входит в список.
Пример: isaSorted(1, [0,1,2,3]) возвращает истину
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
class predicates
isaSorted : (Elem, Elem* List) determ (i,i).
clauses
isaSorted( H, [H|_] ) :- !.
isaSorted( X, [H|_] ) :- X < H, !, fail.
isaSorted( X, [_|Tail] ) :- isaSorted( X, Tail ).
/***************************************************************
Быстрый предикат для проверки вхождения всех элементов спис­
ка в другой список.
Является аналогом отношения AKO - подкласса к классу.
Разработан для компилятора Visual Prolog 7.3
Аргумент 1: Список 1, представляющий подмножество
(должен быть отсортирован по возрастанию)
Аргумент 2: Список 2 - множество
(должен быть отсортирован по возрастанию)
Возвращаемое значение:
Истина, если все элементы первого списка входят
во второй список.
Пример: akoSorted([3,4],[2,3,4,6,7,9]) возвращает истину
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
class predicates
akoSorted : (Elem* ListX, Elem* ListY) determ (i,i).
clauses
akoSorted( [], _ ) :- !.
% пустое множество является подмножеством любого множества
274
akoSorted( SubSet, Set) :intersectSorted( Subset, Set ) = Subset.
/***************************************************************
Библиотека быстрых предикатов для обработки отсортированных
списков в среде SWI-Prolog.
В отличие от встроенных предикатов для работы со списками
выполняются быстрее на 2-3 порядка (за исключением isaSorted,
который быстрее стандартного в 2 раза).
Разработан для компилятора SWI-Prolog
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
/***************************************************************
Быстрый предикат для нахождения пересечения отсортированных
списков
Разработан для компилятора SWI-Prolog
Аргумент 1: Исходный список 1
(должен быть отсортирован по возрастанию)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию)
Аргумент 3: Возвращаемое значение: отсортированный список, со­
держащий
элементы, присутствующие в обоих списках
Пример:
intersectSorted([1,2,3,4,7,9],[2,3,4,6,7,9], X)
возвращает X=[2,3,4,7,9]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
intersectSorted([],_,[]) :-!.
intersectSorted(_,[],[]) :-!.
intersectSorted( [Y|Xs],[Y|Ys], [Y|XxY] ) :intersectSorted( Xs,Ys, XxY ),!.
intersectSorted( [X|Xs],[Y|Ys],XxY ) :- X>Y,
intersectSorted( [X|Xs], Ys, XxY ),!.
intersectSorted( [_|Xs],[Y|Ys],XxY ) :intersectSorted( Xs, [Y|Ys], XxY ).
/***************************************************************
Быстрый предикат для нахождения разности отсортированных списков
Разработан для компилятора SWI-Prolog
Аргумент 1: Исходный список 1
275
(должен быть отсортирован по возрастанию)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию)
Аргумент 3: Возвращаемое значение: отсортированный список, со­
держащий
элементы, присутствующие в первом списке, но отсутствующие во
втором.
Пример:
differenceSorted([1,2,3,4,7,9],[2,3,4,6,7,9,10],X) возвращает
X=[1]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
differenceSorted( [], _, [] ) :-!.
differenceSorted( R, [], R) :-!.
differenceSorted( [X|Xs], [X|Ys], XmY ) :differenceSorted( Xs, [X|Ys], XmY ), !.
differenceSorted( [X|Xs], [Y|Ys], [X|XmY] ) :X<Y,
differenceSorted( Xs,[Y|Ys], XmY ),!.
differenceSorted( [X|Xs], [_Y|Ys], XmY) :differenceSorted( [X|Xs], Ys, XmY).
/***************************************************************
Быстрый предикат для объединения отсортированных списков
Разработан для компилятора SWI-Prolog
Аргумент 1: Исходный список 1
(должен быть отсортирован по возрастанию)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию)
Аргумент: Возвращаемое значение: отсортированный список,
содержащий элементы, присутствующие хотя бы в одном из двух ис­
ходных списков.
Пример:
unionSorted([1,2,3,4,7,9],[2,3,4,6,7,9,10], X)
возвращает X=[1,2,3,4,6,7,9,10]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
unionSorted( [], R, R ) :-!.
unionSorted( R, [], R ) :-!.
unionSorted( [H|Xs], [H|Ys], [H|XuY] ) :unionSorted( Xs, Ys, XuY ),!.
unionSorted( [X|Xs], [Y|Ys], [X|XuY] ) :X<Y,
unionSorted( Xs, [Y|Ys], XuY ),!.
unionSorted( [X|Xs], [Y|Ys], [Y|XuY] ) :-
276
unionSorted( [X|Xs], Ys, XuY ).
/***************************************************************
Быстрый предикат для соединения отсортированных кортежей,
каждый из которых состоит их двух элементов,
по совпадению первых элементов.
Разработан для компилятора SWI-Prolog
Аргумент 1: Исходный список 1
(должен быть отсортирован по возрастанию
первого элемента кортежа)
Аргумент 2: Исходный список 2
(должен быть отсортирован по возрастанию
первого элемента кортежа)
Аргумент 3: Пустой список
Аргумент 4: Возвращаемое значение:
отсортированный список,содержащий кортежи, состоящие
из общего первого элемента и вторых элементов соединяемых корте­
жей.
Пример:
innerJoinSorted([1,2,3,4,7,9],[2,3,4,6,7,9],[], X)
возвращает X=[t(3,4,6),t(7,9,9]]
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
innerJoinSorted( [], _, Final, Final ) :- !.
innerJoinSorted( [t(X1,X2)|Xresidue], Y, In, Final ) :innerJoinSorted1( t(X1, X2), Y, YtoLookUp, XY),
append( In, XY, Out ),
innerJoinSorted( Xresidue, YtoLookUp,Out, Final ).
innerJoinSorted1( _, [], [], [] ) :- !.
innerJoinSorted1( t(X1,_X2), [t(Y1,Y2)|Yresidue],
[t(Y1,Y2)|Yresidue],[] ) :X1<Y1, !.
innerJoinSorted1( t(X1,X2), [t(Y1,_)|Yresidue], YlookUp, XY ) :X1>Y1, !,
innerJoinSorted1( t(X1,X2), Yresidue, YlookUp, XY ).
innerJoinSorted1( t(X1,X2), [t(Y1,Y2)|Yresidue],
[t(Y1,Y2)|YlookUp], [t(X1,X2,Y2)|XY] ) :innerJoinSorted1( t(X1,X2), Yresidue,YlookUp, XY ).
/***************************************************************
Быстрый предикат для проверки вхождения значения
в отсортированный список.
Является аналогом отношения ISA - экземпляра к классу.
277
Разработан для компилятора SWI-Prolog
Аргумент 1: Проверяемое значение
Аргумент 2: Список (должен быть отсортирован по возрастанию)
Возвращаемое значение: Истина, если значение входит в список.
Пример:
isaSorted(1, [0,1,2,3]) возвращает истину
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
isaSorted( H, [H|_] ) :- !.
isaSorted( X, [H|_] ) :X < H, !,
fail.
isaSorted( X, [_|Tail] ) :- isaSorted( X, Tail ).
/***************************************************************
Быстрый предикат для проверки вхождения всех элементов списка в
другой список.
Является аналогом отношения AKO - подкласса к классу.
Разработан для компилятора SWI-Prolog
Аргумент 1: Список 1, представляющий подмножество
(должен быть отсортирован по возрастанию)
Аргумент 2: Список 2 - множество
(должен быть отсортирован по возрастанию)
Возвращаемое значение: Истина, если все элементы первого списка
входят во второй список.
Пример:
akoSorted([3,4],[2,3,4,6,7,9]) возвращает истину
Автор: Бессмертный И.А. (с) НИУ ИТМО, 2011
***************************************************************/
akoSorted( [], _ ) :- !.
% пустое множество является подмножеством любого множества
akoSorted( Subset, Set) :intersectSorted( Subset, Set, Intersect ),
Intersect = Subset.
/**************************************************************/
278
ПРИЛОЖЕНИЕ 5 [70]
Санкт-Петербургский государственный университет информационных технологий, механики и оптики
Кафедра вычислительной техники
Программа SEMANTIC
Версия 1.5
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
к.т.н., доцент И.А. Бессмертный
Дата последнего изменения 16.11.2011
279
1. Назначение и условия применения программы
Программа предназначена для представления и визуализации знаний в виде семантических сетей, а также для доступа к базам знаний с помощью графического интерфейса и
языка запросов.
Программа может использоваться в режиме обучающей системы, в котором база знаний
содержит в неявном виде некоторую гипотезу, например, диагноз, а пользователь, задавая
вопросы, должен выявить данную гипотезу, затратив на это минимум вопросов. Кроме
того, программа может работать в режиме экспертной системы, сопоставляя имеющиеся
факты с правилами в базе знаний.
Для выполнения программы требуется персональный компьютер под операционной системой Windows XP. Особых требований к ресурсам не предъявляется. Для хранения программы необходимо не менее 16Мб на жестком диске.
Программа разработана для обучения студентов основам построения семантических сетей
в рамках дисциплины «Искусственный интеллект». Программа написана на языке VISUAL PROLOG V 7.2 Personal Edition (www.pdc.dk ). Данная программа предназначена исключительно для образовательных целей. Использование данной программы в коммерческих целях не допускается.
2. Характеристики программы
Программа обеспечивает создание и использование семантических сетей, как один из способов представления знаний. В настоящей версии программы поддерживаются сети с бинарными отношениями, т.е. связывающие ровно два понятия, одно из которых является
субъектом, второе – объектом. Триплет субъект-предикат-объект образует факт.
Субъект
Предикат
Объект
Одно и то же понятие может присутствовать в нескольких фактах, что и обуславливает
сетевую структуру. Программа допускает также создание семантических сетей на основе
графов Растье (графов с глаголом в центре), а также комбинация обычных реляционных
графов с графами Растье. Граф Растье содержит сведения не об отношениях между субъектами и объектами, а о процессах (действиях). Ниже приведен часто используемый пример описания с помощью графа Растье следующего события: Собака свирепо покусала
почтальона. Сеть построена вокруг глагола КУСАТЬ. Агентом (субъектом) кусания является собака, объектом – почтальон. СВИРЕПО – манера кусания.
280
Преимущества графа Растье заключается в возможности установления свойств, относящихся не к объекту или субъекту, а к процессу. СВИРЕПО – это не свойство собаки, а
свойство процесса кусания почтальона.
Программа позволяет создавать семантические сети на разных языках, в том числе многоязычные сети. Текстовый интерфейс пользователя позволяет извлекать факты из базы
знаний на упрощенном естественном языке. Поддерживается модульная структура представления знаний, т.е. размещение разных предметных областей в разных файлах.
Визуализация знаний обеспечивается с помощью графического представления семантической сети. Графический пользовательский интерфейс позволяет развертывать граф в глубину и в ширину, а также откатываться назад, менять тему диалога, т.е. управлять контекстом. Под контекстом здесь и далее понимается набор фактов, уже извлеченных из базы
знаний.
Для упрощения отладки создаваемых семантических сетей все действия программы протоколируются с помощью сообщений в окне ―Messages‖.
3. Входные данные
Базы знаний семантических сетей хранятся в текстовых файлах и содержат знания в синтаксисе языка Prolog, поскольку загружаются в программу как база фактов предикатом
consult. Одна база знаний соответствует одной предметной области. На имена файлов не
накладываются ограничения. Редактировать файла баз данных можно с помощью любого
текстового редактора. Однако, если использовать редактор в составе компилятора Prolog,
то это позволит обнаруживать ошибки, используя возможности среды отладки Prolog. Тогда для редактора в составе SWI-Prolog файлы целесообразно снабжать расширением
―.pl‖, а для Visual Prolog – ―.pro‖.
Каждый файл базы знаний, описывающий предметную область, может содержать ссылки
на файлы онтологий, в которых хранятся словари терминов и правила, с помощью которых из фактов могут извлекаться новые факты. Кроме того, файл базы знаний может содержать ссылки на другие файлы баз знаний, т.е. другие предметные области. В данной
редакции в целях упрощения написания путей все файлы, используемые программой,
должны храниться в одном и том же каталоге.
В пределах одной предметной области должна соблюдаться уникальность именования понятий. С увеличением числа фактов эта проблема может привести к усложнению добавле-
281
ния новых фактов, поскольку нужно соблюдать уникальность имен, и ухудшению читаемости знаний. Если база знаний становится слишком громоздкой, целесообразно разбить
файл на несколько баз знаний, которые размещаются в отдельных файлах. Каждый файл
соответствует отдельной теме диалога. Данный прием позволяет переключаться с одной
темы диалога на другую аналогично тому, как это делается в реальном разговоре. Такое
переключение будем называть сменой контекста.
3.1. Файл базы знаний
Файл базы знаний имеет произвольное имя. В этом файле могут размещаться следующие
записи:
Имя Назначение
Наименование основной
t
pic
onto
e
f
темы
Имя стартового рисунка в
формате BMP. Необязательный.
Имя файла онтологии.
Описание внешней ссылки
Описание факта
hypo Описание гипотезы
Формат
Пример
t(<субъект>).
t(″Jack″).
pic(<имя файла>).
pic(″mailman.bmp″).
onto(<имя файла>).
onto(″common_eng.pro″).
e(<субъект>,<имя
файла>).
f(<субъект>, <предикат>,
<объект>).
hypo(<субъект>).
e(″engine″, ″engine.txt″).
f(″заяц″, ″есть″, ″млекопитающее″).
hypo(″anaemia″).
Ниже приведены пояснения к данным описаниям.
Все записи в файлах баз знаний подчиняются синтаксису предикатов языка Prolog. Каждое выражение начинается имени, начинающегося со строчной латинской буквы. В скобках через запятую размещаются аргументы. Выражение заканчивается точкой.
Предикат описания факта f – основной элемент базы знаний. Все элементы триплета
должны заключаться в кавычки (знак ″, но не ‖ или ―). Не допускается использовать в них
пробелы и символы-разделители, если предполагается их использовать в запросах, поскольку парсинг запроса осуществляется как разбор текста на слова. Пробелы между символами-разделителями допускаются: f(″заяц″ , ″один_из″ , ″млекопитающее″ ).
3.2. Файл онтологий
В файле онтологий могут также располагаться записи следующих типов.
Имя Назначение
Описание класса
c
Формат
с(<слово>).
Пример
c("person").
c("everybody").
c("thing").
282
o
Факт. То, же, что и f(…)
в файле базы знаний.
o([<субъект>,<предикат>,
<объект>]).
d(["everybody","a_kind_of","thing"]).
d
Описание объектов и
субъектов (dictionary)
d([<слово>,<слово>,…,
<слово>]).
d(["car","автомобиль","voiture"]).
p
Описание предикатов
(predicates)
p([<слово>,<слово>,…,
<слово >]).
p(["ERG","КТО","Агент"]).
pr
Описание свойств (properties)
p([<слово>,<слово>,…,
<слово >]).
p(["has_name"]).
p(["мужской‖, ―male"]).
g
Предпочтительная ориентация связи для лучшей читаемости графа
g(<направление>,[<слово>,
<слово>,…,
<слово >]).
j
Список игнорируемых
слов (junk).
j([<слово>,<слово>,…,
<слово >]).
g(down,["is_parent",
‖is_grandparent", "is_uncle","is_father"]).
g(side,["is_cousin", "is_sibling"]).
g(up, ["is_a", "is_child"]).
j(["the", "a", "an", "one", "your" ]).
q
Список вопросительных
слов (questions);
q([<слово>,<слово>,…,
<слово>]).
r
Предикат описания правила
r(<причина>),<следствие>),
q([―кто‖,"who",]).
q(["what", "when", "why", "where",
"how"]).
r([t("?x", "брат", "?y")], [ t("?x", "родственник", "?y")] ).
Описание класса с необходимо для того, чтобы отличить класс от экземпляра.
Запись типа o используется точно так же, как и запись f в файле базы знаний. Необходимость присвоения другого имени обусловлено ограничениями языка Пролог. Поскольку
файл онтологий предназначен для хранения знаний на уровне классов, а не экземпляров,
запись типа o описывает отношения между классами с свойства классов.
Если в составе семантической сети используются синонимы терминов, то их необходимо
описать в записях типов d и p. Запись типа d описывает синонимы объектов и субъектов
(dictionary), а запись типа p – синонимы предикатов (predicate). Записи типа pr необходимо создавать даже при отсутствии синонимов, поскольку граф для свойств строится иначе,
чем для отношений. Если не указать свойство в записи pr, то одинаковые свойства всех
объектов будут сводиться в одну вершину, например, так, как показано ниже. На левом
рисунке свойства сводятся в одну вершину, на правом – нет.
Кроме того, идентификация свойств полезна для фильтрации графа, если граф становится
слишком плотным, целесообразно исключить отображение на нем свойств, оставив только
283
отношения. Запись типа pr может включать как наименование свойства, так и значение,
например, ―has_sex‖ или ―male‖ и ―female‖.
Все синонимы одного термина должны размещаться в одном списке. Использование словарей позволяет сравнительно просто сделать семантическую сеть независимой от языка.
При этом первый элемент каждого списка будет всегда использоваться для отображения
на графе.
Записи типов q (questions) и j (junk) используются для обработки запросов к базе знаний
на упрощенном естественном языке. Список вопросительных слов необходим для идентификации вопросительного предложения, а список игнорируемых слов – для приведения
задаваемого вопроса к виду, пригодному для унификации с фактами. Так, в частности, игнорируются артикли и предлоги.
Внимание:
В данной версии программы допускается только один список синонимов для каждого понятия. Если в разных онтологиях, подключаемых к базе знаний, будет присутствовать запись типа d или p для данного понятия, программа использует только
один из них. Например, в одном файле онтологии указано p(["ISA", “is_a”]), а в другом – p([“один_из”,”ISA”]), то программа будет использовать только один из списков
в зависимости от порядка следования записей onto d файле базы знаний.
3.3. Правила в базе знаний
Правила позволяют устанавливать закономерности, на основе которых можно получать
новые знания. В правилах используются переменные, которым в процессе унификации с
фактами присваиваются значения. В связи с тем, что внешние файлы Пролога не допускают использование переменных, здесь принято специальное их именование. Переменные
должны быть представлены текстовыми константами, начинающимися с вопросительного
знака, например, ″?x″, ″?class″. Правило состоит из двух списков триплетов. Второй список содержит новые знания, которые становятся истинными, если действительны факты
из первого списка. Пример:
r([ t(″?x″, ″родитель″ , ″?y″), t(″?y″, ″родитель″ , ″?z″), t(″?z″, ″пол″ , ″мужской″)],
t(″?z″, ″внук″ , ″?x″)] ).
Данная запись эквивалентна правилу на Прологе
grandchild( X, Y ) :- parent( Y, Z ), parent( Z, X ), sex( X, male ).
Несмотря на то, что программа Semantic написана на Прологе, использовать такое правило напрямую невозможно, поскольку записать его можно только в компилируемый текст
программы, а не во внешнюю базу знаний. Во внешней базе Пролога допускается хранение только фактов.
284
В случаях, когда требуется установить идентичность / различие двух объектов, в правиле
должен использоваться специальный предикат ―differs‖. Приведенный ниже пример показывает правило для отношений брат или сестра:
r( [t("?x","is_parent","?y"),t("?x","is_parent","?z"),t("?y","differs","?z")],
[t("?y","is_sibling","?z")] ).
Если
в
правиле
требуется
отрицание,
то
используется
конструкция
n(<субъект>,<предикат>,<объект>).
Эта конструкция аналогична отрицанию отношения t(<субъект>,<предикат>,<объект>).
Ниже показан пример правила, описывающего отношение отчим/мачеха –> пасынок/падчерица.
r( [t("?x","is_parent","?y"),t("?x","is_spouse","?z"), n("?z", "is_parent", "?y")],
[t("?z","is_step-parent","?y")] ).
Замечание. Использовать отрицательные предикаты следует с осторожностью. Вопервых, это противоречит допущению открытого мира (Open World Assumption), в соответствии с которым отсутствие информации о факте в базе знаний еще не значит отрицания данного факта. Приведенный выше пример это демонстрирует. Здесь подразумевается, что ?z не является родителем ?y, если нет факта, о том, что он/она является родителем.
Правильное определение данного отношения может быть записано следующим образом:
r([t("?x","is_parent","?y"),t("?x","is_spouse","?z"),t("?a","is_parent","?y"), t("?a","differs",
"?z")], [t("?z","is_step-parent","?y")] ).
Как видим, отрицательный предикат не понадобился. Во-вторых, отрицательный факт
может потребовать поиска по всей базе знаний. Еще одно некорректное определение сироты приведено ниже:
r( [n("?x", "is_parent", "?y")],[t("?y", "is_a‖, ―orphan")]).
Согласно данному правилу, любой объект, для которого нет отношения ―is_parent‖ будет
считаться сиротой, а для вывода из данного правила будет выполняться поиск по всем
фактам ―is_parent‖.
Большее количество примеров правил содержится в папке Examples.
4. Типы отношений в семантической сети
Элементом семантической сети [1] является триплет вида (Субъект – Предикат – Объект).
Любой объект, упомянутый в одном триплете, может быть объектом либо субъектом в
других триплетах. Такие связи и образуют сеть. Различают следующие типы отношений:
1)
2)
3)
4)
Иерархический;
Функциональный;
Количественный;
Пространственный;
285
5)
6)
7)
8)
Временной;
Атрибутивный;
Логический;
Лингвистический.
Данный список не является исчерпывающим и может дополняться.
4.1. Иерархические отношения
Иерархические отношения возникают наиболее часто. К ним относятся:
1) отношение классификации ISA (от английского ―is a‖) . Говорят, что множество
(класс) классифицирует свои экземпляры (например, ―Сократ есть человек‖). Иногда это отношение именуют ―member of‖. По-русски это может называться
«один_из», «есть» (единственное число) или «суть» (множественное число). Обратное отношение – ―example of‖ или «пример». В отношении ISA субъект всегда
экземпляр, и объект – класс.
2) Отношение между множеством и подмножеством AKO (―a kind of‖), например,
«Магистры подмножество студентов». Отличие от отношения ISA заключается в
том, что отношение классификации «один ко многим», а подмножество – «много к
многим». По-русски – «подмножество». В отношении АКО и объект и субъект –
классы.
3) Отношение меронимии – отношение целого к части (―has part‖). Мероним – объект, являющийся частью другого объекта. Отношение холонимии – отношение части к целому (―is a part‖). Рука – холоним для тела. Тело – мероним для руки. В отношении меронимии субъект и объект либо оба классы, либо оба экземпляры.
4.2. Вспомогательные отношения
В семантических сетях часто используются следующие типы отношений:
1)
2)
3)
4)
5)
6)
функциональные связи («производит», «влияет», …);
количественные («больше», «меньше», «равно», …);
пространственные («далеко от», «близко к», «за», «над», «под», «выше», …);
временные («раньше», «позже», «одновременно с», …);
атрибутивные («иметь свойство», «иметь значение»,…);
логические («и», «или», «не»).
Число типов отношений может быть очень большим. Основная проблема при этом заключается в возможности идентификации этих отношений в запросах к базе знаний. В этой
связи предпочтительным является сокращение числа типов связей (и вершин) за счет увеличения числа вершин. Например, вместо отношения «семантсеть» - «предназначена» -
286
«представление_данных» можно использовать «семантсеть» - «имеет» - «назначение»;
«назначение» - «есть» - «представление»; «представление» - «чего» - «данных».
4.3. Отношения в графах Растье
Сети с глаголом в центре (сети Растье) оперируют со следующими типами связей [5]:
Имя
Тип
Определение
(ACC)
(ASS)
(ATT)
(BEN)
accusative
assumptive
attributive
benefactive
(CLAS)
(COMP)
classitive
comparative
(DAT)
(ERG)
dative
ergative
(FIN)
(INST)
(LOC S)
final
instrumental
spatial locative
(LOC T)
temporal locative
Объект воздействия
Точка зрения
Свойство, характеристика
Сущность, выступающая в роли выгодоприобретателя
Экземпляр класса
Элементы, объединяемые сравнением
Получатель
Эргатив, агент процесса или действия
Результат или ожидаемая цель
Использованные средства
Положение (позиция) в пространстве
Положение (позиция) во времени
Упрощенное имя
для обучения
PATient
PERspective
CHARacteristic
BENeficiary
CLASsitive
COMParison
RECeiver
AGEnt
GOAL
MEAns
SPAce
TIME
Сторона, пострадавшая в результате MALeficiary
действия
(PART)
partitive
Часть целого
PARTitive
(RES)
resultative
Результат, эффект, следствие
EFFect (или
CAUse)
Данные типы связей могут быть представлены в глобальной или локальных базах знаний
следующим образом:
(MAL)
malefactive
p(["ACC", "patient"]).
p(["ASS", "perspective"]).
p(["ATT", "characteristic"]).
p(["BEN", "beneficiary"]).
p(["CLAS", "classitive"]).
p(["COMP", "comparison"]).
p(["DAT", "receiver"]).
p(["ERG", "agent"]).
p(["FIN", "goal"]).
p(["INST", "means"]).
p(["LOC_S", "space"]).
p(["LOC_T", "time"]).
p(["MAL", "maleficiary"]).
p(["PART", "partitive"]).
p(["RES", "effect", "cause"]).
287
4.4. Правила наследования
Правила наследования отношений автоматически применяются при каждом обращении к
базе знаний после того, как все факты исчерпаны. Применяются следующие правила
наследования:
Если X AKO Y и Y AKO Z то X AKO Z
Если X ISA Y и Y AKO Z то X ISA Z
Если X has_part Y и Y has_part Z то X has_part Z
Если X ISA Y и Y has_part Z то X has_part Z
Если X AKO Y и Y has_part Z то X has_part Z
Если X ISA Y и Y has_a Z то X has_a Z
Если X AKO Y и Y has_a Z то X has_a Z
Указанные правила приведены в файле examples\onto.pro
4.5. Принципы идентификации объектов
Используемые в фактах обозначения объектов являются их локальными идентификаторами, которые действуют только в пределах одного файла баз знаний. Например, факт
f(―Sergey‖,‖is_parent‖,‖Nikita‖) вовсе не обязательно относится с семейству Михалковых,
даже
если
рядом
присутствуют
факты
f(―Sergey‖,‖is_parent‖,‖Andrey‖),
f(―Andrey‖,‖is_parent‖,‖Egor‖), которые у всех на слуху. Полностью идентифицируют объект такие его свойства как ―has_name‖, ―has_surname‖, ―has_birth_date‖ и т.п., включая номер паспорта. Однако, такая строгая идентификация сильно загромоздит запросы, да и не
требуется в учебных целях. Мы будем считать, что идентификация предметной области
содержится в комментариях в самом тексте файла, которые доступны пользователю.
Программа требует уникальной идентификации вершин графа, и, следовательно, уникальных идентификаторов объектов в пределах одного файла. В графах Растье соблюсти уникальность сложно, поскольку в центре ставиться глагол (процесс), разнообразие которых
существенно меньше, чем объектов. Здесь допускается присвоение уникального идентификатора перед именем процесса. Например, в одном графе используются два глагола
«жить», относящиеся к разным объектам. В этом случае вместо «жить1» и «жить2» можно
записать «1:жить» и «2:жить». Префиксы перед двоеточием на графе отображаться не будут. Кроме того, в результате применения правил могут появляться объекты с одинаковыми названиями. Пусть в базе онтологий есть факт ―person has_part hand‖ (у человека есть
рука). После применения правил наследования к нескольким экземплярам могут появиться одинаковые идентификаторы: ―Ivan has_part arm‖, ―Stepan has_part arm‖ и т.д. На графе,
да и не только это может воспринято как факт, что все эти люди имеют одну и туже составную часть (сиамские близнецы). Для устранения неоднозначностей программа автоматически подставляет к наименованию объекта префикс – имя субъекта: ―Ivan has_part
Ivan:arm‖, ―Stepan has_part Stepan:arm‖. Такая идентификация позволяет избежать дву-
288
смысленностей; при этом на графе префиксы не отображаются, поскольку расположение
связей позволяет идентифицировать объекты.
5. Запуск программы
Каталог программы должен хранить следующие файлы, требуемые для ее выполнения:
Semantic.exe
Vip6u2a.dll
Vip7edit.dll
Vip7kernel.dll
Vip7regexp2.dll
Vip7run.dll
Vip7vpi.dll
Исполняемый модуль – Semantic.exe.
Сразу после старта программа выдает диалоговое окно для выбора файла глобальной базы
знаний, которое выглядит следующим образом:
После того, как файл глобальной базы знаний открыт, появляется основное окно программы, которое описано в разд. 7 «Интерфейс программы».
289
6. Граф семантической сети
Граф семантической сети, отображаемый с помощью программы, выглядит следующим
образом:
Субъекты и объекты отображаются в виде эллипсов с надписями, а отношения (предикаты) – прямоугольниками с надписями. Для наглядности графа не рекомендуется давать
субъектам, объектам и предикатам длинные названия, иначе фигуры будут накладываться
друг на друга. Приняты следующие цветовые обозначения:
1. Розовым цветом обозначена основная тема.
2. Желтым цветом выделяются классы.
3. Красным цветом обозначается факт или отдельный объект или субъект, выбранный мышью.
4. Голубым цветом обозначается объект или субъект имеющий ссылки на
внешний файл.
5. Последний факт, включенный в контекст, окрашен в зеленый цвет.
6. Оранжевым цветом обозначаются причинно-следственные связи.
В программе не в полной мере реализована перерисовка основного окна. Если закрыть его
другим окном, изображение не восстанавливается. Чтобы восстановить граф, можно
нажать кнопку Redraw или изменить размер или положение окна на экране. Пока не поддерживается также скроллинг окна.
290
7. Интерфейс программы
7.1. Элементы управления
После запуска программы и загрузки файлов с базами знаний на экране отображается основное окно программы, которое выглядит следующим образом:
В окне программы имеется основная панель Semantic и окно сообщений Messages.
На панели ―Semantic‖ имеется поле для ввода текста (под строкой " User says‖). Рядом с
ним находится поле диалога (―Machine says‖). Поле ―Questions counter‖ содержит счетчик
запросов к базе знаний и может использоваться для контроля знаний в режиме обучающей
системы. Кроме счетчика вопросов имеются счетчики правил: Число найденных правил
(Rules Found), число попыток их применения (Tried) и число успешных попыток (Applied).
Единственная действующая опция основного меню программы – ―File/New‖ или кнопка
―New‖ – позволяет открыть новое окно программы без ее перезапуска. Параллельно мож-
291
но открывать неограниченное число окон. Ограничение связано только с объемом доступной оперативной памяти.
Кнопки основного окна имеют следующее назначение:
Say – Обработать строку запроса, введенную в поле для ввода. Запрос может задаваться в
виде утвердительного или вопросительного предложения. Запрос должен заканчиваться
либо точкой, либо вопросительным знаком. Внутри запроса эти символы, естественно, не
допускаются. Результат отображается в поле диалога, а также в виде графа семантической
сети.
Например, на запрос ―Who is Sergey?‖, получаем ответ: ―Sergey is_a person‖ и соответствующий фрагмент семантической сети.
Заметим, что для того, чтобы запрос мог быть обработан именно в таком виде, то помимо
факта
f(″Sergey″, ″is_a″, ″person″).
мы должны добавить список вопросительных слов q([″Who″]), а в список синонимов предикатов – p([″is_a″, ″is″]). Если мы хотим, чтобы обрабатывалась конструкция
Who is Mr Sergey?
Мы должны пополнить список еще список игнорируемых слов: j([″Mr″, …]). Подробнее
правила формирования запросов описаны в подразд. 7.2.
Если фраза в строке запроса была задана в утвердительной форме, то при наличии релевантного факта в окне ответа появляется факт, соответствующий запросу. Если такого
факта в базе знаний нет, то он добавляется в базу знаний, после чего может быть сохранен
кнопкой Save. Если факт добавлен ошибочно, то его можно удалить кнопкой Forget Fact,
предварительно выбрав мышью факт целиком (кликнув на предикат).
292
В связи с тем, что разбор фраз на естественном языке в программе реализован достаточно
слабо, можно строить запрос очень просто: указывать триплет в таком же виде, как он
предположительно содержится в базе знаний, заменяя неизвестные звездочками. Например, мы хотим задать вопрос о том, какую фамилию носит объект ―Natalia‖. Обработать
фразу на английском языке ―What is surname of Natalia?‖ или ―What surname has Natalia?‖
или даже ―What surname does Natalia have?‖ достаточно сложно. Поэтому мы можем написать запрос ―Natalia has_surname * ?‖ и получим ответ: ―Natalia has_surname
Konchalovskaya‖.
Если фактов, релевантных данному запросу, в базе больше нет, программа применяет цепочку обратного вывода (Back Chain Reasoning). Это может занять продолжительное время.
More – получить альтернативный ответ на запрос по кнопке Say. Например, на вопрос
―Who is_parent of Nikita?‖ программа дает ответ: ―Sergey is parent of Nikita‖. Нажатие
кнопки More позволяет получить альтернативный ответ: ―Natalia is parent of Nikita‖, как
показано ниже. Так же, как и по кнопке Say при отсутствии релевантных фактов запускается обратный вывод.
Wide – получить факт о другом объекте, связанным с выбранным субъектом или субъектом, полученном в последнем обращении, т.е. получить соседнюю ветвь по отношению к
293
последней. (Последний факт, включенный в контекст, отображается на графе зеленым
цветом, а объект, выбранный двойным щелчком мыши – красным цветом). Например, последний факт был ―Сергей профессия поэт‖.
Если нажать кнопку Wide еще раз, то будет получен факт ―car has_a transmission‖ и т.д.
При каждом нажатии кнопки Wide будет извлекаться очередной факт из базы знаний и
пополнять контекст. После того, как все факты, относящиеся к данному субъекту, будут
извлечены, программа начнет пытаться применить правила. Ниже показано, что Сергей
является прародителем Анны. Если нажать кнопку Why, то оранжевым цветом будут выделены факты, являющиеся основанием для сделанного вывода,
а в поле диалога и окне сообщений программы - текстовое объяснение: Сергей
is_grandparent Анна ПОТОМУ ЧТО Сергей родитель Никита И Никита родитель
Анна.
Кнопка Wide All находит все объекты, связанные с данным субъектом, в том числе пытается применить все правила.
Deep – получить следующий факт об выбранном объекте или объекте, полученном в последнем обращении, т.е. углубиться по текущей ветви графа. Например, последний факт
был ―car has_a year‖.
294
При углублении по данной ветви получим факт ―year is 2007‖.
Up – получить факт, в котором последний или выбранный субъект является объектом, т.е.
подняться выше по графу.
Если сейчас нажать на кнопку Up, то мы получим другой субъект, связанный с объектом
―бить‖:
295
Это означает, что почтальон поколотил прохожего в результате какого-то укушения.
Нажмем кнопку Wide и обнаружим, что жертвой укушения является тот самый почтальон,
Еще раз нажав Wide, узнаем, что агентом кусания является собака.
Forget Fact – удалить из контекста факт, объект которого предварительно выделен красным цветом с помощью двойного щелчка мыши. Например, мы хотим «забыть» факт ―car
has_a suspension‖. Выделяем объект красным цветом с помощью двойного щелчка мыши.
После нажатия кнопки Forget Fact данный факт будет исключен из контекста.
Если был выбран факт целиком (нажатием кнопки мыши на предикат), то данный факт
будет удален не только из контекста, но и из базы знаний. Если после этого нажать кнопку
Save, то факт будет удален и из файла.
296
All Facts – найти и отобразить все факты. По нажатию этой кнопки программа включает в
контекст все факты из базы знаний, а также пытается применить ко всем этим фактам правила наследования добавляет в текущий контекст новые факты, установленные на основе
этих правил.
All Rules – Применить к базе знаний все известные правила. По нажатию этой кнопки
программа последовательно применяет каждое правило ко всем фактам базы знаний, т.е.
выполняет прямой вывод (Forward Chain Reasoning). Выполнение этой функции может
занять много времени. Если в базе онтологий имеется 10 правил по два триплета в каждом, а в базе знаний – 100 фактов, то количество попыток применения этих правил будет
лежать в диапазоне 10*100 – 10*100*100, т.е. от 1000 до 100000. Обработка 15000 попыток применения правил требует около 5 минут времени.
В целях ускорения логического вывода в программе реализован алгоритм индексации
фактов, сокращающий время обработки правил приблизительно на два порядка. Для исследования временных характеристик алгоритма в программе также предусмотрен режим
без индексации – наивный вывод (переключатель Naïve), а также счетчики, показывающие значения числа найденных правил (Rules Found), попыток применения (Tried) и
успешных попыток (Applied), т.е. правил, выдавших релевантные факты. Счетчики находятся в верхней части экрана. При вызове правил кнопкой Wide счетчики показываю
нарастающие значения, а по кнопке All Rules счетчики предварительно сбрасываются.
Следует заметить, что один цикл применения правил далеко не всегда дает все возможные
факты, поскольку многие факты являются результатом выполнения цепочек фактов. Логика программы здесь реализует прямой вывод (forward chaining), т.е. от известных фактов
к цели. При этом перебираются все правила, в теле которых есть триплеты, унифицируемые известными фактами. Поиск завершается, когда находится факт, релевантный запросу. Альтернативой данному подходу является обратный вывод (back chaining), в котором
результирующая часть каждого правила унифицируется с заданной целью. Обратный вывод реализован в кнопке Say.
Кнопка All Rules, на первый взгляд, реализует спуск по дереву поиска на один уровень.
Однако, это не совсем так. Каждый найденный факт немедленно включается в состав фактов, используемых следующим правилом, а общее количество нажатий этой кнопки для
гарантированного извлечения всех возможных фактов в значительной степени зависит от
порядка следования правил в онтологиях. Если первыми стоят факты, результаты обработки которых используются следующими фактами, то все факты могут быть получены за
один проход.
Gото Topic – перейти к субъекту или объекту, выделенному красным с помощью двойного щелчка мыши. При этом накопленный контекст «забывается», но сохраняется для последующего восстановления, а выделенный субъект или объект становится основной темой, от которой начинает развертываться граф.
297
Topic Tree – показать дерево тем, которые были основными, и порядок перехода от темы
к теме. На дереве тем можно мышью выделить любую тему и прейти к ней кнопкой Gото
Topic. При этом сохраненный ранее контекст восстанавливается.
Redraw – Перерисовать граф. Целесообразно использовать эту кнопку, если узлы сети
расположились неудачно.
Clear All – очистить контекст и начать все сначала.
Save – сохранить текущую базу знаний. Программа предлагает выбрать имя файла. Сохранять файл целесообразно в случае, если база знаний пополнялась с помощью кнопки
Say. Кроме фактов базы знаний кнопка Say вызывает сохранение в файл текущего контекста, в т.ч. фактов, полученных с помощью правил. Таким образом, базу знаний можно обновить так, чтобы в следующий раз не запускать длительный процесс применения правил.
Exit – выход из задачи. Опцией меню File / New можно начать работу заново, без перезапуска программы.
Кроме кнопок имеется переключатели: Hide Classes, Hide Props, Local Graph и Diagnostics.
Первые два переключателя позволяют скрыть на графе классы или свойства объектов соответственно, чтобы проредить слишком перегруженный граф. Переключатель Local
Graph позволяет ограничить граф выбранным объектом и отношениями только с этим
объектом. Переключатель Diagnostics включает выдачу диагностических сообщений в
окне сообщений.
Обработка кликов мышью имеет следующие варианты. Если кликнуть мышью на эллипс,
то он подсвечивается красным цветом и в дальнейшем может использоваться для установления новых или удаления установленных фактов (кнопки Deep, Wide, Wide All, Up,
Why), а также перехода к другим темам (Goto Topic). Если сделан клик мышью на предикат, то весь факт подсвечивается зеленым цветом и приобретает статус последнего установленного факта. Двойной клик на эллипс вызывает попытку перехода к новой базе знаний, ссылка на которую должна содержаться в данном объекте (запись типа e).
В том случае, если установлен фильтр отображения свойств (Hide Props) одиночный клик
мышью на объект вызывает еще и выдачу окна со списком свойств данного объекта, как
показано ниже.
298
7.2. Язык запросов
В поле запроса могут вводиться следующие языковые конструкции:
Триплет, заканчивающийся точкой, например, «семантсеть имеет история.». Если такой факт имеет место, то в поле вывода будет отображен данный факт (практически – повторение запроса). Если есть желание приблизить данный запрос к естественному языку
«Семантическая_сеть имеет историю.», то в записи словаря нужно добавить синонимы,
например,
d(["семантсеть","семантическая_сеть"]).
d(["история","историю"]).
Заметим, что унификация запроса с базой данных выполняется в режиме «case insensitive‖,
т.е. регистр ввода символов не имеет значения.
Вместо любого из элементов триплета можно использовать звездочку. Это символ успешно унифицируется с любым из значений и аналогичен переменной. Например, запрос «*
имеет история.» даст ответ «семантсеть имеет история.»; запрос «* * *.» выдаст первый по
порядку факт из базы знаний.
Следующие формы запроса используются при необходимости приблизить запрос к естественному языку.
Триплет в вопросительной форме, заканчивающийся вопросительным знаком, например, «Имеет семантсеть историю?». Данный порядок слов для вопросительных предложений используется в большинстве языков. Мы можем написать запрос по-английски «Has
the semant_net a history?‖. Чтобы этот запрос заработал, необходимо добавить / изменить в
базе знаний следующие записи:
d(["семантсеть", "семантическая_сеть", "semant_net"]).
d(["история", "историю", "history"]).
p(["имеет", "has", "have"]).
j(["the", "a"]).
Триплет в вопросительной форме, допускаемой в русском языке, заканчивающийся вопросительным знаком, например, «Семантическая_сеть имеет историю?». Для английского языка эта конструкция также актуальна, если мы зададим вопрос таким образом: «Does
the semant_net have a history?‖. C точки зрения разбора запроса слове ―does‖ является мусором и должно быть включено в список junk: j([―the‖,‖a‖, ―do‖, ―does‖]).
Триплет в вопросительной форме с вопросительным словом, заканчивающийся вопросительным знаком, например, «Что имеет семантсеть?». Ответ будет: «семантсеть имеет
история.». Чтобы заработал этот запрос, необходимо добавить вопросительные слова в
запись question: q(["what", "что",…]).
299
После успешной унификации запроса с базой знаний в поле вывода отображается триплет,
удовлетворяющий запросу, а в графическом поле выводится данный факт, а также вся цепочка фактов от основной темы. Например, основной темой является «семантсеть», а первый вопрос был: «граф имеет вершина?». Соответствующий факт представлен базе знаний, поэтому ответ будет: «граф имеет вершина».
8. Управление контекстом
По мере увеличения сложности создаваемой семантической сети возникают проблемы.
Первая проблема связана со сложностью разрастающегося графа. Заметим, что на экране
отображается не весь граф сети, а только та его часть, которая уже принимала участие в
диалоге, которую мы будем называть контекстом. По мере вовлечения в диалог новых
фактов граф может стать нечитаемым.
Вторая проблема заключается в том, что становится сложнее присваивать уникальные
имена понятиям. В пределах контекста одинаковые имена соответствуют одним и тем же
понятиям. Здесь существуют две проблемы: полисемия и синонимия. Полисемия – несколько значений одного и того же слова. Например, поле – это аграрное понятие для
фермера, физическое для инженера, и правовое для юриста. Полисемия может привести к
тому, что фрагменты семантической сети будут объединяться совсем не так, как ожидается. Синонимия – несколько терминов для одного и того же понятия, например, вертолет и
геликоптер. Вследствие синонимии наоборот, фрагменты сети будут несвязными. Проблема синонимии затрудняет также объединение фрагментов сети, написанных разными
авторами.
В реальном диалоге эта проблема решается на уровне контекста, который оба собеседника подразумевают одинаковым. В случаях, когда участники диалога имеют в виду различный контекст, обычно имеют место недоразумения. Например, вы назначаете встречу у
метро на обычном месте. Для вас это место – на выходе из метро, а собеседник думает,
что это место у поездов. Не разминуться будет невозможно.
Управление контекстом позволяет привести диалог к виду, привычному для человека. Вопервых, на экране отображается текущий контекст, что позволяет быть в курсе того, о чем
идет речь, если пользователь и забыл. В частности, отображаются текущие значения Вовторых, меняя контекст, можно временно «забыть» о текущей теме, начав диалог заново.
После этого можно снова вернуться к обсуждаемой теме, предложив компьютеру «вспомнить» то, о чем говорилось ранее. Для этого используются возможности программы, реализованные с помощью кнопок Goto Topic, Forget Fact, Topic Tree.
При отображении понятий, для которых имеется отдельный файл с локальной базой знаний, они подсвечиваются голубым цветом. Выбрав одиночным щелчком мыши такой объект, можно нажать кнопку Topic Tree. После этого текущий контекст запоминается, за-
300
гружается база знаний для новой темы и вызывается из памяти запомненный контекст,
если данная тема уже обсуждалась.
Так, нажав кнопку Topic Tree, мы получаем граф переходов от темы к теме, которые происходили в ходе диалога. Таким образом, можно вернуться к любой ранее обсуждавшейся
теме, «вспомнив» ее контекст.
Замечание: Строго говоря, граф переходов будет древовидным только в случае соответствующего развития диалога. Если перескакивать с темы на тему беспорядочным образом,
граф тем будет иметь сетевую структуру.
9. Сообщения программы
Программа выдает сообщения, относящиеся к диалогу, в поле вывода, а все прочие сообщения – в окне Messages.
9.1. Сообщения в поле вывода
Сообщение
The sentence must be terminated
by ''.'' or ''?'
No more facts in the current branc
h.
No more facts about the current s
ubject.
OK, let us talk about <Topic>. Re
peat your question.
The fact about <Topic> is forgott
en forever.
The fact about <Topic> cannot
be forgotten.
Double click the mouse
Причина
В конце запроса нет терминального символа
Была нажата кнопка DEEP,
но последний объект является листом
Была нажата кнопка WIDE,
от последнего субъекта
больше нет ветвлений
Последний запрос не был
распознан. Программа автоматически пытается сменить тему на <Topic>.
Нажата кнопка FORGET
FACT. Факт, включающий
в себя <Topic>, исключен
из контекста и из базы знаний. Если после этого
нажать SAVE, то и из файла данной темы
Нажата кнопка FORGET
FACT, а фактов, включающих в себя <Topic>, нет в
контексте
Нажата кнопка FORGET
Действия пользователя
Проверить строку запроса
Попытаться пойти по
другой ветви
Попытаться пойти по
другой ветви или углубиться в текущей
Нажать кнопку SAY
Любые
Возможная ошибка в
программе. Обратиться к
автору
Выбрать субъект или
301
Сообщение
to choose an object, then push For
get Fact button.
Сlick the mouse to choose an object, then push Change Topic butt
on
The topic <Topic> already exists
in the tree
Причина
FACT, а субъект или объект не выбран
Нажата кнопка GOTO
TOPIC, а субъект или объект не выбран
Нажата кнопка GOTO
TOPIC для перехода к теме
<Topic>, которая уже обсуждалась
No external knowledge base
Нажата кнопка GOTO
about the topic <Topic>
TOPIC для перехода к теме
<Topic>. Внешнего файла
для данной темы не создано
The context is cleared. You may s Нажата кнопка CLEAR
tart from scratch.
ALL. Контекст очищен.
База знаний загружена заново.
Cannot reinitialize
Нажата кнопка CLEAR
the knowledge base!
ALL. Контекст очищен.
База знаний не может быть
загружена заново.
You are right. This is the true diag Гипотеза, выбранная польnose.
зователем, совпадает с заданной
You fail. This is the wrong diagno Гипотеза, выбранная польse
зователем, не совпадает с
заданной
Действия пользователя
объект двойным щелчком
мыши
Выбрать субъект или
объект двойным щелчком
мыши
Любые
Проверить, действительно ли внешний файл был
создан, но не подключился
Любые
Возможная ошибка в
программе. Обратиться к
автору
Зачесть работу пользователя
Не зачесть работу пользователя
9.2. Сообщения в окне Messages
Сообщения в окне Messages имеют буквенную и цифровую идентификацию. Буква обозначает характер сообщения: i – информационное, W – предупреждение о возможной
ошибке, E – сообщение об ошибке.
ID
001i
002E
Текст
The file <path\name.txt >
is loading….
Eror loading a knowledge
base!
Причина
Файл базы знаний загружается
Действия
Не требуется
Невозможно загрузить файл базы
знаний
Проверить
наличие и имя
файла, указан-
302
ID
Текст
Причина
003i
The file <path\name.txt >
is loading….
Eror initialization a knowle
dge base!
Файл онтологии загружается.
005E
Error indexing a new fact!
007i
The sentence parsed:
<Term1> <Term2>
<Term3> <Sign>
The sentence SPO
<Term1> <Term2>
<Term3> unified with the fact <Subject
> <Predicate> <Object>
The fact SPO <Term1>
<Term2> <Term3> replenished the knowledge base
<Subject> <Predicate>
<Object>
The question <Term1>
<Term2> <Term3> identified as QPS
Ошибка индексации факта. Вероятнее всего, ошибка в программе
Запрос пользователя разобран на 4
составляющих – три слова и знак
004E
008i
009i
010i
011i
The question <Term1>
<Term2> <Term3> identified as SPQ
014E
Eror unification stmt <strin
g> <string> <string>
<string>.
A new fact established
<Subject> <Predicate>
<Object>
025i
030i
The fact <Subject> <Predicate> <Object> replenished the context.
040W
Pre-selection the fact
Ошибка загрузки онтологий
Действия
ного ранее в сообщении 001i
Не требуется
Проверить файлы, указанные в
записях onto
Обратиться к
разработчику
Не требуется
Предложение пользователя унифицировано фактом <Subject> <Predicate> <Object>
Не требуется
Предложение пользователя пополнило контекст фактом <Subject>
<Predicate> <Object>
Не требуется
Предложение пользователя идентифицировано в вопросительной
форме (вопр.слово –предикат –
субъект)
Предложение пользователя идентифицировано в вопросительной
форме (субъект–предикат–
вопр.слово)
Ошибка унификации строки запроса.
Не требуется
К текущему контексту применено
правило, записанное в соответствующей строке типа r и получен
новый факт <Subject> <Predicate>
<Object>
Факт <Subject> <Predicate> <Object> пополнил контекст
Не требуется
Для данного триплета нет фактов в
Не требуется
Не требуется
Проверить
строку запроса
Не требуется
303
ID
041i
042i
071E
072E
080i
081i
082E
083i
090i
Текст
<Subject> <Predicate>
<Object> failed
чч.мм.сс.Forward chaining
started
чч.мм.сс.Forward chaining
ened. Rules found %, tried
%, applied %
Canot draw fact <Subject>
<Predicate> <Object>
Canot draw <Object>
at <X1,Y1 >
The last fact
<Subject>
<Predicate> <Object> discarded.
Current topic is <Topic>.
092i
No context for the topic
<Topic>.
093i
The topic <Topic> has not
been discussed yet.
Now we talk about <Topic>.
The topic ''", Topic, "'' has
been restored.
We talk about ''", Topic, "''
again.
External knowledge
base <base> about the topi
c <topic> is loaded.
096i
097i
Начата обработка всех правил
Не требуется
Закончена обработка правил.
Найдено, использовано, использовано успешно.
Невозможно вывести на экран факт
<Subject> <Predicate> <Object>
Невозможно вывести на экран объект <Object>
Факт <Subject> <Predicate>
<Object> удален из контекста
Не требуется
Основная тема теперь <Topic>.
Не требуется
Невозможно перекрасить текущую
тему на дереве тем в зеленый цвет.
Возможная ошибка программы.
Sleced fact by a click is <S Выбран факт Subject> <Predicate>
ubject> <Predicate> <Ob- <Object>
ject>
The topic <Topic>
al- Тема <Topic> уже есть на дереве
ready exists in the tree
тем
No external knowledge ba
se about the topic <Topic>.
095i
Действия
Canot draw the current topi
c in green!
091W
094i
Причина
базе знаний
Обратиться к
автору
Обратиться к
автору
Не требуется
Обратиться к
автору
Не требуется
Не требуется
Нет внешней базы данных для темы
<Topic>. Если файл должен быть,
то возможна ошибка имени файла
Для темы <Topic> нет сохраненного
контекста. Если тема уже обсуждалась, то возможна ошибка программы
Тема <Topic> еще не обсуждалась
Проверить имя
файла, если он
есть
Обратиться к
автору
Основная тема теперь <Topic>.
Не требуется
Контекст основная тема <Topic>
восстановлен.
Выполнен повторный переход к ранее сохраненной теме <Topic>.
Внешняя база знаний для темы
<Topic> загружена
Не требуется
Не требуется
Не требуется
Не требуется
304
В случае ошибок в синтаксисе файлов локальных или глобальной базы данных выдаются
сообщения следующего вида:
К сожалению, данное сообщение не содержит указания на конкретную строку, в которой
обнаружена ошибка. Подсказкой может быть строка «Expected symbol ‗)‘, got ‗]‘‖, из которой следует, что где-то стоит квадратная скобка вместо круглой. Для ускорения поиска
подобных ошибок для редактирования файлов баз знаний и онтологий целесообразно
пользоваться редакторами в составе компиляторов языка Пролог, например, SWI-Prolog
или Visual Prolog.
Download