/
Author: Корнеев В.В. Гареев А.Ф. Васютин С.В. Райх В.В.
Tags: манипулирование данными компьютерные технологии базы данных обработка информации информационные системы
ISBN: 5-89251-089-1
Year: 2000
Text
Российская Ассоциация Издателей компьютерной литературы В. В. Корнеев, А. Ф. Гареев, С. В. Васютин, В. В. Райх Базы данных Интеллектуальная обработка информации Москва Издательство «Нолидж» 2000
УДК 004.62 ББК 32.973.26.018.2 И 73 В. В. Корнеев, А. Ф. Гареев, С. В. Васютин, В. В. Райх. Базы данных. Интеллектуальная обработка информации. — М.; «Нолидж», 2000. — 352 с., ил. В книге "Интеллектуальная обработка данных" рассмотрены вопросы органи- зации информационных систем различного назначения, методы интеллекту- ального анализа данных в этих системах, а также способы построения про- граммно-аппаратных платформ информационных систем. Изложение методов интеллектуального анализа данных сопровождается примерами применения соответствующих пакетов, признанных одними из лучших среди пакетов сво- его класса. ISBN 5-89251-089-1 Лицензия ЛР № 064480 от 04 марта 1996 г. © В. В. Корнеев, А. Ф. Гареев, С. В. Васютин, В. В. Райх, 2000. © Нолидж, 2000.
Содержание ВВЕДЕНИЕ....................................................10 Глава 1. Базы данных в фактографических системах............13 1.1. Документальные и фактографические информационные системы..............................................13 1.2. Системы управления базами данных................14 1.3. Модели данных...................................15 1.4. Операции над отношениями реляционных БД.........18 1.5. Нормализация отношений..........................21 1.6. Средства ускорения доступа к данным.............25 1.7. Язык запросов...................................27 Глава 2. Системы обработки транзакций.......................30 2.1. Системы OLTP и OLAP.............................30 2.2. Обработка транзакции в OLTP-системах............31 2.3. Тиражирование данных............................37 2.4. Средства восстановления после сбоев.............37 2.5. Мониторы транзакций.............................38 Глава 3. Принципы построения систем, ориентированных на анализ данных.....................................41 3 1 Хранилища данных.................................41 3.2. Модели данных, используемые для построения хранилищ.............................................48 3.3. Многомерная модель хранилища....................50 3.4. Реляционная модель хранилища данных.............52 3.5. Комбинация многомерного и реляционного подхода: киоски данных........................................54 3.6. Построение систем на основе ХД..................56 3.7. Доставка данных в хранилище.....................56
4 Базы данных» Интеллектуальная обработка информации 3.8. Метаданные.......................................57 3.9. Методы аналитической обработки данных в хранилище....57 Глава 4. Документальные системы...............................61 4.1. Назначение и основные понятия ...................61 4.2. Общая функциональная структура документальных информационно-поисковых систем.........................63 4.3. Проблема формального представления смыслового содержания текста......................................64 4.3.1. Недостатки естественного языка.............64 4.3.2. Информационно-поисковые языки..............66 4.4. Обработка входящей текстовой информации........ 68 4 4.1 Лингвистический анализ зекста...............69 4.4.2. Автоматическое индексирование..............71 4.4.3. Автоматическое рубрицирование..............72 4 4.3.1. Методы автоматического рубрицирования, основанные на знаниях...................73 4.4.3.2. Методы, основанные на обучении по примерам................................. 77 4.5. Поиск текстовой информации.......................81 4.5.1. Модели поиска текстовой информации.........81 4.5.2. Методы введения обратной связи с пользователем.83 4.6. Оценка качества документальных информационно-поисковых систем.............................85 Глава 5. Семантическое моделирование в базах данных...............89 5.1. Основные подходы к моделированию в базах данных......89 5.2. Предметная область и семантика предметной области....90 5.3. Концептуальные средства описания предметной области.. 91 5.3.1. Понятие типа...............................91 5.3.2. Отношения между типами.....................92 5.3.3. Операции над типами........................95 5.3.4. Ограничения целостности....................96
Содержание 5 5.4. ER-модель...........................................96 5.5. Проблема преобразования концептуальной модели ПО в схему БД............................................100 5.6. Средство автоматизированного проектирования баз данных ERwin.........................................101 5.6.]. Общие сведения...............................101 5.6.2. Структура процесса моделирования в ERwin......102 5.6.3. Создание логической модели БД................102 5.6.3.1. Сущности и атрибуты..................102 5.6.3.2. Связи................................104 5.6.4. Создание физической модели и генерация схемы БД............................................109 5.6.6. Интерфейс ERwin............................... 111 5.6.7. Пример разработки модели БД с помощью ERwin... 115 5.6.7.1 Постановка задачи.................... 115 5.6.7.2 Создание логической модели БД........ 116 5.6.7.3. Создание физической модели БД и генерация схемы БД...........................123 Глава 6. Системы, основанные на знаниях.........................127 6.1. Знания и их представление..........................127 6.1.1 Знания........................................127 6.1.2. Проблема представления знаний................129 6.1.3. Логическая модель представления знаний.......130 6.1.4. Продукционная модель представления знаний....130 6.1.5. Фреймовая модель представления знаний........132 6.1.6. Семантические сети.......................... 134 6.2. Экспертные системы.................................136 6.2.1. Определение и базовая структура экспертной системы.............................................136 6.2.2. Типы экспертных систем.......................138 6.2.3. Методология разработки экспертных систем......139 6.2.4 Инструментальные средства разработки экспертных систем...................................140
6 Базы данных. Интеллектуальная обработка информации 6.3. Инструментальное средство разработки экспертных систем CLIPS...............................141 6.3 1 Общие сведения о CLIPS......................141 6.3.2. Программирование в CLIPS...................142 6.3.2.1. Основные элементы программирования... 142 6.3.2.2. Факты...............................145 6.3 2.3. Правила......................... 147 6.3.2.4. Переменные..........................149 6.3.2.5. Дополнительные средства.............150 6.3.3. Интерфейс CLIPS............................152 6.3 3 1 Интерфейс командной строки...........152 6.3.3 2. GUI-интерфейс.......................154 6.3.3.3. Интерфейс встроенного редактора.....156 6.3.4. Пример решения задачи с помощью CLIPS......157 6.3 4.1. Постановка задачи.................. 157 6.3.4.2. Алгоритм решения................... 157 6.3.4.3. Решение задачи в CLIPS............. 157 6.3.4 4. Запуск CLIPS........................161 6.3.4.5. Ввод программы......................163 6.3 4.6. Загрузка и запуск программы.........164 6.3.4.7. Работа программы................... 168 6.3 4 8. Сохранения протокола работы.........170 Глава 7. Нейросетевые системы.................................173 7.1. Проблемная специализация нейросетевых вычислительных систем..................................173 7.2. Основные понятия теории искусственных нейронных сетей........................................174 7.2.1. Типы нейросетей............................174 7.2.2 Основы построения алгоритмов обучения нейросетей.........................................177 7.2.3. Организация функционирования нейросети.....181 7.2.4. Алгоритмы обучения многоуровневых персептронных сетей.................................181 7.2.5. Алгоритмы обучения сетей с радиусными базисными функциями.................................183
Содержание 7 7.2.6. Замечания по поводу формирования нейронной сети...............................................186 7.3. Нейросетевые пакеты..............................187 7.4. Прогнозирование с использованием нейросетей......189 Глава 8. Генетические алгоритмы...............................212 8.1 Эволюционные вычисления и традиционные методы оптимизации...........................................212 8.2 Основы теории генетических алгоритмов.............217 8.3 Примеры решения задач.............................222 8.4 Эффективность применения генетических алгоритмов и средства ее повышения...............................233 8 5 Примеры программного обеспечения................238 Глава 9. Нечеткая логика и ее применение в экспертных системах.254 9.1. Предпосылки возникновения нечеткой логики........254 9.2. Основы нечеткой логики...........................254 9.3. Экспертные системы, основанные на нечеткой логике.258 9.4. Пакеты нечеткой логики для IBM PC................268 9.5. Создание нечеткой экспертной системы в пакете CubiCalc.....................................270 Глава 10. Параллельные базы данных............................291 10.1. Современное состояние работ по машинам баз данных............................................291 10.1.1. Модели машин баз данных...................291 10.1.2. Структуры аппаратных платформ распределенных и параллельных реляционных баз данных.........................................292 10.1.3. Интерфейс между базой данных и вычислительной системой...........................294 10.2. Реализации операций реляционных баз данных на параллельных системах с интерфейсом передачи сообщений.............................................294
8 Базы данных. Интеллектуальная обработка информации 10.2.1. Основные распараллеливаемые операции......294 10.2.2. Виды параллельной обработки в базах данных.....297 10.2.3. Основные свойства параллельных и распределенных БД...............................297 10 2.4. Параллельное выполнение операций.......299 10.2.5. Построение параллельных баз данных........303 10.3 Реализация баз данных на системах с разделяемой памятью...............................................304 10.3.1. Факторы, способствующие появлению систем с данными, размещаемыми в оперативной памяти...........304 10.3.2. Особенности систем с данными, размещаемыми в оперативной памяти..............................304 10.3.3. Примеры одноуровневых СУБД................305 10.4. Единый системный образ..........................306 10.4.1. Аппаратно-программные платформы информационных систем.............................306 10 4.2. Подходы к реализации систем хранения данных.307 10.4.3. Готовность систем хранения данных.........310 10.4.4. Промежуточное программное обеспечение middleware........................................311 10.4.5. Система поддержки отказоустойчивой работы NCR LifeKeeper Fault Resilient System (FRS) кластеров............................312 10.4.6. Масштабируемая среда для распределенных вычислений TOP END................................315 10.4.7. Требования к реализации ECO в параллельных системах..........................................317 10.4.8. Организация контрольной точки.............319 10.4.8. Примеры ПО среднего уровня для вычислительных систем.........................319 10.5. Аппаратные средства систем хранения данных......322 10.5.1. Пути совершенствования систем хранения данных........................................... 322 10 5.2. Организация управления периферийными
Содержание 9 устройствами..................................322 10.5.3. Шины........................................323 10.5.4. Интерфейсы систем хранения данных...........323 10.5.5. Каналы ввода-вывода.........................326 10.5.5.1. Особенности применения каналов ввода-вывода..................................326 10.5.5.2 Изменение структуры компьютеров фирмы SGI.....................................327 10.5.5.3. Архитектура Next Generation I/O фирмы Intel...................................329 10.5.6. Типы устройств хранения данных..............330 10.5.7. Дисковые системы............................332 10.5.7 1. Технология построения отказоустойчивых дисковых систем большой емкости...............................332 10.5 7.2. Варианты построения RAID...........333 10.5.7.3. Примеры дисковых массивов...........334 10.5.7.4. Технология дискового кэширования....335 10.5.7.5. Дисковый массив DS3000 фирмы NEC.....336 Литература......................................................339 Алфавитный указатель............................................346
ВВЕДЕНИЕ За последнее десятилетие рост производительности компьютеров, объе- мов их оперативной и внешней памяти, пропускной способности внешних устройств и каналов связи качественно изменил ситуацию в вычислительной технике и сферах ее применения. Для осознания этого факта достаточно при- нять во внимание, что суммарная производительность всех компьютеров су- пердержав 80-х годов сегодня доступна в рамках одной рабочей станции про- изводительностью порядка 109 flops, находящейся в распоряжении одного пользователя. Определившие эти достижения сверхбольшие интегральные схемы и их кон- центрированное выражение - современные микропроцессоры и схемы памяти - положили начало эпохе массовой компьютеризации. Основным предметом труда этой эпохи становится информация, а новым орудием труда - компьюте- ры. При этом если раньше для подготовки интеллектуального работника необ- ходимо было провести его обучение с использованием ’’книжных'’ знаний, то теперь все в большей степени информация, накопленная в компьютерах, ста- новится сама производительной силой. Сегодня, на заре массовой компьютеризации, существует значительный разрыв между возможностями аппаратных средств компьютеров и применяе- мыми методами решения прикладных задач. Наиболее освоенные на сегодня методы основаны на хорошо формализованных алгоритмах, полученных в ре- зультате построения математических моделей предметных областей. Чаще всего это трудоемкие расчеты по известным формулам либо простые последователь- ности действий, приводящие после многократного применения к желаемому результату. Однако в практической деятельности многие актуальные задачи относятся к плохо формализованным, для которых неизвестны аналитические зависимости или цепочки действий, приводящих к результату без интеллекту- ального вмешательства человека. Ранее для решения этих задач просто не хватало ресурсов компьютеров, и поэтому было бессмысленно ставить саму проблему решения плохо формали- зованных задач. В настоящее время актуальной проблемой является создание программных средств, утилизирующих ресурсы компьютеров для решения плохо формали- зованных задач. Как правило, в плохо формализованных задачах имеется некоторый набор параметров, описывающих объекты предметной области. Вся информация о предметной области, которая может быть использована для решения плохо формализованной задачи, представлена некоторой совокупностью векторов этих параметров, представляющих подвергшиеся измерению объекты. Причем о
Введение 11 наборе параметров нельзя сколько-нибудь определенно сказать, что он полон, адекватен, а сами измеренные значения параметров в совокупности неполны, противоречивы и искажены. Все это не позволяет применить для решения пло- хо формализованных задач традиционные методы аппроксимации функций, статистической обработки и оптимизации. Методы решения плохо формализованных задач имеют дело с обработкой данных, накопленных в результате некоторых измерений и экспериментов. По- этому первым вопросом является рассмотрение способов организации хране- ния и выборки данных о предметных областях в базах данных в зависимости от решаемой задачи. Этим вопросам посвящены первые пять глав, в которых рассматриваются фактографические базы данных, их использование в систе- мах обработки транзакций и аналитической обработки данных, а также доку- ментальные базы данных и информационно-поисковые системы Пятая глава посвящена аппарату и инструментарию построения фактографических баз дан- ных. В следующих четырех главах рассмотрены методы решения плохо форма- лизованных задач. К этим методам относятся экспертные системы, нейросете- вые алгоритмы, генетические алгоритмы, нечеткая логика. Экспертные системы служат способом привлечения знаний экспертов для решения плохо формализованных задач. Для задач, относящихся к классу статистических, применяются обучаемые методом "проб и ошибок" нейросети, являющиеся байесовскими классифика- торами, работающими в условиях отсутствия знания функций распределения вероятностей. Генетические и эволюционные алгоритмы - один из способов стохастичес- кой оптимизации, хорошо зарекомендовавший себя при решении ряда важных задач. Нечеткая логика позволяет работать с параметрами, имеющими скорее ка- чественную природу типа: "большой -маленький", а не точное значение этих параметров, выражаемое определенной цифрой. В совокупности эти методы и ряд других составляют основу современных технологий прогнозирования на основе временных рядов данных, извлечения закономерностей из данных (data mining), систем поддержки принятия реше- ний (DSS - decision support system), что аккумулируется термином "интеллек- туальный анализ данных" (ИАД). Во всех случаях изложение методов сопровождается примерами решения задач с применением соответствующих пакетов, признанных одними из луч- ших среди пакетов своего класса. Конечно, изложенный материал не является инструкцией по применению этих пакетов, а, скорее, демонстрирует их воз- можности.
12 Базы данных. Интеллектуальная обработка информации Последняя, 10-я глава посвящена аппаратно-программным платформам си- стем хранения и обработки данных. Материал этой главы позволяет создать представление о внутренней организации больших баз данных и поддержании их в рабочем состоянии при отказах и модернизации оборудования. При подготовке книги были использованы программные пакеты любезно предоставленные президентом Национального альянса управляющих, консуль- тантов и аналитиков Масаловичем А.И., за что авторы выражают свою благо- дарность.
Глава 1. Базы данных в фактографических системах 1.1. Документальные и фактографические информационные системы В 60-х годах была осознана необходимость применения средств компью- терной обработки хранимой информации там, где были накоплены значитель- ные объемы полезных данных - в военной промышленности, в бизнесе. По- явились автоматизированные информационные системы (АИС) - программно- аппаратные комплексы, предназначенные для хранения, обработки информа- ции и обеспечения ею пользователей. Первые АИС работали преимуществен- но с информацией фактического характера, например, характеристиками объек- тов и их связей. По мере "интеллектуализации" АИС появилась возможность обрабатывать текстовые документы на естественном языке, изображения и дру- гие виды и форматы представления данных. Несмотря на то, что принципы хранения данных в системах обработки фак- тической и документальной (текстовой) информации схожи, алгоритмы обра- ботки в них заметно различаются. Поэтому в зависимости от характера инфор- мационных ресурсов, которыми оперируют такие системы, принято различать два крупных их класса - документальные и фактографические. Документальные системы служат для работы с документами на есте- ственном языке - монографиями, публикациями в периодике, сообщениями пресс-агентств, текстами законодательных актов. Они обеспечивают их смысловой анализ при неполном, приближенном представлении смысла. Наиболее распространенный тип документальных систем - информацион- но-поисковые системы (ИПС), предназначенные для накопления и поиска по различным критериям документов на естественном языке. Принципы представления, хранения и обработки документов в АИС этого класса рас- смотрены в соответствующих главах настоящей книги. Другой большой класс автоматизированных систем - фактографические системы. Они оперируют фактическими сведениями, представленными в виде специальным образом организованных совокупностей формализованных за- писей данных. Центральное функциональное звено фактографических инфор- мационных систем - системы управления базами данных (СУБД). Фактогра- фические системы используются не только для реализации справочных фун- кций, но и для решения задач обработки данных. Под обработкой данных понимается специальный класс решаемых на ЭВМ задач, связанных с вво-
14 Базы данных. Интеллектуальная обработка информации дом, хранением, сортировкой, отбором и группировкой записей данных од- нородной структуры. В большинстве случаев эти задачи предусматривают предоставление пользователям итоговых результатов обработки в виде отче- тов табличной формы. Задачи, связанные с обработкой данных, широко распространены в любой сфере деятельности. Они ведут учет товаров в супермаркетах и на складах, начисляют зарплату в бухгалтериях и т.д. Невозможно представить себе дея- тельность современного предприятия или учреждения без использования АИС. Эти системы составляют фундамент информационной деятельности во всех сферах, начиная с производства, управления финансами и телекоммуникация- ми и заканчивая управлением семейным бюджетом. Массивы информации, накопленные в АИС, должны быть оптимальным образом организованы для их компьютерного хранения и обработки, должна обеспечиваться их целостность и непротиворечивость. Используя функции стандартных файловых систем, невозможно добиться нужной производитель- ности при решении подобных задач, поэтому все автоматизированные ин- формационные системы опираются на СУБД - системы управления базами данных. 1.2. Системы управления базами данных Любая АИС оперирует той или иной частью реального мира - предметной областью. Предметная область рассматривается как некоторая совокупность реальных объектов (сущностей) и связей между ними. Каждый объект облада- ет определенным набором свойств (атрибутов). Например, в системе автомати- зации бухгалтерии организации требуется хранить сведения о сущностях - ее служащих. К признакам (атрибутам) сущностей, которые будут актуальны для этой информационной системы, можно отнести: личный номер, имя сотрудни- ка, его должность, стаж работы и т.д. Каждый признак объекта имеет конкрет- ное значение, например, значение атрибута "стаж работы" объекта "служащий" может быть равно "10". Это отражает факт, что стаж работы конкретного слу- жащего составляет 10 лет. Предметная область может включать не только фи- зические объекты, но и сведения о процессах, абстракциях. Между сущностями могут существовать связи разного рода. Так, любой служащий принадлежит некоторому отделу организации, поэтому в число ат- рибутов сотрудника может потребоваться включить атрибут "отдел". Предметная область АИС "материализуется" в форме хранимой в памяти ЭВМ структурированной совокупности данных, которые характеризуют состав объектов предметной области, их свойства и взаимосвязи. Такое отражение предметной области принято называть базой данных (БД).
Глава 1. Базы данных в фактографических системах 15 Предполагается, что создание базы данных, поддержание ее в актуальном состоянии и обеспечение эффективного доступа пользователей и их приложе- ний к содержащейся в ней информации осуществляется с помощью специаль- ного программного инструментария - системы управления базами данных (СУБД, DBMS - DataBase Management Systems). Системы управления базами данных появились в конце 60-х - начале 70-х годов. СУБД первого поколения были ориентированы на мэйнфрэймы, доми- нировавшие в то время. Возможности первых СУБД были ограниченными, они имели много недостатков, однако АИС на их базе используются до сих пор. СУБД постоянно совершенствовались - возникали новые подходы к хранению и обработке данных, организации процесса разработки баз данных и приложе- ний на их основе. Сегодня системы управления базами данных представляют собой совершенные инструменты, которые могут быть успешно применены в различных областях человеческой деятельности. 1.3. Модели данных Способ отображения сущностей, атрибутов и связей на структуры данных определяется моделью данных. Принято выделять иерархическую, сетевую, реляционную модели данных и иногда модель на основе инвертированных спис- ков. Соответственно говорят об иерархических, сетевых, реляционных СУБД или СУБД на базе инвертированных списков [1-5]. Иерархическая модель позволяет строить базы данных с иерархической дре- вовидной структурой. Эта структура определяется как дерево, образованное попарными связями. На самом верхнем уровне дерева имеется один узел, на- зываемый корнем. Вес другие узлы, кроме корня, связываются только с одним узлом на более высоком по отношению к ним самим уровне (см. рис. 1.1). На- пример, на рис. 1.1 объект "Организация" - предок для объектов "Отделы" и "Филиалы". Основное достоинство иерархической модели - простота описания иерар- хических структур реального мира. Если в модели каждый порожденный элемент может иметь более одного исходного, то такая модель называется сетевой. В ней элемент может быть свя- зан с любым другим, без каких-либо ограничений. Сетевая БД состоит из набо- ра записей, соответствующих каждому экземпляру объекта предметной облас- ти, и набора связей между ними. Так, например, информация об участии со- трудников в проектах организации может быть представлена в сетевой БД (см. рис. 1.2). В данном примере сетевая модель хорошо отражает то, что в проекте могут участвовать разные сотрудники и в то же время сотрудник может уча- ствовать в различных проектах
16 Базы данных. Интеллектуальная обработка информации Рис. I 1. Пример иерархической древовидной структуры БД Рис 1.2. Пример сетевой структуры В реляционных базах данных вся информация представляется в виде пря- моугольных таблиц. Реляционная модель была разработана Коддом в начале 70-х годов. С ее созданием был начат новый этап в эволюции СУБД. Простота и гибкость модели привлекли к ней внимание разработчиков и снискали ей множество сторонников. Несмотря на некоторые недостатки, реляционная мо- дель данных стала доминирующей, а реляционные СУБД стали промышлен- ным стандартом "де-факто”. Реляционная модель опирается на систему понятий реляционной алгебры, важнейшие из которых: таблица, отношение, строка, столбец, первичный ключ. Все операции над реляционной базой данных сводятся к манипуляциям с таб- лицами. Таблица состоит из строк и столбцов и имеет имя, уникальное внутри базы данных. Таблица отражает тип объекта реального мира (сущность), а каж- дая ее строка (кортеж) - конкретный объект (см. рис. 1.3). Например, таблица
Глава 1. Базы данных в фактографических системах 17 "Сотрудники отдела" содержит сведения обо всех сотрудниках отдела, каждая ее строка - набор значений атрибутов конкретного сотрудника. Значения конк- ретного атрибута выбираются из домена (domain) - множества всех возмож- ных значений атрибута объекта Имя столбца должно быть уникальным в таб- лице. Столбцы расположены в таблице в соответствии с порядком следования их имен при ее создании. Любая таблица должна иметь по крайней мере один столбец. В отличие от столбцов строки не имеют имен. Порядок их следования в таблице не определен, а количество логически не ограничено. Так как строки в таблице не упорядочены, невозможно выбрать строку по ее позиции - среди них не существует "первой" и "последней". Название таблицы Атрибуты Сотрудники отдела Кортежи Номер ' пропуска ФИО Должность Телефон 2357 Уваров Михаил Николаевич начальник 53-22 2398 1 Сидоров Петр Алексеевич главный инженер 53-12 2315 Петренко Роман Иванович инженер 53-33 2365 Николаев Борис Михайлович инженер 53-33 Первичный ключ Рис. 1.3. Отношение реляционной БД Любая таблица имеет один или несколько столбцов, значения в которых однозначно идентифицируют каждую ее строку. Такой столбец (или комбина- ция столбцов) называется первичным ключом. В таблице "Сотрудники отдела" первичным ключом служит столбец "Номер пропуска". В таблице не должно быть строк, имеющих одно и то же значение первичного ключа. Если таблица удовлетворяет этому требованию, она называется отношением. Взаимосвязь таблиц в реляционной модели поддерживается внешними клю- чами. Внешний ключ - это столбец, значения которого однозначно характери- зуют сущности, подставленные строками некоторого другого отношения, то есть задают значения их первичного ключа. Говорят, что отношение, в котором определен внешний ключ, ссылается на соответствующее отношение, в кото- ром такой же атрибут является первичным ключом. Таблицы невозможно хранить и обрабатывать, если в базе данных отсут- ствуют "данные о данных" (метаданные), например, описатели таблиц, столб-
18 Базы данных. Интеллектуальная обработка информации цов и т.д. Метаданные также представлены в табличной форме и хранятся в словаре данных. Помимо таблиц в БД могут храниться и другие объекты, такие как экранные формы, шаблоны отчетов и прикладные программы, работаю- щие с информацией базы данных. Для пользователей информационной системы важно, чтобы база данных отражала предметную область однозначно и непротиворечиво. Если она обла- дает такими свойствами, то говорят, что БД удовлетворяет условию целостнос- ти. Чтобы добиться выполнения условия целостности, на базу данных накла- дываются некоторые ограничения, которые называют ограничениями целост- ности. Выделяют два основных типа ограничений целостности: целостность сущностей и целостность ссылок. Ограничение первого типа состоит в том, что любой кортеж отношения должен быть отличим от любого другого его кор- тежа, т.е., другими словами, любое отношение должно обладать первичным ключом. Это требование удовлетворяется автоматически, если в системе нс нарушаются базовые свойства отношений. Ограничение целостности по ссыл- кам заключается в том, что внешний ключ не может быть указателем на несу- ществующую строку в таблице. Доминирование реляционной модели в современных СУБД обусловлено рядом причин, в числе которых: 1) наличие развитой теории реляционной модели данных, которая поддер- жана теоретическими исследованиями в большей степени по сравнению с другими моделями, 2) наличие аппарата сведения к реляционной других моделей данных; 3) поддержка реляционной моделью специальных средств ускоренного до- ступа к информации; 4) возможность манипулирования данными без необходимости знания кон- кретной физической организации БД во внешней памяти; 5) наличие стандартизованного высокоуровневого языка запросов к базам данных. Базы данных, организованные с помощью инвертированных списков, по- хожи на реляционную БД. Отличия заключаются в следующем: 1) хранимые таблицы и индексы для ключей поиска напрямую доступны пользователям; 2) строки таблиц упорядочены системой в некоторой физической последо- вательности. 1.4. Операции над отношениями реляционных БД Для манипулирования отношениями используют операции реляционной алгебры [1-3]. Эти операции - мощное средство выделения необходимых дан-
Глава 1. Базы данных в фактографических системах 19 ных из большой совокупности разнородной информации. Отношения реляци- онной алгебры - это множества, поэтому средства работы с отношениями ба- зируются на традиционных операциях теории множеств, которые дополняют- ся некоторыми специальными операциями, специфичными для баз данных. Чаще всего выделяют следующие операции реляционной алгебры: 1) объединение отношений; 2) пересечение отношений; 3) разность отношений; 4) произведение отношений; 5) деление отношений, 6) ограничение отношения; 7) проекция отношения; 8) соединение отношений. Кроме перечисленных выше, в СУБД, как правило, реализуются также опе- рация присваивания, позволяющая, сохранять в базе данных результаты обра- ботки, и операция переименования атрибутов. Не вдаваясь в детали, операции реляционной алгебры могут быть описаны следующим образом. 1) Операция объединения двух отношений позволяет создать отношение, включающее все строки отношений-операндов. Отношения-операнды должны иметь одинаковый набор атрибутов. 2) Результат операции пересечения отношений - отношение, содержащее строки, которые входят одновременно в оба отношения-операнда. Отно- шения-операнды должны иметь одинаковый набор атрибутов. 3) Разность отношений используется для выделения строк, которые входят в первое отношение-операнд и не входят во второе. Операнды должны иметь одинаковый набор атрибутов. 4) При выполнении произведения двух отношений каждая строка первого отношения-операнда сцепляется (конкатенируется) с каждой строкой вто- рого отношения-операнда. Сцепленные строки образуют отношение-ре- зультат Число строк в отношении-результате равно произведению числа строк в отношениях-операндах. Множества атрибутов отношений-опе- рандов не должны пересекаться. 5) Операция деления "обратна" операции умножения. Описать ее в "житей- ских" терминах довольно сложно, поэтому придется прибегнуть к неко- торым обозначениям. Пусть имеются два отношения: делимое А с атри- бутами {а? а2, ... ап, Ь}, Ь2. ... bj и делитель В с атрибутами {Ь}, Ь,, ... bj. Атрибут отношения А Ь. и атрибут отношения В Ь. определены на одном и том же домене (множестве допустимых значений) и имеют одинаковое имя. Результат деления А на В - отношение С с атрибутами {а, ау ... a J.
20 Базы данных. Интеллектуальная обработка информации Формируется результат так. Если в строке отношения А атрибуты Ь{. Ьу ... Ьт совпадают с одной из строк отношения В, то эти атрибуты (hf, by ... b ) отсекаются и строка без них включается в отношение-результат С. Вот пример для иллюстрации того, как производится операция деления (см. рис. 1.4). Фамилия сотрудника Отдел Уваров Сметный Федоров Выпуска Омелькин Сметный Чеповский Сметный Чибрин Выпуска Отдел Сметный Выпуска Фамилия сотрудника Уваров Федоров Омелькин Чеповский Чибрин Рис. 1.4. Пример операции деления 6) Операция ограничения (выбора) отношения по некоторому условию по- зволяет выбрать те строки отношения-операнда, которые этому условию удовлетворяют. 7) Операция проекции позволяет выбрать из отношения-операнда опреде- ленные столбцы. 8) Операция соединения - одна из наиболее важных операций реляцион- ной алгебры. Она имеет большое практическое значение. Существует 2 типа операций соединения: операция соединения по условию и опера- ция естественного соединения. При выполнении операции соединения по условию двух отношений происходит конкатенация строк отношений- операндов, затем полученная сцепленная строка проверяется на соответ- ствие заданному условию. Если строка удовлетворяет условию, она вклю- чается в отношение-результат. Если отношения-операнды обладают об- щим атрибутом (возможно, составным), то условие соединения может быть опущено, при этом подразумевается, что сравнение производится на равенство значений общих атрибутов В этом случае говорят о есте- ственном соединении отношений. 9) Операция переименования изменяет имена атрибутов отношения. 10) Операция присваивания позволяет сохранить результат вычисления ре- ляционного выражения в отношении базы данных. Строгое определение операций реляционной алгебры можно найти в лите- ратуре, посвященной теории баз данных, например в [3]. Пользователи, как правило, имеют дело с этими операциями в виде конструкций языков програм- мирования, например, языка SQL-запросов [7].
Глава 1. Базы данных в фактографических системах 21 1.5. Нормализация отношений При проектировании базы данных стараются, чтобы отображение объектов предметной области в структуры модели данных не противоречило семантике предметной области. Оно должно быть эффективным, то есть должно обеспе- чивать минимальное дублирование данных, удобство их обработки и обновле- ния. Для удовлетворения этих требований необходимо определить, из каких отношений должна состоять БД и какие атрибуты должны входить в эти отно- шения. Теория реляционных баз данных обладает мощным инструментом, ко- торый способен помочь разработчику оптимальным образом спроектировать структуру отношений базы данных. Этот инструмент - метод нормализации отношений [1-5]. Нормализация отношений - пошаговый процесс разложения (декомпози- ции) исходных отношений БД на более простые. Каждая ступень этого процес- са приводит схему отношений БД в последовательные "нормальные формы". Каждая следующая нормальная форма обладает "лучшими" свойствами, чем предыдущая. В теории реляционных баз данных принято выделять следующую последо- вательность нормальных форм: 1) первая нормальная форма (1NF); 2) вторая нормальная форма (2NF); 3) третья нормальная форма (3NF); 4) нормальная форма Бойса-Кодда (BCNF); 5) четвертая нормальная форма (4NF); 6) пятая нормальная форма (5NF). Каждой нормальной форме соответствует некоторый набор ограничений. Отношение находится в определенной нормальной форме, если оно удовлетво- ряет набору ограничений этой формы. Переводя структуру отношений БД в формы более высокого порядка, мы добиваемся удаления из таблиц избыточ- ной неключевой информации. Процесс нормализации основан на понятии функциональной зависимости атрибутов. Говорят, что атрибут В функционально зависит от а!рибута А (обо- значается А->В), если в любой момент времени каждому значению атрибута А соответствует не более одного значения атрибута В. Обратите внимание, что термин "функциональная зависимость" соответствует понятию функции в ма- тематике. Если неключевой атрибут зависит от всего составного ключа и не зависит от его частей, то говорят о полной функциональной зависимости атри- бута от составного ключа. Если атрибут А зависит от атрибута В, а В зависит от атрибута С, но обратная зависимость отсутствует, то говорят, что атрибут С зависит от А транзитивно.
22 Базы данных. Интеллектуальная обработка информации Отношение находится в первой нормальной форме (1NF), если значения атрибутов атомарны, то есть в каждом столбце находится только одно значе- ние, и все неключевые атрибуты функционально зависят от ключа. Отношение находится во второй (2NF) нормальной форме, если выполня- ются ограничения первой нормальной (1NF) формы, и каждый неключевой ат- рибут функционально полно зависит от первичного ключа (первичный ключ может быть составным). Отношение находится в третьей нормальной форме (3NF), если выполня- ются ограничения второй нормальной формы (2NF), и если все неключевые атрибуты отношения взаимно независимы и полностью зависят от первичного ключа. Можно дать и другое определение. Отношение находится в третьей нор- мальной форме (3NF), если выполняются ограничения второй нормальной фор- мы (2NF), и в нем отсутствуют транзитивные зависимости неключевых атри- бутов от ключа. В большинстве случаев третья нормальная форма служит ком- промиссом между полной нормализацией и функциональностью в совокупно- сти с легкостью реализации. Как было отмечено выше, существуют нормаль- ные формы, выше третьей (3NF), но на практике они затрудняют разработку структур данных и снижают их функциональность. Рассмотрим пример приведения отношения к третьей нормальной форме. Пусть небольшой фирме, занимающейся продажей комплектующих для ком- пьютеров, требуется сохранять данные о заказах. Эти данные включают: 1) дату заказа; 2) номер заказа; 3) артикул (уникальный номер единицы товара); 4) наименование товара; 5) цену заказанного товара. Нам необходимо нормализовать приведенную ниже таблицу. Заметим, что она уже находится в 1NF. так как все ее атрибуты атомарны. В СУБД дата - неделимый тип данных, поэтому, хотя дата заказа и состоит из 3 чисел, это - атомарный атрибут. Дата Номер заказа Артикул Наименование Цена 01.09 98 1 1672 Процессор Pentium 233 MMX 1638 01.09.98 1 5301 M/В SOYO SY-5EAS ETEQ-6618 300 01.09.98 1 1611 DIMM 32 Mb 420 01.09.98 1 58 SVGA PCI 1Mb S3 TRIO 64+ 192
Глава 1. Базы данных в фактографических системах 23 01.09.98 2 1672 Процессор Pentium 233 MMX 1638 01.09 98 2 1611 DIMM 32 Mb 420 02.09.98 1 58 SVGA PCI 1Mb S3 TRIO 64+ 192 02.09.98 1 3417 Процессор Pentium II 333 3876 02.09.98 1 1611 DIMM 32 Mb 420 02.09.98 2 2660 SVGA AGP S3 86C357 396 В одном заказе может оказаться несколько одинаковых наименований това- ра, например, можно заказать два одинаковых процессора, поэтому составной атрибут "Дата-НомерЗаказа-Артикул" нс может быть первичным ключом. Для того чтобы выполнить требования второй нормальной формы, надо добавить к таблице атрибут, который бы однозначно идентифицировал каждую единицу товара, входящую в заказ. Назовем такой атрибут "ID”. Вот приведенное выше отношение в 2NF. ID Дата Номер заказа Артикул Наименование Цена 1 01 09.98 1 1672 Процессор Pentium 233 MMX 1638 2 01.09.98 1 5301 М/В SOYO SY-5EAS ETEQ-6618 300 3 01.09.98 1 1611 DIMM 32 Mb 420 4 01.09.98 1 58 SVGA PCI 1Mb S3 TRIO 64+ 192 5 01 09.98 2 1672 Процессор Pentium 233 MMX 1638 6 01.09.98 2 1611 DIMM 32 Mb 420 7 02.09.98 1 58 SVGA PCI 1Mb S3 TRIO 64+ 192 8 02 09 98 I 3417 Процессор Pentium II333 3876 9 02 09.98 1 1611 DIMM 32 Mb 420 10 02.09.98 2 2660 SVGA AGP S3 86C357 396 В этой таблице все атрибуты зависят от атрибута ID, но, кроме того, есть зависимость ’’Наименования" и "Цены" от "Артикула". Требование не- зависимости атрибутов отношения не выполняются (3NF). Для приведения отношения в третью нормальную форму таблицу требуется разбить на три отношения.
24 Базы данных. Интеллектуальная обработка информации ID Дата Номер заказа Артикул 1 01.09.98 1 1672 2 01.09.98 1 5301 3 01 09.98 1 1611 4 01.09.98 1 58 5 01.09.98 2 1672 6 01.09.98 2 1611 7 02.09.98 1 58 8 02 09.98 1 1 3417 9 02.09.98 1 1611 10 02.09.98 2 2660 Артикул Наименование 1672 Процессор Pentium 233 MMX 5301 М/В SOYO SY-5EAS ETEQ-6618 1611 DIMM 32 Mb 58 SVGA PCI 1Mb S3 TRIO 64+ 3417 Процессор Pentium II 333 2660 SVGA AGP S3 86C357 Артикул Цена 1672 1638 5301 300 1611 420 58 192 3417 3876 2660 396 Нормализация отношений - не пустая трата времени. Пусть в приведенном примере требуется изменить "Наименование" с "DIMM 32 Mb" на "DIMM 32 Mb SDRAM". В ненормализованном отношении пришлось бы искать и редак-
Глава 1. Базы данных в фактографических системах 25 тировать все строки, содержащие это наименование, а в нормализованной БД изменяется только одна строка одного отношения. Подробнее с процессом нормализации и с требованиями нормальных форм старше третьей (3NF) можно ознакомиться в литературе по теории реляцион- ных БД [3,4]. 1.6. Средства ускорения доступа к данным Современным СУБД приходится оперировать огромными массивами ин- формации, объемы которых достигают порой десятков терабайт. Выполняя зап- росы тысяч пользователей, они должны обеспечить небольшое, не более не- скольких секунд, время отклика. СУБД не сможет эффективно работать в та- ких условиях, не используя методов ускорения выборки данных. Цель этих методов - избежать полного перебора строк таблиц БД при выполнении реля- ционных операций, папример, при соединении отношений или поиске строк, удовлетворяющих условию. В современных СУБД используются два основных метода ускорения дос- тупа к данным: индексирование и хэширование [1-6]. Эти методы обеспечи- вают лучшее по сравнению с остальными время поиска и модификации таб- лиц БД. Метод индексирования основан на использовании индексов. Индекс отно- шения очень похож на предметный указатель книги. В таком указателе приве- ден список упорядоченных по алфавиту терминов, которые встречаются в кни- ге. Каждому термину сопоставлена страница или страницы, где он встречает- ся. Обычно предметный указатель занимает не более нескольких страниц. Если нам требуется найти место в книге, где термин раскрывается, мы находим его в предметном указателе, это легко сделать - указатель невелик, кроме того, все термины там упорядочены по алфавиту Затем мы читаем номер страницы, со- ответствующий термину, раскрываем книгу на ней и находим нужный нам аб- зац. Если бы предметный указатель отсутствовал, нам пришлось бы пролисты- вать все страницы, чтобы найти интересующее нас место, и мы бы потратили значительно больше времени. Индекс базы данных - не листы бумаги, это - специальная структура дан- ных, создаваемая автоматически или по запросу пользователя. В целом рабо- та с ним выглядит так же, как и с предметным указателем Разница лишь в том, что СУБД все делает автоматически, пользователь может даже не знать, что она использует индекс. В книге приводится предметный указатель слов, в БД для формирования индекса может быть использован любой атрибут отно- шения, в том числе и составной. В индексе значения атрибута хранятся упо- рядоченно (по возрастанию или убыванию), каждому значению соответству-
26 Базы данных. Интеллектуальная обработка информации ет указатель на строку отношения, которое его содержит (аналог номера стра- ницы в предметном указателе). Индекс занимает значительно меньший, чем таблица, объем, поэтому даже полный перебор значений в нем потребует мень- ше времени, чем считывание и поиск информации в отношении. Кроме того, значения в индексе хранятся упорядоченно, что позволяет резко ускорить поиск нужной строки. Индексы позволяют выбирать строки отношений, зна- чения индексируемого атрибута которых принадлежит некоторому заданно- му интервалу. Для одного отношения может быть создано несколько индексов. Если раз- ные отношения содержат одинаковые атрибуты, то для них может быть сфор- мирован мультииндекс. В нем каждому значению общего атрибута соответствует несколько ссылок, каждая из которых указывает на строку с таким значением в том или ином отношении. Мультииндексы применяются для оптимизации вы- полнения операции соединения отношений. Еще один интересный подход, применяемый для повышения эффектив- ности доступа к данным, - хэширование (hashing). Для метода хэширования, к сожалению, нет житейского аналога, поэтому объяснить его "на пальцах" вряд ли получится. Основная идея хэширования - организация ассоциатив- ной памяти для хранения строк таблицы с определением места строки в таб- лице по значениям одного или нескольких ее ключевых атрибутов. Место стро- ки вычисляется хэш-функцией, аргументы которой - значения атрибутов, а результат - целое число в диапазоне номеров строк таблицы. Идеальная хэш- функция должна давать разные значения номеров строк для разных ключе- вых атрибутов Однако построить такую хэш-функцию - дело трудоемкое и не всегда возможное. На практике используются, как правило, простые хэш-функции. Для цело- численных атрибутов в качестве хэш-функции может быть использован, на- пример, остаток от деления на простое число: f(k) = k mod р, где f - хэш-функция, к - целочисленный атрибут, ар - простое число. Если ключевой атрибут - строка символов, то для вычисления хэш-функции выби- рается наиболее подходящий в конкретной ситуации метод преобразования строки в число, например, вычисление контрольной суммы. Доступ к данным при хэшировании производится так [6] В начале работы с БД таблица состоит из пустых строк. Когда строка с данными заносится в таблицу, вычисляется значение хэш-функции для ее атрибутов, и результат трак- туется как номер строки отношения, в которую она должна быть записана. Если эта строка уже занята, то по некоторому алгоритму [6] производится проверка
Глава 1. Базы данных в фактографических системах 27 следующих строк таблицы до тех пор, пока не будет обнаружено свободное место (при этом, как правило, считается, что таблица имеет кольцевую струк- туру). В это место и помещается записываемая строка. Для поиска данных ис- пользуется аналогичный алгоритм. Сначала вычисляется значение хэш-функ- ции для требуемого значения ключевого атрибута и проверяется строка табли- цы, номер которой вычислен хэш-функцией. Если значение атрибута, по кото- рому происходит доступ, соответствует значению ключа строки, то поиск за- канчивается. В противном случае проверяются следующие строки таблицы до обнаружения кортежа с нужным значением или пустой строки. Пустая строка свидетельствует об отсутствии кортежа с нужным значением ключа в таблице - процедура занесения данных обязательно бы использовала ее, если бы требу- емый кортеж существовал. Если таблица заполнена не более чем на 60%, то для размещения в ней новой строки необходимо проверить в среднем не более двух ячеек [6]. Иногда для устранения конфликтов (коллизий), возникающих, если хэш-функция вы- дает номер занятой строки, используют не линейный просмотр, а более слож- ные методы. Скорость обращения к данным при этом возрастает. Хэширование может использоваться для поиска строк по точному совпаде- нию значения атрибута кортежа с нужным значением ключа. 1.7. Язык запросов База данных бесполезна, если отсутствуют средства доступа к информации в ней. Для получения информации из БД пользователи направляют СУБД зап- росы. СУБД обрабатывает их и отправляет результаты обработки пользовате- лям. Запросы формулируются на специальном "языке запросов". Фактическим стандартом такого языка для современных реляционных СУБД стал SQL (Structured Query Language - структурный язык запросов) [7]. Этот язык имеет официальный стандарт, последняя версия которого была принята ANSI и ISO в 1992 году. Большинство разработчиков СУБД придер- живаются этого стандарта. Тем не менее они часто расширяют его для реали- зации специальных возможностей обработки данных. SQL настолько попу- лярен, что даже нереляционные СУБД, например, Adabas, снабжаются SQL- интерфейсом. SQL - это не язык программирования в традиционном смысле. Это язык запросов к базе данных. С его помощью можно сформулировать, какие данные требуется получить, но невозможно определить, как это следует сделать. На SQL не пишутся программы - в нем отсутствуют многие операторы процедур- ных языков программирования, например, операторы проверки условия (if...then...else), операторы циклов и др. Для того чтобы использовать SQL в
28 Базы данных. Интеллектуальная обработка информации приложениях, работающих с БД, необходимо использовать библиотеки под- программ, позволяющие встраивать запросы на SQL в текст на С или Pascal. В современных СУБД имеются свои средства, позволяющие разрабатывать при- кладные программы с применением SQL и средств управления интерфейсом с пользователем Запросы на языке SQL строятся с использованием одного или нескольких операторов. Операторы разделяются символом перевода строки или точкой с запятой В таблице 1 перечислены некоторые операторы, входящие в текущий стандарт языка SQL. Таблица 1. Оператор Назначение SELECT Выбрать данные из БД INSERT Добавить данные в БД UPDATE Обновить данные в БД DELETE Удалить данные из БД GRANT Предоставить привилегии пользователю REVOKE Отменить привилегии пользователя COMMIT Зафиксировать текущую транзакцию ROLLBACK Прервать текущую транзакцию Стандарт языка SQL определяет также типы данных, которые можно ис- пользовать при создании БД и работе с ней. В таблице 2 перечислены основные типы данных, используемые в SQL, а также указаны соответствующие им типы языка С. Таблица 2. Тип данных SQL/92 Описание Тип языка С CHARACTER Строка символов фиксированной длины char[] INTEGER Целое число long SMALLINT Целое число short REAL Число с плавающей запятой float DOUBLE PRECISION Число с плавающей запятой двойной точности double
Глава 1. Базы данных в фактографических системах 29 В стандарте SQL определяются также некоторые специальные типы: 1) денежные единицы (MONEY); 2) дата (DATE) и время (TIME); 3) числовые типы, для которых задается масштаб и точность (FLOAT, NUMERIC, DECIMAL). С использованием SQL можно определить отношения, содержащие дан- ные любого из перечисленных типов, однако для использования этих данных в приложениях, написанных на стандартных языках программирования (С, Pascal), требуются специальные средства - в этих языках нет многих типов данных SQL.
Глава 2. Системы обработки транзакций 2.1. Системы OLTP и OLAP Среди фактографических систем важное место занимают два класса: систе- мы операционной обработки данных и системы, ориентированные на анализ данных и поддержку принятия решений [8-10]. Первые рассчитаны на быстрое обслуживание относительно простых зап- росов большого числа пользователей. Системы операционной обработки рабо- тают с данными, которые требуют защиты от несанкционированного доступа, от нарушений целостности, от аппаратных и программных сбоев. Время ожи- дания выполнения типичных запросов в таких системах не должно превышать нескольких секунд. Сфера применения таких систем - это системы платежей, резервирования мест в поездах, самолетах, гостиницах, банковские и бирже- вые системы. Логическая единица функционирования систем операционной обработки данных - транзакция. Транзакция - это некоторое законченное, с точки зрения пользователя, действие над базой данных. В современной литера- туре [8] для обозначения систем операционной обработки часто используют термин OLTP (On-Line Transaction Processing - оперативная обработка тран- закций или выполнение транзакций в режиме реального времени). Ниже мы определим понятие транзакции, рассмотрим, как происходит выполнение тран- закций в OLTP-системах, как в них поддерживается целостность БД и какие средства используются для эффективного управления ресурсами в распреде- ленных системах операционной обработки данных. Другой класс информационных систем - системы поддержки принятия ре- шений (аналитические системы) [9]. Эти системы ориентированы на выполне- ние более сложных запросов, требующих статистической обработки истори- ческих (накопленных за некоторый промежуток времени) данных, моделиро- вания процессов предметной области, прогнозирования развития тех или иных явлений. Аналитические системы также часто включают средства обработки информации на основе методов искусственного интеллекта, средства графи- ческого представления данных. Эти системы оперируют большими объемами исторических данных, позволяя выделить из них содержательную информа- цию - получить знания из данных. Современные требования к скорости и качеству анализа привели к появле- нию систем оперативной аналитической обработки (OLAP - On-Line Analysis Processing). Оперативность обработки больших объемов данных в таких систе- мах достигается за счет применения мощной, в том числе многопроцессорной вычислительной техники, сложных методов анализа, а также специальных хра-
Гпава 2. Системы обработки транзакций 31 нилищ данных, накапливающих информацию из различных источников за боль- шой период времени и обеспечивающих быстрый доступ к ней. Оба класса систем основаны на СУБД, но типы выполняемых ими запросов сильно различаются. Например, в OLTP-системе продажи железнодорожных билетов допустим такой запрос: "Есть ли свободное свободные места в купе поезда Москва-Сочи, отправляющегося 20 августа в 23.15?". В аналитической системе запрос может быть таким: "Каким будет объем продажи железнодо- рожных билетов в денежном выражении в следующие три месяца с учетом се- зонных колебаний?". Принципиально отличаются и структуры баз данных для высокопроизводительных OLAP и OLTP систем. Эти отличия, а также особенности обработки данных в OLTP и OLAP сис- темах будут рассмотрены далее. 2.2. Обработка транзакций в OLTP-системах Транзакцией называют неделимую с позиции воздействия на БД последо- вательность операций манипулирования данными. Транзакция может состоять из операций чтения, удаления, вставки, модификации данных. В OLTP-систе- мах транзакция реализует некоторое осмысленное, с точки зрения пользовате- ля, действие, например, перевод денег со счета на счет в платежной системе банка, резервирование места в поезде системой оформления железнодорож- ных билетов. Традиционно понятие "обработка транзакций" использовалось применитель- но к крупномасштабным системам обработки данных - системам, осуществ- лявшим международные банковские операции и др. Теперь ситуация меняется. Информационные системы в различных областях человеческой деятельности становятся все более распределенными и неоднородными, в них остро стоят проблемы сохранения целостности данных и разграничения доступа. Одно из направлений решения этих проблем - использование средств обслуживания транзакций в информационных системах. Чтобы использование механизмов обработки транзакций позволило обес- печить целостность данных и изолированность пользователей, транзакция дол- жна обладать четырьмя основными свойствами: атомарности (atomicity), со- гласованности (consistency), изолированности (isolation), долговечности (darability). Транзакции, обладающие перечисленными свойствами, иногда на- зывают ACID-транзакциями по первым буквам их английских названий. Свойство атомарности означает, что транзакция должна выполняться как еди- ная операция доступа к БД. Она должна быть выполнена полностью либо не вы- полнена совсем. То есть должны быть выполнены все операции манипулирования данными, которые входят в транзакцию, либо, если по каким-то причинам выпои-
32 Балы данных. Интеллектуальная обработка информации некие части операций невозможно, ни одна из операций не должна выполняться. Свойство атомарности обычно коротко выражают фразой: "все или ничего". Свойство согласованности гарантирует взаимную целостность данных, то есть выполнение ограничений целостности БД после окончания обработки тран- закции Следует отметить, что база данных может обладать такими ограниче- ниями целостности, которые сложно не нарушить, выполняя только один опе- ратор ос изменения. Например, если в отношении А хранится число кортежей отношения В, то добавить новый кортеж в отношение В, не нарушив ограниче- ний целостности, невозможно. Поэтому такое нарушение внутри транзакции допускается, но к моменту ее завершения база данных должна быть в целост- ном состоянии. Несоблюдение в системах со средствами контроля целостнос- ти этого условия приводит к отмене всех операции транзакции. В многопользовательских системах с одной БД одновременно могут рабо- тать несколько пользователей или прикладных программ. Поскольку каждая транзакция может изменять разделяемые данные, данные могут временно на- ходиться в несогласованном состоянии Доступ к этим данным другим тран- закциям должен быть запрещен, пока изменения не будут завершены. Свой- ство изолированности транзакций гарантирует, что они будут выполняться от- дельно друг от друга. Свойство долговечности означает, что если транзакция выполнена успеш- но, то произведенные ею изменения в данных не будут потеряны ни при каких обстоятельствах. Результатом выполнения транзакции может быть ее фиксация или откат. Фиксация транзакции - это действие, обеспечивающее запись в БД всех изме- нений, которые были произведены в процессе ее выполнения. До того как тран- закция зафиксирована, возможна отмена всех сделанных изменений и возврат базы данных в то состояние, в котором она была до начала выполнения тран- закции Фиксация транзакции означает, что все результаты ее выполнения ста- новятся видимыми другим транзакциям. Для фиксации транзакции необходи- мо успешное выполнение всех ее операторов. Если нормальное завершение транзакции невозможно, например, наруше- ны ограничения целостности БД, или пользователь выдал специальную коман- ду, происходит откат 1 ранзакции. База данных возвращается в исходное состо- яние, все изменения аннулируются. Механизм корректного отката и фиксации транзакций основан на исполь- зовании журнала транзакций. Для того чтобы иметь возможность сделать от- кат, СУБД должна сохранять все изменения, которые транзакция внесла в БД. Однако необходимости каждый раз сохранять всю информацию базы данных нет. Реляционные операции изменяют строки отношении БД, поэтому, чтобы обеспечить возможность отката, СУБД должна хранить те строки, которые были
Глава 2. Системы обработки транзакций 33 модифицированы. При выполнении любой операции, изменяющей базу дан- ных, СУБД автоматически сохраняет в журнале транзакций состояние моди- фицируемых строк до операции и после нее. Только после этого изменения вносятся в БД. Если по окончании обработки транзакция фиксируется, то в журнале делается соответствующая отметка. Если же производится откат тран- закции, то СУБД по журналу восстанавливает те строки отношений, которые были модифицированы, отменяя, таким образом, все изменения. Для того чтобы оперировать транзакцией как единой логической единицей, СУБД должна уметь определять ее границы, то есть первую и последнюю вхо- дящую в нее операции. Стандарт языка SQL предусматривает следующий прин- цип выделения транзакции как некоторой законченной последовательности действий. Предполагается, что транзакция начинается с первого SQL-операто- ра, вводимого пользователем или содержащегося в прикладной программе. Все следующие далее операторы составляю! тело транзакции. Тело транзакции за- вершается SQL-операторами COMMIT WORK или ROLLBACK WORK. Вы- полнение транзакции заканчивается также при завершении программы, кото- рая сгенерировала транзакцию. Транзакция фиксируется, если ее тело оканчи- вается оператором COMMIT WORK, либо при успешном завершении програм- мы, сформировавшей транзакцию. Откат транзакции производится при дости- жении оператора ROLLBACK WORK, либо в случае, когда приложение, сгене- рировавшее транзакцию, завершилось с ошибкой. Возможные варианты завер- шения выполнения транзакции представлены на рис. 2.1. Рассмотрим пример транзакции, модифицирующей телефон (атрибут Phone) сотрудника с фамилией (атрибут Name) "Петров" в отношении Отдел (Department). Транзакция завершается фиксацией по достижении оператора COMMIT WORK. UPDATE Department SET Phone = "5388" WHERE Name = "Петров" COMMIT WORK Некоторые диалекты языка SQL, например, диалект, принятый в СУБД Sybase, включают специальные операторы, позволяющие производить проме- жуточную фиксацию транзакции. В теле транзакции могут быть определены точки, в которых сохраняется состояние базы данных. Откат в этом случае мо- жет производиться как к одной из точек промежуточной фиксации, так и к со- стоянию до начала выполнения транзакции. Точки промежуточной фиксации применяются в "длинных" транзакциях. Они позволяют разделить ее на не- сколько отдельных фрагментов. 2 - 307
34 Базы данных. Интеллектуальная обработка информации Исходное состояние БД Выполнение тела транзакции БД со внесенными изменениями Рис. 2.1. Возможные варианты завершения транзакции Применение транзакций - эффективное механизм организации многополь- зовательского доступа к БД. Однако при реализации этого механизма СУБД приходится сталкиваться с целым рядом проблем. Во-первых, необходимо из- бежать потери изменений БД в ситуации, когда несколько программ читают одни и те же данные, изменяют их и пытаются записать результат на прежнее место. В БД могут быть сохранены изменения, выполненные только одной про- граммой, результаты работы всех остальных программ будут потеряны. Во- вторых, требуется исключить возможность чтения незафиксированных изме-
Гпава 2. Системы обработки транзакций 35 нений, Это может произойти в случае, когда одна транзакция вносит измене- ния в БД, они тут же считываются в другой транзакции, но затем другая тран- закция прерывается оператором ROLLBACK WORK. Чтобы избежать этих проблем, должна быть использована специальная дис- циплина совместной обработки (сериализации) транзакций. В ее основе лежат следующие принципы. 1) Транзакция не может получи гь доступ к незафиксированным данным, то есть к данным, в которых произведены изменения, но эти изменения еще не зафиксированы. 2) Результат совместного выполнения транзакций должен быть эквивален- тен результату их последовательного выполнения. То есть, если две тран- закции выполняются параллельно, то полагается, что результат будет та- кой же, как если бы сначала выполнялась первая, а затем вторая транзак- ция, или сначала вторая, а потом первая. В современных СУБД сериализация транзакций реализуется через меха- низм блокировок. На время выполнения транзакции СУБД блокирует часть БД (отношение, строку или группу строк), к которой транзакция обращается. Блокировка со- храняется до момента фиксации транзакции. Если в процессе параллельной обработки другой транзакции делается попытка обратиться к блокированным данным, обработка транзакции приостанавливается и возобновляется только после завершения транзакции, заблокировавшей данные и снятия блокировки. При выполнении транзакции современные СУБД могут блокировать всю БД, отношение, группу строк или отдельную строку. Очевидно, что чем боль- ше блокируемый элемент данных, тем медленнее СУБД обрабатывает тран- закции - велико время ожидания снятия блокировок. При работе в режиме оперативного доступа к БД, как правило, реализуется блокировка на уровне отдельных строк. В этом случае можно добиться максимальной производи- тельности за счет того, что блокируемый объект - минимальная структурная единица БД. Транзакции могут попасть в ситуацию взаимоблокировки. Проиллюстри- руем это примером. Пусть транзакция Т, обновляет отношение Ор блокируя некоторые его строки. Далее эта транзакция пытается модифицировать данные отношения О2, которые уже заблокированы транзакцией Т2. Транзакция Т, пе- реводится в состояния ожидания снятия блокировки с отношения О2. В этот же момент транзакция Т2 пытается изменить данные отношения Ор заблокиро- ванные транзакцией Тг СУБД вынуждена перевести в состояние ожидания и транзакцию Т2. Налицо ситуация взаимоблокировки транзакций, которая мо- жет не разрешиться, если СУБД не предпримет специальные меры. Для пре- дотвращения таких ситуаций СУБД периодически проверяет блокировки, ус- 2'
36 Базы данных. Интеллектуальная обработка информации тановленные выполняющимися транзакциями. Если обнаруживается ситуация взаимоблокировки, то одна из транзакций, вызвавших эту ситуацию, прерыва- ется. Это разрешает тупиковые ситуации. Программа, которая сгенерировала прерванную транзакцию, получает сообщение об ошибке. Для того чтобы из- бежать взаимоблокировок, стараются в каждой транзакции обновление отно- шений делать в одной и той же последовательности. Так, в приведенном при- мере следовало бы сначала изменить отношение Ор а потом Ог Современные информационные системы работают с распределенными БД, поэтому в одной транзакции могут модифицироваться отношения, физически хранящиеся на удаленных вычислительных системах. Транзакция, обновляю- щая данные на нескольких узлах сети, называется распределенной. Если тран- закция работает с БД, расположенной на одном узле, то ее называют локаль- ной. Таким образом, логически распределенная транзакция состоит из несколь- ких локальных. С точки зрения пользователя, локальные и глобальные транзакции должны обрабатываться одинаково, то есть СУБД должна организовать процесс выпол- нения распределенной транзакции так, чтобы все локальные транзакции, вхо- дящие в нее, синхронно фиксировались на затрагиваемых ими узлах распреде- ленной системы. Однако распределенная транзакция должна фиксироваться только в случае, когда зафиксированы все локальные транзакции, ее составля- ющие. Если прерывается хотя бы одна из локальных транзакций, должна быть прервана и распределенная транзакция. Для практической реализации этих требований в СУБД используют меха- низм двухстадийной фиксации транзакций (two phase commit). При его исполь- зовании фиксация распределенных транзакций осуществляется в два этапа (ста- дии). На первой стадии сервер БД, фиксирующий распределенную транзакцию, посылает команду "приготовиться к фиксации" всем узлам сети (серверам БД), задействованным для выполнения локальных транзакций, инициированных распределенной транзакцией. Все серверы локальных БД должны в ответ со- общить, что они готовы к фиксации. Если хотя бы от одного из серверов ответ не получен, например, если имела место программная или аппаратная ошибка при выполнении локальной транзакции, то сервер распределенной БД произ- водит откат локальных транзакций на всех узлах, включая те, которые присла- ли оповещение о готовности к фиксации. Вторая стадия начинается, когда все локальные СУБД готовы к фиксации. Сервер, обрабатывающий распределенную транзакцию, заканчивает ее фикса- цию, посылая команду "зафиксировать транзакцию" всем локальным серверам. Описанный механизм фиксации гарантирует синхронную фиксацию рас- пределенной транзакции на всех узлах сети.
Глава 2. Системы обработки транзакций 37 2.3. Тиражирование данных Описанный подход выполнения транзакций в распределенных системах - не единственно возможный. Альтернатива ему - технология тиражирования данных. Эта технология предполагает отказ от распределенности данных - во всех узлах вычислительной системы должна находится своя копия БД. Сред- ства тиражирования автоматически поддерживают согласованное состояние информации в нескольких БД посредством копирования изменений, вносимых в любую из них. Любая транзакция в такой системе выполняется локально, поэтому нет необходимости в сложной процедуре фиксации. Узкое место такого подхода - обеспечение тождественности данных в уз- лах сети. Процесс переноса изменений исходной БД в базы, принадлежащие различным узлам распределенной системы, принято называть тиражировани- ем данных. Функции тиражирования данных выполняет специальный модуль СУБД-сервер тиражирования данных (репликатор). При любых изменениях в тиражируемых данных репликатор копирует их на все остальные узлы систе- мы. Схема тиражирования может быть построена на полном обновлении со- держимого таблицы на удаленных серверах (схема с полным обновлением) или же на обновлении только изменившихся записей (быстрое обновление). Если в системе нет необходимости поддерживать постоянную идентичности данных, и БД узлов должны согласовываться лишь периодически, репликатор накапли- вает изменения и в нужные моменты времени копирует их на другие узлы. Процесс тиражирования данных скрыт от прикладных программ пользовате- лей, репликатор автоматически поддерживает БД в согласованном состоянии. При использовании технологии тиражирования уменьшается трафик, так как все запросы обрабатываются локальной СУБД, а на другие узлы передаются толь- ко изменения в данных, увеличивается скорость доступа к данным. Кроме того, обрыв связи между узлами не останавливает обработку данных. Однако эта техно- логия не лишена недостатков. Так, невозможно полностью исключить конфликты, возникающие при одновременном изменении одних и тех же данных на разных узлах. При переносе этих изменений в узлах вычислительной системы могут ока- заться несогласованные копии БД, в результате чего пользователи различных уз- лов распределенной БД будут получать разные ответы на одни и те же запросы. 2.4. Средства восстановления после сбоев Одно из основных требований к современным OLTP-системам - надежность хранения данных. СУБД должна уметь восстанавливать согласованное состоя- ние базы данных после любых аппаратных и программных сбоев. Для восста- новления после сбоев СУБД использует журнал транзакций, который содер- жит последовательность записей, описывающих изменения в БД.
38 Базы данных. Интеллектуальная обработка информации Общий принцип восстановления после сбоя таков - результаты выполне- ния транзакций, зафиксированных до сбоя, должны присутствовать в восста- новленной БД, результаты незафиксированных транзакций в ней должны от- сутствовать. То есть восстанавливается последнее до сбоя согласованное со- стояние базы данных. Процесс восстановления основан на механизме отката незавершенных транзакций, который описан ранее. Конечно, журнал транзакций не поможет, если содержимое внешней памяти системы физически уничтожено, то есть утеряна вся информация БД. Для того чтобы избежать подобных ситуаций, реализуют дублированное хранение данных, например, зеркалирование дискового пространства - запись данных одновремен- но на несколько устройств. После сбоя копируется содержимое БД, а затем, как и в первом случае, на основе журнала откатываются все незавершенные транзакции. 2.5. Мониторы транзакций С ростом сложности распределенных вычислительных систем возникают проблемы эффективного использования их ресурсов. Для решения этих про- блем в состав распределенных OLTP-систем вводят дополнительный компо- нент - монитор транзакций (TPM - transaction processing monitor). Мониторы транзакций выполняют две основные функции: динамическое распределение запросов в системе (выравнивание нагрузки) и оптимизация числа выполняю- щихся серверных приложений. Кратко рассмотрим эти функции. Если в системе функционирует несколько серверов, предоставляющих оди- наковый сервис, например, доступ к БД, то для оптимизации пропускной спо- собности системы (числа обрабатываемых запросов в единицу времени) необ- ходимо добиться сбалансированной их загрузки. То есть необходимо обеспе- чить, чтобы на каждый из них поступало примерно равное число пользова- тельских запросов. При распределении запросов может учитываться также уда- ленность серверов, их готовность, содержимое запроса. Реализуется функция выравнивания нагрузки следующим образом (см. рис. 2.2). Запрос клиентского приложения поступает монитору транзакций, который, действуя от имени клиентского приложения, определяет получателя этого запро- са. Для этого он обращается к динамической маршрутной таблице, по которой определяет систему, предоставляющую соответствующий сервис. Если нужный сервис предлагают несколько систем, то в зависимости от используемого алго- ритма маршрутизации выбирается одна из них, после чего ей перенаправляется запрос клиентского приложения. Маршрутизация может быть произвольной, когда система выбирается случайным образом, циклической, когда запросы посыла- ются системам по очереди, либо определяться содержимым запроса, если, на- пример, серверы БД обслуживают разные подмножества данных. Результат вы- полнения запроса через монитор транзакций перенаправляется приложению,
Глава 2, Системы обработки транзакций 39 пославшему запрос. Клиентские приложения не знают о том, какой системе бу- дут направлены их запросы, предлагается ли нужный им сервис одним или не- сколькими серверами, расположен ли нужный сервер локально, удаленно или одновременно локально и удаленно, - в любом случае их запрос будет обработан оптимальным образом. Подобную схему обработки запросов называют "прозрач- ность местонахождения серверов" (service location transparency). Рис. 2.2. Упрощенная схема работы монитора транзакций
40 Базы данных. Интеллектуальная обработка информации Скорость обработки транзакций напрямую зависит от числа запущенных серверных приложений. Чем больше приложений одновременно обслуживает запросы, тем выше пропускная способность вычислительной системы. Это увеличение наиболее заметно на многопроцессорных системах, где каждое приложение может работать на отдельном процессоре. В идеале для эффектив- ного использования системных ресурсов нужно по мере необходимости увели- чивать или уменьшать число серверных приложений в зависимости от числа обрабатываемых запросов. Для решения этой задачи мониторы транзакций пе- риодически измеряют отношение числа запросов в очереди к числу работаю- щих серверных приложений. Если это отношение превышает некоторое макси- мальное пороговое значение (maximum watermark), то запускается дополни- тельная копия серверного приложения. Если это отношение падает ниже мини- мального порогового значения (minimum watermark), то одна из копий завер- шается. На рынке мониторов транзакций доступно довольно много продуктов. В числе наиболее известных: TUXEDO фирмы USL, TOP END фирмы NCR, CICS фирмы IBM, ENCINA фирмы Transarc, ACMS фирмы DEC.
Глава 3. Принципы построения систем, ориентированных на анализ данных 3.1. Хранилища данных К середине 80-х годов в развитых странах мира завершился первый этап оснащения бизнеса и органов государственного управления средствами вы- числительной техники. Военные ведомства и крупные корпорации устано- вили распределенные вычислительные системы, состоявшие из мощных мей- нфреймов. С появлением персональных компьютеров ЭВМ стали доступны множеству средних фирм и организаций. Исторически эти системы в пер- вую очередь реализовывали потребности в операционной обработке дан- ных - они обслуживали информационные архивы, телефонные сети, систе- мы резервирования билетов, сбора метеоданных и др. Использование мощ- ных средств вычислительной техники позволило накапливать большие объе- мы информации: документы, сведения о банковских операциях, клиентах, предоставленных услугах. Однако период хранения этой информации был относительно невелик - сохранялись только данные за текущий календар- ный период. Вскоре возникло понимание, что сбор данных - не самоцель и накоп- ленные информационные массивы могут быть полезны. Системы операци- онной обработки способны выполнять тривиальный анализ данных - вы- числять максимальные, минимальные и средние значения атрибутов. Но из накопленных данных можно почерпнуть намного более глубокие сведения как о функционировании организации, которая обслуживается информаци- онной системой, так и о сфере ее деятельности. В информационных масси- вах можно попытаться выявить скрытые, на первый взгляд, закономерности и вывести из них правила, которым подчиняется предметная область ин- формационной системы. Впоследствии эти правила можно использовать для стратегического планирования, принятия решений и прогнозирования их последствий. Осознание пользы накапливаемой информации и возможности использо- вать ее для решения аналитических задач привело к появлению нового класса вычислительных систем - систем поддержки принятия решений (СППР), ори- ентированных на аналитическую обработку данных. Под системой поддерж- ки принятия решений понимают человеко-машинный вычислительный комп- лекс, ориентированный на анализ данных и обеспечивающий получение ин- формации, необходимой для разработки решений в сфере управления. Сле- дует заметить, что аналитические системы существовали и ранее, но именно
42 Базы данных. Интеллектуальная обработка информации возможность обработки больших объемов накапливаемых данных дала но- вый толчок их развитию и приходу на рынок. Также этому способствовали снижение стоимости высокопроизводительных компьютеров и расходов па хранение больших объемов данных, развитие математических методов обра- ботки информации. К числу задач, которые традиционно решают системы поддержки принятия решений, относятся: оценка альтернатив решений, про- гнозирование, классификация, кластеризация, выявление ассоциаций и др Подробнее эти задачи и методы их решения рассмотрены в соответствующих главах настоящей книги. Для получения интересующей их информации лица, принимающие реше- ния (ЛПР), или аналитики обращаются к СППР с запросами. Эти запросы в большинстве случаев более сложные, чем те, которые применяются в системах операционной обработки данных. Например, в OLTP-системе банка запрос мо- жет сводиться к получению сведений о сумме на счету конкретного клиента. В аналитической системе запрос может быть таким 'Найти среднее значение про- межутка времени между выставлением счета и оплатой его клиентом в теку- щем и прошедшем году отдельно для разных групп клиентов." В большинстве случаев сложный аналитический запрос невозможно сфор- мулировать в терминах языка SQL, поэтому для получения информации при- ходится применять специализированные языки, ориентированные на аналити- ческую обработку данных. К их числу можно отнести, например, язык Express 4GL фирмы Oracle [11]. Также для выполнения аналитических запросов могут быть использованы приложения, написанные специально для решения тех или иных аналитических задач. Для того чтобы можно было извлекать полезную информацию из данных, они должны быть организованы особым, отличным от принятого в OLTP-си- стемах образом. Связано это со следующими факторами. Во-первых, для вы- полнения аналитических запросов необходима обработка больших информа- ционных массивов. Чем выше степень нормализации базы данных, и чем боль- ше в ней таблиц, тем медленнее выполняется анализ. Происходит это прежде всего потому, что увеличивается число операций соединения отношений. В системах обработки транзакций нормализация таблиц БД позволяет устра- нить избыточность данных, уменьшив тем самым объем действий, необходи- мых при обновлении информации. Поэтому в нормализованных БД нет необ- ходимости менять одни и те же значения в различных отношениях. В анали- тических системах данные практически не обновляются - в системе произво- дится лишь их накопление и чтение. Поэтому проблема нормализации БД в них не столь актуальна, как в системах обработки транзакций. Во-вторых, выполнение некоторых аналитических запросов, например, анализ тенден- ций и прогнозирование, требует хронологической упорядоченности данных.
Глава 3. Принципы построения систем, ориентированных на анализ данных 43 Реляционная модель не предполагает существования порядка записей в таб- лице. В-третьих, данные, используемые для целей анализа, как правило, от- личаются от данных систем обработки транзакций. При обслуживании ана- литических запросов чаще используются не детальные, а обобщенные (агре- гированные) данные. Так, например, для прогнозирования объема продаж сети универмагов будет излишним иметь информацию о каждой сделанной по- купке, достаточно знать значение прогнозируемой величины за несколько пре- дыдущих лет. Принципы, лежащие в основе систем поддержки принятия решений, не позволяют эффективно обрабатывать транзакции, поэтому данные, применяе- мые для анализа, стали выделять в отдельные базы данных. Впоследствии эти базы данных стали называть хранилищами данных (ХД) или информационны- ми хранилищами. В литературе используется также англоязычный термин "Data Warehouse". Отцом концепции использования хранилищ данных в аналитических сис- темах считают Билла Инмона (Bill Inmon), технического директора компании "Призм Сольюшнс" (Prism Solutions). В начале 90-х годов он опубликовал ряд работ, которые стали отправной точкой для последующих исследований в об- ласти аналитических систем. Большое влияние на разработку концепции хра- нилищ данных оказала также американская корпорация "Ай Би Эм" (IBM). Концепция хранилищ данных - это концепция подготовки данных для пос- ледующего анализа. Она предполагает выполнение следующих положений' 1) интеграции и согласования данных из различных источников: традици- онных систем операционной обработки данных, информации из внут- ренних и внешних по отношению к организации электронных архивов; 2) разделения наборов данных, используемых системами обработки тран- закций и системами поддержки принятия решений. В работе "Создание хранилища данных" ("Building the Data Warehouse") Билл Инмон определил хранилище данных как "предметно-ориентированный, ин- тегрированный, неизменяемый и поддерживающий хронологию набор данных, предназначенный для обеспечения принятия управленческих решений". По- зднее мы вернемся к этому определению и подробнее рассмотрим черты ХД, указанные Инмоном. А пока попытаемся уяснить схему функционирования СППР, основанной на концепции хранилища данных, проведя аналогии с про- цессами производства и реализации промышленной продукции. Производство и реализация товаров имеют много общего с анализом дан- ных: на предприятии из сырья получается готовая продукция, которая затем доставляется потребителю; в процессе анализа из накопленных данных добы- вается и предоставляется полезная специалистам информация, используемая для разработки решений.
44 Базы данных. Интеллектуальная обработка информации Максимально упрощенно процесс производства и реализации промышлен- ных товаров может быть описан следующим образом (см. рис. 3.1). Любая про- дукция, прежде чем быть доставленной потребителю, должна быть изготовле- на. Этим занимаются заводы. Произведенная продукция отправляется на склад, откуда поступает в магазины. Именно там она находит своего потребителя. Рис. 3.1. Упрощенная схема процесса промышленного производства и реализации продукции Подобная схема обработки и снабжения справедлива и для аналитической системы (см. рис. 3.2). Исходные данные для анализа производятся системами операционной обработки, поступают из электронных архивов и от поставщи- ков информации, например, онлайновых информационных агентств. Эти ис- точники слабо связаны между собой, поэтому и данные, которые они предос-
Глава 3. Принципы построения систем, ориентированных на анализ данных 45 тавляют, имеют различную структуру и форматы представления. Необходимо произвести согласование данных разных источников, чтобы ими было удобно оперировать при анализе. Это подразумевает приведение их к единому форма- ту, устранение дублирующихся и некорректных значений. Рис. 3.2. Упрощенная логическая схема аналитической системы Подготовленные данные загружаются в хранилище. Пользователи-анали- тики осуществляют доступ к нему через клиентские приложения. Эти прило-
46 Базы данных. Интеллектуальная обработка информации жения могут осуществлять трансляцию запросов потребителей информации либо производить аналитическую обработку данных хранилища. В отличие от систем операционной обработки данных в СППР, использующих концепцию ХД, критерии поиска и состав выдаваемой в виде отчета информации не фик- сируются при ее разработке, пользователи оперируют в основном заранее не регламентированными запросами (ad-hoc query) Использование концепции хранилища данных в системе поддержки приня- тия решений преследует следующие цели: 1) своевременное обеспечение аналитиков всей информацией, необходимой для выработки решений; 2) создание единой модели данных организации; 3) создание интегрированного источника данных, предоставляющего удоб- ный доступ к разнородной информации и гарантирующего получение одинаковых ответов на одинаковые запросы из различных аналитичес- ких подсистем (единый "источник истины"). Сейчас хранилища данных рассматриваются как "панацея", которая может обеспечить новое качество информационной системы. Рост интереса к ним объясняется также и умелой рекламной политикой поставщиков аппаратно- программных решений основе этой концепции. Вернемся к определению, данному Инмоном, чтобы подробнее рассмот- реть свойства, присущие хранилищам данных. Ориентация на предметную область. Хранилище должно разрабатываться с учетом специфики предметной области, а не приложений, оперирующих данны- ми. Структура хранилища должна отражать представления аналитика об инфор- мации, с которой ему приходится работать. Например, если система операционной обработки поставщика товаров работает с понятиями "сделка" и "заявка", то хра- нилище должно использовать понятия "клиенты", "товары" и "производители". Интегрированность. Информация загружается в хранилище из приложе- ний, созданных разными разработчиками. Необходимо объединить данные этих приложений, приведя их к единому синтаксическому и семантическому виду. Например, в таблицах БД, полученных из разных источников, могут встречать- ся атрибуты, которые определены на разных доменах, но обозначают те же по- нятия. Например, месяц года может быть задан полным наименованием (ян- варь, февраль и т.д.), сокращенным наименованием (янв, фев и т.д.) и номером (1,2 и т.д.). В процессе загрузки хранилища требуется преобразовать эти атри- буты к единому представлению. Важно также провести проверку поступаю- щих данных на целостность и непротиворечивость. Характерный для инфор- мационных хранилищ прием - хранение агрегированных данных. Аналитика редко интересует информация о конкретных днях и часах, ему более важны данные о месяцах, кварталах и даже годах. Чтобы при выполнении аналити-
Глава 3. Принципы построения систем, ориентированных на анализ данных 47 ческих запросов избежать выполнения операций группирования, данные дол- жны обобщаться (агрегироваться) при загрузке хранилища. Объем накоплен- ных данных должен быть достаточным для решения аналитических задач с требуемым качеством. Используемые в настоящее время ХД содержат инфор- мацию, накопленную за годы и даже десятилетия. Неизменяемость данных. Важное отличие аналитических систем от сис- тем операционной обработки данных состоит в том, что данные после загрузки в них остаются неизменными, внесения каких-либо изменений, кроме добав- ления записей, не предполагается. Именно поэтому для СППР не столь акту- альны средства для обеспечения отката транзакций, борьбы с взаимными бло- кировками процессов - разработчики подобных систем сосредоточивают ос- новные усилия на достижении высокой скорости доступа к данным. Важное условие неизменности информации в хранилище - использование для его реа- лизации надежного оборудования, которое обеспечивает защиту от сбоев Поддержка хронологии Для выполнения большинства аналитических зап- росов необходим анализ тенденций развития явлений или характера измене- ния значений переменных во времени. Учет хронологии достигается введени- ем ключевых атрибутов типа "ДАТА" и/или "ВРЕМЯ" в структуры хранилища данных. Время выполнения аналитических запросов можно уменьшить, если физически упорядочить записи по времени, то есть расположить записи по воз- растанию значений атрибута "ДАТА/ВРЕМЯ". Нельзя не заметить, что данные и принципы их хранения в СППР и систе- мах операционной обработки различаются. Основные отличия перечислены в таблице 3.1. Таблица 3.1. Свойства данных в СППР и системах операционной обработ- ки (OLTP) Свойство OLTP СППР Назначение данных Оперативный поиск, несложные виды обработки Аналитическая обработка, прогнозирование, моделирование Уровень агрегации данных Детализированные Агрегированные Период хранения данных От нескольких месяцев до одного года От нескольких лет до десятков лет Частота обновления Высокая частота, обновление маленькими порциями Малая частота, обновление большими порциями
48 Базы данных. Интеллектуальная обработка информации В последнее время сформировался новый класс систем поддержки принятия решений - системы оперативной аналитической обработки (OnLine Analysis Processing - OLAP). Под OLAP-системой принято по- нимать СППР, основанную на концепции хранилища данных и обеспе- чивающую малое время выполнения аналитических запросов. К числу основных задач, которые требуется решать при создании ХД, отно- сятся: 1) выбор оптимальной структуры хранения данных с точки зрения обеспе- чения приемлемого времени отклика на аналитические запросы и требу- емого объема памяти; 2) первоначальное заполнение и последующее пополнение хранилища дан- ными; 3) обеспечение удобства доступа пользователей к данным. Рассмотрим пути решения этих задач более детально. 3.2. Модели данных, используемые для построения хранилищ Задачи, решаемые OLTP и аналитическими системами, существен- но различаются, поэтому их БД тоже построены на разных принципах. Критерием эффективности для систем операционной обработки данных служит число транзакций, которое они способны выполнить в единицу времени. Для аналитических систем важнее скорость выполнения слож- ных запросов и прозрачность структуры хранения информации для пользователей. Важная особенность СППР на основе ХД состоит в том, что загрузка данных выполняется сравнительно редко, но большими порциями (до нескольких миллионов записей за один раз), поэтому в таких системах обычно не предусматриваются развитые средства обес- печения целостности, восстановления, устранения взаимных блокиро- вок. Это не только существенно облегчает и упрощает сами средства реализации, но и значительно снижает внутренние накладные расходы при доступе к информации и, следовательно, повышает производитель- ность анализа. В настоящее время существуют два в чем-то конкурирующих, а в чем- то взаимодополняющих друг друга подхода к построению хранилищ дан- ных: подход, основанный на использовании многомерной модели БД (Multidimedsional OLAP - MOLAP), и подход, использующий реляцион- ную модель БД (Relational OLAP - ROLAP).
Ечава 3. Принципы построения систем, ориентированных на анализ данных 49 Прежде чем рассказать о каждом из них, попытаемся разобраться, ка- кие данные могут находиться в хранилище, и как они могут быть пред- ставлены. Чаще всего там содержатся сведения о значении некоторых па- раметров, характеризующих предметную область в определенные момен- ты или за определенные промежутки времени. Пусть, например, требует- ся создать хранилище, накапливающее информацию об изменении соци- ально-экономической обстановки в России. Эта обстановка характеризу- ется многими параметрами, в числе которых, объем промышленного про- изводства, индекс потребительских цен и др. Госкомстат России собирает их значения для различных субъектов Российской Федерации помесячно, поквартально или за год. В хранилище должны попадать факты вида: Название параметра в субъекте Российской Федерации в момент времени был равен {значение}. Например, индекс потребительских цен в городе Москве в декабре 1996 года был равен 101%. В рассматриваемом примере каждое значение связано с точкой в трехмерном пространстве (N, S, Г) с измерениями: N- название параметра; 5 - субъект федерации; Т- момент времени. Число возможных параметров, субъектов РФ, а также рассматриваемых момен- тов времени конечно, поэтому все возможные значения можно предста- вить в виде гиперкуба (см. рис. 3.3). В этом гиперкубе каждое значение находится в строго определенной ячейке, что значительно упрощает обращение к ней. Представленный пример, конечно, упрощен, но он позволяет понять, что такое многомерный взгляд на данные. В реальной задаче число изме- рений может быть больше трех. Представление данных в виде гиперкуба более наглядно, чем совокупность нормализованных таблиц, оно понят- но не только администратору БД, но и рядовым сотрудникам, Это дает им дополнительные возможности построения аналитических запросов к системе, использующей хранилище данных. Кроме того, использование многомерной модели данных позволяет резко уменьшить время поиска в ХД, обеспечивая выполнение аналитических запросов в реальном вре- мени. Гиперкуб может быть реализован в рамках реляционной модели или существовать как отдельная БД специальной многомерной структуры. В зависимости от этого и принято различать реляционный (ROLAP) и мно- гомерный (MOLAP) подходы к построению ХД.
50 Базы данных. Интеллектуальная обработка информации Рис. 3.3. Представление данных в виде гиперкуба: 1 - значение "Параметра М" для "Субъекта РФ 1" в январе 1991 года 33. Многомерная модель хранилища Многомерная модель БД появилась довольно давно, однако в силу при- сущих ей ограничений применение получила лишь в последнее время. При использовании этой модели данные хранятся не в виде плоских таблиц, как в реляционных БД, а в виде гиперкубов - упорядоченных многомерных мас- сивов. То есть многомерное представление данных здесь реализуется физи- чески. Конечно, такой подход требует большего объема памяти для хране- ния данных, при его использовании сложно модифицировать структуру дан- ных. Например, добавление еще одного измерения приводит к необходимо- сти полной перестройки гиперкуба. Однако многомерные СУБД обеспечи-
Глава 3. Принципы построения систем, ориентированных на анализ данных 51 вают более быстрый по сравнению с реляционными системами поиск и чте- ние данных, избавляют от необходимости многократно соединять таблицы. Среднее время ответа на сложный аналитический запрос при использова- нии многомерных СУБД обычно в 10-100 раз меньше, чем в случае реляци- онной СУБД с нормализованной структурой. Основные понятия многомерной модели - измерение и значение (ячейка). Измерение - это множество, образующее одну из граней гиперкуба (аналог домена в реляционной модели). Измерения играют роль индексов, используе- мых для идентификации конкретных значений в ячейках гиперкуба. Значения - это подвергаемые анализу количественные или качественные данные, кото- рые находятся в ячейках гиперкуба (см. рис. 3.3). В многомерной модели вводятся следующие основные операции манипу- лирования измерениями: 1) сечение; 2) вращение; 3) детализация; 4) свертка. При выполнении операции сечения формируется подмножество гиперку- ба, в котором значение одного или более измерений фиксировано. Например, если на рис. 3 3 зафиксировать значение измерения "Время" равным "январь 1991 года", то мы получим двухмерную таблицу с информацией о значениях всех параметров для всех субъектов РФ в январе 1991 года Операция вращения изменяет порядок представления измерений. Она обыч- но применяется к двухмерным таблицам, обеспечивая представление их в бо- лее удобной для восприятия форме Если в исходной таблице по горизонтали были расположены субъекты РФ, а по вертикали параметры социально-эконо- мической сферы, то после операции вращения параметры будут размещены по горизонтали, а названия субъектов РФ - по вертикали. Для выполнения операций свертки и детализации должна существо- вать иерархия значений измерения, то есть некоторая подчиненность од- них значений другим. Например, 12 месяцев образуют год, субъекты РФ образуют регионы. При выполнении операции свертки одно из значений измерения заменяется значением более высокого уровня иерархии. Напри- мер, аналитик, узнав значения параметров для января 1991 года, желает получить их значения за весь 1991 год. Чтобы это сделать, необходимо выполнить операцию свертки. Операция детализации - это операция, об- ратная свертке. Она обеспечивает переход от обобщенных к детализиро- ванным данным. Основное назначение СУБД, поддерживающих многомерную модель, - ре- ализация систем, ориентированных на аналитическую обработку. Многомер- ные СУБД лучше других справляются с задачами выполнения сложных нерег- ламентированных запросов. Однако у многомерных БД имеются серьезные недостатки, сдерживающие их применение. Многомерные СУБД неэффективно по сравнению с реляцион-
52 Базы данных. Интеллектуальная обработка информации ними используют память. В многомерной СУБД заранее резервируется место для всех значений, даже если часть из них заведомо будет отсутствовать. Дру- гой недостаток состоит в том, что выбор высокого уровня детализации при реализации гиперкуба может очень сильно увеличить размер многомерной БД. В силу этих, а также некоторых других причин доступные на рынке многомер- ные СУБД не в состоянии оперировать данными большого объема, Объем, до- ступный им для хранения, ограничен 10-20 гигабайт. Целесообразно использовать многомерную модель, если объем БД невелик и гиперкуб использует стабильный во времени набор измерений. 3.4. Реляционная модель хранилища данных Основой при построении хранилища данных может служить и традицион- ная реляционная модель данных. В этом случае гиперкуб эмулируется СУБД на логическом уровне. В отличие от многомерных реляционные СУБД способ- ны хранить огромные объемы данных, однако они проигрывают по скорости выполнения аналитических запросов. При использовании РСУБД для организации хранилища данные организу- ются специальным образом. Чаще всего используется так называемая радиаль- ная схема. Другое ее название - ’’звезда" (star). В этой схеме используются два типа таблиц: таблица фактов (фактологическая таблица) и несколько справоч- ных таблиц (таблицы измерений). В таблице фактов обычно содержатся данные, наиболее интенсивно исполь- зуемые для анализа. Если проводить аналогию с многомерной моделью, то за- пись фактологической таблицы соответствует ячейке гиперкуба. В справочной таблице перечислены возможные значения одного из измерений гиперкуба. Каждое измерение описывается своей собственной справочной таблицей. Фак- тологическая таблица индексируется по сложному ключу, скомпонованному из индивидуальных ключей справочных таблиц. Это обеспечивает связь справоч- ных таблиц с фактологической по ключевым атрибутам. В качестве примера на рис. 3.4 приведена упрошенная схема структуры хранилища данных, исполь- зуемого для накопления информации из рассмотренного ранее примера (см. рис. 3.3). В реальных системах количество строк в фактологической таблице может составлять десятки и сотни миллионов. Число справочных таблиц обычно не превышает двух десятков. Для увеличения производительности анализа в фак- тологической таблице могут храниться не только детализированные, но и пред- варительно вычисленные агрегированные данные. Если БД включает большое число измерений, можно использовать схему "снежинка'’ (snowflake). В этой схеме атрибуты справочных таблиц могут быть детализированы в дополнительных справочных таблицах (см. рис. 3.5).
Глава 3. Принципы построения систем, ориентированных на анализ данных 53 Справочная таблица Рис. 3.4. Пример БД с радиально связанными таблицами (схема звезда): линиями показаны связи между таблицами; ключевые атрибуты таблиц выделены серым цветом Рис. 3.5. Пример БД со схемой "снежинка"
54 Базы данных. Интеллектуальная обработка информации Для сокращения времени, требуемого для получения отклика от аналити- ческой системы, можно использовать некоторые специальные средства. В со- став мощных реляционных СУБД обычно входят оптимизаторы запросов. При создании хранилищ данных на основе РСУБД их наличие приобретает особую важность. Оптимизаторы анализируют запрос и определяют лучшую, с пози- ции некоторого критерия, последовательность операций обращения к БД для его выполнения Например, может минимизироваться число физических обра- щений к дискам при выполнении запроса. Оптимизаторы запросов используют сложные алгоритмы статистической обработки, которые оперируют числом записей в таблицах, диапазонами ключей и т.д. 3.5. Комбинация многомерного и реляционного подхода: киоски данных Каждая из описанных моделей имеет как преимущества, так и недостатки. Многомерная модель позволяет производить быстрый анализ данных, но не позволяет хранить большие объемы информации. Реляционная модель, напро- тив, практически не имеет ограничений по объему накапливаемых данных, однако СУБД на ее основе не обеспечивают такой скорости выполнения анали- тических запросов, как МСУБД. Нельзя ли совместить два этих подхода так, чтобы скрыть их недостатки и сделать более заметными их достоинства? Удач- ные проекты реализации хранилищ данных, появившиеся в последнее время, показывают, что это возможно. Ситуация, когда для анализа необходима вся информация, находящаяся в хранилище, возникает довольно редко. Обычно каждый аналитик или ана- литический отдел обслуживает одно из направлений деятельности органи- зации, поэтому в первую очередь ему необходимы данные, характеризую- щие именно это направление. Реальный объем этих данных не превосходит ограничений, присущих многомерным СУБД. Возникает идея выделить дан- ные, которые реально нужны конкретным аналитическим приложениям, в отдельный набор. Такой набор мог бы быть реализован в многомерной БД. Источником данных для него должно быть центральное хранилище органи- зации. Если проводить аналогии с производством и реализацией продукции, то многомерные БД выполняют роль мелких складов. В концепции ХД их приня- то именовать киосками данных (Data Marts) [9]. Киоск данных - это специали- зированное тематическое хранилище, обслуживающее одно их направлений деятельности организации. Логическая схема СППР, использующей централь- ное ХД организации и киоски данных аналитических отделов [12], представле- на на рис 3 6.
Глава 3. Принципы построения систем, ориентированных на анализ данных 55 Источники информации Поставщики информации Загрузка данных Центральное хранилище Киоски данных (тематические хранилища) Анализ и представление данных Пользовательские приложения Приведение данных к единому формату Агрегирование данных Предобработка данных Визуализация данных Многомерные загросы w J 4-6 i 11 Статистический анализ Экспертные системы Поток задач анализа Модели, прогнозы Рис. 3.6. Логическая схема СППР, использующей ХД и киоски данных Такая схема позволяет эффективно использовать возможности реляцион- ных СУБД по хранению огромных объемов информации и способность много- мерных СУБД обеспечивать высокую скорость выполнения аналитических зап- росов.
56 Базы данных. Интеллектуальная обработка информации 3.6. Построение систем на основе ХД Системы, использующие хранилище данных, как правило, строятся на ос- нове архитектуры клиент-сервер. Хранилище данных размещается на специ- альном сервере (сервере хранилища данных). Для его реализации использует- ся мощные многопроцессорные вычислительные системы таких производите- лей, как IBM, Hewlett-Packard, DEC, NCR и др. В качестве СУБД применяется одна из СУБД, поддерживающих параллельную обработку запросов: Teradata (фирма NCR), DB/2 (фирма IBM), Oracle, Informix и др. Киоски данных реали- зуются с использованием серверов многомерных БД: Essbase (Arbor Software), Oracle Express (Oracle), Gentium (Planning Sciences) и др. Современные аналитические системы, основанные на концепции ХД, спо- собны хранить большие массивы информации. В зависимости от объема исполь- зуемых данных хранилища принято делить на: маленькие, средние, большие и сверхбольшие. Принципы такой классификации представлены в таблице 3.2. Таблица 3.2. Классификация ХД в зависимости от объема Тип хранилища Объем данных Число строк в фактологической таблице Маленькое до 3 ГБайт до нескольких миллионов Среднее до 25 ГБайт до ста миллионов Большое до 200 ГБайт несколько сотен миллионов Сверхбольшое свыше 200 ГБайт миллиард и более Приведенная классификация подразумевает полезный объем, то есть объем данных, которые могут быть использованы для анализа. Дисковое простран- ство, требуемое для реализации хранилища, обычно в несколько раз больше за счет того, что необходимо поддерживать систему индексов. Для современных СУБД, таких как DB2, Teradata, Oracle, соотношение между объемом задей- ствованной дисковой памяти и объемом реально используемых данных при- мерно равно 5-10. 3.7. Доставка данных в хранилище Данные должны поступать в хранилище в нужном формате и с требуемой регулярностью. Как правило, составляется расписание пополнения хранили- ща, в соответствии с которым специальные программы организуют передачу данных на склад и их первичную обработку. Передача данных на склад может также осуществляться при возникновении заранее определенных внешних со- бытий.
Глава 3. Принципы построения систем, ориентированных на анализ данных 57 Процесс загрузки данных обычно подразумевает решение следующих задач: 1) приведения данных к единому формату (унификация типов данных и их представления, исключение управляющих кодов); 2) предобработки данных (исключение дубликатов, устранение ошибочных значений, восстановление пропущенных значений); 3) агрегирования данных (вычисление обобщенных статистических пока- зателей). 3.8. Метаданные Пользователь не сможет извлечь нужные ему данные из хранилища, если не будет знать, что там находится. Прежде чем сформулировать свой запрос к системе, аналитик должен понять, какая информация в ней имеется, насколько она актуальна, точна, а также сколько времени может занять ожидание ответа. Для описания структур данных в БД хранилища используются метадан- ные. Метаданные - это высокоуровневые средства отражения информацион- ной модели СППР. Для обеспечения удобства доступа пользователей к инфор- мации ХД метаданные должны содержать: описание структур данных храни- лища, структур данных, импортируемых из разных источников, сведения о пе- риодичности импортирования, методах загрузки и обобщения данных, сред- ствах доступа и правилах представления информации, оценки приблизитель- ных затрат времени на получение ответа на запрос. Метаданные помещаются в так называемый "репозитарий метаданных" системы. Этот компонент поддерживается большинством современных СУБД, средств разработки приложений и администрирования. Существует стандарт обмена метаданными MDIS, обеспечивающий возможность интеграции средств разных производителей друг с другом. 3.9. Методы аналитической обработки данных в хранилище Одна из важнейших составных частей современных аналитических систем - средства интеллектуального анализа данных. Выполнение большинства ана- литических запросов пользователей требует сложной статистической обработ- ки данных, применения методов искусственного интеллекта. Современные СУБД, предназначенные для реализации аналитических систем, включают до- вольно обширный набор средств для статистической обработки информации. Однако задачи пользователей могут потребовать выполнения специфических операций над данными, поэтому средства анализа могут встраиваться также и в клиентские приложения
58 Базы данных. Интеллектуальная обработка информации В аналитических системах для обработки данных используется очень ши- рокая номенклатура методов. Это и традиционные статистические методы рег- рессионного, факторного, дисперсионного анализа, анализа временных рядов [13], а также новые, получившие распространение в последнее время методы, основанные на искусственном интеллекте. К последним, как правило, относят: нейронные сети, нечеткую логику, генетические алгоритмы, методы извлече- ния знаний В совокупности они именуются методами интеллектуального ана- лиза данных (ИАД). Часто используется англоязычный термин "data mining" (дословно - добыча знаний). Эти методы развивают традиционные статисти- ческие подходы, находя применение там, где обычные приемы невозможно использовать в силу отсутствия точных зависимостей, описывающих анали- зируемые процессы. Технологии ИАД способны существенно расширить круг практически значимых задач, решаемых с использованием вычислительной техники. Подробно методы интеллектуального анализа данных и примеры их применения описаны в соответствующих разделах. В большинстве случаев средства анализа данных в СППР на основе ХД используются для решения следующих задач: 1) выделение в данных групп сходных по некоторым признакам записей (кластерный анализ); 2) нахождение и аппроксимация зависимостей, связывающих анализируе- мые параметры или события, а также поиск параметров, наиболее значи- мых в терминах конкретной задачи; 3) поиск данных, существенно отклоняющихся от выявленных закономер- ностей (анализ аномалий); 4) прогнозирование развития объектов различной природы на основе хра- нящейся ретроспективной информации об их состоянии в прошлом. Кластерный анализ (также употребляются термины "кластеризация", "са- мообучение", "обучение без учителя") - это метод выделения из множества элементов групп (кластеров) схожих между собой элементов. Предполагается, что элементы одного и того же кластера похожи, а элементы различных класте- ров отличаются друг от друга. Как правило, число кластеров заранее не опре- деляется Кластерный анализ записей баз данных осуществляется на основе значений их количественных и качественных атрибутов. При этом делается попытка автоматически разнести имеющиеся записи по различным группам. Кластерный анализ применяют при решении большого числа задач. В социо- логии его используют для обработки результатов опросов общественного мне- ния, в медицине - для выявления типичных клинических случаев, в маркетин- ге - для поиска родственных групп клиентов. Часто выделение кластеров - отправная точка для других алгоритмов интеллектуального анализа данных.
Глава 3. Принципы построения систем, ориентированных на анализ данных 59 Применение этой процедуры позволяет во многих случаях перейти от обработ- ки всего массива записей к анализу относительно небольшого числа кластеров. Системы интеллектуального анализа данных эффективно используются для автоматического нахождения взаимосвязей и нелинейных зависимостей в дан- ных. Учет подобных зависимостей позволяет лучше осмыслить предметную область, повысить качество решений, принимаемых на основе анализа ее со- стояния. В отличие от традиционных корреляционных методов, способных выявлять линейную взаимосвязь между переменными, методы НАД обнару- живают и сложные нелинейные зависимости. Пакеты программ на их основе позволяют при обнаружении зависимостей определять их статистические ха- рактеристики, производить визуализацию области действия зависимости и выпадающих точек. Некоторые продукты интеллектуального анализа, напри- мер, система IDIS (The Information Discover}- System) фирмы Intelligence Ware, способны выражать выявленные зависимости в виде правил на естественном языке. Современные средства НАД позволяют также определять переменные, оказывающие наибольшее влияние на значение заданных атрибутов. Напри- мер, анализируя медицинские данные о больных, получивших травму, можно выполнить автоматический выбор трех атрибутов, наиболее значимых для оп- ределения времени восстановления больного после травмы. В качестве таких атрибутов, например, могут быть выделены: "время до момента оказания ква- лифицированной помощи", "возраст" и "физическое состояние больного". Впос- ледствии именно эти признаки могут быть использованы для многомерного визуального анализа, например, при определении координатных осей. Другая важная задача, решаемая сейчас с помощью систем НАД, - выявле- ние разного рода аномалий в данных, отклонений от общей закономерности. Эта задача связана с предыдущей - отклонения обнаруживаются на основе выявленных ранее зависимостей. Происходит это следующим образом. Систе- ма, выявляющая аномалии, обучается на множестве допустимых записей, фор- мируя их "собирательный образ". Если запись, предъявляемая впоследствии обученной системе, не удовлетворяет этому образу, система обращает на это внимание пользователя. Наиболее известный практический пример примене- ния подобного подхода - система обнаружения случаев мошенничества с кре- дитными картами Federal Express, разработанная фирмой HNC. Она формиру- ет портрет операций, которые совершает владелец карты, и, если структура его расходов резко меняется, подает сигнал тревоги и блокирует выплаты. Такое изменение чаще всего происходит в случае, если карта похищена и преступник хочет воспользоваться ею до того, как о пропаже заявит владелец. Под прогнозированием, как правило, понимают процесс формирования ве- роятностного суждения о состоянии какого-либо объекта, процесса или явле- ния в определенный момент времени в будущем. Методы прогнозирования ос-
60 Базы данных. Интеллектуальная обработка информации нованы на принципе инерционности развития, то есть предполагается, что раз- витие объекта подчинено определенным закономерностям, которые сохранят- ся на некоторый период в будущем. При прогнозировании используется спо- собность методов НАД выявлять закономерности в исторических данных, опи- сывающих развитие объекта, и использовать в дальнейшем эти тенденции для выработки гипотез о его состоянии в будущем. Особенно широко для предска- заний методы НАД применяют в финансовой сфере при прогнозировании до- ходности акций, курсов валют, экономических индикаторов. В настоящее время компьютерные аналитические технологии данных пе- реживают этап бурного развития - появляются новые программные продукты и задачи, которые успешно решаются с их помощью. Однако даже самые луч- шие программные средства не заменят специалиста, способного провести ин- тегральный анализ наблюдаемых явлений. Тем не менее современные интел- лектуальные компьютерные технологии могут быть хорошим помощником ана- литика, в значительной мере упрощая ему работу.
Глава 4. Документальные системы 4.1. Назначение и основные понятия Классические модели и методы в теории БД изначально ориентировались на организацию хранения и обработки детально структурированных данных. Чаще всего эти данные представляли собой числовые значения, описывающие те или иные характеристики информационных объектов. Однако на практике оказалось, что чаще информация представлена не в виде структурированных массивов данных, а в виде простых текстовых докумен- тов. Вследствие этого документальные БД (иногда их еще называют полнотек- стовыми) сразу выделялись в особый тип баз данных. Исторически сложилось так, что за системами, ориентированными на работу с текстовыми документа- ми, укоренился термин информационно-поисковые системы (ИПС) Хотя, если быть точнее, их следует называть документальными ИПС (ДИПС), поскольку традиционные СУБД также являются ИПС, только фактографическими (ФИПС). В отличие от традиционных БД. ориентированных на полное и точное пред- ставление данных достаточно простой смысловой структуры, документальные БД ориентированы на частичное, приближенное представление данных, имею- щих значительно более сложную смысловую структуру, представленных на входе в форме текста. Основной функцией любой ДИПС является информационное обеспечение потребителей на основе выдачи ответов на их запросы. Осуществление выдачи системой требуемых данных реализуется с помощь главной операции ДИПС - проведения информационного поиска. Информационный поиск является про- цедурой отыскания документов, содержащих ответ на заданные потребителем вопросы (определения основных понятий в п. 4.1 приведены из работы [14]). Заметим, что в отличие от ФИПС, которые в ответ на запрос потребителя осуществляют выдачу конкретных сведений (фактов), ДИПС в результате про- ведения информационного поиска предоставляют потребителю совокупность документов, смысловое содержание которых соответствует его запросу. Информационный поиск в системе проводится на основе поступившего от потребителя запроса на отыскание необходимой ему информации. Потребность человека в определенной информации в процессе его практической деятельно- сти носит название информационной потребности. Под действием получае- мой информации информационная потребность людей постоянно изменяется и трансформируется. Вследствие этого ее невозможно однозначно выразить и описать. Однако информационная потребность может быть представлена в виде некоторой последовательности ее частных значений в фиксированные момен- ты времени. Такое частное значение информационной потребности потребите-
62 Базы данных. Интеллектуальная обработка информации ля в определенные моменты времени, выраженное на естественном языке (ЕЯ), и представляет собой информационный запрос, с которым пользователь обра- щается к системе. Однако запрос может быть неправильно сформулирован потребителем и не отражать его истинной информационной потребности в момент обращения к системе. Таким образом, при проведении информационного поиска в системе фактически рассматривается не информационная потребность пользователя, а только информационный запрос, в ответ на который и выдаются те или иные документы системы. Следовательно, реакцию системы необходимо рассматри- вать не только по отношению к информационной потребности, но по отноше- нию к информационному запросу. Для выражения данных отношений в теории ДИПС введены два фундамен- тальных понятия: пертинентность и релевантность. Под пертинентностъю понимается соответствие смыслового содержания документа информационной потребности потребителя. Документы, содержание которых удовлетворяет ин- формационной потребности, называют пертинентными. Релевантность пред- ставляет собой соответствие содержания документа информационному запро- су в том виде, в каком он сформулирован, а документы, содержание которых отвечает запросу потребителя, носят название релевантных. Автоматизация процесса информационного поиска потребовала формали- зации представления основного смыслового содержания информационного зап- роса и документов в виде соответственно поискового предписания (ПП) и по- исковых образов документов (ПОД). Для записи ПП и ПОД применяются спе- циальные языки, называемые информационно-поисковыми (или просто инфор- мационными). В процессе проведения информационного поиска в ДИПС определяется степень соответствия содержания документов и запроса пользователя путем сопоставления ПОД с ПП. А на основе такого сопоставления принимается ре- шение о выдаче документа (он признается релевантным) или его невыдаче (он считается нерелевантным). Решение о выдаче или невыдаче документа в ответ на запрос принимается на основе некоторого набора правил, по которому данной ДИПС определяется степень смысловой близости между ПОД и ПП. Такой набор правил получил название критерия смыслового соответствия (КСС). Критерий может зада- ваться явно или неявно. На самом деле КСС базируется не на ранее введенном понятии релевантности, а на понятии формальной релевантности - соответ- ствии содержания ПОД и ПП. Фактическая релевантность, понимаемая как смысловое соответствие содержания документа информационному запросу, может быть установлена только человеком в процессе осмысления содержания документа и запроса.
Глава 4. Документальные системы 63 4.2. Общая функциональная структура документальных информационно-поисковых систем В состав типичной ДИПС входят, как правило, четыре основные подсисте- мы (рис. 4.1): 1. Подсистема ввода и регистрации. 2. Подсистема обработки. 3. Подсистема хранения. 4. Подсистема поиска. Рис. 4.1. Общая функциональная структура ДИПС Текстовые документы, поступающие на вход системы, могут быть пред- ставлены как в бумажном, так и в электронном виде (в одном из многочислен- ных форматов). Поэтому подсистема ввода и регистрации решает следующие основные задачи: • создание электронных копий бумажных документов (например, скани- рование с последующим распознаванием текста или ввод с клавиатуры); • обеспечение подключения к каналам доставки электронных документов; • распознавание, а при необходимости и преобразование формата элект- ронных документов; • присвоение электронным документам уникальных идентификаторов (ре- гистрация), а также ведение таблицы синхронизации имен (при необхо- димости сохранения прежних имен).
64 Базы данных. Интеллектуальная обработка информации Все поступающие документы без внесения в них каких-либо изменений направляются в подсистему хранения для сохранения в базе документов. База документов может представлять собой простую совокупность файлов, распре- деленную по каталогам жесткого диска. Однако такой тип представления базы документов характеризуется двумя недостатками: • неэффективным использованием дискового пространства; • низкой скоростью доступа при большом количестве файлов. Поэтому для хранения документов применяют средства сжатия и быстрого поиска информации. В этом случае подсистема хранения представляет собой совокупность стандартных или специализированных средств архивации, СУБД и т.п., обеспечивающих возможность доступа к данным по предъявляемому идентификатору. Далее документы поступают на вход подсистемы обработки, задачей кото- рой является формирование для каждого документа ПОД, в который заносится информация, необходимая для последующего поиска документа. ПОД сохраняются в индексе. Логически индекс представляет собой табли- цу, строки которой соответствуют документам, а столбцы - информационным признакам, на основе которых строится ПОД. В ячейках таблицы могут хра- ниться либо 1, либо О-в зависимости от наличия или отсутствия данного при- знака в данном документе. Очевидно, что такая таблица будет сильно разреженной, и хранить все зна- чения не имеет смысла. Поэтому на практике используют свертку таблицы по строкам или столбцам. Такую форму хранения называют прямой или инверс- ной соответственно. Поскольку при свертке таблицы структура индекса услож- няется, для его поддержания могут использоваться средства СУБД. При поступлении на вход системы запроса пользователя он преобразуется в ПП и передается в подсистему поиска, задачей которой является отыскание в индексе ПОД, удовлетворяющих ПП с точки зрения КСС. Идентификаторы релевантных документов подаются с выхода подсистемы поиска на вход под- системы хранения, которая осуществляет выдачу пользователю самих релеван- тных документов. 4.3. Проблема формального представления смыслового содержания текста 4.3.1. Недостатки естественного языка Как известно, естественный язык (ЕЯ) является универсальной знаковой си- стемой, служащей для обмена информацией между людьми. Поскольку доку- менты, поступающие на вход ДИПС, записаны на ЕЯ, справедливо было бы за-
Глава 4. Документальные системы 65 даться вопросом, а нельзя ли использовать ЕЯ в качестве основного средства представления информации во время всего цикла функционирования ДИПС? Ответ будет положительным, если речь идет о тех ИПС, в которых соответствие между запросом и документом устанавливает человек. Однако в современных ДИПС эта операция выполняется компьютером, что практически исключает при- менение ЕЯ в качестве основного средства представления информации. Это объяс- няется существенными недостатками ЕЯ с точки зрения машинной технологии обработки информации, основные из которых рассмотрены ниже Многообразие средств передачи смысла. Несмотря на то, что основным средством передачи смысла сообщения является лексика естественного языка, в сообщениях на ЕЯ функцию передачи смысла выполняет и ряд других эле- ментов: • контекст; • парадигматические отношения между словами; • текстуальные отношения между словами; • ссылки на слова (словосочетания, фразы и т.д.), ранее упоминавшиеся в тексте сообщения. Семантическая неоднозначность. Сообщения, записанные на естественном языке, могут быть семантически неоднозначными. Семантическая неоднознач- ность возникает в основном из-за синонимии и многозначности слов естествен- ного языка. Синонимия представляет собой тождественность или близость по значению слов, выражающих одно и то же понятие, которые отличаются одно от другого или оттенками значений, или стилистической окраской, или одновременно обо- ими названными признаками. Синонимами естественного языка являются как отдельные слова, так и словосочетания. Многозначность характеризует возможность неоднозначного понимания смысла отдельных слов естественного языка. Многозначность слов представ- лена двумя разновидностями - полисемией и омонимией. Полисемия - это со- впадение названий различных предметов, имеющих между собой какие-либо общие свойства или признаки. К типичным общим свойствам, служащим ба- зой полисемии, следует отнести сходство предметов, их смежность (простран- С1 венную, временную и т.д.), а также одинаковое функциональное назначение. Примерами полисемии являются: "команда" (воинское подразделение) - 1 ко- манда" (экипаж судна) - "команда" (спортивная). Омонимия - это совпадение названий различных предметов, не имеющих между собой каких-либо общих свойств. Например: "лук" (оружие)- "лук" (растение); "ключ" (родник)-"ключ" (дверной). Омонимичные слова, совпадающие между собой как по написанию, так и по звучанию, следует отличать от омографов - слов, обозначающих раз- личные предметы, одинаковые по написанию, но разные по звучанию, напри- 3- 307
66 Базы данных. Интеллектуальная обработка информации мер: "замок" (дверной) - "замок" (дворец). Однако, поскольку ДИПС опериру- ют с сообщениями на естественном языке, представленными в письменной форме, вследствие чего фонетика языка не оказывает решающего влияния на смысл таких сообщений, омографы могут быть приравнены к омонимичным словам. Эллипсность. Во многих сообщениях на ЕЯ встречаются эллипсы или про- пуски подразумеваемых слов. Эллипсность сообщения зачастую играет отри- цательную роль при непосредственной работе с ним человека. Очевидно, что она тем более отрицательно скажется в том случае, если сообщения на ЕЯ бу- дут обрабатываться компьютером. 4.3.2. Информационно-поисковые языки Невозможность использования ЕЯ в качестве основного средства i [редстав- ления информации в ДИПС приводит к необходимости применения искусст- венных языковых средств. Информационно-поисковым языком (ИПЯ) называется специализированный искусственный язык, предназначенный для описания основного смыслового содержания поступающих в систему сообщений, с целью обеспечения возмож- ности последующего их поиска [14]. ИПЯ создается на базе ЕЯ, однако отличается от него компактностью, на- личием четких грамматических правил и отсутствием семантической неодноз- начности. ИПЯ принято разбивать на два основных типа: • классификационные языки, • дескрипторные языки. Принципиальная разница между данными типами языков заключена в про- цедуре построения предложений (фраз) языка. В ряде языков в их лексический состав наряду со словами, выражающими простые понятия, заранее включены также словосочетания и фразы, выражающие сложные понятия. Для записи смыслового содержания сообщений в таких ИПЯ используются только отдель- ные элементы из этого набора, в том числе и готовые сложные понятия. Факти- чески построение сложных синтаксических конструкций заменяется выбором соответствующего сложного понятия (в виде словосочетания или фразы) из готового набора. Например: Политика. Внутренняя.Федеральная Политика. Внутренняя.Региональная Политика.Внешняя...
Глава 4. Документальные системы 67 Таким образом, с помощью таких языков производится классификация со- общений, т.е. отнесение их к классам, обозначенным лексическими единицами (ЛЕ) ИПЯ. Поэтому такие языки получили название классификационных. Частным случаем классификационного ИПЯ является рубрикатор, лекси- ческими единицами которого являются названия тематических рубрик. В це- лом под рубрикатором некоторой предметной области понимается ориентиро- ванный граф, состоящий из независимых деревьев. Листья деревьев будем на- зывать рубриками - объектами, инкапсулирующие знания о конкретных фраг- ментах данной предметной области. Все нелистовые вершины являются клас- сификационными родово-видовыми обобщениями листовых вершин и исполь- зуются лишь при ведении информационного поиска. Обычно рубрикатор формируется группой экспертов, на основании их зна- ний о предметной области с учетом информационных потребностей пользо- вателей. На рис. 4.2 приведен пример рубрикатора некоторой предметной об- ласти. Уровень 1 (темы) Уровень 2 Уровень Y-1 Уровень Y (рубрики) Рис. 4.2. Пример рубрикатора Следует подчеркнуть одну особенность классификационных языков. По- скольку сложные понятия задаются заранее, до начала процедуры записи сооб- з*
68 Базы данных. Интеллектуальная обработка информации щсний с помощью ИПЯ, образующие их слова также заранее связаны (скоор- динированы) определенными связями. Поэтому такие языки носят название предкоординируемых. Другой тип языков составляют дескрипторные ИПЯ, в которых ЛЕ заранее не связаны никакими текстуальными отношениями. Сложные синтаксические конструкции - предложения или фразы - создаются в этих языках путем объе- динения (координации) ЛЕ во время процедуры представления смыслового содержания документов системы. Готовых предложений или фраз в таких язы- ках нет, поэтому отсутствуют ограничения на составление сложных понятий. Фактически из небольшого числа ЛЕ данные языки позволяют строить предло- жения, выражающие практически любой смысл. Такие ИПЯ носят также на- звание носткоординируемых, поскольку координация между словами предло- жения возникает во время его записи. Различают дескрипторные ИПЯ с грамматикой и без грамматики. Первые характеризуются наличием ряда жестких правил формирования синтаксичес- ких конструкций Например, при использовании дескрипторного ИПЯ с пози- ционной грамматикой, в котором при описании действий принято на первом месте записывать наименование действия, далее субъекта, а затем объекта это- го действия, фраза: "Иванов владеет автомобилем" может выглядеть так: "вла- деть Иванов автомобиль". В дескрипторных ИПЯ без грамматики такие прави- ла отсутствуют, и порядок следования ЛЕ в ПОД или ПП не играет роли. Т.е. приведенный выше пример может быть одинаково представлен последователь- ностями "владеть Иванов автомобиль", "Иванов владеть автомобиль" и т.п. Кроме того, различают дескрипторные ИПЯ с контролируемой и со свободной лексикой. Лексический состав первых строго ограничен и зафиксирован в словаре ИПЯ, в то время как на лексический состав вторых не налагается никаких ограни- чений, и он может постоянно пополняться за счет включения новых ЛЕ. 4.4. Обработка входящей текстовой информации Т.к. документы, поступающие на вход ДИПС, записаны на ЕЯ, в ней обяза- тельно должна проводиться операция перевода текстов входных документов с ЕЯ на ИПЯ. Тип используемого ИПЯ оказывает сильное влияние на суть про- цессов обработки информации в конкретных ДИПС. В случае применения ИПЯ дескрипторного типа такая операция перевода называется индексированием, при использовании рубрикатора - рубрицированием. На сегодняшний день среди дескрипторных ИПЯ наибольшее распростра- нение в автоматизированных ДИПС получили языки без грамматики и без кон- троля по словарю При их использовании говорят о полнотекстовом индекси- ровании.
Глава 4. Документальные системы 69 В операции перевода можно выделить два этапа: 1. Анализ смыслового содержания текста с целью выделения из него сведе- ний об известных системе объектах, их свойствах, а также отношениях между ними. 2. Выражение этих сведений на ИПЯ, т.е. принятие решения о приписыва- нии данному сообщению выражений на ИПЯ (о включении соответству- ющих выражений на ИПЯ в ПОД). Этап анализа смыслового содержания текста связан с необходимостью ис- пользования лингвистических и экстралингвистических знаний. Лингвистичес- кие знания являются общими для одного языка и на сегодняшний день являют- ся достаточно хорошо формализованными, в то время как экстралингвистичес- кие сильно зависят от конкретной предметной области, а задача их формализа- ции является одной из самых сложных. В этой связи в современных ДИПС этап анализа текста чаще всего сводится к лингвистическому анализу, прово- димому с целью нормализации слов и словосочетаний. Под нормализацией слов понимается их приведение к канонической форме (например, для существи- тельных - именительному падежу, единственному числу и т.п.), под нормали- зацией словосочетаний - нормализация составляющих и запись их в опреде- ленной последовательности (например, сначала записывается основное слово, а затем - зависимые слова). Нормализованные слова и словосочетания часто называют терминами. 4.4.1. Лингвистический анализ текста Лингвистический анализ текста может состоять из двух этапов: 1. морфологического анализа; 2. синтаксического анализа. Цель морфологического анализа состоит в получении основ (под основой понимается словоформа с отсеченным окончанием) со значениями граммати- ческих категорий (например, часть речи, род, число, падеж) для каждой из сло- воформ. Различают точные и приближенные методы морфологического анализа. Точных методы базируются на использовании словаря основ слов или слово- форм, приближенные - на экспериментально установленной связи между ко- нечными буквосочетаниями словоформ и их грамматической информацией. Использование словаря словоформ в точных методах позволяет легко пре- одолеть трудности морфологического анализа, связанные с такими явлениями в русском языке, как, например, чередование гласных и согласных. При таком подходе задача получения основ слов и грамматических признаков сводится в основном к поиску в словаре и выбору соответствующей информации (соб- ственно же морфологический анализ требуется лишь в том случае, если слово-
70 Базы данных. Интеллектуальная обработка информации форма не найдена в словаре). При достаточно полном словаре скорость обра- ботки материала достаточно высока, но объем необходимой памяти в 2-3 раза больше, чем при использовании словаря основ. Морфологический анализ с использованием словаря основ базируется на флективном анализе, цель которого - правильное выделение основы слова. Основная трудность при использовании данного подхода связана с явлением омонимии основ слов. Для ее устранения проверяется совместимость выде- ленной основы слова и его окончания. В основе приближенных методов морфологического анализа лежит гипоте- за, согласно которой по конечным буквам и буквосочетаниям можно практичес- ки однозначно определить грамматический класс слова. Основа слова выделяет- ся следующим образом - от конца слова последовательно отсоединяется по 1 -й букве и полученные буквосочетания сравниваются со списком окончаний, соот- ветствующих данному грамматическому классу. Как только появится совпаде- ние, делается вывод о том, что оставшаяся часть слова - его основа. Для анализа обычно хватает биграмм, триграммы и четырехграммы используются редко. В результате проведения морфологического анализа могут возникать нео- днозначности при определении грамматической информации, которые снима- ются после проведения синтаксического анализа. Задачей синтаксического анализа является осуществление грамматическо- го разбора предложений на основе информации, заложенной в словаре. На этом этапе выделяется подлежащее, сказуемое, дополнение и т.п., между которыми указываются связи по управлению в виде дерева зависимостей. Любые средства синтаксического анализа состоят из двух частей: базы зна- ний о конкретном языке и собственно алгоритма синтаксического анализа, те. набора стандартных операторов, обрабатывающих текст на основе этих зна- ний. Источником знаний (грамматических) являются данные, полученные в результате морфологического анализа, а также различные таблицы, которые априорно заполнены стандартным образом и представляют собой результат эмпирической обработки текстов на ЕЯ человеком с целью выделения опреде- ленных закономерностей, необходимых для проведения синтаксического ана- лиза, Основу этих таблиц составляют совокупности конфигураций или наборы валентностей (синтаксических и семантико-синтаксических), представляющих собой списки лексических единиц с указанием для каждой из них всех возмож- ных вариантов связей с другими единицами выражения на ЕЯ (т е. потенциаль- ных связей). При практической реализации синтаксического анализа старают- ся добиваться полной независимости правил переработки данных таблиц от их содержимого, чтобы изменение в случае необходимости этого содержимого не влекло за собой перестройку самого алгоритма. Более подробно см. книгу [15].
Глава 4. Документальные системы 71 4.4.2. Автоматическое индексирование Автоматическое индексирование документов может основываться на про- стых, однословных или многословных составных терминах (фразах). Про- стые, однословные термины далеко не идеальны для индексирования, по- скольку смысл слов вне контекста нередко бывает неоднозначным. Терми- ны-фразы более осмысленны, обладают большей дискриминирующей мо- щью. Для генерации фраз может использоваться как синтаксический ана- лиз, так и ряд эвристических алгоритмов. Ниже приведено описание одного из них. Предположим, что термин-фраза состоит из основы фразы (обычно это ес главная часть) и остальных компонентов. Термин с частотой вхождения в доку- менты, превышающей установленный порог, например df> 2, отмечается как основа фразы. Другими компонентами фразы должны быть термины со сред- ней или низкой частотой вхождения. При этом учитывается их связь с основой фразы, например, размещение их в одном предложении или на некотором за- данном расстоянии друг от друга. Для генерации групп взаимосвязанных слов по замеченным закономернос- тям совместного их вхождения в документы применяются методы группирова- ния или кластеризации терминов. Если представить матрицу терминов-доку- ментов в виде двухмерного массива, то вышеупомянутый метод сравнивает друг с другом столбцы матрицы и делает заключение о том, входит ли та или иная группа терминов в несколько документов совокупности. Если такое неоднок- ратное вхождение имеет место, то термины считаются связанными и группи- руются в один класс. Простые и составные термины, выполняющие чисто грамматическую фун- кцию, заносятся в так называемые списки исключения и удаляются. Основу современных методов автоматического индексирования составляет присваивание весовых коэффициентов терминам на основе статистических характеристик. Предположим, что в исследуемой совокупности имеется N документов. Пусть tf - частота вхождения термина Т в документ D.. Индексирование на основе частоты термина позволяет достичь лишь одной из целей индексирова- ния - полноты поиска. Между тем термины, сконцентрированные в отдельных документах совокупности, можно использовать для повышения точности по- иска. Это позволит отделить документы, где такие термины встречаются, от тех, где их нет. Пусть df. - число документов, в которых встречается термин Г. Тогда вели- чина log(.V/(/f) может служить хорошим индикатором того, является ли термин Г дискриминатором документов.
72 Базы данных. Интеллектуальная обработка информации Частоту термина и полученную выше величину можно объединить в рам- ках единой модели индексирования по частоте (здесь w обозначает вес терми- на Г в документе D). wtJ = /4iog(y/4p. Еще один статистический метод индексирования основывается на дискри- минации по термину. Здесь каждый документ рассматривается как точка в про- странстве документов. Чем больше сходства у множеств терминов двух доку- ментов, тем ближе расположены соответствующие точки в пространстве доку- ментов (иными словами, повышается плотность точек в пространстве доку- ментов), и наоборот. В рамках данной схемы можно оценивать качество термина как дискрими- натора документа, основываясь на том, какие изменения произойдут в простран- стве документов после введения термина в индекс. Для количественной оцен- ки такого изменения удобно использовать увеличение или уменьшение рассто- яния между документами. Термин является хорошим дискриминатором, если его введение увеличивает среднее расстояние между документами. Другими словами, термин с хорошими дискриминирующими качествами снижает плот- ность в пространстве документов. Дискриминирующая характеристика терми- на Г, обозначаемая dvJf вычисляется как разность между плотностями простран- ства документов до и после введения термина Т. Оказалось, что часто встреча- ющиеся термины имеют отрицательные значения дискриминирующих харак- теристик, термины со средней частотой - положительные, а для редко встреча- ющихся терминов эти значения близки к нулю Для совместного учета частоты термина и его дискриминирующей характеристики применяют схему взвеши- вания, основанную на выражении wu=ЛА Полученные значения весов терминов могут использоваться в процессе принятия решения о включении каждого из терминов в ПОД. Однако чаще ре- шение не принимается, а в ПОД заносятся все термины, встретившиеся в доку- менте, и их веса. 4.4.3. Автоматическое рубрицирование В современных исследованиях по данной проблеме выделяют два основ- ных подхода [18]: рубрицирование, основанное на знаниях, и рубрицирование, основанное на обучении по примерам.
Глава 4. Документальные системы 73 4.4.З.1. Методы автоматического рубрицирования, основанные на знаниях В системах, реализующих данный подход, используются заранее сформи- рованные базы знаний, в которых описываются языковые выражения, соответ- ствующие той или иной рубрике, правила выбора между рубриками. Процесс создания подобных систем часто сравнивают с созданием экспертных систем для диагностики и классификации. Наибольшее распространение среди данных методов получили две модели представления знаний: модель семантической сети (см. [18]) и продукционная модель (см. [17]). В первом случае знания о предметной области описываются независимо от рубрикатора в специального вида тезаурусе, который связывается с одним или более рубрикаторами гибкой системой отношений. Под тезаурусом понимается иерархическая сеть понятий и отношений между ними. Тезаурус может быть разработан независимо от какой-либо системы руб- рицирования. В нем могут быть накоплены разнообразные варианты представ- ления в тексте понятий предметной области (дескрипторов). В качестве вари- антов (синонимов или эквивалентов) дескрипторов в тезаурусе встречаются именные и глагольные группы, отдельные существительные, прилагательные или глаголы Тезаурус может быть разработан в полуавтоматическом режиме. Например, сначала обрабатывается совокупность документов большого объема при помо- щи программ морфологического и синтаксического анализа с целью выделе- ния терминоподобных групп слов. Затем выбранные группы слов исследуются экспертами и принимается решение относительно того: • может ли данная группа слов быть включена в тезаурус (в этом случае она становится термином); • является ли данный термин дескриптором или синонимом другого деск- риптора; • как должны быть описаны отношения данного термина. Кроме того, в комплекс знаний могут также быть включены дополнитель- ные базы данных, например: географическая база данных, содержащая описа- ния географических объектов, база данных организаций, персоналий и т.д. Тезаурус и базы данных имеют одну структуру и состоят из следующих частей: 1. Дескрипторов, которые соответствуют понятиям или конкретным объектам. Обычно дескриптором является существительное или именная группа. 2. Каждый дескриптор имеет совокупность текстовых входов или синони- мов. Текстовый вход может быть существительным, прилагательным или
74 Базы данных. Интеллектуальная обработка информации группой существительного. Одно слово может быть синонимом различ- ных дескрипторов. Устранение смысловой неоднозначности производится во время автоматического обработки документа. 3. Отношения между дескрипторами внутри каждой базы данных, на- пример: • более широкий термин (выше); • более узкий термин (ниже), • связанный термин (ассоциация); • целое для термина (часть); • часть для термина (целое). 4. Отношения между дескрипторами различных баз данных В данном слу- чае добавляется отношение - "равенство термина", которое появляется, когда базы данных содержат дескрипторы, соответствующие одному по- нятию или объекту. Дескриптор D1 находится в дескрипторной среде дескриптора D, если между DI и D существует дескрипторное отношение или существует тран- зитивная зависимость. Дескриптор D называют главным дескриптором среды. Иерархическая организованность тезауруса и наличие тезаурусных связей позволяет использовать понятия среды дескрипторов и главных дескрипторов (опорных дескрипторов) среды для формирования дескрипторных кустов, ис- пользуемых при автоматическом рубрицировании текстов в данной техноло- гии. В целом же комплекс знаний представляет собой иерархическую сеть, пол- нота и целостность которой поддерживается и отслеживается экспертами. Существует два типа представления рубрик последовательностью опорных дескрипторов в виде булевских нормальных форм. • дизъюнкция опорных дескрипторов D, v D, v ... v Dn; • конъюнкция дизъюнкций опорных дескрипторов (D.. v D„ v ... v D. )&...& (D . v D , v ... v D .). ' II 12 In7 v ml m2 mk7 Для каждой рубрики рубрикатора может быть выбран свой тип представления. После того как для всех рубрик рубрикатора установлены связи с соответ- ствующими опорными дескрипторами, автоматически определяются рубрики для всех дескрипторов тезауруса. Таким образом, для каждого дескриптора создается список соответствующих рубрик с указанием того, в какую из дизъ- юнкций рубрики входит данный дескриптор. Каждая рубрика в данной технологии фиксирует запрос пользователя, ко- торый описывается посредством дескрипторов тезауруса. При этом в тезауру- се находится куст дескрипторов, соответствующий данной рубрике, и устанав-
Глава 4. Документальные системы 75 ливается связь между рубрикой и наивысшим дескриптором (опорный деск- риптор рубрики) в иерархии дескрипторного куста. Одной рубрике может со- ответствовать несколько опорных дескрипторов. Дальнейшее развитие данной технологии состоит в предоставлении пользо- вателю возможности описывать рубрику на ЕЯ. Суть процесса рубрицирования в рамках данного подхода состоит в выде- лении из текста опорных дескрипторов и отношений между ними с последую- щим сопоставлением их с описаниями рубрик. Представленная технология автоматического рубрицирования текстов по- зволяет классифицировать различные тины текстовой информации, быстро настраиваться на различные рубрикаторы и типы документов. Но и имеет су- щественные ограничения в своем использовании, так как трудоемкость разра- ботки тезауруса достаточно высока и требует больших временных затрат (от нескольких месяцев до нескольких лет), кроме того, формирование тезауруса производится в соответствии с той или иной предметной областью, что делает невозможным использование одного тезауруса при классификации текстов из различных предметных областей. Основ} методов, использующих продукционную модель представления зна- ний, составляет выделение из текста концепций (или понятий), заранее опи- санных экспертом. Каждое понятие предметной области описываются экспертом при помощи особой конструкции - определения понятия, объединяющего в себе набор ха- ракгерных для данного понятия слов и фраз. Определение понятия представля- ет собой выражение, записанное на специальном языке, позволяющем объеди- нять эти слова и фразы при помощи стандартных булевых функций. В опреде- лении понятия при записи слов и фраз допускается использование символов- шаблонов (&, * и т.д.), что позволяет отказаться от процедуры морфологичес- кого анализа, используемой для нормализации лексики документа. Поскольку описание понятий производится экспертом вручную, то это не доставляет осо- бых неудобств, зато позволяет значительно повысить производительность. В дополнение к этим функциям в языке определения понятий может быть пре- дусмотрена возможность введения контекстуальных ограничений, заключаю- щаяся в указании порядка следования слов в тексте, расстояния между словами и т.д. Кроме того, фразам в определении понятия могут быть назначены экс- пертные веса, показывающие, насколько каждая из фраз характерна для данно- го понятия. Ниже приведен пример определения понятия золото: (gold (&n (reserve ! medal! jewelry)))
76 Базы данных. Интеллектуальная обработка информации Процесс рубрицирования разбивается на два этапа. Первым из них являет- ся выделение понятий из текста, которое можно представить как процесс рас- познавания, основывающийся на использовании данных из базы определений. Решение о наличии понятия в тексте принимается путем вычисления справед- ливости выражения, определяющего понятие, относительно данного текста. Если выражение справедливо, то считается, что понятие присутствует в тексте. Кроме того, если в определении понятия присутствуют экспертные веса, то вычисляется вес или вероятность появления данного понятия в обрабатывае- мом тексте с учетом частоты встречаемости фраз в тексте сообщения. На втором этапе принимается решение о принадлежности текста к конк- ретной рубрике. На его вход поступают выделенные на первом этапе из текста понятия, с возможными весами. Решение принимается на основе правил руб- рицирования, которые, так же как и определения понятий, формулируются экс- пертом заранее с использованием языка правил. Выражения, записанные на языке правил, схожи с конструкцией if-then в алгоритмических языках программирования. (if test: (or [australian-dollar-concept] (and [dollar-concept] [austra I ia-concept] (not [us-dollar-concept]) (not [us-dollar-concept]) ...)) action: (asssign australian-dollar-category)) Язык правил позволяет основывать решения на комбинации понятий, по- явившихся в тексте. Кроме того, он позволяет учесть вероятность появления, а также положение каждого понятия в тексте. Существует также возможность учета длины сообщения. Совокупность определений понятий и правил рубрицирования составляет базу правил, (см. рис. 4.3) Разработка базы правил представляет собой очень трудоемкий процесс, требую- щий привлечения высоко квалифицированных специалистов как в предметной об- ласти, так и в области инженерии знаний. Суть этого процесса заключается в обра- ботке большего массива отрубрицированных документов, в ходе которого для каж- дой из рубрик выявляются статистические закономерности, основанные на частоте встречаемости слов и фраз, а также совместной частоте встречаемости отдельных из них. Полученные данные затем используются экспертами при выявлении характер- ных слов и фраз для описания понятий и формирования правил рубрицирования.
Глава 4. Документальные системы 77 Рис. 4.3. Процесс рубрицирования. Преимуществами данного подхода являются высокое качество рубрициро- вания и высокое быстродействие на тех текстовых потоках, для которых они проектировались. Основными недостатками подобных систем являются, как и в предыдущем случае: • высокая трудоемкость и значительные затраты, необходимые для разра- ботки системы; • жесткая привязка баз знаний и алгоритмов к предметной области, конк- ретному рубрикатору, а также размеру и формату рубрицируемых тек- стов. Большинство же систем автоматического рубрицирования текстов требуют более быстрого и дешевого построения. 4.4.3.2. Методы, основанные на обучении по примерам Системы автоматического рубрицирования, основанные на обучении по примерам, рассматривают в качестве понятий, которым нужно обучиться, руб- рики. Машинное обучение производится на основе примеров текстов, которые были заранее отрубрицированы экспертом вручную. Можно выделить статистические и нейросетевые методы рубрицирования. Идея статистического рубрицирования состоит в определении степени со- ответствия терминологического портрета документа и терминологического портрета рубрик на основе статистических характеристик субъектов сравне- ния. Под терминологическим портретом документа понимают совокупность наиболее важных терминов, содержащихся в тексте документа. В качестве по-
78 Базы данных. Интеллектуальная обработка информации казателя важности термина в документе чаще всего используется частота его встречаемости. Под терминологическим портретом рубрики понимается набор наиболее характерных для этой рубрики терминов с их весами (в работах по статистическим моделям рубрицирования под терминологическим портретом рубрики часто понимается множество ее характеристических терминов и час- тоты их встречаемости в рубрике). Таким образом, семантика рубрики задает- ся однозначно только ее терминологическим портретом. Отметим, что терминологический портрет можно рассматривать как част- ный случай тезауруса, имеющего более простую модель и допускающего его автоматическое построение и корректировку. Формирование терминологических портретов каждой рубрики производится экспертом не вручную, а с помощью одной из технологий обучения рубрикато- ра. При этом роль эксперта сводится к формированию для каждой рубрики обу- чающей выборки - совокупности максимально коротких фрагментов текстов, содержащих полное и минимально избыточное лингвистическое наполнение одной обучаемой рубрики. Выделение характеристических терминов для рубрики производится авто- матически, на основе их весов, которые могут быть получены в процессе ана- лиза обучающей выборки. Например, = log dftr где Nf - количество документов в обучающей выборке, принадлежащих рубрике г, dftr количество документов в обучающей выборке, принадлежащих рубрике г и содержащих термин t. Список характеристических терминов руб- рики упорядочен по убыванию весов терминов в ней. Таким образом, единую модель для всех рубрик одного рубрикатора можно представить в виде двухмерной матрицы весов {и> }. Рубрицирование выпол- няется по некоторому решающему правилу, учитывающему как важность тер- минов в документе, так и их веса для рубрик. Например, можно считать, что документ принадлежит рубрике г, если Uft™tr > t где tf- частота встречаемости термина г в документе, ^-пороговое значение для рубрики г. Значение левой части указанного выражения может использовать- ся в качестве количественной оценки релевантности документов рубрикам. Пороговые значения для каждой из рубрик определяются таким образом, что- бы при применении решающего правила ко всей обучающей выборке к данной рубрике было отнесено максимальное количество релевантных и минимальное
Глава 4. Документальные системы 79 количество не релевантных ей текстов. Вычисление может производиться как при помощи различных математических методов, так и эмпирическим путем. К достоинствам такого подхода относятся: • простота определения семантики рубрики, что дает возможность орга- низовать автоматическое обучение рубрик; • универсальность подхода, заключающаяся в том, что таким способом может быть определена семантика очень широкого класса рубрик из лю- бой предметной области; • наличие аппарата количественной оценки релевантности документов рубрикам; • высокое быстродействие. Главным недостатком данной группы методов является более низкое по сравнению с методами, основанными на знаниях, качество рубрицирования. Основой нейросетевых методов рубрицирования текстов является исполь- зование нейронной сети (НС) в качестве обучаемого классификатора. Считает- ся, что в наличии имеется подборка примеров текстов, каждый из которых по- мечен как релевантный или нерелевантный определенной рубрике. Задача НС, обученной на этих примерах, состоит в определении степени релевантности любого нового текста данной рубрике. Данный подход предполагает, что семантика рубрики однозначно задается примерами принадлежащих ей текстов. Поскольку НС оперирует векторами, для представления текста использует- ся одна из векторных моделей, например [19]: fv<=><7, г = < i = ],D , a где D - мощность словаря; d - лексическая единица из словаря; Т - текст, рассматриваемый как неупорядоченное множество лексических единиц; количество d. е Т. Поскольку обучающая выборка состоит из примеров с заранее известной принадлежностью текстов рубрикам, то имеет смысл использовать НС, в кото- рых реализована парадигма обучения с учителем. Так, в [19] предлагается ис- пользовать вероятностную нейросеть (ВНС). НС имеет D входов и 2 выхода, один из которых отражает вероятность принадлежности предъявляемого тек- ста к классу релевантных запросу текстов (Ррел), другой - к классу нерелеван- тных. На практике имеет смысл использовать лишь первый, поскольку сумма значений на выходах равна 1. Схематично описываемый процесс представлен на рис 4 4 и рис. 4.5.
80 Базы данных. Интеллектуальная обработка информации Рис. 4.4. Обучение Рис. 4.5. Определение вероятности релевантности текста рубрике Словарь рубрики могут составлять как простые, так и составные термины. Его формирование производится так же, как и в статистических методах, с той лишь разницей, что веса терминов в дальнейшем не используются. По качеству рубрицирования нейросетевые методы рубрицирования зани- мают среднее положение между статистическими методами и методами, осно- ванными на знаниях. К основным недостаткам нейронных сетей чаще всего относят два факта: I. Экспертам непонятно, как нейронная сеть работает. 2. На обучение сети требуется очень много времени. Однако, ВНС выгодно отличается тем, что имеет: 1. строгое математическое обоснование (по сути ВНС представляет собой оптимальный по Байесу классификатор); 2. огромное (в тысячи раз большее) по сравнению с другими нейросетевы- ми парадигмами быстродействие.
Глава 4. Документальные системы 81 Кроме того, характер решаемой задачи позволяет существенно оптимизи- ровать ВНС. а также устранить зависимость объема вычислений от мощнос- ти словаря [19]. Этот факт позволяет полностью отказаться от усечения сло- варя, опасного тем, что в ходе его могут быть отброшены существенные для классификации термины. В целом, выбор данной нейросетевой парадигмы позволяет свести к минимуму указанные недостатки. 4.5. Поиск текстовой информации 4.5.1. Модели поиска текстовой информации Модель поиска текстовой информации характеризуется четырьмя парамет- рами: • представлением документов и запросов; • критерием смыслового соответствия; • методами ранжирования результатов запроса; • механизмами обратной связи, обеспечивающими оценку релевантности пользователем. Рассмотрим наиболее распространенные модели поиска с позиции первых трех параметров (обсуждению четвертого посвящен п. 4.5.2). Булева модель представляет документы с помощью набора терминов, при- сутствующих в индексе, каждый из которых рассматривается как булева пе- ременная. При наличии термина в документе соответствующая переменная принимает значение True. Присваивание терминам весовых коэффициентов не допускается. Запросы формулируются как произвольные булевы выраже- ния, связывающие термины с помощью стандартных логических операций: AND, OR или NOT. Мерой соответствия запроса документу служит значение статуса выборки (RSV, retrieval status value). В булевой модели RSV равно либо 1, если для данного документа вычисление выражения запроса дает True, либо 0 в противном случае. Все документы с RSV = 1 считаются релевантны- ми запросу. Такая модель проста в реализации и применяется во многих коммерчес- ких системах. Она позволяет пользователям вводить в свои запросы произ- вольные сложные выражения. Однако эффективность поиска обычно невы- сока. К тому же, ранжировать результаты невозможно, так как все найден- ные документы имеют одинаковые RSV, а терминам нельзя присвоить весо- вые коэффициенты. Нередко результаты выглядят противоестественно. На- пример, если пользователь указал в запросе десять терминов, связанных логической операцией AND, документ, содержащий девять таких терминов, в выборку не попадет. Для повышения эффективности поиска в ИПС часто
82 Базы данных. Интеллектуальная обработка информации применяется обратная связь с пользователем. Как правило, система просит пользователя указать релевантность или нерелевантность нескольких доку- ментов, включенных в начало списка вывода. Поскольку результаты не ран- жируются, выбор документов для подобной экспертной оценки релевант- ности затруднен. Модель нечетких множеств основывается на теории нечетких мно- жеств, допускающей (в отличие от обычной теории множеств) частичную принадлежность элемента тому или иному множеству. Здесь логические операции переопределены таким образом, чтобы учесть возможность не- полной принадлежности множеству, а обработка запросов пользователя выполняется аналогично булевой модели. Тем не менее ИПС на основе подобной модели оказывается практически столь же не способной клас- сифицировать полученные результаты, что и системы, базирующиеся на булевой модели. Строгая булева модель и модель, использующая методы теории нечетких множеств, требуют меньших объемов вычислений (при индексировании и оценке соответствия документов запросу), чем другие модели. Они менее сложны алгоритмически и предъявляют не очень жесткие требования к дру- гим ресурсам, таким как дисковое пространство для хранения представлений документов. Пространственно-векторная модель основана на предположении, что совокупность документов можно представить набором векторов в пространстве, определяемом базисом, из п нормализованных векторов терминов. Значение первого компонента вектора представляющего до- кумент отражает вес термина в нем. Запрос пользователя также пред- ставляется n-мерным вектором. Показатель RSV, определяющий соот- ветствие документа запросу, задается скалярным произведением век- торов запроса и документа. Чем больше RSV, тем выше релевантность документа запросу Достоинство подобной модели в ее простоте. Она позволяет легко реализо- вать обратную связь для оценки релевантности пользователем. В то же время приходится жертвовать выразительностью спецификации запроса, присущей булевой модели. Вероятностные модели. В пространственно-векторной модели подра- зумевается, что векторы терминов, ортогональны и существующие взаимо- связи между терминами не должны приниматься во внимание. Кроме того, в такой модели не специфицируется степень соответствия "запрос - доку- мент" и она оценивается достаточно произвольно. Вероятностная модель учитывает все взаимозависимости и связи терминов, а также определяет
Глава 4. Документальные системы 83 такие основные параметры, как веса терминов запросов и форма соответ- ствия "запрос - документ". Данная модель базируется на двух главных параметрах. Рг(ге1) и Pr(nonrel), те. на вероятности релевантности и нерелевантности документа запросу пользо- вателя, которые вычисляются на основе вероятностных весовых коэффициен- тов терминов и фактического присутствия терминов в документе. Подразуме- вается, что релевантность является бинарным свойством, и поэтому Pr(rel) = 1 - Pr(nonrel). Кроме того, в этой модели применяются два стоимостных пара- метра: al и а2. Они характеризуют соответственно потери, связанные с вклю- чением в результат нерелевантного документа и пропуском релевантного доку- мента. Данная модель требует определения вероятностей вхождения термина в релевантные и нерелевантные части совокупности документов, оценить кото- рые довольно сложно Между тем она выполняет важную функцию, объясняя процесс поиска и предлагая теоретическое обоснование методов, применяв- шихся ранее эмпирически (например, введение некоторых систем определения весовых коэффициентов терминов). 4.5.2. Методы введения обратной связи с пользователем В отличие от среды баз данных в ДИПС нет четкого представления доку- ментов и пользовательских запросов Пользователи обычно начинают с неточ- ного и неполного запроса, а следовательно - с низкой эффективности поиска, постепенно уточняя его методом итераций. Система поддерживает обратную связь с пользователем, позволяя тем самым оценить релевантность докумен- тов, найденных по первоначальному запросу. Такой подход позволяет повы- сить эффективность поиска. Чтобы упростить представление обратной связи, будем считать, что исполь- зуется пространственно-векторная модель поиска, а пользователю предостав- лена возможность просто отметить: релевантен документ или пет. Множество документов, считающихся релевантными, формируют положи- тельную обратную связь, а множество документов, рассматриваемых как нере- левантные, - отрицательную. Существуют два основных подхода к использованию такой обратной связи: модификация запроса и модификация представления документов. Методы, модифицирующие представление запроса, влияют только на текущий сеанс, но никак не сказываются на обработке других запросов. Методы, основанные на модификации представления документов, оказывают влияние и на эффек- тивность поиска в последующих запросах.
84 Базы данных. Интеллектуальная обработка информации Базовое допущение, на которое опирается методология обратной связи, состоит в том, что документы, релевантные некоторому пользовательскому запросу, близки друг к другу в векторном пространстве, т. е. соответствую- щие векторы в каком-то смысле ’’похожи" друг на друга. Использование об- ратной связи в механизмах поиска информации требует более описательного и семантически богатого представления документов, чем то, что получается в результате индексирования лишь названий или рефератов документов. Один из возможных способов - индексирование всего документа. Пространствен- но-векторную модель нетрудно адаптировать ко всем методам поиска с об- ратной связью, в то время как вероятностная модель требует специальных расширений. Модификация представления запроса. Существуют три способа повыше- ния эффективности поиска путем модификации представления запроса. Пер- вый - модификация весов терминов - предусматривает корректировку весов терминов в запросе, осуществляемую путем сложения вектора запроса и век- торов, представляющих документы, которые получили положительную оцен- ку (положительную обратную связь). Наряду с этим возможна дополнительная корректировка за счет вычитания векторов, входящих во множество с отрица- тельной обратной связью. Переформулированный таким образом запрос дол- жен возвращать дополнительные релевантные документы, аналогичные тем, что попали во множество с положительной обратной связью. Данный процесс можно повторять итерационно до тех пор, пока качество выборки и число до- кументов в ней не достигнут приемлемого уровня. Результаты экспериментов показывают, что положительная обратная связь более содержательна и эффективна. Причина в том, что документы из множе- ства с положительной обратной связью обычно более однородны, чем форми- рующие отрицательную обратную связь. Один из эффективных методов ис- пользует все документы с положительной обратной связью, но для вычитания из запроса берет только те векторы с отрицательной обратной связью, которые обладают наибольшим рангом нерелевантности. Второй метод, называемый методом расширения запроса, модифицирует исходный запрос путем добавления к нему новых терминов. Эти термины вы- бираются из документа с положительной обратной связью и сортируются на основе их весов. К запросу добавляется заранее заданное число терминов из начала отсортированного списка. Эксперименты показывают, что последние три метода сортировки дают наилучшие результаты и добавление ограничен- ного числа наиболее важных терминов предпочтительнее учета всех терминов. При включении в запрос более 20 дополнительных терминов эффективность практически не увеличивается.
Глава 4. Документальные системы 85 В некоторых случаях представленные два метода не дают удовлетворитель- ных результатов из-за неоднородности документов с положительной обратной связью (иными словами, они не образуют компактного кластера в простран- стве документов) или из-за "вкрапления" нерелевантных документов во мно- жество релевантных. Один из способов обнаружения указанной ситуации - кластеризация документов с положительной обратной связью и выявление не- скольких однородных кластеров. Такой метод называется расщеплением зап- роса. Если множество документов кластеризуемо, то запрос разбивается на подзапросы таким образом, чтобы каждый подзапрос представлял один клас- тер. Затем можно настроить весовые коэффициенты терминов подзапроса или расширить его с помощью методов, уже описанных выше. Модификация представления документов. Данный подход предусматрива- ет настройку векторов документов на основе обратной связи. Его называют также кластеризацией, ориентированной на пользователя. Суть метода - кор- рекция весовых коэффициентов векторов, попавших в выборку, с тем чтобы приблизить их к вектору запроса. В то же время веса найденных нерелевант- ных документов модифицируются таким образом, чтобы отдалить их от векто- ра запроса. При этом следует соблюдать осторожность - отдельные смещения документов должны быть невелики, так как оценка релевантности пользовате- лем неизбежно бывает субъективной. Более подробно модели поиска и механизмы обратной связи рассмотрены в статье [16]. 4.6. Оценка качества документальных информационно-поисковых систем Ранее отмечалось, что в ПОД и ПП отражается лишь основное смысловое содержание поступающих сообщений в сокращенном виде. Поэтому метод информационного поиска, основанный на сопоставлении ПП с ПОД, не в со- стоянии полностью обеспечить отыскания всех документов отвечающих ин- формационному запросу. Это приводит к тому, что часть документов, отвечаю- щих запросу, т.е. релевантных ему, остается невиданной потребителю. В то же время во множестве выданных ему документов присутствуют и такие, которые не отвечают запросу, т.е. не являются релевантными. Таким образом, практи- чески любой реальной ДИПС присущи два основных типа ошибок: • ошибки 1-го рода (или пропуск цели): невыдача потребителю фактичес- ки релевантных его запросу документов; • ошибки 2-го рода (или ложная тревога, иначе шум): выдача потребите- лю нерелевантных документов, которые не отвечают поставленному зап- росу.
86 Базы данных. Интеллектуальная обработка информации Наличие ошибок 1 -го и 2-го рода в реальной системе обуславливает разби- ение всего массива документов системы по отношению к запросу на 4 подмас- сива: Разбиение массива документов Выданные Невы данные Релевантные А С Нерелевантные В D А - массив выданных релевантных документов; В - массив выданных нерелевантных документов; С - массив невыданных релевантных документов; D - массив невыданных нерелевантных документов; Введем следующие обозначения: а - количество выданных релевантных документов; b - количество выданных нерелевантных документов; с - количество невыданных релевантных документов; d - количество невыданных нерелевантных документов; Существуют следующие показатели эффективности ДИПС: 1. Коэффициент полноты р, характеризующий долю выданных релевант- ных документов во всем массиве релевантных документов: а Р = ----- а + с. 2. Коэффициент точности п, характеризующий долю выданных релевант- ных документов во всем массиве выданных документов: а п = ----г а + b • 3. Коэффициент шума е, характеризующий долю выданных нерелевантных документов во всем массиве выданных документов: 4. Коэффициент осадка q. характеризующий долю выданных нерелевант- ных документов во всем массиве нерелевантных документов: b 4“ b+d.
Глава 4. Документальные системы 87 5. Коэффициент специфичности к, характеризующий долю невиданных нерелевантных документов во всем массиве нерелевантных документов: d k “ b + d Часто для удобства перечисленные показатели измеряют в %, т.е. в указан- ных формулах появляется дополнительный сомножитель 100 %. При оценке качества реальных систем наиболее часто используются лишь коэффициенты полноты и точности. Ясно, что и точность поиска, и его полно- та зависят не только от свойств поисковой системы, но и от правильности пост- роения конкретного запроса, а также от субъективного представления пользо- вателя о том, что такое нужная ему информация. Однако при желании можно вычислить и средние значения полноты и точности для конкретной системы, протестировав ее на эталонной базе документов. Очевидно, хорошая поиско- вая система должна иметь как можно большие полноту и точность, желательно - 100%, т. е. находить все нужные документы и ни одного лишнего. Однако стопроцентное качество поиска невозможно, потому что на фиксированном уровне мощности поискового средства все попытки улучшить один из этих параметров приводят к ухудшению другого (см. рис. 4.6.) Рис. 4.6. Пример зависимости между коэффициентами полноты и точности Наряду с перечисленными показателями, которые основаны на сопряжен- ности релевантности и выдачи, целесообразно использовать также и другие показатели эффективности, что обычно и делается на практике К основным из них следует отнести: • быстродействие ДИПС (интервал времени между моментом формули- ровки запроса и получением ответа на него);
88 Базы данных. Интеллектуальная обработка информации • пропускная способность (оценивается количеством вводимых докумен- тов и количеством ответов в единицу времени при заданных значениях коэффициентов полноты и точности); • производительность (оценивается количеством пользователей системы и частотой обращения с их стороны); • надежность работы (оценивается вероятностью того, что система будет выполнять свои функции при заданных условиях в течение требуемого времени); • тип запросов, обслуживаемых системой.
Глава 5. Семантическое моделирование в базах данных 5.1. Основные подходы к моделированию в базах данных Первоначально в теории БД основное внимание уделялось средствам эф- фективной организации данных и манипулирования ими. В результате возник- ли три основные модели данных: иерархическая, реляционная и сетевая. При этом явно или неявно предполагалось, что предложенные средства достаточно универсальны для представления знаний или информации о любых предмет- ных областях. Так, и сегодня приверженцы получившей наибольшее распрост- ранение реляционной модели зачастую утверждают, будто табличная форма представления данных является наиболее удобной и интуитивно понятной про- ектировщику. Однако проектирование базы данных в терминах этих моделей часто сво- дится к очень сложному и неудобному для проектировщика процессу, посколь- ку эти модели не содержат достаточных средств представления смысла дан- ных. Семантика реальной предметной области должна независимым от модели способом представляться в сознании проектировщика. Такое положение вещей приводит к замедлению процесса разработки БД и является источником потен- циальных ошибок. По этой причине в последние годы получило развитие направление, являв- шееся предметом активных исследований в конце 70-х - начале 80-х годов, - семантическое, или концептуальное, моделирование в базах данных. Его ос- новная цель - организация интерфейса проектировщика, а также конечного пользователя с информационной системой на уровне представлений о пред- метной области (ПО), а не на уровне струкгур данных. Интерес к этому на- правлению возрос в связи с развитием средств автоматизированного проекти- рования БД на основе CASE-технологий. В настоящее время определился основной подход к решению задач семан- тического моделирования в базах данных Он заключается в выделении двух уровней моделирования: уровня концептуального моделирования ПО и уровня моделирования собственно базы данных [22]. На верхнем уровне осуществляется переход от неформализованного описа- ния ПО и информационных потребностей конечного пользователя к их фор- мальному выражению с помощью специальных языковых средств. На нижнем - преобразование концептуальной модели ПО в схему БД и нормализация схе- мы БД.
90 Базы данных. Интеллектуальная обработка информации 5.2. Предметная область и семантика предметной области Понятие "предметная область" является базисным понятием в теории БД и поэтому нс имеет строгого определения. Чтобы выяснить его смысл, обратим- ся к понятиям объект и предмет. Объект - то, что существует вне нас и независимо от нашего сознания, явление внешнего мира, материальной действительности. Объекты потенциально обладают огромным количеством свойств и нахо- дятся в потенциально бесконечном числе взаимосвязей друг с другом. Однако среди всего множества свойств и взаимосвязей между объектами имеет смысл выделять лишь существенные, важные с точки зрения потребителя информа- ции. Предмет - объект, ставший носителем определенной совокупности свойств и входящий в различные взаимоотношения, которые представляют интерес для потребителей информации. Один и тот же объект может восприниматься раз- ными системами как разные предметы. Таким образом, предмет - это модель реального объекта. Совокупность объектов, информация о которых представляет интерес для пользователей, образует объектное ядро предметной области. Понятие "предметная область" соответствует точке зрения потребителей информации на объектное ядро, при которой выделяются только те свойства объектов и взаимосвязи между ними, которые представляют определенную прагматическую ценность и должны фиксироваться в базе данных. Таким об- разом, предметная область представляет собой абстрактную картину реаль- ной действительности, определенная часть которой фиксируется в качестве модели фрагмента действительности. В каждый момент времени ПО находится в одном из состояний, которое характеризуется совокупностью объектов и их взаимосвязей. Если объекты образуют объектное ядро, то совокупность взаимосвязей отражает структуру фрагмента действительности. С течением времени одни объекты исчезают, дру- гие появляются, меняются свойства и взаимосвязи. Тем не менее, возникаю- щие новые состояния считаются состояниями одной и той же ПО. Таким обра- зом, ПО целесообразно рассматривать как систему, переживающую свою исто- рию, которая состоит из определенной последовательности состояний. Введя пространство состояний, можно рассматривать в нем определенные траектории или последовательности состояний s ,s в которых находится ПО в моменты времени 0,1 ,...,t. Члены такой последовательности не могут быть совершенно произвольными, поскольку состояние st обычно каким-либо обра- зом связано с предшествующими состояниями s0, sp...,s . Поэтому ПО можно
Глава 5. Семантическое моделирование в базах данных 91 определить как класс всех действительно возможных последовательностей со- стояний. Такие последовательности называются траекториями ПО. Совокуп- ность всех общих свойств траекторий называется семантикой предметной об- ласти. 5.3. Концептуальные средства описания предметной области Поскольку объектное ядро произвольной ПО потенциально содержит бес- конечное число объектов, которые находятся в потенциально бесконечном мно- жестве взаимосвязей, ясно, что прямой подход к описанию ПО через описание всех объектов и взаимосвязей между ними обречен на провал. Очевидной альтернативой в этой ситуации является подход к описанию ПО, фиксирующий только то общее, что является неизменным и характери- зует ПО в любой момент времени или, говоря иными словами, отражающий семантику ПО. Отсюда следует, что необходимы специальные средства описания ПО, ко- торые были бы применимы к любым ПО, достаточно просто интерпретирова- лись людьми в конкретном фрагменте внешнего мира и одновременно явля- лись точными, структурированными и обозримыми (конечными). Последнее условие обеспечивает возможность применения ЭВМ. Приспособленность указанных средств для описания любой ПО означает, что они обязаны быть достаточно универсальными. Для обеспечения универ- сализма необходима высокая общность, абстрактность системы базисных ме- тапонятий и правил порождения новых понятий, которые допускают интер- претацию в любой ПО. В силу своей абстрактности средства описания ПО ста- ли называться концептуальными. Поэтому в теории БД принято говорить о кон- цептуальном, или информационно-логическом моделировании ПО. Результа- том процесса моделирования является концептуальная схема (модель) ПО. Далее изложена суть подхода, предложенного М. Ш Цаленко [22], харак- терной чертой которого является то, что в нем впервые сведены воедино раз- личные идеи, развитые во многих семантических моделях БД. 5.3.1. Понятие типа Тип - это понятие, объединяющее все объекты данного типа. В отличие от объекта, существующего в конкретный момент в конкретном месте, тип не имеет пространственно-временной локализации. Он охватывает все существовавшие, существующие и мыслимые объекты, относимые к данному типу. Типы обес- печивают непротиворечивое объединение локальных ’’точек зрения” различ- ных групп пользователей.
92 Базы данных. Интеллектуальная обработка информации Понятие типа не следует путать с понятием множества. По Кантору, под множеством М понимается любое объединение в одно целое определенных вполне различаемых объектов из нашего восприятия или мысли, которые на- зываются элементами множества М [25]. Т.е. между элементом множества и самим множеством существует отношение "часть - целое”. Тип же является абстракцией реальных объектов, т.е. тип и объект данного типа находятся в отношении "абстрактное - конкретное". Каждый тип имеет уникальное имя. Например, при описании учебного про- цесса могут быть введены следующие типы людей: ПРЕПОДАВАТЕЛЬ, СТУ- ДЕНТ, АСПИРАНТ и т.д. Считается, что в каждом состоянии предметной области любой объект имеет один или несколько типов. Множество типов данной ПО, снабженное некото- рой структурой, является моделью в математическом смысле. Эту модель есте- ственно называть концептуальной моделью, или схемой, предметной области. Отметим, что различны не только множества типов различных ПО, но и связи между ними. Поэтому для концептуальных моделей ПО, по-видимому, нельзя указать общую структуру или, более точно, указать общую сигнатуру отношений и операций. Однако некоторые базовые типы, отношения и опера- ции целесообразно включать в любую концептуальную схему. Так, в работе [22] обосновывается полезность включения в любую модель типов ОБЕКТ, ВРЕМЯ, ПРОСТРАНСТВО, а также типа лингвистических объектов с подти- пами ИМЯ ТИПА, ИМЯ ОБЪЕКТА, ИМЯ СИТУАЦИИ. Ниже обсуждаются именно базовые отношения и операции. 5.3.2. Отношения между типами Пусть 3 - фиксированное множество типов. Так как в каждый момент вре- мени t двум типам Tt и Т2 соответствуют два множества объектов (Т| )оЬ и (Т2 , то между ними существуют определенные теоретико-множественные отношения, например, (Т^с (Т2)^ь или (Tj)‘b (T2)J,b = 0- Эти отно- шения могут носить случайный характер или, наоборот быть справедливыми для любых значений t. Во втором случае они, как правило, выражают устойчи- вые закономерности предметной области. Чтобы иметь возможность отразить эти аксиомы в концептуальной модели, множество 3 снабжается отношением частичного порядка, которое принято обозначать IS-А. Это отношение интер- претируется следующим образом: "Если Т, IS-А Т2, то в любой момент време- ни t каждый объект типа Т, является объектом типа Т2". Другими словами, спра- ведлива следующая аксиома: Vt (Т|)оь- (Т2)*ь
Глава 5. Семантическое моделирование в базах данных 93 Если множество типов 3 конечно, то его можно изобразить в виде ориенти- рованного графа, вершины которого помечены именами типов, а дуги соединя- ют те вершины, которые находятся в отношении IS-А. На рисунке 5 1 пред- ставлен фрагмент такого графа. Рис. 5J. Фрагмент модели предметной области "учебный процесс" Для того чтобы иметь возможность описывать ПО на некотором языке, не- обходимо ввести тип лингвистических объектов, который получит название ИМЯ. С каждым типом Т связывается одноместный предикат Р(Т) на множе- стве объектов типа ИМЯ, который в каждый момент времени выделяет конеч- ное множество имен объектов типа Т, причем между соответствующими мно- жествами выполняются включения, указанные отношением IS-A. В ПО обычно одни объекты считаются более сложными, а другие - более простыми. Чтобы раскрыть структуру объектов, необходимо ввести дополни- тельные отношения, моделирующие отношения принадлежности. Для этого в каждый момент времени множество имен снабжается отноше- нием INSTANCE-OF, которое показывает, что одни объекты являются множе- ствами, состоящими из других объектов. Объект о с именем name(o) называет- ся простым, если множество объектов ор для которых name^) INSTANCE-OF name(o), является пустым. Обычно по умолчанию предполагается, что свойство быть простым объек- том не зависит от времени, Объект о называется составным, если в какой-то момент найдется такой объект о., что пате(<?() INSTANCE-OF пате(о). Эти определения показывают, что без дополнительной информации систе- ма может определить только некоторые составные объекты, а определить про- стые объекты вообще не может. Поэтому типы объектов надо разделить на про- стые и составные.
94 Базы данных. Интеллектуальная обработка информации Более точную информацию можно внести в концептуальную схему, опре- делив отношение INSTANCE-OF на указанном множестве типов. Это отноше- ние интерпретируется следующим образом: "Если Tt INSTANCE-OF Т, Тп INSTANCE-OF Т, то объект о типа Т может состоять из объектов типов Тр...,Тп, причем в о могут входить несколько объектов каждого из типов Тр...,Тп”. Например, тип СТУДЕНТ связывается отношением INSTANCE-OF с типом ГРУППА, который, в свою очередь, связан тем же отношением с типом КУРС. Ниже перечислены основные свойства отношений IS-А и INSTANCE-OF Т-тип Т IS-А Т Т, IS-A Т2, Т2 IS-А Т3 Т, IS-А Т3 Т, IS-А Т„ Т2 IS-A Т, т. = т2 Т, IS-A Т2, Т, INSTANCE-OF Т3 Т, INSTANCE-OF Т3 Т, INSTANCE-OF Т2, Т2 INSTANCE-OF Т3, .„, Tn., INSTANCE-OF Тп * Неверно, что Tn INSTANCE-OF Т, Для конкретной ПО могут быть сформулированы дополнительные ограни- чения на отношение INSTANCE-OF, включающие все или только некоторые типы. Отношения IS-A и INSTANCE-OF на множестве типов дают возможность говорить о простых и составных объектах, причем составные объекты имеют достаточно сложную структуру. Однако целесообразно ввести еще понятие композиционных объектов, которые могут представляться конечными после- довательностями других объектов. Известный пример композиционного объекта - это дата, состоящая из года, месяца, и числа. Отдельная дата не является множеством из трех элементов: года, месяца и числа, и связана с ними отношениями, отличными от отношения принадлежности. Чтобы выразить эту связь формально, полезно ввести в тип ИМЯ подтипы ИМЯ ХАРАКТЕРИСТИКИ и ИМЯ РОЛИ. Конечное множество троек вида (Т, np Т), где Т и Т - типы объектов, п( - имя характеристики или роли, i = l,...,k, п/£п. при i^j, называется представле- нием типа Т, если в каждый момент времени t п. определяет функцию nJ : Tjb —>(Т,)'Ь, причем разным объектам ot,o2 е Т соответствуют разные кортежи {«[(о,),...,^ (oi)} и {и[(о2)>—,и{(о2)} значений функций пос- леднее условие называется условием различимости объектов. Тот факт, что множество троек {(Т, n., Т) | i = } задает представление типа Т, не может быть установлен системой. Поэтому он сообщается ей как дополнительная информация о ПО.
Глава 5. Семантическое моделирование в базах данных 95 Обозначим через et функцию, тождественную на объектах типа Т в мо- мент времени t. Представление {(Т, n., Т.) | i = 1 ,...,k} называется тривиальным, если оно содержит тройку (Т, ег ,Т), где ег - имя тождественной функции еТ. Тип Т( называется характеристическим для типа Т, если существует триви- альное представление {(Т, ег,Т),(Т,п,Т()}, где п - имя характеристики. Тип Т называется композиционным, если для него существует нетривиальное пред- ставление; типы Т(,...,Тк называются компонентами типа Т (относительно за- данного представления). Представление {(T,n1,TJ),...,(T,nk,Tk)} называется минимальным, если уда- ление из него любой тройки приводит к тому, что оставшееся множество троек перестает быть представлением. Разумеется, что во всяком представлении со- держится по крайней мере одно минимальное, однако минимальные представ- ления либо должны указываться явно, либо должны выводиться из других ус- ловий, выражающих общие закономерности ПО. Заметим, что всякое представление типа автоматически определяет пред- ставление для любого его подтипа. Задание представлений для типов также можно описать формально, введя специальное отношение COMPONENT-OF между типами и множествами пар (прТ.). Другими словами, ' COMPONENT-OFc ЗхР(ИМЯЛхЗ), где Р - множество подмножеств, знак х означает декартово произведение множеств, а ИМЯоЬ указывает на множество объектов типа ИМЯ. В действи- тельности используются только имена характеристик и ролей, которые входят в концептуальную модель ПО вместе с именами типов. 5.3.3. Операции над типами До сих пор множество типов А считалось полностью известным, что позволя- ло наделить его дополнительными отношениями. Более сложная структура возни- кает тогда, когда указаны правила (операции), строящие из известных типов но- вые, производные типы. Наиболее употребительными являются операции П, kJ, \, соответствующие обычным теоретико-множественным конструкциям. Эти опера- ции порождают новые типы, которые сначала не были определены. Например, для каждого типа Т можно построить объединение тех типов Т, которые связаны с Т отношением INSTANCE-OF. Тип иТ. состоит из тех и только тех объектов, кото- рые могут быть элементами объектов типа Т; он абстрагируется от всех различий объектов, кроме возможности принадлежать объектам типа Т. Если же типы Т связаны с Т отношением IS-А, то равенство Т = L/Г. означает, что список подтипов Т - исчерпывающий для объектов типа Т. Равенство Т1ПТ2 = 0 можно интерпре- тировать как семантическое условие несовместимости типов Т1 и Т2.
96 Базы данных. Интеллектуальная обработка информации Например, ЧЕЛОВЕК = МУЖЧИНА U ЖЕНЩИНА МУЖЧИНА П ЖЕНЩИНА = О Указанные операции реализуют достаточно общие механизмы порождения новых и, как правило, более абстрактных типов и требуют регламентированно- го продолжения исходных отношений INSTANCE-OF и IS-А. Кроме того, воз- никающие типы сами могут иметь представление в виде композиции других типов. Следовательно, описанный арсенал средств моделирования позволяет представлять достаточно сложные структуры предметных областей. 5.3.4. Ограничения целостности Определив структуру ПО. нужно задать инвариантные свойства состояний и их последовательностей, т.е. выразить семантику ПО. Уже исходные отношения выражают часть семантики, так как указывают соотношения между объектами и их множествами, которые должны выполняться в каждый момент времени. Вве- дение операций над типами расширяет эти возможности, поскольку соотноше- ния, которые должны выполняться между результатами выполнения операций в любом состоянии, также отражают часть семантики. Еще один способ состоит в указании минимальных представлений внутри заданного представления. Инвариантные свойства возможных состояний ПО называют ограничения- ми целостности, поскольку нарушение этих ограничений приводит либо к противоречиям, либо к неадекватности концептуальной модели. Примером одного из ограничений целостности является требование того, чтобы один и тот же студент не был включен в разные группы. Такое ограниче- ние можно записать следующим образом: о е Т, G Т], о2 е Т,, name(o) INSTANCE-OF nameCo,), name(o) INSTANCE-OF name(o2) °1=°2 Совокупность явно сформулированных ограничений целостности вместе с множеством типов 3 и отношениями IS-A, INSTANCE-OF и COMPONENT- OF называют концептуальной схемой предметной области. Синтез концептуальной модели производится при помощи ряда методик. Одной из наиболее популярных семантических моделей данных является мо- дель "Сущность-Связь” [21, 23] или "Объект-Отношение” [20] (разный пере- вод английского Entity-Relationship). Часто ее кратко называют ER-моделью. 5.4. ER-модель Модель была предложена Петером Пин-Шен Ченом в 1976 г. (см.[23]). На использовании разновидностей ER-модели основано большинство современ-
Глава 5. Семантическое моделирование в базах данных 97 ных подходов к проектированию баз данных (главным образом, реляционных). Моделирование предметной области базируется на использовании графичес- ких диаграмм, включающих небольшое число разнородных компонентов. В связи с наглядностью представления концептуальных схем баз данных ER-мо- дели получили широкое распространение в системах CASE, поддерживающих автоматизированное проектирование реляционных баз данных. Далее изложено краткое описание основных положений данной модели, при- веденное в работе [21] Базовыми понятиями ER-модсли являются сущность, связь и атрибут. Сущность - это реальный или воображаемый объект, информация о кото- ром представляет интерес. В диаграммах ER-модели сущность представляется в виде прямоугольника, содержащего имя сущности При этом имя сущности - это имя типа, а не некоторого конкретного объекта - экземпляра этого типа. Каждый экземпляр сущности должен быть отличим от любого другого экземп- ляра той же сущности. Связь - это графически изображаемая ассоциация, устанавливаемая между двумя сущностями. Эта ассоциация всегда является бинарной и может суще- ствовать между двумя разными сущностями или между сущностью и ей же самой (рекурсивная связь). В любой связи выделяются два конца (в соответ- ствии с парой связываемых сущностей), на каждом из которых указывается имя конца связи, степень конца связи (сколько экземпляров дайной сущности связывается), обязательность связи (т.е. любой ли экземпляр данной сущности должен участвовать в данной связи). Связь представляется в виде линии, связывающей две сущности или веду- щей от сущности к ней же самой. При этом в месте "стыковки” связи с сущно- стью используются трехточечный вход в прямоугольник сущности, если для этой сущности в связи могут использоваться много экземпляров сущности, и одноточечный вход, если в связи может участвовать только один экземпляр сущ- ности. Обязательный конец связи изображается сплошной линией, а необяза- тельный - прерывистой линией Как и сущность, связь - это типовое понятие, все экземпляры обеих пар связываемых сущностей подчиняются правилам связывания. На рис. 5.2. приведен пример изображения сущностей и связи между ними. учится в состоит из СТУДЕНТ з ГРУППА Рис 5.2. Пример связи между сущностями Данная диаграмма может быть интерпретирована следующим образом: Каждый СТУДЕНТ учится только в одной ГРУППЕ; 4-307
98 Базы данных. Интеллектуальная обработка информации Любая ГРУППА состоит из одного или более СТУДЕНТОВ. На следующем рисунке изображена сущность ЧЕЛОВЕК с рекурсивной связью, связывающей ее с ней же самой. ЧЕЛОВЕК СЫН ; отец Рис. 5.3. Пример рекурсивной связи Лаконичной устной трактовкой изображенной диаграммы является следу- ющая: Каждый ЧЕЛОВЕК является сыном одного и только одного ЧЕЛОВЕКА; Каждый ЧЕЛОВЕК может являться отцом для одного или более ЛЮДЕЙ ("ЧЕЛОВЕКОВ”). Атрибутом сущности является любая деталь, которая служит для уточне- ния, идентификации, классификации, числовой характеристики или выраже- ния состояния сущности. Имена атрибутов заносятся в прямоугольник, изоб- ражающий сущность, под именем сущности и изображаются малыми буквами. Например: ЧЕЛОВЕК имя возраст пол Рис. 5.4. Изображение сущности с ее атрибутами Уникальным идентификатором сущности является атрибут, комбинация атрибутов, комбинация связей или комбинация связей и атрибутов, уникально отличающая любой экземпляр сущности от других экземпляров сущности того же типа. Как и в реляционных схемах баз данных, в ER-схемах вводится понятие нормальных форм, причем их смысл очень близко соответствует смыслу реля- ционных нормальных форм. Заметим, что формулировки нормальных форм ER- схем делают более понятным смысл нормализации реляционных схем. Мы при-
Глава 5. Семантическое. моделирование в ба fax данных 99 ведем только очень краткие и неформальные определения трех первых нор- мальных форм. В первой нормальной форме ER-схемы устраняются повторяющиеся атри- буты или группы атрибутов, т.е. производится выявление неявных сущностей, "замаскированных" под атрибуты. Во второй нормальной форме устраняются атрибуты, зависящие только от части уникального идентификатора. Эта часть уникального идентификатора определяет отдельную сущность. В третьей нормальной форме устраняются атрибуты, зависящие от атри- бутов, не входящих в уникальный идентификатор. Эти атрибуты являются ос- новой отдельной сущности. Мы остановились только на самых важных понятиях ER-модели данных. К числу более сложных элементов модели относятся следующие: Подтипы и супертипы сущностей. ER-модель позволяет задавать отноше- ние IS-А между типами. При этом если Tt IS-А Т, (где и Т, - типы сущностей), то ?! называется подтипом Т2, а Т2- супертипом Тг Т.е. существует возможность наследования типа сущности, исходя из одного или нескольких супертипов. Связи "многие-со-многими". Иногда бывает необходимо связывать сущнос- ти таким образом, что с обоих концов связи могут присутствовать несколько экземпляров сущности (например, все члены кооператива сообща владеют иму- ществом кооператива! Для этого вводится разновидность связи "многие-со- многими”. Уточняемые степени связи. Иногда бывает полезно определить возможное количество экземпляров сущности, участвующих в данной связи (например, служащему разрешается участвовать не более чем в трех проектах одновре- менно). Для выражения этого семантического ограничения разрешается ука- зывать на конце связи ее максимальную или обязательную степень. Каскадные удаления экземпляров сущностей. Некоторые связи бывают на- столько сильными (конечно, в случае связи "один-ко-многим"), что при удале- нии опорного экземпляра сущности (соответствующего концу связи "один") нужно удалить и все экземпляры сущности, соответствующие концу связи "мно- гие". Соответствующее требование "каскадного удаления" можно сформули- ровать при определении сущности. Домены. Как и в случае реляционной модели данных, бывает полезна воз- можность определения потенциально допустимого множества значений атри- бута сущности (домена). Эти и другие, более сложные элементы модели данных "Сущность-Связь", делают ее существенно более мощной, но одновременно несколько усложняют ее использование. Конечно, при реальном использовании ER-диаграмм для про- ектирования баз данных необходимо ознакомиться со всеми возможностями. 4*
100 Базы данных. Интеллектуальная обработка информации 5.5. Проблема преобразования концептуальной модели ПО в схему БД Наиболее часто на практике семантическое моделирование используется на первой стадии проектирования базы данных. Его результатом, как правило, является концептуальная модель предметной области, выраженная в терминах используемой семантической модели (например, ER-модели). При переходе к следующему этапу - этапу моделирования схемы БД - перед разработчиком возникает проблема выражения концептуальной модели ПО в терминах при- меняемой модели данных (например, реляционной). В работе [21] приводится описание трех подходов к решению этой пробле- мы Первый подход состоит в ручном преобразовании концептуальной модели ПО в схему БД, выполняемом согласно методикам, в которых достаточно четко оговорены все этапы такого преобразования Во втором подходе реализуется автоматизированная компиляция концептуаль- ной модели ПО в схему БД (чаще всего реляционную). Известны два подхода: 1. Подход, основанный на явном представлении концептуальной модели ПО как исходной информации для компиляции 2. Подход, ориентированный на построение интегрированных систем про- ектирования с автоматизированным созданием концептуальной модели ПО на основе интервью с экспертами предметной области. И в том, и в другом случае в результате производится реляционная схема базы данных в третьей нормальной форме Наконец, третий подход - это непосредственная работа с базой данных в семантической модели, т.е. применение СУБД, основанных на семантических моделях данных. При этом снова рассматриваются два варианта: 1. Обеспечение пользовательского интерфейса на основе семантической модели данных с автоматическим отображением конструкций в реляци- онную модель данных (это задача примерно такого же уровня сложнос- ти, как автоматическая компиляция концептуальной модели ПО в схему БД). 2. Прямая реализация СУБД, основанная на какой-либо семантической мо- дели данных. Наиболее близко ко второму варианту находятся современные объектно- ориентированные СУБД, модели данных которых по многим параметрам близ- ки к семантическим моделям (хотя в некоторых аспектах они более мощны, а в некоторых - более слабы). Хотя в целом можно сказать, что этот подход еще не вышел за пределы исследовательских и экспериментальных проектов. В настоящее время на рынке программного обеспечения появилось достаточ- но много универсальных (не привязанных к какой-либо конкретной СУБД) паке-
Глава 5. Семантическое моделирование в базах данных 101 тов автоматизированного проектирования БД, позволяющих производить концеп- туальное моделирование ПО. В основе практически всех систем такого рода лежит та или иная интерпретация ER-модели Такие системы являются реализацией вто- рого из рассмотренных выше подходов. Одним из наиболее популярных программ- ных продуктов в этой области является ERwin компании Platium[24]. 5.6. Средство автоматизированного проектирования баз данных ERwin 5.6.1. Общие сведения ERwin - CASE-средство проектирования баз данных фирмы Platinum ERwin сочетает графический интерфейс Windows, инструменты для построения ER- диаграмм, редакторы для создания логического и физического описания моде- ли данных и прозрачную поддержку ведущих реляционных СУБД. Для удоб- ства изложения материала здесь и далее использована оригинальная термино- логия, принятая в ERwin. ERwin не привязан к технологии какой-либо конкретной фирмы, поставля- ющей СУБД или средства разработки. Он поддерживает различные серверы баз данных и настольные СУБД, а также может обращаться к базе данных че- рез интерфейс ODBC. Так, в текущей версии ERwin 3.5.2 встроена поддержка 23 СУБД, среди которых: Oracle; Microsoft SQL Server и тп. (см. рис. 5.6 25). Заметим лишь, что речь идет только о реляционных СУБД. ERwin 3.5.2 можно использовать совместно с некоторыми популярными средствами разработки клиентских частей приложений: PowerBuilder, Visual Basic, Delphi Кроме того, ERwin 3.5 2 поддерживает работу в среде групповой разработки ModelMart, являющейся продуктом той же Platinum. Процесс моделирования в ERwin базируется на методологии проектирова- ния реляционных баз данных IDEF1X. Данная методология была разработана для ВВС США и теперь широко используется в правительственных учрежде- ниях и частных компаниях как в самих США, так и далеко за их пределами. Она определяет стандарты терминологии и графического изображения типо- вых элементов на ER-диаграммах. Заметим, что некоторые обозначения могут несколько расходиться с традиционными, принятыми в ER-модсли, хотя в ERwin версии 3.5.2 уже существует возможность выбора традиционной нотации. (При изложении материала использована нотация IDEFIX). Кроме того, существует ряд отличий, связанных с тем, что данная методология ориентирована на раз- работку реляционных БД. Но это не вносит заметных корректив в сам подход к разработке структуры БД, а жесткая стандартизация позволяет избежать такого недостатка ER-моделей, как возможность различной трактовки.
102 Базы данных. Интеллектуальная обработка информации В данном параграфе рассмотрен процесс создания модели в ERwin, опи- саны основные элементы интерфейса, а также приведен пример разработки структуры БД. Для более детального изучения возможностей данного CASE- средства читатель может обратиться к книге [27]. Определения некоторых понятий методологии IDEF1X, приведенные в данном параграфе, взяты из статьи [26]. 5.6.2. Структура процесса моделирования в ERwin В ERwin используются два уровня представления модели данных: логичес- кий и физический (что соответствует концептуальному и логическому уровню, принятым в теории БД). На логическом уровне не рассматривается использо- вание конкретной СУБД, не определяются типы данных (например, целое или вещественное число) и не определяются индексы для таблиц Целевая СУБД, имена объектов и тины данных, индексы составляют второй (физический) уро- вень модели ERwin. ERwin предоставляет возможности создавать и управлять этими двумя раз- личными уровнями представления одной диаграммы (модели), равно как и иметь много вариантов отображения на каждом уровне. Процесс построения информационной модели состоит из следующих этапов: 1. создание логической модели данных: • определение сущностей; • определение зависимостей между сущностями; • задание первичных и альтернативных ключей; • определение неключевых атрибутов сущностей; 2. переход к физическому описанию модели: • назначение соответствий имя сущности - имя таблицы, атрибут сущности - атрибут таблицы; • задание триггеров, хранимых процедур и ограничений; 3. генерация базы данных. 5.6.3. Создание логической модели БД С точки зрения пользователя ERwin, процесс создания логической модели данных заключается в визуальном редактировании ER-диаграммы Диаграмма ERwin строится из трех основных блоков, сущностей, атрибутов и связей. 5.6.3.1. Сущности и атрибуты На диаграмме сущность изображается прямоугольником. В зависимости от режима представления диаграммы прямоугольник может содержать имя сущ- ности, ее описание, список ее атрибутов и другие сведения. Основная инфор- мация, описывающая сущность, включает:
Глава 5. Семантическое моделирование в базах данных 103 • атрибуты, составляющие первичный ключ; • неключевые атрибуты; • тип сущности (независимая/зависимая). Первичный ключ - это атрибут или набор атрибутов, уникально идентифи- цирующий экземпляр сущности. Если несколько наборов атрибутов могут уни- кально идентифицировать сущность, то выбор одного из них осуществляется разработчиком на основании анализа предметной области и учета следующих требований к первичному ключу: • первичный ключ не должен принимать пустые (NULL) значения; • первичный ключ не должен изменяться в течение времени; • размер первичного ключа должен быть как можно меньшим. При этом если разработчик считает, что какой-либо из оставшихся наборов будет часто использоваться для доступа к сущности, то он может объявить его альтернативным ключом. В ERwin можно также составлять группы атрибутов, которые не идентифи- цируют уникально экземпляры сущности, но часто используются для доступа к данным. Они получили название инверсных входов. Одни и те же атрибуты сущности могут входить в несколько различных групп ключей. Рассмотрим вышесказанное на примере сущности СОТРУДНИК (рис. 5.6.1). СОТРУДНИК — Табельный номер Фамилия (IE1) Имя (IE1) Отчество (IE1) Дата рождения Должность Рис. 5.6 1. Пример сущности Среди всех атрибутов данной сущности на роль первичного ключа могут претендовать "табельный номер" и группа атрибутов "фамилия", "имя", "отче- ство", "дата рождения" (последний необходим, т.к. на предприятии могут рабо- тать полные тезки). Очевидно, что по соображениям размера в качестве пер- вичного ключа следует выбрать первый из вариантов.
104 Базы данных. Интеллектуальная обработка информации На диаграмме атрибуты, составляющие первичный ключ, располагаются в верхней части прямоугольника и отделяются от прочих (не входящих в первич- ный ключ) горизонтальной линией. Группа атрибутов "фамилия”, "имя”, "отчество", "дата рождения" может являться альтернативным ключом. Однако вряд ли кто-либо, пытающийся най- ти информацию о сотруднике, будет знать дату его рождения. А вот группа атрибутов "фамилия”, "имя", "отчество", вполне возможно, будет достаточно часто использоваться для этих целей. Поэтому на основе этих атрибутов было бы логично создать инверсный вход. Инверсный вход обозначается на диаг- рамме символами 1Еп, заключенными в скобки. Пример использования альтернативного ключа приведен на рис. 5.6.2 Аль- тернативный ключ обозначается на диаграмме символами АКп, заключенны- ми в скобки. ОТДЕЛ Номер отдела Название отдела (АК1) Рис. 5.6.2. Пример альтернативного ключа Если экземпляры сущности могут быть уникально идентифицированы без определения ее связей с другими сущностями, она называется независимой В противном случае сущность называют зависимой. Зависимая сущность отобра- жается в ERwin прямоугольником с закругленными углами. 5.6.3.2. Связи Связь в ERwin трактуется как функциональная зависимость между двумя сущностями (в частности, возможна связь сущности с самой собой). Если рассматривать диаграмму как графическое представление правил пред- метной области, то сущности являются существительными, а связи - глагола- ми. Например, между сущностями ОТДЕЛ и СОТРУДНИК существует связь "состоит из" (ОТДЕЛ состоит из СОТРУДНИКОВ). В ERwin связи представлены пятью основными элементами информации: • тип связи; • родительская и дочерняя (зависимая) сущности; • мощность связи; • допустимость пустых (null) значений; • требования по обеспечению ссылочной целостности.
Глава 5. Семантическое моделирование в базах данных 105 ERwm поддерживает следующие основные типы связей: идентифицирую- щая, неидентифицирующая, полная категория, неполная категория, многие-ко- многим. Связь называется идентифицирующей, если экземпляр дочерней сущности идентифицируется через ее связь с родительской сущностью. Атрибуты, со- ставляющие первичный ключ родительской сущности, при этом входят в пер- вичный ключ дочерней сущности. Дочерняя сущность при идентифицирую- щей связи всегда является зависимой. Связь называется неидентифицирующей, если экземпляр дочерней сущно- сти идентифицируется иначе, чем через связь с родительской сущностью. Ат- рибуты, составляющие первичный ключ родительской сущности, при этом вхо- дят в состав неключевых атрибутов дочерней сущности. Идентифицирующая связь изображается сплошной линией; неидентифи- цирующая - пунктирной линией. Линии заканчиваются точкой со стороны до- черней сущности. При определении связи происходит миграция атрибутов первичного ключа родительской сущности в соответствующую область атрибутов дочерней сущ- ности. Поэтому такие атрибуты не вводятся вручную. На рис. 5.6.3. приведен пример неидентифицируюшей связи. Первичный ключ сущности ОТДЕЛ "номер отдела" мигрировал в область неключевых ат- рибутов (поскольку связь нсидентифицирующая) сущности СОТРУДНИК. На диаграмме атрибуты, наследованные от родительской сущности, помечаются символами FK, заключенными в скобки. ОТДЕЛ СОТРУДНИК Номер отдела состоит из Название отдела (АК1) Табельный номер Номер отдела (FK) Фамилия (IE1) Имя (IHI) Отчество (IE1) Дата рождения Должность Рис. 5 6.3 Пример неидентифицирующей связи Зависимая сушност ь может наследовать один и тот же ат рибут от более чем одной родительской сущности или от одной и той же родительской сущности через несколько связей.
106 Базы данных. Интеллектуальная обработка информации Поскольку атрибуты первичного ключа родительской сущности по умолча- нию мигрируют со своими именами, ERwin считает, что в зависимой сущности атрибуты внешнего ключа появляются только один раз. Чтобы избежать этого ограничения, ERwin позволяет ввести для них роли, т.е. новые имена, под кото- рыми мигрирующие атрибуты будут представлены в дочерней сущности. В случае неоднократной миграции атрибута такое переименование необходимо. Например, при создании модели сделки по обмену валюты сущность СДЕЛКА (рис 5 6.4) должна иметь два различных атрибута для кодов проданной и куп- ленной валюты. В данном случае первичный ключ сущности ВАЛЮТА ("код валюты") имеет две роли в дочерней сущности. ВАЛЮТА СДЕЛКА ----------------- продается z---------------------------- Код валюты г------------------< Номер сделки -----------------1 покупается Название валюты I-------------Проданная.Код валюты (FK) Сумма проданной валюты Купленная Код валюты (FK) Сумма купленной валюты Рис. 5. б 4. Пример использования ролей Ситуация, когда экземпляру одной сущности соответствует один или не- сколько экземпляров второй сущности, а экземпляру второй сущности соот- ветствует один или несколько экземпляров первой сущности, отражается в ло- гической модели связью многие-ко-многим между данными сущностями. На диаграмме связь изображается сплошной линией с точками на концах. Напри- мер, для заключения сделки в некоторой фирме клиент обращается к любому из свободных сотрудников этой фирмы В то же время сотрудник фирмы может обслуживать нескольких клиентов. Поэтому тип связи между сущностями КЛИ- ЕНТ и СОТРУДНИК должен быть многие-ко-многим (рис. 5.6.5). обслуживает обращается к СОТРУДНИК Рис. 5.6.5. Пример связи многие-ко-многим Заметим, что связь типа многие-ко-многим возможна только на логическом уровне. Преобразование связи данного тина на физическом уровне будет рас- смотрено в следующем пункте. Однако добавим, что связей многие-ко-многим рекомендуется избегать. В рассмотренном примере этого можно добиться, если ввести дополнительную сущность СДЕЛКА.
Глава 5. Семантическое моделирование в базах данных 107 КЛИЕНТ I заключает СДЕЛКА I обслуживает СОТРУДНИК | Рис. 5.6.6. Пример устранения связи многие-ко-многим Некоторые сущности определяют целую категорию объектов одного типа. В ERwin в таком случае создается сущность для определения категории и для каж- дого элемента категории, а затем вводится для них связь категоризации. Роди- тельская сущность категории называется супертипом, а дочерние - подтипом. Общая часть атрибутов сущностей-подтипов, включая первичный ключ, помещается в сущность-супертип. Различная часть (например, данные о поча- совой оплате для временных работников или данные о зарплате и отпуске для штатных работников) помещается в сущности-подтипы. В сущности-суперти- пе вводится атрибут-дискриминатор, позволяющий различать конкретные эк- земпляры сущности-подтипа. В зависимости от того, все ли возможные сущности-подтипы включены в модель, категорийная связь является полной или неполной В ERwin полная ка- тегория изображается окружностью с двумя подчеркиваниями, а неполная - окружностью с одним подчеркиванием. На рис. 5.6.7. категорийная связь между сущностью СОТРУДНИК и сущнос- тями ПОСТОЯННЫЙ СОТРУДНИК и СОВМЕСТИТЕЛЬ является неполной, если предположить, что существует еще один тип сотрудников - консультант. СОТРУДНИК Табельный номер Фамилия (IE1) Имя (IE1) Отчество (1Е1) Дата рождения Должность Тип О Тнп I—7v—I ПОСТОЯННЫЙ СОТРУДНИК СОВМЕСТИТЕЛЬ -------------------\ /-------------------4 Табельный номер (FK) | Табельный номер (FK) Ставка Рис. 5.6.7. Пример неполной категории
108 Базы данных. Интеллектуальная обработка информации Включение в модель сущности КОНСУЛЬТАНТ приводит к тому, что кате- горийная связь становится полной (рис 5.6.8). Рис. 5.6.8. Пример полной категории Мощность связи представляет собой отношение количества экземпляров родительской сущности к соответствующему количеству экземпляров дочер- ней сущности. Мощность связи определяется только для идентифицирующих и неидентифицирующих связей и записывается как 1 :n. ERwin, в соответствии с методологией IDEF1X, предоставляет 4 варианта для п, которые изображают- ся дополнительным символом у дочерней сущности (рис. 5.6.9) ---------------• 0, 1 или больше (по умолчанию) ---------------• 1 или больше Р ---------------• 0 или 1 Z ---------------• ровно N (3). 3 Рис. 5.6.9. Обозначение кратности связи Допустимость пустых (NULL) значений в неидентифицирующих связях ERwin изображает пустым ромбиком на дуге связи со стороны родительской сущности (рис. 5.6.3).
Глава 5. Семантическое моделирование в базах данных 109 В целях контроля ссылочной целостности (под ссылочной целостностью в ERwin понимается обеспечение требования, чтобы значения внешнего ключа экземпляра дочерней сущности соответствовали значениям первичного ключа в родительской сущности) для каждой связи могут быть заданы требования по обработке операций INSERT/UPDATE/DELETE для родительской и дочерней сущности. ERwin предоставляет следующие варианты обработки этих событий: • отсутствие проверки; • проверка допустимости; • запрет операции; • каскадное выполнение операции (DELETE/UPDATE); • установка пустого (NULL-значения) или заданного значения по умолчанию. 5.6.4. Создание физической модели и генерация схемы БД Для создания физической модели данных, разработчику необходимо выб- рать конкретную СУБД и переключиться на физический уровень отображения диаграммы. На уровне физической модели сущности соответствует таблица в реальной СУБД, атрибуту - колонка таблицы, связи - внешний ключ (если для связи задавалось имя роли, то оно соответствует имени колонки внешнего ключа в дочерней таблице), первичным и альтернативным ключам - уникальные ин- дексы, а инверсным входам - неуникальные. ERwin автоматически присваивает имена элементов логической модели эле- ментам физической схемы, исходя из приведенных выше соотношений. Т.о. разработчику нет необходимости проделывать это вручную. Однако если мо- дель разрабатывалась на русском языке, то имена таблиц, колонок и индексов необходимо задать на английском языке. При этом сами имена сущностей, ат- рибутов, связей и ролей могут оставаться без изменения. Для каждой колонки разработчик должен указать тип данных, возможность пустых значений, значения по умолчанию и т.п. в зависимости от используе- мой СУБД. Например, логической модели, представленной на рис. 5 6.3, будет соот- ветствовать физическая модель, изображенная на рис. 5.6.10. При переходе на уровень физической модели происходит автоматическая развязка связей "многие-ко-многим". Так, для логической модели приведенной на рис. 5.6.5, будет создана следующая физическая модель (рис 5.6.11). Последним шагом на этапе создания физической модели данных является написание триггеров и хранимых процедур. Этот шаг является необязательным, т.к. в ERwin существуют библиотеки готовых шаблонов триггеров и хранимых процедур Но при желании разработчик может вносить в них свои изменения.
по Базы данных. Интеллектуальная обработка информации Department Employee______________________ DepartmentID: INTEGER | EmployeelD: INTEGER DepartmentName: CHAR(18)| EmployeeLastName: CHAR( 18) EmployeeFirstName: CHAR(18) EmployecMiddleName: CHAR(18) EmployccBithDate: DATE EmployeePosition: CHAR(18) Puc. 5.6.10. Пример физической модели данных Client Client- Employee Рис. 5.6.11. Пример автоматической развязки связи "многие-ко-многим" ERwin реализует собственный макроязык для подготовки прототипов триг- геров и процедур. Схема использования прототипов заключается в подготовке шаблона для различных типов триггеров (например, триггер, реализующий логику каскадного удаления - ON DELETE CASCADE). Макроязык шаблонов реализует большое количество макросимволов, ссылающихся на различные объекты базы данных, например: % Act ion - расширяется в UPDATE/INSERT/DELETE; %ForEachAtt(<таблица>,<разделитель>){<макрокоманда>}— циклическое выполнение группы операторов над каждым атрибутом таблицы; %ForEachEntity () { } - циклическое выполнение функций над всеми таблицами; %If, %else - операторы условного управления.
Глава 5. Семантическое моделирование в базах данных 111 Так, шаблон триггера для реализации поддержки ON DELETE CASCADE: /* ERwin Builtin %Datetime */ /* %Parent %VerbPhrase %Child ON PARENT DELETE CASCADE */ delete from %Child where /* %%JoinFKPK(%Child,:%%Old," = "," and") */ %JoinFKPK(%Child,:%01d," = and”); в модели, приведенной на рис. 5.6.10, для связи "состоит из" будет сгенери- рован следующий прототип триггера: /* ERwin Builtin Thu Mar 16 19:35:28 2000 */ /* Department состоит из Employee ON PARENT DELETE CASCADE */ delete from Employee where /* %JoinFKPK(Employee,:%Old," = and") */ Employee. DepartmentID = :old.DepartmentID; Все макрофункции, которые могут использоваться в триггерах, могут ис- пользоваться также и в процедурах. Существенно, что процедуры, как и триг- геры, связываются с таблицей Такой подход позволяет полностью исключить хаотичное внесение изменений в базу данных, так как модель в ERwin описы- вает все аспекты базы, в том числе обеспечиваемые триггерами. И, наконец, на этапе генерации схемы БД ERwin автоматически создает сле- дующие элементы: • таблицы, • уникальные индексы для каждого первичного и альтернативного ключа и неуиикальные - для инверсных входов, • хранимые процедуры, • триггеры для обеспечения ссылочной целостности; • другие объекты, необходимые для управления данными. 5.6.6. Интерфейс ERwin Рассмотрим основные элементы интерфейса ERwin 3.5.2 На рис. изображе- но рабочее окно. Основные инструменты создания модели доступны как из меню, так и че- рез верхнюю линейку панели инструментов. Назначение ее элементов приве- дено в таблице 5.6.1.
112 Базы данных. Интеллектуальная обработка информации Рис. 5.6.12. Рабочее окно ERwin 3.5.2 Таблица 5.6.1. Верхняя линейка панели инструментов Элемент линейки Назначение элемента □ ||3|Н|Д| Создание, открытие, сохранение и печать модели. I Or Вызов диалога Report Browser для генерации отчетов. TИ Выбор уровня отображения модели: уровень сущнос- J J тей. уровень атрибутов и уровень описаний. I Изменение масштаба. Al в 1 Генерация схемы БД, синхронизация схемы БД с моделью и выбор сервера СУБД (доступны только на физическом уровне). Вызов дополнительной панели для работы с репози- тарием ModelMart. *3!^ Переключение между областями модели.
Глава 5. Семантическое моделирование в базах данных 113 Переключение между физической и логической моделью. Нижняя линейка предназначена для настройки параметров отображения ди- аграммы и играет вспомогательную роль. При помощи элементов данной линей- ки пользователь имеет возможность устанавливать различные шрифты, менять размер, стиль и цвета символов, выбирать цвета заливки и основных линий. Кроме основной панели инструментов, в ERwin предусмотрена дополни- тельная перемещаемая панель инструментов (рис 5.6.13). Создание сущности Режим указателя Режим манипуляции с атрибутами Создание идентифици- рующей связи Создание категорийной связи Создание текстового элемента Создание неидентифици- рующей связи Создание связи многие- ко-многим Рис. 5.6.13. Дополнительная панель инструментов С ее помощью создаются независимые и зависимые сущности, идентифи- цирующие и нсидситифицирующие связи, полные и неполные категории, свя- зи многие-ко-многим и текстовые элементы. Например, для того чтобы создать новую сущность, пользователь нажима- ет кнопку , устанавливает указатель мыши в то место на диаграмме, где он хотел бы расположить новую сущность, и один раз нажимает левую клавишу мыши. Или для задания связи идентифицирующей связи между сущностями
114 Базы данных. Интеллектуальная обработка информации пользователь нажимает кнопку 1^-|, устанавливает указатель мыши сначала на родительскую сущность и один раз нажимает левую клавишу мыши, а затем - на дочернюю сущность и вновь нажимает клавишу мыши. Заметим, что при переключении на уровень физической модели облик дан- ной панели меняется (рис. 5.6.14): вместо кнопки создания категорийной связи появляется кнопка создания представления (view) таблицы, а вместо кнопки создания связи многие-ко-многим - кнопка задания связи между таблицей и представлением. Кнопка создания сущности на физическом уровне носит на- звание кнопки создания независимой таблицы Рис. 5.6.14. Дополнительная панель инструментов на уровне физической модели Как логическая, так и физическая модель содержат несколько уровней ото- бражения (названия для физической модели заключены в круглые скобки): 1. Уровень "сущности" ("таблицы") - внутри прямоугольников отобража- ется имя сущности (для логической модели) или имя таблицы (для физи- ческого представления модели); служит для удобства обзора большой диаграммы или размещения прямоугольников сущностей на диаграмме. 2. Уровень "атрибуты" ("колонки") При переходе от предметной области к модели требуется вводить информацию о том, что составляет сущ- ность. Эта информация вводится путем задания атрибутов (на физи- ческом уровне - колонок таблиц). В этом режиме прямоугольник-сущ- ность делится линией на две части: в верхней части отображаются ат- рибуты (колонки), составляющие первичный ключ, а в нижней - ос- тальные атрибуты. 3. Уровень "описание сущности " ("комментарии ") служит для презентации диаграммы другим людям. 4. Уровень "первичные ключи"- внутри прямоугольников-сущностей пока- зываются только атрибуты/колонки, составляющие первичный ключ. 5. Уровень "пиктограммы". Для презентационных целей каждой таблице может быть поставлена в соответствие пиктограмма. На уровне физичес- кой модели заменяется уровнем упорядочения. Переключение между уровнями отображения производится при помощи кнопок панели инструментов или при помощи всплывающего меню, возника- ющего при нажатии правой клавиши мыши на пустом месте диаграммы (рис 5.6.15).
Глава 5. Семантическое моделирование в базах данных 115 Print Scaling <✓ Display Shadow Diagram forts/Color. Display Options/ Entities ► •* V 1 *'f* '•* ' к Drplay Options/fielafonsbps; > v* Display Level Puc 5 6.15. Пример переключения между уровнями отображения Все объекты, представленные на диаграмме, могут редактироваться сред- ствами. принятыми в Windows, - группировка, копирование, удаление, переме- щение, использование системного буфера. Нажатие клавиши мыши над сущностью приводит к появлению окна одно- го из многочисленных редакторов ERwin, среди которых: • редактор сущностей в целом (определение сущности, дополнительная информация, триггеры, индексы, характеристики таблицы, хранимые процедуры, связанные с таблицей); • редактор атрибутов (определение атрибутов, колонки таблицы в физи- ческом представлении модели, репозитарий средства 4GL, например, расширенные атрибуты в PowerBuilder). Подробнее редакторы, а также некоторые другие элементы интерфейса бу- дут рассмотрены по ходу изложения в следующем пункте. 5.6.7. Пример разработки модели БД с помощью ERwin 5.6.7.1. Постановка задачи В гипотетическом пункте обмена валют создается локальная информаци- онная система (ИС), призванная автоматизировать процесс учета сделок куп- ли-продажи валюты. Создаваемая система должна обеспечить ввод, хранение и поиск информации о сделках, совершенных в данном пункте обмена. Каж- дой сделке присваивается уникальный цифровой код. Информация о сделке должна содержать сведения о дате и времени сделки, суммах покупаемой и продаваемой валют, фамилии, имени, отчестве и номере паспорта клиента, а также о фамилии, инициалах и учетном номере личного дела кассира в отделе кадров. Система должна позволять вычислить денежный оборот за один или несколько дней, а также осуществлять поиск информации о сделках по номеру
116 Базы данных. Интеллектуальная обработка информации паспорта клиента. Задача состоит в проектировании структуры базы данных разрабатываемой автоматизированной ИС. 5.6.7.2. Создание логической модели БД Проведем анализ предметной области с целью выделить основные сущности. Поскольку речь идет об учете сделок купли-продажи валюты, ясно, что в модели должна присутствовать сущность СДЕЛКА. Согласно правилам, па ER-диаграмме названия сущностей записываются большими буквами. Напомним, чзо название сущности - это название типа, а не множества объектов. Поэтому оно чаще всего выражается существительным в единственном числе (ср. СДЕЛКИ). Понятие сделка подразумевает участие по крайней мере двух совершаю- щих ее сторон, а также наличие предмета сделки. Т.к. участниками сделки яв- ляются клиент и кассир, а предметом сделки является валюта, необходимо вве- сти еще три сущности: ВАЛЮТА, КЛИЕНТ и КАССИР. Внесем перечисленные сущности в диаграмму. Названия сущностей мож- но редактировать непосредственно на диаграмме, как это показано на рис. 5.6.16 Рис. 5.6.16. Внесение новых сущностей в диаграмму
Глава 5. Семантическое моделирование в базах данных 117 Для внесения дополнительных сведений необходимо воспользоваться ре- дактором сущностей. Перейти в него можно при помощи всплывающего меню (рис 5.6.17), возникающего при нажатии правой клавиши мыши над любой из сущностей. Е.. J------।-------- Key Group EcWcf Qbjed Font/Cofor Рис. 5.6.17. Меню вызова редакторов, относящихся к сущностям Вид диалогового окна редактора сущностей представлен на рис. 5.6.18. Рис. 5.6 18. Диалоговое окно редактора сущностей
118 Базы данных. Интеллектуальная обработка информации Следующим шагом в процессе создания логической модели должно стать определение связей между сущностями. Напомним, что для задания связи между двумя сущностями необходимо указать тип связи, направление связи (роди- тельская и дочерняя сущности), мощность связи, допустимость пустых (null) значений, требования по обеспечению ссылочной целостности, а в некоторых случаях и роль. Для задания связей между указанными сущностями сначала составим опи- сание данной предметной области при помощи ряда истинных высказываний на естественном языке | Любой КЛИЕНТ должен совершить одну или несколько СДЕЛОК. Каждую СДЕЛКУ должен совершать только один КЛИЕНТ. Любой КАССИР может обслуживать одну или несколько СДЕЛОК, но мо- жет не обслуживать и ни одной (например, только принят на работу). Каждую СДЕЛКУ должен обслуживать только один КАССИР. Любая ВАЛЮТА может покупаться и продаваться при разных СДЕЛКАХ. При совершении СДЕЛКИ должна покупаться одна ВАЛЮТА и продавать- ся другая ВАЛЮТА. Анализ приведенных высказываний позволяет выделить четыре связи (на- звания связей - глаголы): КЛИЕНТ совершает СДЕЛКУ. КАССИР обслуживает СДЕЛКУ ВАЛЮТА покупаться при СДЕЛКЕ. ВАЛЮТА продается при СДЕЛКЕ. Все четыре связи являются связями ”один-ко-многим". Во всех четырех случаях сущность СДЕЛКА является дочерней. Все связи нсидентифицирующие, т.к. любой экземпляр сущности СДЕЛКА может быть однозначно идентифицирован по коду сделки, т.е. вне зависимости от экземпляров других сущностей. Все связи, кроме первой, могут иметь мощность 0, 1 или более. Первая связь не может иметь мощность 0, т.к. в данном случае любой человек стано- вится КЛИЕНТОМ только тогда, когда он совершает хотя бы одну сделку. Во всех четырех связях родительские сущности не могут принимать пус- тые значения, т.к. при отсутствии экземпляра хотя бы одной из родительских сущностей экземпляр сущности СДЕЛКА перестает описывать сделку по об- мену валюты. Эти параметры задаются при помощи редактора связей (рис. 5.6.19). Вызвать этот редактор можно двойным нажатием левой клавиши мыши над связью. Задание ограничений ссылочной целостности, а также указание ролей про- изводится на закладке RoIename/RI Action панели диалога редактора связей (рис. 5.6.20).
Глава 5. Семантическое моделирование в базах данных 119 Рис 5 6 19 Панель диалога редактора связей Рис. 5.6 20. Закладка Rolename/Rl Action на панели диалога редактора связей
120 Базы данных. Интеллектуальная обработка информации Ограничения ссылочной целостности, задаваемые по умолчанию ERwin, в данном случае можно оставить без изменений. Указание ролей понадобится лишь для связей между сущностями ВАЛЮ- ТА и СДЕЛКА (см пример на рис. 5.6.4). После задания связей между сущностями диаграмма будет выглядеть сле- дующим образом (см. рис. 5.6.21). Рис. 5.6.21. Логическая модель со связями Теперь для каждой сущности необходимо указать первичные ключи и не- ключевые атрибуты Кроме того, для некоторых, возможно, понадобится зада- ние альтернативных ключей и инверсных входов. Хорошим источником информации в этом случае может стать перечень тре- бований к хранимой информации, приведенный в задании. Рассмотрим по оче- реди каждую из сущностей.
Глава 5. Семантическое моделирование в базах данных 121 Сведения о клиенте должны состоять из его фамилии, имени, отчества и номера его паспорта. Очевидно, что они и будут атрибутами сущности КЛИ- ЕНТ. Первичным ключом можно было бы выбрать номер паспорта, поскольку он однозначно идентифицирует любой из экземпляров этой сущности. Од- нако номер паспорта не является числом, т.к., кроме цифр, содержит и бук- вы, и, следовательно, для его хранения будет использоваться строка мини- мум из 13 символов, что не совсем удобно. Поэтому введем для каждого КЛИЕНТА уникальный номер, который и будет первичным ключом. А ат- рибут "номер паспорта клиента" сделаем альтернативным ключом, чтобы обеспечить возможность быстрого поиска информации о сделках по его зна- чениям, согласно заданию. Сведения о кассире должны включать фамилию, инициалы и учетный номер кассира - они и будут атрибутами сущности КАССИР. Поскольку учет- ный номер личного дела кассира может содержать не только цифры, как и в предыдущем случае, введем для каждого экземпляра уникальный номер, ко- торый и будет первичным ключом. По тем же соображениям сущность ВАЛЮТА будет содержать два атри- бута: код валюты и название валюты, первый из которых будет первичным ключом. Что касается сущности СДЕЛКА, то часть атрибутов она унаследует от родительских сущностей и остается лишь добавить следующие: "дата сделки", "время сделки", "сумма покупаемой валюты" и "сумма продавае- мой валюты". Очевидно, что первичным ключом, следует выбрать уни- кальный цифровой код сделки. Поскольку в задании сказано, что создава- емая система должна позволять вычислить денежный оборот за один или несколько дней, полезно было бы сделать атрибут "дата сделки" инверс- ным входом, т.к. он довольно часто будет использоваться для доступа к данным. Для задания первичных ключей и атрибутов используется редактор ат- рибутов. Перейти в него можно, воспользовавшись всплывающим меню, представленным на рис. 5.6.17. Панель диалога этого редактора изображена на рис. 5.6.22. Для задания альтернативных ключей и инверсных входов следует вос- пользоваться редактором ключей. Переход в него осуществляется так же, как и в редактор атрибутов. Общий вид этого редактора приведен на рис. 5.6.23. На этом процесс создания логической модели завершается, а сама мо- дель приобретает вид, представленный на рис 5.6.24.
122 Базы данных. Интеллектуальная обработка информации Рис. 5.6.22. Панель диалога редактора атрибутов Рис. 5.6.23. Панель диалога редактора ключей
Глава 5. Семантическое моделирование в базах данных 123 Рис. 5.6.24. Логическая .модель с атрибутами 5.6.73. Создание физической модели БД и генерация схемы БД Перед тем как приступить к созданию физической модели, необходи- мо выбрать сервер СУБД. Вид панели диалога, позволяющей это сде- лать, приведен на рис. 5.6.25. Напомним, что па уровне физической модели сущности соответству- ет таблица в реальной СУБД, атрибуту — колонка таблицы, связи — вне- шний ключ (если для связи задавалось имя роли, то оно соответствует имени колонки внешнего ключа в дочерней таблице), первичным и аль- тернативным ключам - уникальные индексы, а инверсным входам - не- уникальные. Поскольку логическая модель разрабатывалась на русском языке, то имена таблиц, колонок и индексов необходимо задать на английском язы- ке. Кроме того, для каждой колонки необходимо указать тип данных, воз- можность пустых значений и т.п.
124 Базы данных. Интеллектуальная обработка информации PLATINUM ERwin/ERX - Tarjcl Server Г ,- Target SQL DBMS ‘ f AS/4C jhjje? C PROGRESS ?!-^Й2 § C Wages® Г 0* r HtfTOS г 3DB£ r RedBrcfc T *uget Desktop DBMS C Access Г j^aSETII ’C FoxPro C pipper C dBASEIV $hi Server Cte'ATCO^ зд» Wrts? SYBASE Xwadate Mr •<& ?,i.' v' < !*fbj£p8 SQL Anywtvxo Version I 5QL Anywhere 5 jj 1 feadox. DefaiA SQL Anywhere D^Wypp . JCHAR(IS) Tabla Цате Macro. -DefaiA Non-Кау NulOptwcr J r’NQTNULL J — index N^gie Macro. ||X£KeyT ype£T ableName Г Alowtperwlchwri/wres q^' 1 Reset Harney | Rl Detaufts | Cancel | Puc. 5.6.25. Панель выбора сервера СУБД Для задания английсих имен таблиц необходимо воспользоваться радакто- ром таблиц, для остальных манипуляций - редактором колонок. Вызов любого их них можно осуществить при помощи всплывающего меню, представленно- го на рис. 5.6.26. Рис. 5.6 26. Меню вызова редакторов, относящихся к таблицам Диалоговое окно редактора колонок представлено на рис. 5.6.27. После того как будут выполнены все действия, физическая модель приоб- ретет следующий вид (см. рис 5.6.28). Вносить изменения в шаблоны триггеров и хранимых процедур в рассмат- риваемом примере нет необходимости.
Глава 5. Семантическое моделирование в базах данных 125 Рис. 5.6.27. Панель диалога редактора колонок. Рис. 5.6.28. Физическая модель
126 Базы данных. Интеллектуальная обработка информации Последним шагом является генерация схемы БД. Все необходимые пара- метры можно задать на предназначенной для этого панели диалога (см. рис. 5.6.29). Нажатие кнопки Preview позволяет просмотреть код, который будет автоматически создан ERwin. Генерация схемы БД запускается нажатием кнопки Generate. Рис. 5.6.29. Панель генерации схемы БД
Глава 6. Системы, основанные на знаниях 6.1. Знания и их представление 6.1.1. Знания Со времен изобретения первых компьютеров человек стремился использо- вать их для решения все более сложных задач. Поэтому с тех самых времен возникла необходимость изложения знаний, которые он использует для реше- ния этих задач, в форме, пригодной для обработки с помощью машины. Первым подходом к такой формализации знаний стал алгоритмический, или процедурный подход. В ходе его развития можно было наблюдать зна- чительный прогресс от языка машинных кодов до языков высокого уровня типа Си, Паскаль. Однако суть этого подхода не изменилась - знания выра- жаются в виде жесткой последовательности действий, предписываемых к выполнению компьютером. Составленная для компьютера прикладная про- грамма составляет единое целое со знаниями, что влечет за собой ряд недо- статков: 1. Увеличение сложности решаемых задач приводит к тому, что программы становятся все сложнее для понимания, и поэтому затрудняется их раз- работка. 2. Изменения, происходящие в предметной области, зачастую требуют кор- ректировки алгоритма решения задачи, что затем выражается в повтор- ном написании отдельных фрагментов программы, а иногда и всей про- граммы целиком. Необходимым условием возможности решения какой-либо задачи в рамках процедурного подхода является наличие четкого алгоритма. Поэтому автома- тизация коснулась прежде всего так называемых формализованных задач, ал- горитм решения которых хорошо известен (например, задача расчета заработ- ной платы). Однако существует класс задач, называемых неформализованными, харак- теризующихся одной или несколькими из следующих особенностей [33]: 1. алгоритм решения задачи неизвестен или не может быть использован из- за ограниченности ресурсов компьютера; 2. задача не может быть определена в числовой форме; 3. цели задачи не могут быть выражены в терминах точно определенной целевой функции. Заметим, что по объему этот класс значительно превосходит класс форма- лизованных задач.
128 Базы данных. Интеллектуальная обработка информации Попытки решения неформализованных задач, а также попытки устранить перечисленные выше недостатки процедурного подхода привели к формирова- нию в области искусственного интеллекта (ИИ) отдельного направления - ин- женерии знании. Суть подхода, применяемого в инженерии знаний, состоит в выделении знаний из программного обеспечения вычислительной системы и превращении их в одну из компонент ее информационного обеспечения, назы- ваемую базой знаний. Знания, хранящиеся в базе знаний, представляются в кон- кретной единообразной форме, что дает возможность их легкого определения, модификации и пополнения. Решение же задач реализуется с помощью логи- ческих выводов, делаемых на основании знаний, хранящихся в базе знаний. Для этого предусмотрен автономный механизм логического вывода, который, собственно, и составляет основную часть программного обеспечения системы. Системы, построенные по такому принципу, называются системами, основан- ными на знаниях. Несмотря на расплывчатость и неоднозначность понятия "знания", в инже- нерии знаний оно принимает вполне конкретные очертания, продиктованные самой архитектурой систем, основанных на знаниях: "знания - это формализо- ванная информация, на которую ссылаются или используют в процессе логи- ческого вывода" [28]. Процесс решения задач с помощью простейшей модели показан на рис. 6.1.1. В данном случае знания - это информация, па которую ссылаются, когда дела- ют различные заключения на основании имеющихся данных с помощью логи- ческих выводов. Если эта работа выполняется программным путем, то знания - это обязательно информация, представленная в определенной форме. Знания Знания Рис 6.1.1 Связь между знаниями и выводом при решении интеллектуальной проблемы Знания, относящиеся к любой предметной области, обычно существуют в двух видах: общедоступные и индивидуальные [29]. Общедоступные знания - это факты, определения, теории, которые обычно изложены в учебниках и спра- вочниках по данной области. Но, как правило, специалисты в данной предмет- ной области - эксперты - обладают еще и индивидуальными знаниями, кото- рые отсутствуют в опубликованной литературе. Эти личные знания основыва-
Глава 6. Системы, основанные на знаниях 129 ются на собственном опыте эксперта, накопленном в результате многолетней практики, и в значительной степени состоят из эмпирических правил, которые принято называть эвристиками. Эвристики позволяют экспертам при необхо- димости выдвигать разумные предположения, находить перспективные подхо- ды к задачам и эффективно работать при зашумленных или неполных данных. Кроме того, в работе [28] знания делятся на: • факты (фактические знания); • правша (знания для принятия решения); • метазнания (знания о знаниях). Под фактами подразумеваются знания типа "А это А", они характерны для баз данных и сетевых моделей. Под правилами подразумеваются знания вида "ЕСЛИ-TO". Понятие "метазнания" указывает на знания, касающиеся спосо- бов использования знаний, и знания, касающиеся свойств знаний. Это понятие необходимо для управления базой знаний, логическим выводом, отождествле- ния, обучения и т. п. 6.1.2. Проблема представления знаний Как упоминалось ранее, знания в базе знаний представлены в определен- ной форме. Форма представления знаний оказывает существенное влияние на характеристики и свойства системы, поэтому представление знаний является одной из наиболее важных проблем, характерных для систем, основанных на знаниях. Поскольку логический вывод и действия над знаниями производятся программным путем, знания не могут быть представлены непосредственно в том виде, в котором они используются человеком (например, в виде простого текста). В связи с этим для представления знаний разрабатываются формаль- ные модели представления знаний. При разработке конкретной модели представления знаний стараются учесть следующие требования [28]: 1. Представление знаний должно быть однородным (единообразным). Од- нородное представление приводит к упрощению механизма управления логическим выводом и упрощению управления знаниями. 2. Представление знаний должно быть понятным экспертам и пользовате- лям системы. В противном случае затрудняются приобретение знаний и их оценка. Принято выделять 4 типичные модели представления знаний [28; 31; 35]: • логическая модель; • продукционная модель (модель, основанная на использовании правил); • фреймовая модель; • модель семантической сети. 5-307
130 Базы данных. Интеллектуальная обработка информации Язык, используемый для разработки систем, спроектированных на основе этих моделей, называется языком представления знаний. Несмотря на независимость базы знаний и механизма логического вывода с точки зрения структуры системы, основанной на знаниях, следует подчерк- нуть, что оба этих компонента находятся в тесной взаимосвязи. Поэтому далее, говоря о конкретной модели представления знаний, мы будем уделять внима- ние и соответствующему ей механизму логического вывода. 6.1.3. Логическая модель представления знаний В рамках логической модели знания представляются в системе логики пре- дикатов первого порядка. Приведенные ниже примеры являются логическими моделями представления фактов (в данном случае - "Петров посещает лекции" и "Петров - студент") с помощью предикатов и носят название атомарной фор- мулы. ПОСЕЩЕНИЕ (Петров, лекции) СТУДЕНТ (Петров) Следующие примеры являются правильно построенными логическими формулами, включающими кванторы существования 3 и общности V. (Зх) [ДЕЛЬФИН(х) v УМНЫЙ(х)] (Vx) [СЛОН(х) -> ЦВЕТ(х, Серый)] Эти формулы могут быть интерпретированы так: "некий дельфин наделен умственными способностями" и "все слоны имеют серую окраску". Логический вывод осуществляется с помощью силлогизма (если из А сле- дует В, а из В следует С, то из А следует С). Достоинствами логической модели представления знаний являются един- ственность теоретического обоснования и возможность реализации системы формально точных определений и выводов. Однако при решении сложных задач попытка представить неформализован- ные знания эксперта, среди которых преобладают эвристики, в системе строгой логики наталкивается на серьезные препятствия. Это связано с тем, что в отли- чие от строгой логики, так называемая, "человеческая логика" обладает нечеткой структурой. Поэтому большая часть достижений в области систем с базами зна- ний до настоящего момента была связана с применением нелогических моделей. 6.1.4. Продукционная модель представления знаний В продукционной модели (модели правил) знания представлены совокуп- ностью правил вида "ЕСЛИ-TO". Системы с базами знаний, основанные на этой модели, называются продукционными системами. Продукционные системы бывают двух диаметрально противоположных типов - с прямыми и обратными выводами. Типичными представителями пер-
Глава 6. Системы, основанные на знаниях 131 вого типа являются системы, используемые для решения задач диагностичес- кого характера, а типичными представителями систем второго типа - системы, используемые для решения задач проектирования. Системы продукций с прямыми выводами среди систем, основанных на использовании знаний, имеют наиболее давнюю историю, поэтому они явля- ются в некотором смысле основополагающими. Эти системы включают три компонента: базу правил, состоящую из набора продукций (правил вывода), базу данных, содержащую множество фактов, и интерпретатор для получения логического вывода на основании этих знаний. База правил и база данных об- разуют базу знаний, а интерпретатор соответствует механизму логического вывода. Вывод выполняется в виде цикла "понимание—выполнение", причем в каждом цикле выполняемая часть выбранного правила обновляет базу дан- ных. В результате содержимое базы данных преобразуется от первоначального к целевому, т.е. целевая система синтезируется в базе данных. Поясним вышесказанное на примере, приведенном в работе [28]. Пусть дан- ные, хранящиеся в базе данных, представляют собой образцы в виде наборов символов, например, "намерение - отдых", "место отдыха - горы" и т.п. Прави- ла, накапливаемые в базе правил, содержат в условной части либо одиночные образцы, либо несколько условий, соединенных союзом "и", а в заключитель- ной части - образцы, дополнительно помещаемые в базу данных. Рассмотрим два примера подобных правил: Правило 1. ЕСЛИ "намерение - отдых" и "дорога ухабистая" ТО "использовать джип" Правило 2. ЕСЛИ "место отдыха - горы" ТО "дорога ухабистая" После того как в базу данных заносятся образцы "намерение - отдых" и "место отдыха - горы", рассматривается возможность применения этих правил. Сначала механизм вывода сопоставляет образцы из условной части правила с образцами, хранящимися в базе данных. Если все образцы имеются в базе данных, то услов- ная часть считается истинной, в противном случае - ложной. В данном примере образец "намерение - отдых" существует в базе данных, а образец "дорога ухаби- стая" отсутствует, поэтому условная часть правила 1 считается ложной. Что каса- ется правила 2, то его условная часть истинна. Поскольку в данном случае суще- ствует только одно правило с истинной условной частью, то механизм вывода сра- зу же выполняет его заключительную часть и образец "дорога ухабистая" заносит- ся в базу данных. При попытке вторично применить эти правила получается, что можно применить лишь правило 1, поскольку правило 2 уже было применено и 5*
132 Базы ванных. Интеллектуальная обработка информации выбыло из числа кандидатов. К этому времени содержимое рабочей памяти было дополнено новым образцом - результатом применения правила 2, поэтому услов- ная часть правила 1 становится истинной, и содержимое базы данных пополняется образцом его заключительной части - "использовать джип". В системе продукций с обратными выводами механизм логического выво- да основан на ином принципе. Поясним этот принцип на том же примере. До- пустим, что цель-это "использовать джип", и исследуем сначала возможность применения правила 1, подтверждающего этот факт. Поскольку образец "наме- рение - отдых" из условной части правила 1 уже занесен в базу данных, то для достижения цели достаточно подтвердить факт "дорога ухабистая'1. Однако если принять образец "дорога ухабистая" за новую цель, то потребуется правило, подтверждающее этот факт. Поэтому исследуем возможность применения пра- вила 2. Условная часть этого правила в данный момент является истинной, по- этому правило 2 можно сразу же применять. При этом база данных пополнится образцом "дорога ухабистая", и в результате возможности применения прави- ла 1 подтверждается цель "использовать джип". Итак, упорядочим сильные и слабые стороны хорошо известных систем продукций. Сильные стороны: • простота создания и понимания отдельных правил; • простота пополнения и модификации; • простота механизма логического вывода. Слабые стороны: • неясность взаимных отношений правил; • сложность оценки целостного образа знаний; • крайне низкая эффективность обработки; • отличие от человеческой структуры знаний; • отсутствие гибкости в логическом выводе. 6.1.5. Фреймовая модель представления знаний Фреймовая модель, или модель представления знаний, основанная на фрей- мовой теории М. Минского, представляет собой систематизированную в виде единой теории психологическую модель памяти человека и его сознания. Од- нако из-за отсутствия конкретных идей, позволяющих создать язык представ- ления знаний только па основе этой теории, она носит довольно абстрактный характер. Важным моментом в этой теории является понимание фрейма - струк- туры данных для представления некоторого концептуального объекта. Каждый фрейм описывает один концептуальный объект, а конкретные свойства этого объекта и факты, относящиеся к нему, описываются в слотах - структурных элементах данного фрейма. В общем случае фрейм можно представить в виде следующей структуры.
Глава 6. Системы, основанные на знаниях 133 (Имя фрейма: Имя слота 1 (значение слота 1) ; Имя слота 2 (значение слота 2); • • Имя слота N (значение слота N)) . Значением слота может быть практически что угодно: числа, формулы, тек- сты на естественном языке или программы, правила вывода или ссылки на дру- гие слоты данного фрейма или других фреймов. В качестве значения слота может выступать набор слотов более низкого уровня, что позволяет реализовывать во фреймовых представлениях "принцип матрешки”. Например, фрейм служащего выглядит следующим образом: (Служащий: Фамилия (Иванов) ; Год рождения (1974); Специальность (Программмист); Стаж (3)). Все фреймы взаимосвязаны и образуют единую фреймовую систему, в которой органически объединены декларативные и процедурные знания. Поскольку концеп- туальному представлению свойственна иерархичность, целостный образ знаний стро- ится в виде одной фреймовой системы, имеющей иерархическую структуру. Пример фреймовой системы, описывающей аудиторию, показан на рис. 6.1.2. Механизм управления выводом может быть организован следующим образом. Связи между данным фреймом и другими фреймами задаются при помощи специ- ального слота, значением которого является присоединенная процедура - специ- фичная процедура вывода в этом фрейме. При осуществлении вывода сначала за- пускается одна из присоединенных процедур некоторого фрейма. Затем оценива- ется возвращаемое значение, и в зависимости от него последовательно запускают- ся присоединенные процедуры других фреймов. В ходе этого процесса происхо- дит генерация и уничтожение слотов, изменение значений слотов и т.п. Таким об- разом, происходит постепенное продвижение к получению целевого значения. Язык представления знаний, основанных на фреймовой модели, особенно эф- фективен для структурного описания сложных понятий и решения задач, в которых в соответствии с ситуацией желательно применять различные способы вывода. В то же время на таком языке затрудняется управление завершенностью и постоянством целостного образа. В частности, по этой причине существует большая опасность нарушения присоединенной процедуры. Следует отмстить, что фреймовую систему без механизма присоединенных процедур (а следовательно, и механизма пересылки сообщений) часто используют как базу данных системы продукций. Теория фреймов послужила толчком к разработке нескольких языков пред- ставления знаний, которые благодаря своим широким возможностям и гибкос- ти получили широкое распространение.
134 Базы данных. Интеллектуальная обработка информации Рис. 6 1.2 Пример фреймового представления аудитории 6.1.6. Семантические сети Семантической сетью называется структура данных, имеющая определенный смысл как сеть. Стандартного определения семантической сети не существует, но обычно под ней подразумевают систему знаний, имеющую определенный смысл в виде целостного образа сети, узлы которой соответствуют понятиям и объектам, а дуги - отношениям между объектами. Следовательно, всевозможные сети можно рассматривать как сети, входящие в состав семантической сети. Например, если "Петров" и "студент" являются узлами сети, то, установив между этими узлами связь ’’есть", получим смысловое предложение "Петров есть студент". Аналогичное предложение можно получить, если глагольную
Глава 6. Системы, основанные на знаниях 135 связку "есть" принять за отдельный узел и установить связь, имеющую грам- матический смысл, из другого узла к этим трем узлам. Па рис. 6.1.3 показан пример семантической сети, иллюстрирующей предло- жение "Петров на протяжении периода времени с tl по t2 владел автомобилем марки "Святогор". На рисунке показаны дуги s, е, владелец, объект, начало, конец; s и е означают "подмножество" и "элемент" соответственно и показывают иерар- хические понятия. Символ Q обозначает конкретную описываемую ситуацию. Рис. 6.1.3 Пример семантической сети
136 Базы данных. Интеллектуальная обработка информации Особенность семантической сети заключается в целостности системы, выполнен- ной на ее основе, не позволяющей разделить базу знаний и механизм выводов. Обычно интерпретация семантической сети определяется с помощью использующих ее про- цедур. Эти процедуры основаны на нескольких способах, но наиболее типичный из них - это способ сопоставления частей'сетевой структуры. Он основан на построении подсети, соответствующей вопросу, и сопоставлении ее с базой данных сети. 6.2. Экспертные системы 6.2.1. Определение и базовая структура экспертной системы В повседневной жизни мы постоянно сталкиваемся с экспертами в самых раз- личных областях человеческой деятельности - это врачи, преподаватели, адвока- ты, переводчики, секретари, программисты и т.п Имея огромный багаж знаний, касающихся конкретной предметной области, а также довольно большой опыт в этой области, они умеют точно сформулировать и правильно решить задачу. В течение последних десятилетий многочисленные попытки исследовате- лей были направлены на создание систем, способных заменить специалиста в конкретной предметной области, т. е. решать задачи в отсутствие экспертов. Эти системы получили название экспертных систем. В ходе исследований выяснилось, что среди задач, решаемых экспертами, формализованные задачи составляют лишь малую часть, в то время как основ- ная их масса относятся к числу неформализованных. Поэтому процедурный подход к созданию экспертных систем нашел ограниченное применение, усту- пив место методам инженерии знаний. Вообще надо сказать, что на сегодняшний день термины "инженерия зна- ний" и "экспертные системы" используются как синонимы при обозначении направления в ИИ, так же как стали фактическими синонимами термины "экс- пертная система" и "система, основанная на знаниях". Одним из наиболее популярных определений экспертной системы является сле- дующее: "Под экспертной системой понимается система, объединяющая возмож- ности компьютера со знаниями и опытом эксперта в такой форме, что система может предложить разумный совет или осуществить разумное решение поставленной за- дачи. Дополнительно желаемой характеристикой такой системы, которая многими рассматривается как основная, является способность системы пояснять по требова- нию ход своих рассуждений в понятной для спрашивающего форме" [30]. Приведенное определение, а также сформулированные в п. 6.1.1. общие принципы построения систем, основанных на знаниях, позволяют выделить ряд базовых структурных элементов экспертной системы.
Глава 6. Системы, основанные на знаниях 137 Как и любая система, основанная на знаниях, экспертная система обязатель- но содержит в своем составе базу знаний и механизм логических выводов. Зачас- тую для представления фактических знаний используется отдельный механизм - база данных, а в базе знаний остаются лишь процедурные знания. Кроме того, для ведения базы знаний и дополнения ее при необходимости знаниями, полу- ченными от эксперта, требуется отдельный модуль приобретения знаний. Другим важным компонентом экспертной системы является пользователь- ский интерфейс, необходимый для правильной передачи ответов пользовате- лю в удобной для пего форме. Кроме того, пользовательский интерфейс необ- ходим и эксперту для осуществления манипуляций со знаниями. И, наконец, в экспертной системе должен присутствовать модуль, который способен при помощи механизма логического вывода "предложить разумный совет или осуществить разумное решение поставленной задачи", сопровождая его по требованию пользователя различными комментариями, поясняющими ход проведенных рассуждений. Модуль, реализующий эти функции, называет- ся модулем советов и объяснений. Следует отмстить, что механизм объяснений играет весьма важную роль, позволяя повысить степень доверия пользователя к полученному результату. Кроме того, он важен не только для пользователя системы, но и для эксперта, который с его помощью определяет, как работает система и как используются предоставленные им знания. Базовая структура экспертной системы показана на рис. 6.2.1 [28]. Перечисленные структурные элементы являются наиболее характерными для большинства экспертных систем, хотя в реальных условиях некоторые из них могут отсутствовать. Рис. 6.2.1 Пример структуры экспертной системы
138 Базы данных. Интеллектуальная обработка информации 6.2.2. Типы экспертных систем Одним из часто употребляемых оснований классификации экспертных си- стем является тип решаемых ими задач. Наиболее распространенные из них приведены в таблице 6.2.1. Таблица 6.2.1. Основные области применения экспертных систем Тип решаемых задач Суть решаемых задач Интерпретация Построение описаний ситуаций по наблюдаемым данным Прогноз Вывод вероятных следствий из заданных ситуаций Диагностика Заключение о нарушениях в системе исходя из наблюдений Проектирование Построение конфигурации объектов при ограничениях Планирование Проектирование плана действий Мониторинг Сравнение наблюдений с критическими точками плана Отладка Выработка рекомендаций по устранению неисправностей Ремонт Выполнение плана применения выработанной рекомендации Обучение Диагностика, отлаживание и исправление поведения ученика Управление Интерпретация, прогноз, ремонт и мониторинг поведения системы Экспертные системы, применяемые для решения перечисленных типов за- дач, носят названия интерпретирующих, прогнозирующих и т.п. (более под- робно см. [29]) Другим основанием классификации может служить тип модели предмет- ной области. Различают статические и динамические предметные области [33]. Предметную область называют статической, если ее модель остается неизмен- ной за все время решения задачи, т.е. остаются неизменными набор сущнос- тей, их атрибуты, связи между ними и т.д. Если это условие не выполняется, то предметную область называют динамической. В соответствии с этим эксперт- ные системы делятся на статические и динамические.
Глава 6, Системы, основанные на знаниях 139 Существует мнение, что решение ряда важнейших практических неформа- лизованных задач возможно лишь с использованием динамических эксперт- ных систем [33]. В настоящее время именно этот класс систем переживает пе- риод плодотворного развития [34]. Иногда, говоря о динамических экспертных системах, iгх называют система- ми реального времени. Хотя в общем случае это не совсем корректно, т.к. дан- ный термин подразумевает использование другого основания классификации - время реакции системы Так, например, при решении задач управления под сис- темами реального времени можно понимать системы, обеспечивающие обработку поступающей информации и выдачу управляющих воздействий с задержкой, исключающей переход управляемого объекта в аварийное состояние. 6.2.3. Методология разработки экспертных систем По опыту известно, что большая часть знаний в конкретной предметной области остается личной собственностью эксперта. И наибольшую проблему при разработке экспертной системы представляет процедура получения зна- ний у эксперта и занесения их в базу знаний, называемая извлечением знаний. Это происходит не потому, что он не хочет разглашать своих секретов, а пото- му, что он не в состоянии сделать этого, - ведь эксперт знает гораздо больше, чем сам осознает. Кроме того, обладая большими знаниями и опытом в своей предметной области, эксперт может не быть специалистом в области компью- теров и систем ИИ. Поэтому для выявления знаний эксперта и их формализа- ции на протяжении всего периода разработки системы с ним взаимодействует инженер по знаниям. В целом процесс разработки экспертной системы носит эволюционный ха- рактер. В таблице 6.2 2 показаны пять основных этапов эволюции экспертной системы [29]. Таблица 6.2.2. Этапы эволюции экспертной системы Идентификация Определение характеристик задачи Концептуализация Поиск понятий для представления знаний Формализация Разработка структур для организации знаний Реализация Формулировка правил, воплощающих знания Испытания Оценка правил, в которых воплощено знание На этапе идентификации инженер по знаниям и эксперт определяют цели и задачи построения экспертной системы, ее предметную область, необходимые для нее ресурсы (время, вычислительные средства). Они также указывают уча- стников процесса создания системы (например, дополнительных экспертов).
140 Базы данных. Интеллектуальная обработка информации В ходе этапа концептуализации эксперт и инженер по знаниям выявляют основные понятия, отношения и характер информационных потоков, необхо- димые для описания процесса решения задач в данной предметной области. На этапе формализации инженер по знаниям производит выбор инструмен- тального средства разработки экспертных систем и при помощи эксперта пред- ставляет основные понятия и отношения в рамках некоторого формализма, за- даваемого выбранным средством разработки. В ходе этапа реализации эксперт осуществляет наполнение базы знаний, а инженер по знаниям комбинирует и реорганизует формализованное знание. Результатом этого этапа является программа-прототип, которую можно выпол- нять и подвергать контрольным испытаниям. Наконец, в ходе испытания проводится оценка работы программы-прото- типа. Как правило, эксперт дает оценку работы программы и помогает инжене- ру по знаниям в последующих ее модификациях. Иногда к рассмотренным пяти этапам добавляют шестой - этап опытной эксплуатации [33], в ходе которого проверяется пригодность экспертной систе- мы для конечных пользователей. Перечисленные этапы создания экспертной системы не являются четко очер- ченными, детально определенными или даже независимыми друг от друга. В луч- шем случае они грубо описывают сложный процесс извлечения знаний На каж- дом из них возможен откат на несколько этапов назад. Таким образом, экспертная система эволюционирует, постепенно усложняя организацию и представление зна- ний. Время от времени, когда появляется необходимость в новых свойствах, кото- рых нельзя достичь исходя из возможностей существующей системы, происходит существенная реорганизация и перестройка всей ее архитектуры. 6.2.4. Инструментальные средства разработки экспертных систем Различают следующие типы инструментальных средств разработки ЭС [32; 35]: 1. языки программирования; 2. языки представления знаний (языки инженерии знаний); 3. средства автоматизации разработки (проектирования); 4. оболочки ЭС. Указанные типы инструментальных средств перечислены в порядке убывания эффективности, требуемой квалификации пользователя и трудозатрат, необходи- мых для создания ЭС. Действительно, при использовании инструментальных средств первого типа в задачу разработчика входит программирование всех компо- нентов ЭС на языке довольно низкого уровня. Использование инструментальных средств второго типа позволяет значительно повысить уровень языка, что, как пра- вило, приводит к некоторому снижению эффективности. Инструментальные сред-
Глава б. Системы, основанные на знаниях 141 ства третьего типа позволяют разработчику не программировать все или часть ком- понентов ЭС. а выбирать их из заранее составленного набора. При применении инструментальных средств четвертого типа разработчик ЭС полностью освобож- дается от работ по созданию программ, так как берет готовую пустую ЭС. Поэтому прототипы ЭС создаются с помощью оболочек или средств автома- тизации разработки, т.к основная цель на этой фазе - минимизация трудозатрат, а промышленные или коммерческие ЭС - на языках представления знаний или языках программирования, обеспечивающих более высокую эффективность. Оболочки ЭС ориентированы на работу с пользователем-непрофессионалом в области программирования. Основным свойством оболочек является то, что они содержат все компоненты ЭС в готовом виде и их использование не предполагает программирования, а сводится лишь к вводу в оболочку знаний о проблемной об- ласти Каждая оболочка характеризуется фиксированным способом представле- ния знаний, организации вывода и функционирования компонентов, которые бу- дут использоваться во всех приложениях, где будет применяться оболочка. Желание предоставить разработчику ЭС разнообразные средства для учета осо- бенностей приложения привело к объединению в рамках одной системы различных методов решения задач, представления и интерпретации знаний. В их состав могут входить средства модифицирования функционирования оболочки, набор компонен- тов, позволяющих конструировать собственные оболочки, средства комплексирова- ния компонентов в виде языка высокого уровня, развитый графический интерфейс с пользователем. Подобные средства называют средствами автоматизации разра- ботки (проектирования) ЭС. Они обычно позволяют представлять предметную об- ласть в виде сложной структуры, состоящей из произвольного числа понятии. Необ- ходимость выбора средств, анализа их возможностей, модификации их функциони- рования и т.д. требует от пользователя специальных знаний в области ИИ. При разработке реальных экспертных систем в большинстве случаев исполь- зуются так называемые языки искусственного интеллекта типа Лисп и Пролог. Однако в последнее время наметился переход к использованию языков традици- онного программирования (С, C++ и т.п.), что позволяет упростить интеграцию создаваемой экспертной системы в эксплуатируемые информационно-аналити- ческие системы и снизить требования к быстродействию и объему памяти. 6.3. Инструментальное средство разработки экспертных систем CLIPS 6.3.1. Общие сведения о CLIPS CLIPS (С Language Integrated Production System) является одним из распро- страненных инструментальных средств разработки экспертных систем (ЭС).
142 Базы данных. Интеллектуальная обработка информации Представляя собой логически полную среду, содержащую встроенный редак- тор и средства отладки, CLIPS является оболочкой ЭС. Разработчиком CLIPS является Национальное Аэрокосмическое Агентство США. Первая версия сис- темы вышла в 1984 году, текущая версия - 6.1. CLIPS использует продукционную модель представления знаний и поэто- му содержит три основных элемента: 1. список фактов, 2. базу знаний, 3. блок вывода. Принципиальным отличием данной системы от аналогов является то, что она полностью реализована на языке С. Причем исходные тексты ее программ опубликованы в сети Интернет. В CLIPS используется оригинальный LIPS-подобный язык программиро- вания, ориентированный на разработку ЭС. Кроме того, CLIPS поддерживает еще две парадигмы программирования: объектно-ориентированную и проце- дурную. Аспекты объектно-ориентированного программирования в CLIPS нами рассматриваться не будут. 6.3.2. Программирование в CLIPS 6.З.2.1. Основные элементы программирования CLIPS предоставляет три основных элемента для написания программ: • простые типы данных; • функции для манипулирования данными; • конструкции для пополнения базы знаний. Простые типы данных Для представления информации в CLIPS предусмотрено восемь простых типов данных: float, integer, symbol, string, external-address, fact-address, instance-name и instance-address. Для представления числовой информации используются типы float и integer, символьной - symbol и string. Остановимся на рассмотрении этих четырех типов данных. При записи числа могут использоваться только цифры (0-9), десятичная точка (.), знак (+) или (-) и (е) при экспоненциальном представлении. Число сохраняется либо как целое, либо как действительное. Любое число, состоя- щее только из цифр, перед которыми может стоять знак, сохраняется как целое (тип integer представляется внутри CLIPS как тип языка С long integer). Все остальные числа сохраняются как действительные (float - С double float).
Глава 6. Системы, основанные на знаниях 143 Количество значащих цифр зависит от аппаратной реализации. В этой же связи могут возникать ошибки округления. Как в любом языке программирования, особенную осторожность необхо- димо проявлять при сравнении чисел с плавающей точкой, а также при сравне- нии с ними целых чисел. Примеры целых чисел: 237 15 +12 -32 Примеры чисел с плавающей точкой: 237е3 15.09 +12.0 -32.Зе-7 Последовательность символов, которая не удовлетворяет числовым типам, обрабатывается как тип данных symbol. Тип данных symbol в CLIPS - последовательность символов, состоящая из одного или нескольких любых печатных символов кода ASCII. Как только в после- довательности символов встречается символ-разделитель, symbol закапчивает- ся. Следующие символы служат разделителями: любой непечатный ASCII символ (включая пробел, символ табуляции, CR, LF), двойные кавычки,")"Г, Символы-разделители не могут включаться в symbol за исключением символа который может быть первым символом в symbol. Кроме того, symbol не может начинаться с символа "?" или последовательности символов по- скольку эти символы зарезервированы для переменных. Заметим, что CLIPS раз- личает регистр символов. Ниже приведены примеры выражений символьного типа: foo Hello B76-HI bad value 127A 742-42-42 @+=-% Search Тин данных string -это последовательность символов, состоящая из нуля и более печатных символов и заключенная в двойные кавычки. Если внутри строки встречаются двойные кавычки, то перед ними необходимо поместить символ (\). То же справедливо и для самого (\). Несколько примеров- "foo" "a and b" "1 number" "a\"quote" Отметим, что строка "abed" не тоже самое, что abed. Они содержат одина- ковые наборы символов, но являются экземплярами различного типа. Функции Под функцией в CLIPS понимается фрагмент исполняемого кода, с кото- рым связано уникальное имя и который возвращает полезное значение или имеет полезный побочный эффект (например, вывод информации на экран). Существует несколько типов функций. Пользовательские и системные фун- кции - это фрагменты кода, написанные на внешних языках (например, на С) и связанные со средой CLIPS. Системными называются те функции, которые были определены изначально внутри среды CLIPS. Пользовательскими называются функции, которые были определены вне CLIPS.
144 Базы данных. Интеллектуальная обработка информации Хотя CLIPS и не ориентирована на численные вычисления, в ней предусмот- рен ряд стандартных арифметических и математических функций. Среди них: + Сложение Вычитание * Умножение / Деление * * Возведение в степень Abs Определение абсолютного значения Sqrt Вычисление квадратного корня Mod Взятие по модулю Min Нахождение минимума Мах Нахождение максимума Конструкция def function позволяет пользователю определять новые фун- кции непосредственно в среде CLIPS с использованием синтаксиса CLIPS. Функ- ции, определенные таким образом, выглядят и работают подобно остальным фун- кциям, однако они выполняются не напрямую, а интерпретируются средой CLIPS. Вызовы функций в CLIPS имеют префиксную форму: аргументы функции могут стоять только после ее названия. Вызов функции начинается с открыва- ющейся скобки, за которой следует имя функции, затем идут аргументы, каж- дый из которых отделен одним или несколькими пробелами. Аргументами фун- кции могут быть данные простых типов, переменные или вызовы других фун- кций. В конце вызова ставится закрывающаяся скобка. Ниже приведены при- меры вызовов функций: (+3 4 5) (* 5 6.С 2) (+ 3 (* 8 9) 4) (* 8 (+ 3 (* 2 3 4) 9) (* 3 4) ) Конструкции В CLIPS существует несколько описывающих конструкций: defmodule, defrule, deffacts, deftemplate, defglobal, deffunction, defclass, definstances, defmessage-handler, defgeneric. При записи все они заключаются в скобки. Определение конструкции отли- чается от вызова функции главным образом по производимому эффекту. Обыч-
Глава 6. Системы, основанные на знаниях 145 но вызов функции оставляет состояние среды CLIPS без изменений (за рядом исключений, когда речь идет о функциях сброса, очистки, открытия файла и т.п.). Определение конструкции, напротив, в точности направлено на измене- ние состояния среды путем внесения изменений в базу знаний CLIPS. В отли- чие от функций конструкции никогда не возвращают значений. Все конструкции (за исключением def global) позволяют размещать ком- ментарии сразу вслед за именем конструкции. Кроме того, комментарии могут вставляться в код CLIPS при помощи точки с запятой (,). Все, что следует за (;) до конца строки, будет игнорироваться CLIPS. Если (;) стоит первым символом в строке, то вся строка считается комментарием. 6.3.2.2. Факты Факты являются одной из основных форм представления информации в системе CLIPS. Каждый факт представляет фрагмент информации, который был помещен в текущий список фактов, называемый fact-list Факт пред- ставляет собой основную единицу данных, используемую правилами. Количество фактов в списке и объем информации, который может быть со- хранен в факте, ограничивается только размером памяти компьютера. Если при добавлении нового факта к списку обнаруживается, что он полностью совпа- дает с одним из уже включенных в список фактов, ю эта операция игнорирует- ся (хотя такое поведение можно изменить). Факт может описываться индексом или адресом. Всякий раз, когда факт добавляется (изменяется), ему присваивается уникальный целочисленный ин- декс. Индексы фактов начинаются с нуля и для каждого нового или измененно- го факта увеличиваются на единицу. Каждый раз после выполнения команд reset и clear выделение индексов начинается с нуля. Факт также может задаваться при помощи адреса. Адрес факта может быть получен путем сохра- нения возвращаемого значения команд, которые возвращают в качестве резуль- тата адрес факта (таких как assert, modify и duplicate), или путем свя- зывания переменной с адресом факта в левой части правила (см. далее). Идентификатор факта - это короткая запись для отображения факта на экране. Она состоит из символа f и записанного через тире индекса факта. На- пример, запись Г10 служит для обозначения факта с индексом 10. Существует два формата представления фактов: позиционный и непозиционный. Позиционные факты Позиционные факты состоят из выражения символьного типа, за которым следует последовательность (возможно, пустая) из полей, разделенных пробе- лами. Вся запись заключается в скобки. Обычно первое поле определяет "отно- шение", которое применяется к оставшимся полям. Например:
146 Базы данных. Интеллектуальная обработка информации (the pump is on) (altitude is 10000 feet) (grocery_list bread milk eggs) Поля в позиционных фактах могут быть любого простого типа (за исключени- ем первого поля, которое всегда должно быть типа symbol), на порядок полей так- же не накладывается никаких ограничений. Следующие символьные выражения зарезервированы и не должны использоваться как первое поле любого факта (по- зиционного или нет): test, and, or, not, declare, logical, object, exists и forall. Непозиционные факты Для того чтобы обратиться к информации, содержащейся в позиционном фак- те, пользователь должен знать не только какие данные содержатся в факте, но и то, в каком поле они хранятся. Непозиционные (шаблонные) факты дают возможность пользователю абстрагироваться от структуры факта, задавая имена каждому из полей факта. Для задания шаблона, который затем может использоваться при дос- тупе к полям по именам, используется конструкция def template. Эта конструк- ция подобна структуре или записи в языках программирования С и Паскаль. Конструкция deftemplate позволяет наряду с определением именован- ных полей, или слотов, вводить имя шаблона. В отличие от позиционных фак- тов слоты шаблонного факта могут быть ограничены по типу, значению, чис- ловому диапазону. Кроме того, для любого слота можно определить значения по умолчанию. Слот состоит из открывающейся скобки, за которой следует имя слота, полей (могут отсутствовать) и закрывающейся скобки. Заметим, что слоты не могут использоваться в позиционных фактах, так же как позицион- ные поля не могут использоваться в шаблонных фактах. Общая структура кон- струкции deftemplate такова: (deftemplate <name>) (slot-1) (slot-2) (slot-N) Далее приведен пример шаблона с заданными для слотов значениями по умолчанию: (deftemplate prospect) (slot name (default 7DERIVE) (slot assets (default rich) (slot age (default 80)))
Глава 6. Системы, основанные на знаниях 147 Шаблонные факты отличаются от позиционных по первому полю в факте. Первое поле всех фактов должно быть типа symbol, но если это символьное выражение соответствует имени шаблона, то этот факт - шаблонный. За пер- вым полем шаблонного факта следует список из нуля или более слотов. Как и позиционные, шаблонные факты заключаются в скобки. Далее приведено не- сколько примеров шаблонных фактов: (client (name "Joe Brown") (id X9345A)) (point-mass (x-velocity 100) (y-velocity -200)) (class (teacher "Martha Jones") (#-students 30) (room ”37A")) (grocery-list (#-of-items 3) (items bread milk eggs)) Заметим, что порядок следования слотов в шаблонном факте не важен. Манипуляции над фактами Факты могут добавляться к списку фактов (с помощью команды assert), удаляться из него (с помощью команды retract), изменяться (с помощью команды modify) и дублироваться (с помощью команды duplicate) самим пользователем или программой. Например: (assert (light green)) Кроме того, конструкция deffacts позволяет определить множество ис- ходных или априорных знаний в виде набора фактов. Например: (deffacts walk "Some facts about walking" (status walking) (walk-sign walk)) Когда производится сброс состояния среды CLIPS (с помощью команды reset) все факты, описанные в конструкции deffacts, добавляются к списку фактов. Кроме того, по этой команде в список фактов заносится исходный факт (initial-fact). Этот факт включается в список фактов всегда с идентифи- катором f-О. Его назначение будет рассмотрено в следующем пункте. 6.3.2.3. Правила Одним из основных методов представления знаний в CLIPS являются правила. Правила используются для представления эвристик, определяющих ряд действий, ко- торые необходимо выполнить в определенной ситуации. Разработчик экспертной сис- темы определяет совокупность правил, которые используются совместно для решения проблемы. Правило состоит из двух частей: антицедента (условия), который являет- ся аналогом условия в if-then операторе и записывается слева, и консеквента (заключе- ния), который является аналогом then части этого оператора и записывается справа. Левая часть правила представляет собой ряд условий (условных элементов), которые должны выполняться, чтобы правило было применимо. В CLIPS принято
148 Базы данных. Интеллектуальная обработка информации считать, что условие выполняется, если соответствующий ему факт присутствует в списке фактов. Одним из типов условных элементов может быть образец Образ- цы состоят из набора ограничений, которые используются для описания того, ка- кие факты удовлетворяют условию, определяемому образцом. Процесс сопостав- ления фактов и образцов выполняется блоком вывода CLIPS, который автомати- чески сопоставляет образцы, исходя из текущего состояния списка фактов, и опре- деляет, какие из правил являются применимыми. Если все условия правила выпол- няются, то оно активируется и помещается в список активированных правил. Если левая часть правила пуста, то для его активации необходимо наличие в списке фактов исходного факта (initial-fact). Такие безусловные пра- вила часто используются для того, чтобы инициировать работу программы. Поэтому перед запуском таких программ необходимо произвести сброс состо- яния среды CLIPS. Правая часть правила представляет собой совокупность действий, которые должны быть выполнены, если правило применимо. Действия, описанные в при- менимых правилах, выполняются тогда, когда блок вывода CLIPS получает ко- манду начать выполнение применимых правил. Если существует множество при- менимых правил, то для того, чтобы выбрать правило, действия которого долж- ны быть выполнены, блок вывода использует стратегию разрешения конфлик- тов. Действия, описанные в выбранном правиле, выполняются (при этом список применимых правил может измениться), а затем блок вывода выбирает другое правило и т.д. Этот процесс продолжается до тех пор, пока не остается ни одного применимого правила, т.е. пока список активированных правил не окажется пуст. Во многом правила похожи на операторы типа if-then процедурных языков программирования. Однако условие if-then оператора в процедурном языке проверяется только тогда, когда программа передает ему управление. С прави- лами ситуация иная. Блок вывода постоянно отслеживает все правила, условия которых выполняются, и, таким образом, правило может быть выполнено в любой момент, как только оно становится применимым. В этом смысле прави- ла подобны обработчикам исключительных ситуаций в процедурных языках (например, в языке Ада). Для определения правил используется конструкция def rule' (defrule rule_name "optional_comment" (patten_1) (patten_2) (patten_N)
Глава 6. Системы, основанные на знаниях 149 (action_l) (action_2) (action_M)) Например: (defrule take-a-vacation (work done) (money plenty) (reservations made) (printout t "Let’s go!" crlf)) 6.3.2.4. Переменные Как и в других языках программирования, в CLIPS для хранения значений используются переменные. В отличие от фактов, которые являются статичес- кими, или неизменными, содержание переменной динамично и изменяется по мере того, как изменяется присвоенное ей значение. Идентификатор переменной всегда начинается с вопросительного знака, за которым следует ее имя. В общем случае формат переменной выглядит следу- ющим образом: ?<variable-name> Примеры переменных: ?х ?sensor ?noun ?color Перед использованием переменной ей необходимо присвоить значение. Все переменные, кроме глобальных, считаются локальными и могут использовать- ся только в рамках описания конструкции. К этим локальным переменным мож- но обращаться внутри описания, но они не определены вне него. Чаще всего переменные описываются и получают значения в левой части правила Например: (defrule make-quack (duck-sound ?sound) (assert (sound-is ?sound)) Получив значение, переменная сохраняет его неизменным при использова- нии как в левой, так и в правой части правила, если только это значение не изменяется в правой части при помощи функции bind.
ISO Базы данных. Интеллектуальная обработка информации (defrule addition (numbers ?х ?у) (assert (answer (+ ?х ?у) ) ) (bind ?answer (+ ?х ?у)) (printout t "answer is " ?answer crlf) ) Кроме значения самого факта, переменной может быть присвоено значение адреса факта. Это может оказаться удобным при необходимости манипулиро- вать фактами непосредственно из правила. Для такого присвоения использует- ся комбинация Следующий пример иллюстрирует присвоение перемен- ной значения адреса факта и ее последующее использование: (defrule get-married ?duck <- (bachelor Dopey) (retract ?duck) ) Для определения глобальных переменных, которые видны всюду в среде CLIPS, используется конструкция def global. К глобальной переменной можно обратиться в любом месте, и ее значение остается независимым от других кон- струкций. Глобальные переменные CLIPS подобны глобальным переменным в процедурных языках программирования, но они значительно слабее типизиро- ваны (на них не налагается ограничения хранения данных только одного типа). 6.3.2.5. Дополнительные средства CLIPS предоставляет ряд дополнительных средств, необходимых при на- писании программ. Основными из них являются: • ограничения на значения полей; • оператор проверки условия test; • использование функций в правилах; • использование процедурных знаний. Рассмотрим каждое из этих средств по очереди. Ограничения на значения полей Использование ограничений на значения полей позволяет ограничить зна- чения, принимаемые образцами в левой части правила. Рассмотрим три вида ограничений: ~, | и &. Ограничение первого типа действует на следующее прямо за ним значение и говорит о том, что поле не может принимать это значение. Например: (defrule walk (light -green) (printout t "Don't walk" crlf))
Глава 6. Системы, основанные на знаниях 151 Ограничение второго типа указывает на то, что поле может принимать одно из следующих значений. Например: (defrule cautious (light yellow|blinking-yellow) (printout t "Be cautious" crlf)) Ограничение третьего типа используется только вместе с ограничениями первых двух типов и указывает на то, что должны удовлетворяться оба соеди- няемых при его помощи ограничения. Например: (defrule cautious (light ?color&yellow1 blinking-yellow) (printout t "Be cautious because light is " Tcolor crlf)) Оператор проверки условия test Оператор проверки условия test представляет собой мощное сред- ство, при помощи которого можно сравнивать числа, переменные и строки в левой части правила. Он записывается точно так же, как и образцы. Пра- вило может выполниться только тогда, когда наряду с совпадением всех образцов, записанных в левой части правила, справедливо и условие, опи- сываемое в test. Функция test имеет следующий синтаксис: (test (аргумент_сравнения аргумент_1 аргумент_2)) где аргумент сравнения - это тот параметр, по которому сравниваются два следующих аргумента. В CLIPS существует ряд предопределенных аргумен- тов сравнения: eq Равно (сравнивает тип и значение) neq Не равно = Равно (сравнивает только значение) о Неравно >= Больше или равно > Больше <= Меньше или равно < Меньше
152 Базы данных. Интеллектуальная обработка информации Все аргументы, кроме cq и neq, используются только для сравнения чисел. При интерпретации выражения сравнения считается что аргумент_1 стоит слева от аргумента_сравнения, а аргумент_2 - справа. Использование функций в правилах Функции могут использоваться и в левой, и в правой части правила. Напри- мер (defrule addition (numbers ?х ?у) (assert (answer (+ ?х ?у)))) При использовании функции в левой части правила перед ней должен сто- ять знак " ~ ", показывающий CLIPS, что следующее выражение необходимо вычислить, а не использовать буквально. Например: (defrule addition (numbers ?х ?у) (stock ?ID =(sqrt (+ (** ?x 2) (** у 2)))) (printout t "stock ID = " ?ID crlf)) Использование процедурных знаний CLIPS поддерживает также процедурную парадигму представления знаний, подобную принятой в обычных языках программирования (С, Паскаль). Кон- струкция deffunction позволяет пользователю определять новые функции. Эти новые функции могут вызываться точно так же, как и встроенные функ- ции CLIPS. Конструкция def module позволяет разбивать базу знаний на ча- сти. 6.3.3. Интерфейс CLIPS Оболочка ЭС CLIPS может работать в нескольких режимах. 1. интерактивно, с использованием простого текстового интерфейса коман- дной строки; 2. интерактивно, с использованием GUI-интерфейса; 3. как ЭС, интегрированная в другие приложения. 6.З.З.1. Интерфейс командной строки Основным методом взаимодействия пользователя с CLIPS является ввод команд с командной строки CLIPS. После появления на экране подсказки CLIPS> пользователь может ввести команду
Глава 6. Системы, основанные на знаниях 153 Командами могут быть вызовы функций, конструкции, глобальные пере- менные или константы. Если ввести вызов функции, вычисляется значение этой функции и на экран выводится результат. Как уже отмечалось, вызовы функ- ций в CLIPS имеют префиксную форму, т.е. аргументы функции могут стоять только После ее названия. Если ввести определение, то будет создана конструк- ция соответствующего типа. В ответ на ввод глобальной переменной на экран будет выведено ее значение За вводом константы последует вывод ее на экран (что вряд ли принесет много пользы). Например: CLIPS> (+34) 7 CLIPS> (defglobal ?*х* = 3) CLIPS> ?*х* 3 CLIPS> red red CLIPS> В приведенном примере сначала была вызвана функция сложения с аргу- ментами 3 и 4, которая вернула результат 7. Затем была определена глобальная переменная ?*х*, и ей было присвоено значение 3. Далее переменная ?*х* была введена с командной строки, и было возвращено ее значение 3. И наконец, была введена и тут же возвращена константа red. Стандартная процедура использования интерфейса командной строки выг- лядит следующим образом: 1. создать и редактировать базу знаний при помощи любого текстового ре- дактора; 2. сохранить базу знаний в одном или нескольких текстовых файлах; 3. выйти из редактора и запустить CLIPS; 4. загрузить базу знаний в CLIPS. Рассмотрим пример 1. Создадим при помощи любого текстового редактора (например, Notepad) текстовый документ такого содержания: (defrule one (light green) (printout t ”Go !’!” crlf)) 2. Сохраним его в файле под любым именем (например, TEST.CLP). 3. Запустим CLIPS (на экране появится главное диалоговое окно CLIPS). 4. Теперь для загрузки правила one в базу знаний CLIPS воспользуемся ко- мандой (load <имя файла>): (load "С:/CLIPSWIN/TEST.CLP")
154 Базы данных. Интеллектуальная обработка информации либо (load "С:\\CLIPSWIN\\TEST.CLP”) 6.3.3.2. GUI-интерфейс Как уже было отмечено. CLIPS использует GUI-интерфейс. В Таблице 6.3.1 приведено краткое описание всех (за исключением нескольких не представля- ющих в данном случае интереса) пунктов меню. Разделы меню перечислены слева направо, т.е. так, как они написаны в строке меню. Команды внутри каж- дого меню также перечислены в порядке, в котором они находятся в меню. Таблица 6.3.1. Краткое описание GUI-интерфейса CLIPS Менн э Пункт Назначение File Load Constructs... (Ctrl-L) Загрузка конструкций CLIPS из текстового файла. Эквивалентен команде (load <имя файла>) Load Batch... Загрузка командного файла. Эквивалентен команде (batch <имя файла>). Load Binary Image... Загрузка конструкций CLIPS, сохраненных в двоичном виде. Эквивалентен команде (bload <имя файла>). Turn Dribble On... Начало записи протокола работы с CLIPS в текстовый файл. Эквивалентен команде (dribble-on <имя файла>). После активации изменяется на Turn Dribble Off. Turn Dribble Off... Завершение записи протокола работы с CLIPS в текстовый файл. Эквивалентен команде CLIPS (dribble-off). Save Binary... Сохранение конструкций CLIPS в двоичном виде. Эквивалентен команде (bsave <имя файла>). Editor.. Запуск встроенного редактора. Quit CLIPS (Ctrl-Q) Выход из CLIPS. Edit Paste (Ctrl-V) Копировать содержимое буфера обмена в диалоговое окно (вставляемый текст всегда помещается в конце окна).
Глава 6. Системы, основанные на знаниях 155 Complete... (Ctrl- J) "Завершение" символа, вводимого в данный момент в диалоговом окне. Если не существует никакого возможного продолжения, подается звуковой сигнал. Если существует только одно возможное продолжение, то символ автоматически завершается. Если существует больше чем одно завершение, то список всех возможных продолжений выводится в диалоговом окне. Нажмите кнопку ОК, чтобы завершить символ текущим выделением. Нажмите кнопку Cancel, чтобы закрыть диалоговое окно без завершения команды. Execu- Reset (Ctrl-U) Сброс. Эквивалентен команде CLIPS (reset). tion При сбросе сначала очищаются списки фактов и активированных правил, затем в список фактов заносятся исходный факт (initial-fact) и факты, описанные в конструкциях (deffacts). Run (Ctrl-R) Запуск. Эквивалентен команде (run) CLIPS. В ходе выполнения программы изменяется на Halt. Halt (Ctrl-C) Останов. Step (Ctrl-T) Пошаговое выполнение. Эквивалентен команде CLIPS (run <количество_шагов>). Количество шагов задается в поле Step Rule Firing Increment панели настройки параметров CLIPS Watch... (Ctrl-W) Смена режимов просмотра. Preferences... Настройка параметров CLIPS Clear CLIPS Очистка CLIPS. Эквивалентна команде CLIPS (clear). Система приводится к начальному состоянию. Browse Module Переключение между модулями программы. По умолчанию создается лишь один модуль - MAIN. Defrule Manager Просмотр и редактирование базы знаний. Deffacts Manager Просмотр и редактирование списка фактов. Agenda Manager Просмотр и редактирование списка активированных в данный момент правил.
156 Базы данных. Интеллектуальная обработка информации Window Facts Window Просмотр списка фактов. Agenda Window Просмотр списка активированных в данный момент правил. Globals Window Просмотр всех глобальных переменных и их значений. All Above Отображение всех окон из данного меню. None Закрытие всех окон. Clear Dialog Window Очистка диалогового окна. 6.3.3.3. Интерфейс встроенного редактора Редактор CLIPS представляет собой встроенный текстовый редактор, пред- назначенный для написания программ для CLIPS. В Таблице 6.3.2 приведено краткое описание всех пунктов меню. Таблица 6.3.2. Краткое описание GUI-интерфейса редактора Меню Пункт Назначение File New (Ctrl-N) Открывает новый файл для редактирования с именем untitled. Open... (Ctrl-O) Открытие текстового файла для редактирования. Открыт может быть только один файл. Save (Ctrl-S) Сохранение редактируемого файла. Если файл не был назван, диалоговое окно запросит имя файла, чтобы сохранить файл. Save As... Сохранение редактируемого файла под новым именем. Page Setup Определение параметров страницы (используется при печати). Print... (Ctrl-P) Печать активного окна редактирования. Quit Editor (Ctrl-Q) Выход из редактора. Edit Undo (Ctrl-Z) Отмена последней операции редактирования. Cut (Ctrl-X) Удаление выделенного фрагмента в буфер обмена.
Глава 6. Системы, основанные на знаниях 157 Copy (Ctrl-C) Копирование выделенного фрагмента в буфер обмена. Paste (Ctrl-V) Копирование содержимого буфера обмена в окно редактирования. Clear Удаление выделенного фрагмента. 6.3.4. Пример решения задачи с помощью CLIPS 6.3.4.1. Постановка задачи Написать программу для решения следующего ребуса: GERALD + DONALD = ROBERT В словах GERALD, DONALD и ROBERT вместо букв необходимо по- ставить цифры таким образом, чтобы получилось математически правиль- ное выражение. Причем разным буквам должны соответствовать разные цифры. 6.3.4.2. Алгоритм решения Рассмотрим первые разряды всех трех чисел. Считаем, что первый разряд- это единицы, второй разряд - это десятки, третий - сотни и т.д. Очевидно, что нахождение множества пар (буква - цифра), входящих в решение задачи, долж- но удовлетворять условию: ((( D + D ) mod 10 ) = Т ) & ( D ? Т ) (6.3.1) Теперь рассмотрим второй разряд вместе с первым. Необходимо подобрать такие числа L и R, чтобы остаток от деления суммы (L* 10 + L* 10 + D + D) на 100 был равен (R*10 + Т). И при этом L и R не были равны между собой и не были равны D и Т. Т.е. среди множества пар (буква - цифра), удовлетворяющих первому условию, необходимо найти такие, что: ((( L*10 + L*10 + D + D ) mod 100) (6.3.2) = ( R*10 + T)) & ( D ? T ? L ? R). Продолжая действовать подобным образом, можно выписать конечное ус- ловие, которому должны удовлетворять пары (буква - цифра), входящие в ре- шение данной задачи. 6.3.4.3. Решение задачи в CLIPS Итак, сформулируем описанный выше подход к решению в терминах CLIPS. Представим комбинации из одной буквы и одной цифры в виде фактов:
158 Базы данных. Интеллектуальная обработка информации (combination D 0), (combination D 1), (combination A 1) и т.д. Для начала составим правило для нахождения комбинаций (буква - цифра), удовлетворяющих условию (6.3.1): (defrule find_solution (combination D ?d) (combination Т ?t&-?d) (test (= (mod (+ ?d ?d) 10) ?t)) (printout t "A Solution is:” t t) (printout t " D = " ?d t) (printout t " T = " ? t t) ) Данное правило выполнимо только в том случае, если в списке фактов су- ществуют факты, удовлетворяющие условиям: 1. (combination D ?d) - все факты, в которых в первой и во второй позициях стоят "combination" и "D" соответственно. А в третьей позиции любое значение, это значение присваивается переменной ?d. 2. (combination Т ?t&~?d) - все факты, в которых в первой и во второй пози- циях стоят "combination" и "Т" соответственно. А в третьей позиции лю- бое значение, только не то, которое было присвоено переменной ?d, это значение присваивается переменной ?t. Знак & означает логическое AND, а знак — логическое NOT. Выражение ?t&~?d означает, что переменная ?t может принимать значение, не равное значению переменной ?d. 3. (test (= (mod (+ ?d ?d) 10) ?t)) - это условие проверяет на равенство два выражения (mod (+ ?d ?d) 10) и (?t) (см. условие (6.3.1)). Команда (printout t "A Solution is:" 11) выводит на экран информацию. Ин- формация, которую необходимо вывести на экран, указывается в полях, разде- ленных пробелами, после команды. Чтобы вывести текст, его необходимо зак- лючить в кавычки, а перед кавычками поставить букву t. Эта буква указывает, что в следующем поле находится текст в кавычках, который необходимо напе- чатать. Если после буквы t нет текста в кавычках, то происходит перевод кур- сора на новую строку. Перевести курсор на новую строку можно параметром crlf. Он указывается без кавычек. Чтобы вывести значение переменной, надо просто указать имя переменной. Например: (printout t " т = ” ?t t) сначала выводит текст Т=, затем значение переменной ?t и затем переводит курсор на новую строку. Данное правило позволяет найти все комбинации (буква - цифра), удовлет- воряющие условию для первых разрядов трех чисел. По аналогии с этим пра- вилом и используя соображения, высказанные в п. 6.3.4.2, составим конечное правило для нахождения решения:
Глава 6. Системы, основанные на знаниях 159 (defrule find-solution (combination D ?d) (combination T ?t&~?d) (test (= (mod (+ ?d ?d) 10) ?t)) (combination L ?l&~?d&~?t) (combination R ?r&~?d&~?t&~?1) (test (= (mod (+ ?d ?d (* 10 ?1) (* 10 ?l))100) (+ (* 10 ?r) ?t) ) ) (combination A ?a&-?d&~?t?r) (combination E ?e&~?d&~?t&~?l&~?r&~?a) (test (= (mod (+ ?d ?d (* 10 ?1) (* 10 ?1) (* 100 ?a) (* 100 ?a)) 1000) (+ (* 100 ?e) (* 10 ?r) ?t) ) ) (combination N ?n&~?d&~?t&~?l&~?r?a&~?e) (combination В ?b&~?d&~?t&~?l&~?r&~?a&~?e&~?n) (test (= (mod (+ ?d ?d (* 10 ?1) (* 10 ?1) (* 100 ?a) (* 100 ?a) (* 1000 ?r) (* 1000 ?n)) 10000) (+ (* 1000 ?b) (* 100 ?e) (* 10 ?r) ?t) ) ) (combination 0 ?o&~?d&~?t&~?l&~?r&~?a&~?e&~?n&~?b) (combination G ?g&~?d&~?t&~?l&~?r&~?a&~?e&~?n&-?b&~ ?o) (test (= (+ ?d ?d (* 10 ?1) (* 10 ?1) (* 100 ?a) (* 100 ?a) (* 1000 ?r) (* 1000 ?n) (* 10000 ?e) (* 10000 ?o) (* 100000 ?g) (* 100000 ?d) ) (+ (* 100000 ?r) (* 10000 ?o) (* 1000 ?b) (* ICO ?e) (* 10 ?r) ?t))) (printout t "A Solution is:” t t) (printout t •I G = " ?g t) (printout t II и и •о (D t) (printout t II R = " ?r t) (printout t If A = " ?a t) (printout t II L = ” ?1 t) (printout t 11 D = " ?d t) (printout t II 0 = ” ?o t) (printout t II N = ” ?n t) (printout t П В = " ?b t)
160 Базы данных. Интеллектуальная обработка информации (printout (printout t t If t) T = ” ?t t) (printout t IV " ?g ?e ?r ?a ?1 ?d t) (printout t 11 + " ?d ?o ?n ?a ?1 ?d t) (printout t 11 IV fl " t) (printout t II = " ?r ?o ?b ?e ?r ?t t t)) Теперь для поиска решения остается занести факты, соответствующие ком- бинациям из одной буквы и одной цифры, в список фактов Это можно сделать командой assert. (assert (combination D 0) (combination D 1) (combination A 1) (combination L 9) ...) Однако, т.к. количество фактов равно 100, лучше поступить по-другому. Сопоставим буквам и цифрам следующие факты. (number 0), (number D, (number 2) , (number 9) . (letter G), (letter E), (letter R), (letter A), (letter L), (letter D) , (letter 0),(letter N), (letter B), (letter T). Составим правило, по которому в список фактов будут заноситься факты, соответствующие комбинациям из одной буквы и одной цифры. (defrule generate_combination (number ?х) (letter ?у) (assert (combination (?y ?x)))) Согласно данному правилу, если в списке фактов присутствуют факты, име- ющие вид (number ?х) , (letter ?у) ,где вместо переменных стоят вполне конкретные значения, в список фактов добавляется еще один факт - (combination ?у ?х), в котором вместо переменных стоят значения из фактов. И наконец, составим правило, по которому, во-первых, на экран будет вы- водиться условие задачи, а во-вторых, в список фактов будут заноситься фак- ты, соответствующие буквам и цифрам. Т.к. это правило должно выполняться всегда, его условная часть будет пустой. (defrule startup (printout t t "The problem is" t t) (printout t " GERALD" t)
Глава 6. Системы, основанные на знаниях 161 (printout t " + (printout t " (printout t ” = (assert (number (number (number (number (number (number (number (number (number (number (letter (letter (letter (letter (letter (letter (letter (letter (letter (letter DONALD" t) ---------n t) ROBERT" t t) 0) 1) 2) 3) 4) 5) 6) 7) 8) 9) G) E) R) A) L) D) 0) N) B) T) ) ) Подведем итог. Наша программа состоит из трех правил: startup, generate_combination и find_so!ution. Первое из них выводит на экран ус- ловие задачи и добавляет к списку фактов факты, соответствующие от- дельным буквам и цифрам. Второе правило, используя факты, введен- ные в список фактов первым правилом, заносит в список фактов факты, которые представляют собой всевозможные комбинации из десяти цифр и десяти букв. Третье правило позволяет найти среди этих фактов те, которые удовлетворяют условию задачи, и выводит на экран полученное решение. 6.3.4.4. Запуск CLIPS Система CLIPS 6.1 реализована в виде исполняемого файла clipswin.exe, предназначенного для работы в операционных системах Windows 95 и Windows NT 4 0. После запуска на экране появится диалоговое окно, представленное на рис. 6 5 6-307
162 Базы данных. Интеллектуальная обработка информации Рис. 6.5. Главное окно CLIPS 6.1 Для того чтобы иметь возможность наблюдать за всеми изменениями, про- исходящими в состоянии CLIPS, выполните команду АП Above (см. рис. 6.6). Рис. 6.6. Открытие всех окон Данная команда открывает все окна. Окно Facts содержит факты из списка фактов. Окно Agenda содержит все правила из списка активных правил.
Глава 6. Системы, основанные на знаниях 163 6.3.4.5. Ввод программы Ввести программу в CLIPS можно непосредственно из диалогового окна, появившегося после запуска. Но в этом случае все написанные правила после закрытия CLIPS будут потеряны. Чтобы этого не происходило, необходимо со- хранить текст программы в каком-либо файле. Для редактирования файлов в CLIPS имеется встроенный редактор. Запустить редактор можно, как показано на рис. 6.7: Рис. 6.7. Вызов редактора Внешний вид редактора представлен на рис. 6.8: Рис. 6.8. Главное окно редактора При запуске редактора автоматически создается новый файл с именем untitled. После того как ввод текста программы закончен, необходимо сохра- нить этот текст в каком-нибудь файле. Сохранить текст в файле можно, выбрав в меню File редактора команду Save As (см. рис. 6.9). 6*
164 Базы данных. Интеллектуальная обработка информации Рис. 6.9. Сохранение программы В появившемся диалоговом окне необходимо ввести имя файла (см. рис. 6.10) Рис. 6.10 Выбор файла для сохранения программы По умолчанию файлы сохраняются с расширением .clp. Теперь редактор можно закрыть 6.3.4.6. Загрузка и запуск программы Чтобы загрузить в базу знаний CLIPS содержимое файла wordgame.clp, нуж- но воспользоваться пунктом Load Constructs меню File (см. рис. 6.11).
Глава 6. Системы, основанные на знаниях 165 CLIPS 6 10 rue Edit Execution Browse Window Help Load Bjnary Image Load Conitructs. Ctrl+L CbkE I fiutt CUPS Ctri+Q Puc. 6 11. Загрузка конструкций из файла В появившемся затем диалоговом окне необходимо выбрать этот файл и нажать кнопку Open (см. рис. 6.12). Рис 6.12 Выбор файла с конструкциями Произойдет загрузка содержимого выбранного файла в базу знаний CLIPS. Как вы помните, наша программа содержала конструкции определе- ния трех правил. Правило startup не содержало условий. CLIPS активизиру- ет правило без условий при наличии в списке фактов факта (initial-fact) с идентификатором f-О. Занести этот факт в список фактов можно с помощью команды (reset) (см. рис. 6.13).
166 Базы данных. Интеллектуальная обработка информации Ч CLIPS 6 10 Fife Edit CLIPS> Browse Window Help Е xecuhon Puc. 6.13. Сброс Данная команда удаляет существующие факты из списка фактов Включает в список фактов исходный факт (initial-fact). Включает в список фактов все факты, описанные в конструкциях (deffacts). Команда (reset) не затрагивает правила, а лишь очищает список активированных правил После выполнения этой команды окно Facts - факты из списка фактов - будет выглядеть следую- щим образом (см. рис. 6.14). Рис. 6.14 Список фактов после сброса Данный факт активизирует правило, не содержащее условий, и это правило будет помещено в список активных правил - Agenda (см. рис. 6.15). В этом окне показано, что в списке активных правил есть правило с именем startup и это правило было активизировано фактом с идентификатором f-0
Глава 6. Системы, основанные на знаниях 167 Рис. 6.15. Список активных правил Итак, программа готова к запуску. Чтобы запустить программу, необходи- мо выполнить команду (run) (см. рис. 6.16). CLIPS 6 10 File Edrt CLIPS>| J Browse Window - Help Reset DrkU I Puc. 6 16 Запуск программы После этой команды CLIPS начнет выполнять все правила, которые нахо- дятся в списке активизированных правил. Выполнение программы останавли- вается либо когда в списке правил больше не останется ни одного активного правила, либо по прерыванию от пользователя, комбинацией клавиш (Ctrl+C). Если после выполнения программы необходимо очистить базу знаний CLIPS, а также убрагь все факты из списка фактов, т.е. привести CLIPS в начальное состояние, то необходимо воспользоваться командой (clear) (см. рис. 6.17). Команда (clear) осуществляет очистку CLIPS от всех правил и фактов. В отличие от команды (reset), которая удаляет только все факты из списка фактов.
168 Базы данных. Интеллектуальная обработка информации CLIPS 6JO File CLIPS> Execution Browse Windзд Heip Bun _ 2ep OrkU Ctrl+R * й •Ctrl+T У/atcn. Ctrl+W fiptions... Erefert ices. Cleai CLIPS Puc. 6.17. Очистка CLIPS 6.3.4.7. Работа программы Рассмотрим подробнее, что происходит во время работы программы. Пе- ред выполнением команды (run) в списке активных правил было только одно правило с именем startup. Сразу после запуска в результате выполнения данно- го правила в список фактов заносятся факты (см. рис. 6.18). Facts (MAIN) FO (initial-Fact) F-1 (number 0) F-2 (number 1) F-3 (number 2) F-4 (number 3) F-5 I (number 4) F-6 (number 5) F-7 (number 6) F-8 (number 7) F-9 (number 8) -10 (number 9) F-11 I (letter G) F-12 (letter E) F-13 (letter R) F-14 (letter A) F-15 1 (letter L) F-16 (letter D) F-17 (letter 0) F-18 4 (letter H) !F-19 1 (letter B) jf-20 (letter T) Рис 6 18. Список фактов сразу после запуска
Глава 6. Системы, основанные на знаниях 169 При этом окно списка активных правил будет содержать сто активизиро- ванных правил типа (см. рис. 6.19). Agenda (MAIN) 0 generate-combinations: F-1.F-20 0 generate-combinations: F-2.F-20 0 generate-combinations: F-3.F-20 0 generate-combinations: F-4.F-20 0 generate-combinations: F-5.F-20 0 generate-combinations: F-6,F-20 0 generate-combinations: F-7.F-20 0 generate-combinations: F-8.F-20 0 generate-combinations: F-9.F-20 0 generate-combinations: F-1O.F-20 0 generate-combinations: F-1.F-19 0 generate-combinations: F-2.F-19 0 generate-combinations: F-3.F-19 0 generate-combinations: F-4.F-19 0 generate-combinations: F-5.F-19 0 generate-combinations: F-6.F-19 0 generate-combinations: F-7.F-19 0 generate-combinations: F-8.F-19 0 generate-combinations: F-9.F-19 0 generate-combinations: F-10.F-19 0 generate-combinations: F-1,F-18 0 generate-combinations: F-2.F-18 0 generate-combinations: F-3.F-18 0 generate-combinations: F-4.F-18 Рис. 6.19. Список активных правил сразу после запуска Т.е. правило generate-combination было активизировано сто раз фактами из списка фактов. После этого CLIPS начинает по порядку выполнять все правила из списка активных правил Проверяя при этом, не будут ли выпол- нены условия из третьего и первого правила. Очевидно, что первое правило больше выполняться не будет, а вот третье? Как только в списке фактов по- явятся факты, которые будут удовлетворять условиям третьего правила, оно незамедлительно будет помещено в список активных правил и выполнено. После выполнения всей сотни шагов в списке фактов окажется еще сто фак- тов (см. рис. 6.20).
170 Базы данных. Интеллектуальная обработка информации Facts (MAIN) F-21 (combination T 0) F-22 (combination T 1) F-23 (combination T 2) F-24 (combination T 3) F-25 (combination T 4) F-26 (combination T 5) F-27 (combination T 6) F-28 (combination T 7) F-29 (combination T 8) F-30 (combination T 9) F-31 (combination В 0) F-32 (combination В 1) F-33 (combination В 2) F-34 (combination В 3) F-35 (combination В 4) F-Зб (combination В 5) F-37 (combination В 6) F-38 (combination В 7) F-39 (combination В 8) F-4B (combination В 9) F-41 (combination N 0) F-42 (combination N 1) F-43 (combination N 2) F-44 (combination N 3) Рис 6.20. Список фактов после 100 шагов После этого в списке активных правил не останется ни одного правила, поэтому выполнение программы прекратится. 6.3.4.8. Сохранения протокола работы Для сохранения протокола работы программы, а также полученного ответа в текстовом файле необходимо сразу после запуска CLIPS выполнить команду Turn Dribble On (см. рис. 6.21).
Глава 6. Системы, основанные на знаниях 171 Рис. 6.21. Сохранение протокола работы В появившемся диалоговом окне нужно ввести имя файла, в который будет сохраняться содержимое главного окна CLIPS (см. рис. 6.22). Рис. 6.22. Выбор файла для сохранения протокола работы После получения ответа, перед очисткой CLIPS выполните команду Turn Dribble Off (см. рис. 6.23).
172 Базы данных. Интеллектуальная обработка информации у CLIPS 6 10 ‘ vd Conducts. Load Botch. e" '.«.*•** ; . Lodd В]гжу i гпд0в... Рис. 6.23. Остановка записи протокола работы По этой команде файл, в который записывается содержимое главного диа- логового окна CLIPS, будет закрыт.
Глава 7. Нейросетевые системы 7.1. Проблемная специализация нейросетевых вычислительных систем Нейросетевой подход к решению плохо формализованных задач прогнози- рования, распознавания, классификации показал свою эффективность на прак- тически важных проблемах. Безусловно, это "узкий" класс математических постановок задач. Однако практическая важность этих задач - безусловна. Сле- дуя [37-39], представим типовые постановки этих задач. Распознавание образов Задача состоит в отнесении входного набора данных, представляющего рас- познаваемый объект, к одному из заранее известных классов. В число этих за- дач входит распознавание рукописных и печатных символов при оптическом вводе в ЭВМ, распознавание типов клеток крови, распознавание речи и другие. Кластеризация данных Задача состоит в группировке входных данных по присущей им "близости". Алгоритм определения близости данных (определение расстояния между векто- рами, вычисление коэффициента корреляции и другие способы) закладывается в нейросеть при ее построении. Сеть кластеризует данные на заранее не известное число кластеров. Наиболее известные применения кластеризации связаны со сжатием данных, анализом данных и поиском в них закономерностей. Аппроксимация функций Имеется набор экспериментальных данных {(Х,,¥,),..., (Xn,Yn)}, представ- ляющий значения У неизвестной функции от аргумента X., i = 1,..., п. Требует- ся найти функцию, аппроксимирующую неизвестную и удовлетворяющую не- которым критериям. Эта задача актуальна при моделировании сложных систем и создании систем управления сложными динамическими объектами. Предсказание Имеется набор { y(t,), y(t,),..., y(tn) } значений у, представляющих поведе- ние системы в моменты времени t, t2,..., tn. Требуется по предыдущему поведе- нию системы предсказать ее поведение y(t ) в момент времени t . Эта задача актуальна для управления складскими запасами, систем принятия решений.
174 Базы данных. Интеллектуальная обработка информации Оптимизация Цель этих задач - найти решение NP-полной проблемы, удовлетворяющее ряду ограничений и оптимизирующее значение целевой функции. К числу этих задач относится, например, задача коммивояжера. Контекстно-адресуемая (ассоциативная) память Эта память позволяет считывать содержимое по частичному или искажен- ному представлению входных данных. Основная область применения - муль- тимедийные базы данных. 7.2. Основные понятия теории искусственных нейронных сетей 7.2.1. Типы нейросетей Теория искусственных нейронных сетей в настоящее время проходит этап формирования, что обусловливает разнообразие постановок проблем и основ- ных определений. Исследователи наделяют искусственные нейроны разнооб- разными свойствами, которые, по их мнению, адекватны функциям биологи- ческих нейронов и позволяют получать решение актуальных для исследовате- ля задач. В рамках данной книги будем придерживаться следующих формулировок основных понятий нейронных сетей [37-39]. Искусственный нейрон, далее просто нейрон j, je {I, 2,...}, задается сово- купностью своих входов х^, i е {1» 2,...}, весами входов w.., функцией состояния sj и функцией активации f. Функция состояния определяет состояние нейрона в зависимости от значений его входов, весов входов и, возможно, предыдущих состояний. Наиболее часто используются функции состояния, не зависящие от предыдущего состояния, вычисляемые либо как сумма произведений значений входов на веса соответствующих входов по всем входам (s= / < Xii ’ wp , где n(j) J i=l - число входов нейрона j), либо как расстояние между вектором входов Xj = {х,} и вектором весов входов Wj = {w..}, измеряемое в какой-либо метрике, «(/) например, s.= ~ хл I. Одноместная функция активации у = f(s) определяет выходной сигнал ней- рона как функцию его состояния s. Наиболее распространенными функциями
Глава 7. Нейросетевые системы 175 активации являются ступенчатая пороговая, линейная пороговая, сигмоидная, а также линейная и гауссиана, приведенные в таблице 7.1. Таблица 7.1 Название Определение ступенчатая пороговая у=0 при s<a, у=1 при s>a линейная пороговая у=0 при s<a1} y=ks+b при a(<s<a2, у=1 при s>az сигмоидная у = (1+ek(5a))‘I линейная у = ks+b гауссиана У =g-k(s-»)2 Линейные нейронные сети используют нейроны с линейной функцией ак- тивации Нелинейные применяют нелинейную функцию активации, например, пороговую или сигмоидную. Нейронная сеть образуется путем объединения ориентированными взвешен- ными ребрами выходов нейронов с входами. При этом граф межнейронных соединений может быть ациклическим либо произвольным циклическим. Вид графа служит одним из классификационных признаков типа нейронной сети, разделяющим сети на сети без циклов и циклические. Примеры нейронных сетей этих типов приведены на рис. 7.1 и 7.2 соответственно. Рис. 7.1 Пример нейронной сети без циклов Легко видеть, что, приняв некоторое соглашение о тактировании сети (вре- мени срабатывания нейронов), мы получаем аппарат для задания алгоритмов
176 Базы данных. Интеллектуальная обработка информации Рис. 7.2. Пример циклической нейронной сети посредством нейронных сетей. Разнообразие этих алгоритмов ничем не огра- ничено. так как можно использовать нейроны с различными функциями акти- вации, различными функциями состояния, двоичными, целочисленными, ве- щественными и другими значениями весов и входов. Поэтому в терминах ней- ронных сетей можно описывать решение как хорошо формализованных задач, например, задач математической физики, так и плохо формализуемых задач распознавания, классификации, обобщения и ассоциативного запоминания. Сети могут быть конструируемыми или обучаемыми. В конструируемой сети число и тип нейронов, граф межнейронных связей, веса входов нейронов определяются при создании сети, исходя из решаемой задачи. Например, при конструировании сети Хопфилда [40], функционирующей как ассоциативная память, каждая входная последовательность из заранее определенного набора участвует в определении весов входов нейронов сети. После конструирования функционирование сети заключается в следующем. При подаче на входы час- тичной или ошибочной входной последовательности сеть через какое-то время переходит в одно из устойчивых состояний, предусмотренных при ее констру- ировании. При этом на входах сети появляется последовательность, признава- емая сетью как наиболее близкая к изначально поданной. Число запоминаемых входных последовательностей М связано с числом нейронов в сети соотношением М < N/4IogN, где N - число нейронов. В обучаемых сетях их графы межнейронных связей и веса входов изменя- ются при выполнении алгоритма обучения. По алгоритму обучения сети де- лятся на наблюдаемые, ненаблюдаемые и смешанные (гибридные). Первые при обучении сравнивают заранее известный выход с получившимся значением.
Глава 7. Нейросетевые системы 177 Вторые обучаются, не зная заранее правильных выходных значений, но груп- пируя "близкие" входные векторы так, чтобы они формировали один и тот же выход сети. Ненаблюдаемое обучение используется, в частности, при решении задачи кластеризации. При смешанном алгоритме обучения часть весов опре- деляется при наблюдаемом, а часть - при ненаблюдаемом обучении. Обучение осуществляется путем предъявления примеров, состоящих из наборов входных данных в совокупности с соответствующими результатами при наблюдаемом обучении и без последних при ненаблюдаемом. Эффектив- ность решения задач нейронной сетью зависит от выбранной структуры ней- ронной сети, используемого алгоритма обучения, называемых в совокупнос- ти нейропарадигмой, и полноты имеющейся базы данных примеров. 7.2.2. Основы построения алгоритмов обучения нейросетей Общая идея применения нейронных сетей, использующих обучение, осно- вана на запоминании сетью предъявленных ей примеров и выработке реше- ний, согласованных с запомненными примерами. Практическая реализация этих положений подразумевает, во-первых, ми- нимизацию объема памяти, требуемой для запоминания примеров, и, во-вто- рых, быстрое использование запомненных примеров, исключающее примене- ние традиционных памятей с произвольной или последовательной выборками. В нейронных сетях принято следующее представление решаемых задач. Каждому входному параметру хр i=l,...,n, задачи сопоставляется измерение i многомерного пространства, размерность которого равна числу п параметров. Для каждого параметра используется некоторая шкала, задающая возможные значения этого параметра. Тем самым постановка задач сводится к определе- нию свойств точек х={х.р xj2,..., xjn} n-мерного пространства, где xjS - значение входного параметра 1 точки], при известных свойствах точек, принадлежащих примерам, использованным при обучении. В задачах, эффективно решаемых нейросетями, точки многомерного про- странства, в котором сформулирована задача, образуют области точек, облада- ющих одним и тем же свойством, например, принадлежащих одному классу объектов, имеющих одинаковое значение заданной на них некоторой функции и так далее. Нейронные сети запоминают подобные области, а не отдельные точки, представляющие предъявленные при обучении примеры. Используются различные способы реализации запоминания областей. Наи- более употребляемые в настоящее время - это выделение областей посредством гиперплоскостей и покрытие областей гипершарами. На рис. 7.3 показаны вы- деление областей в двухмерном пространстве.
178 Базы данных. Интеллектуальная обработка информации Рис. 7.3 Выделение областей в двухмерном пространстве При использовании гиперплоскостей каждый нейрон j с пороговой функ- цией активации,] е {1 N}, N-число нейронов в сети, задает гиперплоскость *(/) значениями весов своих входов: qj ~ У, W • = 0, где n(j) - число входов ней- i=i рона j, а. - величина порога. В этом случае запоминание примеров выполняется путем формирования нейронной сети и заданием весов входов. Изменение весов входов, числа ней- ронов, графа межнейронных связей меняет набор и положение разделяющих гиперплоскостей, разбивающих многомерное пространство на области. На рис. 7.4 приведено схематичное изображение возможностей сетей с дву- мя входами по разбиению областей двухмерного пространства. Одноуровневая сеть, известная также как простой персептрон, не способна разделить на два класса точки, соответствующие нулевым и единичным значениям булевой фун- кции "исключающее или". Двухуровневые сети и сети с большим числом уров- ней способны справиться с этой задачей. Посредством нейросетей с числом уровней, превышающим два, и с п входами может быть задана произвольная булева функция от в переменных [43].
Глава 7. Нейросетевые системы 179 Рис. 7.4. Размещение областей двухмерного пространства с помощью двухвходовых нейронных сетей
180 Базы данных. Интеллектуальная обработка информации Как показано в [46^48], двухуровневая нейронная сеть способна аппрокси- мировать в равномерной метрике с любой заданной погрешностью е >0 любую непрерывную функцию f(xp х;, .... хп), а в среднеквадратичной метрике - лю- бую измеримую функцию, определенную на ограниченном множестве: f(xpx,,..., xn) = где v - веса входов нейрона второго слоя с линейной функцией активации, Wy - вес j-ro входа, j=l,..., n, i-ro нейрона, i=l,..., N, первого слоя с сигмо- идной функцией активации, N - число нейронов первого слоя. Существенным преимуществом аппроксимации нейронной сетью по срав- нению с традиционными методами аппроксимации служит независимость точ- ности аппроксимации от размерности входов. Среднеквадратичная ошибка ап- проксимации может быть ограничена величиной порядка N1. Тем самым уст- раняется "проклятие размерности" аппроксимируемой функции, делающее не- применимыми традиционные методы аппроксимации при сколько-нибудь зна- чительных размерностях входного пространства. Установление универсального аппроксимирующего свойства нейронных сетей вывело аппарат нейросетей из стадии эмпирических построений в класс теоретически обоснованных методов. В настоящее время быстро развиваются методы оценки точности аппроксимации от числа нейронов и построения ней- росетей с заданной точностью аппроксимации. В дальнейшем будем называть такие сети многоуровневыми персептрон- ными сетями. В случае покрытия гипершарами каждый нейрон задает значениями весов своих входов координаты центра гипершара, а также запоминает радиус этого гиперкуба. Эти сети называются сетями с радиусными базисными функциями, другое их название - вероятностные нейронные сети. Как видно, в обоих случаях, как при использовании гиперплоскостей и гипершаров, имеет место реализация распределенного коллективного запо- минания нейронами при обучении предъявленных сети примеров. Естествен- но, что этими двумя случаями разнообразие нейронных сетей не должно исчерпываться, и существуют другие виды функций состояния и активации нейронов.
Глава 7. Нейросетевые системы 181 7.2.3. Организация функционирования нейросети В ходе функционирования сеть относит предъявленный на ее входы набор значений к той или иной области, что и является искомым результатом. Заме- тим, что предъявляемый сети набор входных значений мог не подаваться на входы сети при обучении. Но в силу сформированных посредством других на- боров входных значений совокупности областей этот набор попадет в одну из них. Если результат правильный, то имеет место правильно функционирую- щая сеть, иначе сеть обучена или сконструирована с ошибкой. Поэтому смысл процедуры обучения или конструирования - отделение множеств точек, каж- дой области без включения посторонних точек и потери своих. 7.2.4. Алгоритмы обучения многоуровневых персептронных сетей Большинство алгоритмов обучения использует эвристические приемы фор- мирования графов сетей и весов ребер. При использовании многоуровневых пер- септронных сетей обучение начинается с выбора начальной сети с задаваемым в постановке задачи числом входов и выходов и эвристически выбираемом графе нейронной сети, связывающей входы с выходами. Например, в [39] рекоменду- ется взять трехслойную сеть с числом нейронов внутреннего слоя, равным полу- сумме числа входов и выходов сети. Каждый нейрон внутреннего слоя должен быть связан с выходами всех входных нейронов сети. Каждый выходной нейрон должен быть связан с выходами всех нейронов внутреннего слоя Далее предпринимается попытка подобрать веса входов нейронов сети так, чтобы сеть решала поставленную задачу. Если это не удается для выбранного графа сети, то по некоторой эвристике, например, с использованием генетических алгоритмов [41], перебираются графы сетей, для каждой из которых предпринимается попытка обуче- ния. Этот процесс предо гжастся до получения усграива ющего результата. Практически важным алгоритмом определения весов сети при наблюдаемом обучении персептронных сетей, для которого доказана сходимость процесса, яв- ляется алгоритм обратного распространения [37-39]. При обучении сигнал ошиб- ки распространяется обратно по сети. Производится коррекция весов входов ней- ронов, предотвращающая повторное появление этой ошибки. В одноуровневых сетях коррекция выполняется достаточно просто. Одноуровневая сеть - обучае- мый персептрон, состоит из одного нейрона с весами w., i = 1,..., п, и порогом и. п Выход Y нейрона равен 1, если И/ • х» по всем значениям i не меньше i=i величины порога и, и равен 0 в противном случае. Заметим, что порог может задаваться как n-Ч вход нейрона с весом и и значением входа, равным -1.
182 Базы данных. Интеллектуальная обработка информации Розенблаттом был предложен следующий сходящийся алгоритм настройки весов персептрона. Пусть имеется обучающий набор примеров <Xr “ <(xir •••» XJ’ ^1>’ <Х2, D,> = <(х21,..., x2n), D,>, <Х , D >= <(х .,..., х ), D >, го’ m ' ml’ ’ tnn/’ m ’ Xj = (xjP ...,xjn) - входные значения j-го примера, a D - выходное значение этого примера. Считается, что персептрон правильно обучен, если для всех j max|D/-ty| - 5, где 5 - заданная величина ошибки. Собственно алгоритм состоит в следующем. 1. Присвоить весам и порогу нейрона случайные малые значения. 2. Начиная с первого примера, подать на входы нейрона очередной пример <Х., D> и определить значение выхода нейрона Yj, j=l,..., m. 3. Изменить веса согласно выражению w^t+1) = w((t) + a(Dj-Yj)xj, i=l,2,..., в, а - коэффициент, 0<а<1. 4. Производить шаги 2-4 до тех пор, пока ошибка на всех обучающих при- мерах не будет превышать наперед заданного значения 5. Одноуровневые сети могут применяться для решения задач, в которых об- ласти разделяются только одной гиперплоскостью. В многоуровневых сетях коррекция внутренних уровней представляет собой более сложную процедуру. Собственно алгоритм настройки весов остается тем же самым за исключением шага 3, который значительно усложняется. Итак, рассмотрим шаг 3 для многоуровневой сети, состоящей из нейронов с сигмоидной функцией активации. Он состоит из коррекции весов выходного слоя и коррекции весов остальных слоев. Коррекция весов выходного слоя Для каждого нейрона q выходного слоя к вычисляется величина OLLJqk ошибки: OUUqk = f '(Dq - Yqk), где fq' - значение производной функции активации, вычисленное на состоянии нейрона q, полученном на поданном входном набо- ре, Dq - требуемое значение на выходе нейрона q, Yqk - выход нейрона q на поданном входном наборе. Затем для каждого нейрона q выходного слоя к и каждого соседнего с ним нейрона р внутреннего слоя] вычисляются величины AWpq,k коррекции весов Wpq, к для всех значений р, q: AWpq,k = a OLLJqk Ypj, где Ypj - выход нейрона р слоя] на поданном вход- ном наборе. Затем выполняется собственно коррекция весов выходного слоя: Wpq,k(t+1) = Wpq,k(t) + AWpq,k .
Глава 7. Нейросетевые системы 183 Коррекция весов внутренних слоев Процедура выполняется послойно для всех слоев, начиная со следующего за выходным. Рассмотрим нейрон р следующего за выходным внутреннего слоя j. Этот нейрон связан с Nk нейронами выходного слоя ребрами с весами Wpq, к, q= l,...,Nk. Величина ошибки ОШр] для нейрона р определяется следующим образом: М OLUpi — jp * OLLJyk к ^=i Затем вычисляются величины AWspJ : AWspJ = а • OLLIpj • Yse, где е - слой, следующий за слоем], as- нейрон слоя е. Затем выполняется коррекция весов слоя j : WspJ(t+l) - WspJ(t) + AWspJ. Этим способом корректируются веса всех нейронов сети, что завершает шаг 3 алгоритма настройки весов сети. 7.2.5. Алгоритмы обучения сетей с радиусными базисными функциями Рассматриваемые сети состоят из трех уровней [42]. Первый уровень - вход- ной. Каждому входу Х( соответствует один нейрон, связанный своим выходом со входами всех нейронов второго уровня, i=l,..., n. п - размерность простран- ства, в котором формулируется задача. Второй уровень составляют нейроны, функция состояния которых вычис- ляет расстояние dj между вектором весов входов Wj = {w р..., wn} нейрона j и вектором входов X = {хр..., xj. В зависимости от постановки задачи расстояние может вычисляться: л(у) /я(У) dj = У1, W - хд| , либо dj = ,1 / ~ Ху1^2 ’ либо как-то иначе. 1=1 V 1=1 Нейроны второго слоя могут использовать различные функции активации: пороговую и экспоненциальную. Сети с пороговой функцией активации нейронов второго уровня В этих сетях нейроны второго уровня используют пороговую функцию ак- тивации с порогом Rj, возможно разным для разных нейронов. Обозначая вы- ход нейрона] через Pj, имеем: Pj = 1, если dj < R j, Pj = 0, если dj £ Rj.
184 Базы данных. Интеллектуальная обработка информации Нейроны третьего уровня, выходного слоя, выполняют сбор выходов ней- ронов второго слоя, образующих покрытие одной области. Если есть сигнал ” 1" только от одного нейрона второго слоя, то он признается как результат при- надлежности входного вектора к рассматриваемой области. Если есть сигнал " 1" от нескольких нейронов, входящих в покрытие разных областей, то функ- ционирование сети признается противоречивым. Сети с экспоненциальной функцией активации нейронов второго слоя В этих сетях нейроны второго уровня используют функцию активации: Pj = e~ajdj, где aj - множитель, управляющий скоростью изменения значения вероят- ности от расстояния dj. Каждый выходной нейрон затем вычисляет взвешенную сумму значений активационных функций, соединенных с ним нейронов второго уровня. В ка- честве весов используются счетчики Ki представительности нейронов второго уровня: OUTk= где Мк - множество нейронов второго уровня, образующих область к. Условная вероятность Р( Ск/Х ) принадлежности входного вектора X обла- сти Ск вычисляется путем нормировки: Р( Ск/Х) = OUT к / Е OUTk, Л=1 где N - число разных областей. Процедура обучения сетей с радиусными базисными функциями включает три механизма: - формирование нейронов второго и третьего уровней, задание их функ- ций активации и настройки весов; - модификация значений порогов нейронов; - модификация счетчиков представительности нейронов. Ниже приведем схематичное описание процедуры обучения нейросети на множестве Z = {XI, Х2,...,Хт} входных векторов, принадлежащих различным областям Ск, к = 1,.. ,g.
Глава 7. Нейросетевые системы 185 При поступлении на входы сети вектора Xj, jg {принадлежащего ранее не встречавшейся при обучении области С, формируется выходной ней- рон этой области и связанный с ним нейрон j второго уровня. Формирование нейрона] второго уровня заключается в следующем: - порождение нейрона] с весами входов, равными компонентам входного вектора Xj: Wji:= Xji, i=l,..., n, n - размерность пространства, в котором формулируется задача; - задание значения порога Rj нейрона], равного некоторому наперед выб- ранному значению Rmax, Rj:= Rmax; - задание значения счетчика представительности Kj нейрона], Kj:=l. Будем в дальнейшем называть полем влияния нейрона j все точки много- мерного пространства, входящие в гипершар с центром Wj и радиусом Rj. При поступлении на входы сети входного вектора Xj, принадлежащего уже встречавшейся области С, но не попадающего в поле влияния других нейро- нов, формируется соответствующий этому вектору нейрон второго уровня. Если очередной поступивший входной вектор принадлежит уже ранее встре- чавшейся области С и попадает в поле влияния другого нейрона, то возможны два варианта в зависимости от типа строящейся нейросети. При построении полной вероятностной нейронной сети (PNN) выполняется формирование со- ответствующего нейрона второго уровня. При построении сокращенной веро- ятностной нейронной сети новый нейрон не формируется, а увеличивается на единицу значение счетчика представительности Kj нейрона j, в поле влияния которого попал входной вектор. Заметим, что при подсчете условных вероят- ностей вместо учета вклада двух нейронов будет учтен двойной вклад одного нейрона. Полные вероятностные нейронные сети точнее сохраняют свойства обучающего множества Z, но требуют больших ресурсов. Если очередной поступивший входной вектор X попадает в поле влияния нейрона иной области, нежели область, которой принадлежит вектор X, то фор- мируется нейрон, соответствующий поступившему вектору. При пересечении полей влияния нейронов разных областей предпринима- ется попытка уменьшения значений порогов этих нейронов вплоть до некото- рого наперед заданного значения Rmin с целью исключения пересечения обла- стей влияния. Возможно, что даже при достижении порогов Rmin поля влия- ния будут пересекаться. В этом случае решение о принадлежности входного вектора, попадающего в пересечение полей влияния, будет приниматься на ос- нове условных вероятностей. Корректировка покрытия областей полями влияния нейронов позволяет за несколько проходов, использующих множество Z обучающих векторов, произ- вести формирование нейронной сети, решающей задачу.
186 Базы данных. Интеллектуальная обработка информации В ряде работ показано, что многослойные персептронные сети, используе- мые для решения задач распознавания и классификации, реализуют оптималь- ные. по Байесу, дискриминантные функции в том случае, если обучающее мно- жество является асимптотически большим, т.е. стремится к полному покры- тию признакового пространства [44]. В общем случае при решении задач рас- познавания многоуровневые персептронные нейросети могут формировать, вследствие неполноты обучающего множества, непредсказуемые значения на выходах при предъявлении векторов, "непохожих” на примеры, использован- ные при обучении В 1990 г. Specht [42] показал, что непараметрический байесовский класси- фикатор, основанный на методе парзеновских окон оценки функции плотнос- ти распределения классифицируемых векторов, может быть реализован веро- ятностной нейронной сетью. Вероятностные сети имеют ряд преимуществ пе- ред многими другими нейросетевыми парадигмами: во-первых, для них суще- ствует полное математическое обоснование; во-вторых, эти сети обучаются значительно быстрее сетей обратного распространения при не худшем каче- стве распознавания. 7.2.6. Замечания по поводу формирования нейронной сети Вообще говоря, можно ставить задачу синтеза требуемой нейронной сети. В этом случае должна быть сформирована система уравнений, левая часть ко- торой строится на базе графа сети и функций активации и состояния нейронов. Основные трудности связаны с формированием правой части. Если известна структура области решения, то правая часть может быть как-то параметричес- ки описана через известную структуру этой области. После решения сформи- рованной системы будут вычислены необходимые веса ребер нейронной сети, решающей требуемую задачу. Однако, как правило, структура области реше- ния заранее не известна. Максимум, что известно, - отдельные точки области решения, которые можно использовать как примеры при обучении сети. Если известна структура области решения, то могут быть применены алго- ритмы, базирующиеся на правилах типа "если А, то делай Б". В отличие от этих программ нейронная сеть может экстраполировать результат. Еще пре- имущество перед программами, базирующимися на правилах, состоит в том, чго учет новых фактов заключается в переобучении сети с их участием, а не в переделывании правил программы и ее переписывании. Кроме того, настройка нейронной сети на большем числе примеров не увеличивает время ее работы, а введение новых дополнительных правил замедляет работу программы. Вообще говоря, чем более изучена проблема, тем выше вероятность примене- ния для ее решения алгоритмов, основанных на формулах и правилах. Однако при
Глава 7. Нейросетевые системы 187 ограниченном количестве экспериментальных данных нейронные сети являются аппаратом, позволяющим максимально использовать имеющуюся информацию. Характерный пример [38] использования нейронных сетей дают системы оптического считывания и распознавания символов (OCR). Среди 10 лучших систем есть как основанные на нейросетевом подходе, так и системы, исполь- зующие программы, основанные на правилах 7.3. Нейросетевые пакеты Вообще говоря, выше приведены самые общие понятия о нейросетевых парадигмах, включающих тип используемых нейронов, граф межнейронных соединений, алгоритм обучения или конструирования сети. Сегодняшнее со- стояние теории нейросетевых вычислений не дает ответа на вопрос о выборе оптимальной нейросетевой парадигмы для решения конкретной прикладной задачи. Публикуются перечни успешно решенных задач с применением тех или иных парадигм. Опыт применения накапливается и развивается в программ- ных средствах, реализующих широкий набор нейросетевых парадигм. При ре- шении практических задач необходимость самостоятельно разрабатывать про- граммные средства поддержки нейровычислений возникает довольно редко. Большинство функций, необходимых для создания, обучения и использования нейросетей, реализовано в коммерческих и распространяемых бесплатно паке- тах программ. В них воплощены практически все известные алгоритмы обуче- ния и топологии нейросетей. Общее число фирм, разрабатывающих эти сред- ства, превышает 150. Несмотря на сложность заложенных в нейропакетах методов, использовать их довольно просто. Они позволяют сконструировать, обучить, протестировать и использовать в работе нейронную сеть на основе понимания нескольких ба- зисных теоретических положений. Первые подобные программные продукты появились на Западе в середине 80-х годов Одним из лидеров этого рынка почти сразу стал нейросетевой па- кет BrainMaker американской фирмы California Scientific Software. В 1990 году он получил приз "Лучший программный продукт года" журнала PC Magazine, а впоследствии стал самым продаваемым в США нейропакетом. Первоначаль- но BrainMaker был разработан фирмой Loral Space Systems по заказу NASA и Johnson Space Center. Затем он был адаптирован для коммерческих приложе- ний. Сегодня он используется промышленными и финансовыми фирмами, спец- службами и Министерством обороны США для решения задач прогнозирова- ния, оптимизации и моделирования ситуаций. По оценкам производителя, во всем мире пакет применяют более 20 тысяч компаний. Пакет BrainMaker, как и другие программы, использующие нейронные сети, до последнего времени был запрещен к экспорту в Россию.
188 Базы данных. Интеллектуальная обработка информации BrainMaker состоит из двух компонентов: нейросетевого ядра, которое обу- чает и тестирует нейронные сети, обеспечивает их работу, и среды для созда- ния нейросетей, анализа и подготовки исходных данных. BrainMaker позволя- ет использовать только одну нейропарадигму - “персептрон обратного распро- странения" (многослойная сеть прямого распространения с алгоритмом обуче- ния методом обратного распространения ошибки), однако этого оказывается достаточно для большинства приложений распознавания образов и прогнози- рования. Требования, которые BrainMaker предъявляет к программно-аппарат- ным средствам, довольно скромны: IBM PC класса 386 и выше, MS Windows версии 3.1 или выше, 2 Мб на жестком диске и 4 Мб оперативной памяти. Среди других средств, нашедших свое место на рынке нейросистем, можно выделить пакет OWL фирмы HyperLogic. Он представляет собой библиотеку, содержащую большинство известных нейросетевых алгоритмов на языках С и C++. Используя этот продукт, можно разрабатывать собственные аналитичес- кие системы любого размера и назначения. Еще один популярный пакет, использующий нейросетевые технологии, - "The Al Trilogy" ("Трилогия искусственного интеллекта") американской фирмы Ward Systems Group. “The Al Trilogy" - это набор из трех самостоятельных приложе- ний: NeuroShell II, NeuroWindows и GeneHunter. NeuroShell II представляет со- бой средство создания, обучения и тестирования нейросетевых приложений, NeuroWindows - это нейросетевая библиотека в исходных текстах, a GeneHunter - система оптимизации нейросетей на основе генетических алгоритмов. В сово- купности они образуют весьма мощный "конструктор", позволяющий строить аналитические комплексы любой сложности. NeuroShell адаптирован для биз- нес-приложений. Он используется в более чем 150 крупнейших банках США: Bank of America, Chase Manhattan и других. В 1996 году сразу три известные организации - Институт стандартов США, корпорация "Du Pont" и ФБР США - признали его лучшим для решения своих задач. В системе "The Al Trilogy" при- сутствуют возможности обработки текстовых данных, задания правил в явном виде, работы с финансовыми индикаторами, обработки циклических событий, а также создания независимых приложений. Важная особенность пакета - нали- чие русскоязычной версии. Пакет "The Al Trilogy" функционирует на IBM PC под управлением Windows версии 3.1 или выше. Пакеты, упомянутые выше, уже довольно давно на рынке и поэтому наиболее известны. Так, пакет BrainMaker - один из пионеров программных средств для моделирования искусственных нейронных сетей, a NeuroShell стал первым рус- скоязычным "коробочным" продуктом. Сегодня нейрокомпьютерный сегмент рынка программного обеспечения бурно развивается, и появление новых пакетов - есте- ственный процесс. Большинство фирм, работающих на рынке аналитических про- грамм, уже заявили о подготовке или выпуске систем на основе нейронных сетей.
Глава 7. Нейросетевые системы 189 Современные продукты во многом лучше своих старших собратьев - улуч- шен интерфейс пользователя, появились дополнительные нейропарадигмы, в пакетах реализованы возможности взаимодействия с другими приложениями посредством механизмов OLE, ActiveX и др. Плата за эти возможности - это необходимость использовать более мощный, чем ранее, компьютер, рост тре- бований к объему оперативной и дисковой памяти. Кроме того, более новый пакет совсем не гарантирует более качественного решения прикладной задачи пользователя. В большей степени это качество зависит оттого, насколько пра- вильно поставлена задача, насколько точно определен набор данных, требуе- мый на различных этапах решения задачи. Существуют специализированные аппаратные платформы [45] для реали- зации нейросетевых вычислений, существенно ускоряющие их выполнение по сравнению с программной интерпретацией нейросети на универсальных ком- пьютерах. 7.4. Прогнозирование с использованием нейросетей Методологические основы прогнозирования менялись с развитием миро- воззрения. В древнем мире и в средние века огромную роль играли пророче- ства, прорицания, "откровения", различные способы гадания. В то время важ- ные управленческие решения часто принимались именно на основе такого рода "прогнозов". Наука о прогнозировании - "прогностика" стала формироваться лишь в середине нашего столетия. Большое внимание она уделяет статистичес- ким методам прогнозирования: регрессионному анализу, методам экстраполя- ции временных рядов. Однако большинство из них сложно эффективно приме- нягь, не имея глубоких знаний в области математической статистики. В последние годы отчетливо отмечается тенденция проникновения в про- гностику технологий искусственного интеллекта, прежде всего технологий, основанных на нейронных сетях. Хотя в методологии их применения много белых пятен, эти системы показывают очень хорошие результаты при решении целого ряда задач прогнозирования, особенно из плохо формализуемых пред- метных областей. Как уже отмечалось выше, суть методов прогнозирования - выявление и последующее использование закономерностей развития прогнозируемого про- цесса. Обнаружение закономерностей производится на основе анализа ретрос- пективных данных - данных об истории развития процесса. Эти данные хра- нятся в виде временных рядов. Временным рядом называется совокупность наблюдений u(tj, u(tJ исследуемой случайной величины м, произве- денных в последовательные моменты времени tJt ..., tn. Отдельное значение
190 Базы данных. Интеллектуальная обработка информации u(tjt относящееся к определенному моменту времени Г, принято называть уров- нем ряда. Вот, например, результаты финальных забегов на дистанции 400 мет- ров среди мужчин на всех Олимпийских играх, представленные в виде времен- ного ряда (Таблица 7.4.1, данные взяты из [49]): Таблица 7.4.1 Год Результат, с Год Результат, с Год Результат, с 1896 54.2 1932 46.2 1972 44.66 1900 49 4 1936 46.5 1976 44,26 1904 49 2 1948 46.2 1980 44,60 1908 50.0 1952 45.9 1984 44.27 1912 48.2 1956 46.7 1988 43.87 1920 49.6 1960 449 1992 43.50 1924 47.6 1964 45.1 1996 43.49 1928 47.8 1968 43.8 Данные для прогнозирования должны быть достоверными, кроме того, важ- но, чтобы они собирались по единой методике. Период их сбора должен быть постоянным. Определяется он природой наблюдаемого процесса, влиянием на него сезонных колебаний. Например, для прогнозирования курса акций дли- тельность периода выбирают равной одному дню, а солнечной активности - одному году. Продемонстрируем возможности использования нейросетевых пакетов для прогнозирования Нами будет использован пакет BrainMaker 3.1 Professional, упоминавшийся ранее. Оставим прогнозы финансовых индексов и индикаторов рынков экономис- там, тем более что почти в любой работе по прогнозированию приводятся при- меры именно из этой области. Займемся... предсказанием погоды! Пример, ко- торый мы рассмотрим, - иллюстративный. Он не претендует на серьезную про- работку проблематики прогнозирования природных явлений, хотя и использу- ет реальные данные. Пример показывает, как решаются задачи анализа времен- ных рядов с использованием нейросетевого пакета BrainMaker. Итак, пусть необходимо разработать прогноз среднегодовой температуры в городе Мюнхене. Допустим, у нас имеются значения этой температуры за пери- од с 1926 по 1985 год, и на основе этих данных требуется узнать, какой она будет в 1986 году. Поставив так задачу, мы сможем проверить точность полученного нами прогноза, сравнив его с реальным, известным нам значением за 1986 год.
Глава 7. Нейросетевые системы 191 Разработать прогноз можно, не используя никаких данных, кроме времен- ного ряда значений температуры. В таком случае достаточно провести его эк- страполяцию. Однако потенциально более точный результат может быть полу- чен, если прогноз строится с учетом величин, связанных с прогнозируемым параметром. Например, если существует устойчивая зависимость между сред- негодовой температурой Мюнхена и солнечной активностью, то совместное использование данных о температуре и солнечной активности при обучении нейросети позволит улучшить прогноз. Предположим, что среднегодовая температура Мюнхена (МАТ) связана с числом Вольфа (WN) и приведенной среднегодовой температурой поверхно- стного слоя атмосферы Земли (RAAT). Число Вольфа - одна из характерис- тик солнечной активности, которая применяется при ее сопоставлении с гео- физическими явлениями. Числа Вольфа публикуются Цюрихской обсервато- рией, начиная с 1849 года Приведенная среднегодовая температура поверх- ностного слоя атмосферы Земли - это разность между средним значением температуры окружающего нашу планету воздуха и некоторым "нулевым уровнем". Временной ряд этих значений обычно используют для иллюстра- ции процесса глобального потепления атмосферы. Впоследствии мы сможем проверить гипотезы о связи чисел Вольфа и приведенной среднегодовой тем- пературы поверхностного слоя атмосферы с прогнозируемой температурой в Мюнхене. Данные, которые мы будем использовать, приведены в таблице 7.4.2. Зна- чения МАТ и WN взяты из [49], RAAT из [50]. Заметим, что данные не были искусственно подготовлены для того, чтобы облегчить работу нейронной сети и получить заведомо хороший результат. Таблица 7.4.2. Год МАТ, °C WN RAAT, °C Год МАТ, °C WN RAAT, °C 1926 7.76 44.3 -0.10 1956 6.61 141.7 -0.19 1927 8 38 63.9 0.13 1957 8.18 190.2 0.09 1928 7.88 69.0 -0.01 1958 8.08 184.8 0.11 1929 8.38 77.8 0.06 1959 8 58 159.0 0.06 1930 6.93 64.9 -0.17 1960 8.20 112.3 0.01 1931 8.26 35.7 -0.01 1961 8.94 53.9 0.08 1932 6.78 21.2 0.09 1962 7.22 37.5 0.02 1933 7.63 11.1 0.05 1963 7.11 27.9 0.02
192 Базы данных. Интеллектуальная обработка информации Год МАТ, °C WN RAAT, °C Год МАТ, °C WN RAAT, °C 1934 6.72 5.7 -0.16 1964 8.04 10.2 -0.27 1935 8.75 8.7 0.05 1965 7.26 15.1 -0.18 1935 7.93 36.1 -0.02 1966 8.51 47.0 -0.09 1936 7.92 79.7 0.04 1967 8.66 93.8 -0.02 1937 8.50 114.4 0.17 1968 7.93 105.9 -0.13 1938 8.00 109.6 0.19 1969 7.57 105.5 0.02 1939 7.71 88 8 0.05 1970 7.52 104.5 0.03 1940 6.61 67.8 0.15 1971 7.67 66.6 -0.12 1941 6.98 47.5 0.13 1972 7.24 68.9 -0.08 1942 7.35 30.6 0.09 1973 7.55 38.0 0.17 1943 8.89 16.3 0.04 1974 8.54 34.5 -0.09 1944 7.73 9.6 0.11 1975 8.16 15.5 -0.04 1945 8.18 33.2 -0.03 1976 7.84 12.6 -0.24 1946 8.10 92.6 0.03 1977 8.48 27.5 -0.16 1947 8.66 151.6 0.15 1978 7.30 92.5 -0.09 1948 8.60 136.3 0 04 1979 7.93 155.4 0.12 1949 8.71 134.7 -0.02 1980 7.29 154.7 0.27 1950 8.81 83.9 -0.13 1981 8.05 140.5 0.42 1951 8.47 69.4 0.02 1982 8.32 115.9 0.02 1952 8.10 31.5 0.07 1983 8.50 66.6 0.30 1953 8.35 13.9 0.20 1984 7.28 45.9 0.09 1954 7.41 4.4 -0.03 1985 7.15 17.9 0.05 1955 7.36 38.0 -0.07 Процесс прогнозирования с использованием нейросети можно представить в виде 6 этапов: 1) постановка задачи - необходимо четко определить, что нам надо пред- сказывать и какие данные использовать; 2) сбор и подготовка исходных данных - получение информации из дос- тупных источников, определение формата представления информации, создание базы примеров для обучения и тестирования нейросети; 3) создание нейросети - определение ее топологии, входов, выходов, числа нейронов в скрытом слое;
Глава 7. Нейросетевые системы 193 4) обучение сети - последовательная подача примеров на входы нейросети, сравнение выхода сети с эталонными значениями, коррекция весов меж- нейронных связей и топологии сети. В случае если сеть не может обу- читься. требуется повторить этапы 2 и 3; 5) тестирование сети - проверка точности сети на тестовых примерах, если сеть нс проходит тестирование, повторяются этапы 2, 3 и 4: 6) получение прогнозных значений. В процессе разработки нашего прогноза мы будем придерживаться описан- ной последовательности действий. Итак, задача поставлена довольно четко, ясно также, какие данные использовать. Поэтому перейдем сразу ко второму этапу - подготовке исходных данных. Сначала нам потребуется создать файл, содер- жащий исходные временные ряды. BrainMaker работает с различными форма- тами данных: dBase, Lotus 1-2-3 версий 2 и 3, Excel версий 2 и 3, MctaStock, с данными в двоичных и текстовых файлах. Мы воспользуемся именно после- дним форматом - он наиболее универсален, ведь текстовый редактор входит в состав любой операционной системы. В любом редакторе, например, в Notepad, создайте текстовый файл, состо- ящий из разделенных пробелами четырех столбцов. В первом столбце запиши- те годы, для которых производятся измерения, в остальных - соответствующие этим годам значения среднегодовой температуры в Мюнхене (МАТ), приве- денной среднегодовой температуры поверхностного слоя атмосферы Земли (RAAT) и числа Вольфа (WN) (см. таблицу 7.4.3). В первой строке запишем наименования столбцов. Важно, чтобы данные за разные годы располагались последовательно, иначе у нас не получиться проследить историю процесса из- менения температуры. Если все сделано правильно, то должна получиться таб- лица, подобная приведенной ниже. Таблица 7.4.3 YEAR МАТ WN RAAT 1926 7.76 44.3 -0.10 1927 8.38 63.9 0.13 1928 7.88 69.0 -0 01 1929 8.38 77.8 0.06 1930 6.93 64 9 -0.17 1931 8.26 35.7 -0.01 • « .... .... ..... 1985 17.5 17.0 0.05 7-307
194 Базы данных. Интеллектуальная обработка информации Для последующего использования файл нужно сохранить под любым до- пустимым в операционной системе именем, например, "mat.dat". На следующем этапе необходимо сформировать базу примеров и создать нейронную сеть. Эти функции в пакете BrainMaker выполняет специальный модуль - NetMaker. С возможностями этой программы нам предстоит ознако- миться. Запускается NetMaker так же, как и любое другое приложение Windows. В меню "Старт" Windows 95 необходимо найти папку "BrainMaker Professional" и выбрать в ней иконку с надписью NetMaker. Для запуска NetMaker по Windows 3.1 надо в Program Manager выбрать группу "BrainMaker Professional" и щелк- нуть 2 раза на иконке NetMaker. Рис. 7.4.1. Главное меню NetMaker. Считаем подготовленные нами данные. В главном меню NetMaker (см рис 7 4.1) выберите пункт "Read in Data File" (считать данные) В появившемся окне выберите созданный ранее файл с исходными данными. Выберите пункт меню "Manipulate Data" (обработка данных). Представление данных в NetMaker напоминает электронную таблицу (см. рис. 7.4.2). При необходимости ее можно редактировать, не выходя из програм- мы. Обратите внимание, что NetMaker автоматически распознал, что первая строка файла исходных данных - не значения, а названия параметров. Для того чтобы наглядно увидеть, как изменяются значения МАТ во време- ни, построим график этой величины. В меню "Operate" (операции) выполните команду "Graph Columns" (представить столбцы графически). Выберите стол- бец МАТ. Для этого щелкните мышью на его заголовке (серой кнопке с надпи- сью МАТ). В строке "Trace 1" диалоговой панели появятся номер и название столбца МАТ (см. рис. 7.4.3).
Глава 7. Нейросетевые системы 195 Рис. 7.4 2. Представление данных в Net.Maker Рис. 7.4.3. Панель диалога "Select Columns То Graph".
196 Базы данных. Интеллектуальная обработка информации Нажмите кнопку "Make Graph" (создать график). В появившейся диалого- вой панели выберите "Create Plot" (нарисовать график). Полученный график представлен на рис. 7.4.4. Рис. 7.4.4. График МАТ. Наша задача - предсказать значение среднегодовой температуры в Мюнхе- не на год вперед, поэтому каждый пример для обучения нейросети должен вклю- чать значение МАТ будущего года. Это означает, что каждому входному векто- ру надо поставить в соответствие будущее значение MAT. NetMaker предпола- гает, что в каждой строке таблицы находится один пример для обучения сети. Поэтому, чтобы включить значение МАТ будущего года во все примеры, мы должны добавить к исходным данным столбец, который содержал бы те же значения, что и колонка МАТ, но был бы смещен на 1 ячейку вверх. В меню "Column" (операции со столбцами) выполните команду "Shift Column Up" (сдвинуть столбец вверх). Выберите мышью столбец МАТ и введите "1" в ответ на вопрос о количестве ячеек, на которое он сдвигается. Система попро- сит задать название нового столбца. Введите, например, "МАТ+Г*. Обратите внимание, что значению МАТ за год п в новом столбце соответст вует значение температуры в Мюнхене за год п+1. Последняя ячейка столбца МАТ+1 содер- жит некорректное значение. Программе не было известно значение МАТ за 1986 год, поэтому ей пришлось поместить туда данные 1985 года. Эту строку нельзя
Глава 7, Нейросетевые системы 197 будет использовать при создании базы примеров - сети должны обучаться на действительных данных Мы удалим все подобные строки позднее. Данные входного вектора должны содержать несколько предыдущих значе- ний прогнозируемой величины. Ограничимся одним - прошлогодним значени- ем температуры в Мюнхене. По аналогии с будущим значением для помеще- ния его во входной вектор мы должны создать новый столбец, но сдвинуть его надо не вверх, а на ячейку вниз. В меню "Column" (операции со столбцами) выполните команду "Shift Column Down" (сдвинуть столбец вниз). Выберите мышью столбец МАТ. В ответ на запрос о количестве ячеек, на которое он сдви- гается, введите "1". Определите имя нового столбца, например, "МАТ-Г. При прогнозировании часто используют процедуру сглаживания исходно- го временного ряда Это позволяет выделить тренд - регулярную составляю- щую временного ряда При проведении этой процедуры полезным может ока- заться знание периода исходного временного ряда, если он, конечно, наблюда- ется. Попытаемся определить наиболее вероятный период изменения МАТ. В меню "Operate" выполните команду "Cyclic Analysis" (анализ периодичности). Щелкните мышью на столбце МАТ В появившемся окне диалога нажмите кноп- ку "Analyze" (анализ) - значения, предлагаемые программой по умолчанию, нас устроят. Выберите "Create Plot" (нарисовать график) в следующей диалого- вой панели. Периодограмма, построенная NetMaker, представлена на рис. 7.4.5. Рис. 7.4 5 График с результатами анализа периодичности.
198 Базы данных. Интеллектуальная обработка информации По горизонтальной оси графика отложены значения Frequency (частоты). Значение Frequency в NetMakcr здесь определяется так: Frequency = РОТ Т где Т- значение периода в терминах исходных данных (в нашем случае это период изменения МАТ в годах), а РОТ - это минимальная степень двойки, большая, чем количество примеров. Для нас РОТ будет равно 64 (2б = 64 > 61). Ясно, что нужный нам период может быть найден следующим образом: т_ РОТ Frequency' Вертикальная ось графика отображает значения Strength (сила). Строго го- воря, это - относительная спектральная оценка МАТ. Исходный ряд значений МАТ может быть представлен в виде суммы гармонических составляющих. Периодограмма на рис. 7.4.5 показывает распределение мощности гармони- ческих составляющих в исходном временном ряде по частотам. На этой перио- дограмме наиболее вероятному значению периода соответствует наибольшее значение Strength. Следует отметить, что явного периода в данных мы не обнаружили - отсут- ствуют яркие "пики" на графике, значения Strength невелики. Но мы все же попытаемся использовать результаты проведенного анализа. Найдем значение "Frequency", соответствующее максимальному значению Strength Для этого переместим указатель мыши в точку, где Strength максимально. Значение Frequency в этой точке близко к 8. Исходя из приведенного выше соотношения период будет равен 8 годам (64 /8 = 8). Проведем сглаживание исходного ряда значений МАТ методом скользяще- го среднего. В меню "Operate" выберите "Moving Average" (скользящее сред- нее), затем в появившемся подменю - пункт "Simple" (обычный метод). Щелк- ните мышью на столбце МАТ. Система запрашивает число уровней ряда, по которым производится сглаживание. Введем половинное значение длительно- сти найденного ранее периода - 4 (8/2). Сглаженный временной ряд будет по- мещен в новый столбец. Система запросит имя этого столбца. Введем "Mavrg" в ответ на запрос Иногда спектральный анализ не позволяет выявить период изменения прогнозируемой величины, например, если объем исходных дан- ных невелик. В этом случае число уровней ряда, по которым производится сгла- живание, выбирается в зависимости от природы значений ряда и от степени предполагаемой его зашумленности помехой. Обычно это число лежит в ин- тервале от 3 до 7.
Глава 7. Нейросетевые системы 199 Теперь попробуем воспользоваться данными о приведенной среднегодовой температуре поверхностного слоя атмосферы Земли (столбец RAAT) и числа- ми Вольфа (столбец WN). Проведем корреляционный анализ временных ря- дов, который позволит установить, связаны ли эти величины с прогнозируе- мым значением. В процессе корреляционного анализа определяется, согласо- ваны ли два временных ряда. Проверяется, уменьшается ли один ряд с увели- чением другого, изменяются ли они синхронно. В меню "Operate" выполните команду "Data Correlator" (анализ зависимос- ти столбцов). NetMaker предложит выбрать два временных ряда для анализа. Щелкните мышью сначала на столбце WN, а затем на столбце МАТ+1. Выбе- рите "Correlate" в появившейся диалоговой панели. В следующем окне нажми- те кнопку "Create Plot" (нарисовать график). График, построенный системой, показан на рис. 7.4.6. Рис. 7.4.6. График с результатами корреляционного анализа столбцов WN и МАТ+1. На графике по его горизонтальной оси отложены значения Lag (лаг, отста- вание), по вертикальной оси - Strength (сила корреляции). График строится следующим образом. Вычисляется оценка согласованности исходных рядов. Затем второй ряд сдвигается по времени на некоторое число интервалов на- блюдения и производится оценка связи исходного и модифицированного ряда. Значение сдвига второго ряда откладывается по оси Lag. Для сдвигов назад по времени значения Lag отрицательные, для сдвигов вперед - положительные, для несмещенных рядов значение Lag равно 0. По оси Strength наносятся оцен-
200 Базы данных. Интеллектуальная обработка информации ки коррелированное™ первого ряда и второго ряда, сдвинутого на Lag интер- валов наблюдений. Такой подход позволяет обнаружить взаимосвязь величин, даже если моменты их изменения нс совпадают по времени, например, наблю- дается некоторая задержка изменения одной величины при изменении другой. Значения Strength могут изменяться от -1 до 1. Большие по модулю значе- ния указывают на более сильную связь. Если Strength равно нулю, то связь от- сутствует. Если при увеличении (уменьшении) значений первого ряда значе- ния второго тоже возрастают (убывают), то Strength принимает положитель- ные значения. Если при увеличении (уменьшении) значений первого ряда зна- чения второго убывают (возрастают), то Strength принимает значения, мень- шие нуля. Разработчики NetMaker советуют считать значимыми корреляции, для которых Strength больше 0.2, но окончательное решение о том, как исполь- зовать результаты корреляционного анализа, принадлежит пользователю. Разберемся, как интерпретировать этот график. Переместим указатель мыши в точку, соответствующую первому экстремуму (в данном случае минимуму) Strength слева от нуля оси Lag. Он достигается для значения Lag -4.0337 (при- мерно -4), при этом Strength равна 0.2359. Это означает, что при возрастании числа Вольфа (WN) следует ожидать уменьшения МАТ+1 через четыре года. Очевидно, что с исходным рядом МАТ подобные изменения будут происхо- дить соответственно не через 4, а через 5 лет. То есть через пять лет после возрастания числа Вольфа вероятно понижение среднегодовой температуры в Мюнхене. Вторая точка, на которую надо обратить внимание, - 0 по оси Lag. Значение Strength в ней тоже достаточно велико. Оно указывает на связь между несме- щенными рядами WN и МАТ+1. Найденные связи мы будем использовать при создании базы примеров. Наша цель на данном этапе - определить входы ней- ронной сети, которые позволят прогнозировать МАТ. При прогнозировании нам недоступны будущие значения числа Вольфа, поэтому значения справа от нуля по оси Lag, которые характеризуют силу корреляции между текущими значе- ниями МАТ и будущими WN, нас интересовать не будут. Результаты корреля- ционного анализа показали, что мы можем использовать WN для прогнозиро- вания МАТ. Несмещенный столбец чисел Вольфа уже есть в нашем распоряже- нии. Осталось добавить к исходным данным колонку, которая будет представ- лять значения WN четырехлетней давности. Исходные данные расположены в хронологическом порядке, поэтому все, что надо сделать, - это сдвинуть ко- лонку WN на четыре ячейки вниз. В меню "Column" (операции со столбцами) выполните команду "Shift Column Down" (сдвинуть столбец вниз). Выберите мышью колонку WN и введите "4" в ответ на вопрос о количестве ячеек, на которое сдвигается столбец. Определи- те название преобразованного столбца, например, "WN-4".
Гчава 7. Нейросетевые системы 201 Теперь проверим связь приведенной среднегодовой температуры поверх- ностного слоя атмосферы Земли (столбец RAAT) и температуры в Мюнхене. В меню "Operate" выполните команду "Data Correlator". Выберите сначала стол- бец RAAT, а затем столбец МАТ+1. Нажмите кнопки "Correlate" и "Create Plot" в появляющихся диалоговых окнах. График, нарисованный системой, представ- лен на рис. 7.4.7. Рис. 7.4.7. График с результатами корреляционного анализа столбцов RAAT и МАТ+1. Выясним значение Lag для доминирующего пика в левой части графика. Lag для этой точки равен -7.0682 (примерно -7), соответствующее ему значе- ние Strength - 0.1919. То есть вероятна связь между прогнозируемым значени- ем среднегодовой температуры в Мюнхене (МАТ+1) и значением приведенной среднегодовой температуры поверхностного слоя атмосферы Земли (RAAT) семилетней давности. Используем это при составлении базы примеров. В меню "Column" (операции со столбцами) выполните команду "Shift Column Down" (сдвинуть столбец вниз). Выберите мышью колонку WN и задайте, что сдвиг производится на 8 ячеек. Введите имя нового столбца, например, "RAAT-7". Важно отметить, что NetMaker позволяет выявлять лишь линейные зависи- мости между временными рядами, то есть зависимости вида У, = ах. + Ь, где х. - /-и уровень первого ряда (факторный признак), у - Z-й уровень вто- рого ряда (результативный признак), i I [1, л], п - число уровней исходных ря-
202 Базы данных. Интеллектуальная обработка информации дов. Метод корреляционного анализа, используемый в NetMaker, дает коррект- ные результаты при соблюдении следующих условий: 1) однородность исходных данных; 2) независимость отдельных значений параметра друг от друга; 3) нормальность распределения изучаемых признаков. В реальных задачах выполнить эти условия практически невозможно, по- этому к получаемым результатам корреляционного анализа следует относить- ся с некоторой осторожностью. Например, если на графике, получаемом при выполнении пункта меню "Operate/Data Correlator...", нет ярко выраженных экстремумов, то это не означает, что связь между рядами отсутствует. Зависи- мость между ними может быть нелинейной. Выявить и интерпретировать та- кую зависимость традиционными статистическими методами, например, ме- тодами нелинейной регрессии, довольно трудно. К счастью, нейросеть способна самостоятельно найти сложные связи в данных и использовать их для прогнозирования. Если существует зависимость между значе- ниями входов и выходов сети, заданных в примерах для обучения, сеть аппроксими- рует ее комбинацией нелинейных функций активации своих нейронов. Чем сильнее отдельный вход будет влиять на выходы нейросети, тем больший вес будет ему при- своен. В ситуации, когда заранее не известно, какие исходные данные в большей степени воздействуют на прогноз, пробуют подавать на входы нейронной сети все доступные параметры. Сеть сама выберет наиболее информативные из них и будет использовать их значения для прогнозирования. При большом числе параметров подобный подход нужно использовать осмотрительно - нельзя забывать, что при увеличении числа входов нейросети, как правило, увеличивается время ее обучения. Наша задача на следующем этапе - определение набора величин, которые дол- жны будут подаваться на вход нейросети, чтобы ее выход предсказывал МАТ+1. Одной из таких величин должно быть сглаженное значение МАТ (столбец Mavrg), оно характеризует тренд-тенденцию изменения МАТ. Требуется включить во вход- ной вектор историю последних изменений среднегодовой температуры Мюнхена (столбцы МАТ и МАТ-1). Необходимо также использовать величины, связанные с искомым прогнозным значением: числа Вольфа (столбец WN), числа Вольфа че- тырехлстней давности (столбец WN-4) и приведенную среднегодовую температу- ру поверхностного слоя атмосферы Земли семилетней давности (RAAT-7). По- зднее нам предстоит проверить, достаточно ли этих данных для прогнозирования, то есть окажется ли нейросеть способной предсказывать будущее значение на ос- нове этих шести величин. Заранее оценить это довольно сложно. Сформируем базу примеров - множество пар вида: {(Mavrg., МАТ., МАТ-1., WN., WN-4., RAAT-7.), МАТ+1.}, где (Mavrg., MAT., MAT-1., WN., WN-4., RAAT-7.) - входной вектор нейро- сети ; МАТ+1. - эталонный результат; i - обозначение одного из годов, для кото-
Глава 7. Нейросетевые системы 203 рого есть исходные данные; Mavrg., МАТ, MAT-1., WN., WN-4. и RAAT-7 - значения величин Mavrg, MAT, MAT-1, WN, WN-4 и RAAT-7 в / году. В соот- ветствии с таким выбором элементов входного вектора, чтобы определить зна- чение МАТ за 1973 год, нейросеть будет использовать значения Mavrg, МАТ и WN за этот же год, значение МАТ за 1972 год, значение WN за 1969 год и значе- ние RAAT за 1966 год. Обратите внимание, что все требуемые значения находятся на одной стро- ке. Это получилось не случайно. Как уже отмечалось, NetMaker требует, чтобы данные для каждого примера были расположены на одной строке, поэтому мы сдвигали значения столбцов MAT, WN и RAAT так, чтобы напротив каждого значения МАТ4-1 находились: значение МАТ, смещенное на год назад (МАТ-1), WN, сдвинутое на 4 года (WN-4), и RAAT, смещенное на 7 лет назад (RAAT-7). Продолжим готовить примеры. Удалим не нужный больше столбец RAAT. В меню ’'Column" (операции со столбцами) выполните команду "Delete Column' (удалить столбец). Выберите мышью колонку RAAT, подтвердите желание его удалить, нажав клавишу "ВВОД". Окно NetMaker после этих операций показа- но на рис. 7.4.8. NetMaker Professional - MAT DAT ЯИП1 file Column Bow Label Bumber Symbol operate Indicators NotUse NotUse NotUse NotUse NotUse NotUse NotUse NotUse A i 1 YEAR MAT j WN ||MAT+1J| MAT -1| Mavrg j WN-4 |RAAT~7j . LL 1926 7.76 44.3 8.38 7.76 7.76 44.3 -0.1 2 1927 8.38 63.9 7.68 7.76 7.915 44.3 -0.1 3 1928 7 88 69 8 38 8.38 7 945 44.3 -0.1 4 1929 8.38 77.8 6.93 7.88 8.1 44.3 -0.1 5 1930 6.93 64.9 8 26 8 38 7.8925 44.3 -0.1 6 1931 8.26 35.7 6.78 6.93 7.8625 63.9 -0.1 7 1932 6.78 21.2 7.63 8.26 7.5675 69 -0.1 * *i 8 1933 7.63 11.1 6.72 6 78 7.4 77.8 -0.1 • в > 9 1934 6.72 5.7 8.75 7.63 7.3475 64.9 0.13 10 1935 8.75 8.7 7 93 6 72 7.47 35.7 -0 01 • • ♦ 11 1935 7.93 36.1 7.92 8.75 7.7575 21.2 0.06 12 1936 7 92 79.7 85 7.93 7.83 11 1 -0.17 13 1937 8 5 114.4 8 7.92 8.275 5.7 -0.01 14 1938 8 109.6 7.71 8.5 8.0875 8.7 0.09 Рис. 7 4.8 Окно NetMaker после удаления столбца RAAT.
204 Базы данных. Интеллектуальная обработка информации Поместим для наглядности столбец эталонов МАТ+1 в правую часть таблицы. В меню "Column" (операции со столбцами) выполните команду "Move Column" (переместить). Щелктгите мышью на колонке МАТ+1, а затем на столбце RAAT-7. При сдвиге столбцов вниз NetMaker дополнил их сверху соответствующим чис- лом значений из первой ячейки (см. рис. 7.4.8, столбцы RAAT-7, WN-4, МАТ-1). Строки с подобными значениями нельзя использовать при подготовке базы приме- ров - сеть будет обучена неправильно. Максимально мы сдвигали столбцы на 7 яче- ек вниз, поэтому мы должны удалить первые 7 строк. В меню "Row" (операции со строками) выполните команду "Delete Row" (удалить строку). Щелкните мышью на первой строке с данными, подтвердите се удаление в ответ на вопрос системы. Первая строка удалена. Эту операцию надо проделать еще 6 раз. После этого в первой строке таблицы должны нахо- диться данные за 1933 год. Теперь необходимо указать NetMaker, в каких столбцах находятся данные входного вектора, в каком - эталонный результат, а где комментарий. Начнем по порядку. Щелкните мышью на названии первого столбца (YEAR) и нажми- те "Ctrl+A". Столбец помечен как комментарий (Annote), его данные не будут использованы ни во входном векторе, ни как эталонный выход сети. Столбцы MAT, WN, MAT-1, Mavrg, WN-4, RAAT-7 содержат данные для входов нейро- сети Чтобы указать это программе, надо поочередно выбрать каждый из них и нажать комбинацию "Ctrl+I" (Input). Столбец МАТ+1 надо обозначить как эта- лонный выход нейросети. Выделите его и нажмите "Ctrl+P" (Pattern). Резуль- тат представлен на рис. 7.4.9. Самое время сохранить промежуточный результат нашей работы. В меню "File" (файловые операции) выберите пункт "Save NetMaker File... " (записать файл с данными NetMaker) Задайте имя сохраняемого файла, например, "mat-2.dat" в окне диалога, нажмите "ВВОД". Используя бегунок прокрутки в правой части окна NetMaker, перейдите в нижнюю часть таблицы. Последняя строка (1985 год) содержит некорректное значение МАТ+1. Хотя эту строку нельзя использовать при обучении нейросе- ти, для получения прогноза ее данные нам потребуются. При прогнозирова- нии. то есть в процессе работы обученной сети, значение МАТ+1 не использу- ется, оно вычисляется на основе входного вектора. При записи файла данных для работы обученной сети (Running Fact File) NetMaker игнорирует все значе- ния, помеченные как Pattern (эталон), поэтому некорректное значение МАТ+1 не попадет в этот файл Создадим файл данных для работы обученной сети. В меню "File" (файло- вые операции) выполните команду "Create Running Fact File..." Программа пред- ложит сохранить его под именем "mat-2.in". Оставьте имя файла без измене- ний и нажмите "Ок". Данные, расположенные в строке 1985 года, будут поме-
Глава 7. Нейросетевые системы 205 щены в этот файл последними, функционирование сети на них закончится, и мы сможем узнать результат требуемого нам прогноза. J : NetMaker Professional 1 MAT DAT rR] file Column Bow Labe il Number Symbol .Operate Indicators Annote Incut Incut Incut Incut Incut Incut Pattern A YEAR MAT 1 WN | MAT-11 Mavrg | WN-4 «—I 1 1926 7.76 44.3 7 76 7.76 44.3 -0.1 8 38 2 1927 8.38 63.9 7.76 7.915 44.3 -0.1 7.88 3 1928 7.88 69 8 38 7.945 44.3 -0.1 8.38 1 4 1929 8.38 77.8 7.88 8.1 44.3 -0.1 6.93 5 1930 693 64.9 8.38 7.8925 44.3 -0.1 8.26 •.у* 6 1931 8.26 35.7 6.93 7.8625 63.9 -0.1 6.78 7 1932 6.78 21.2 826 7.5875 69 -0.1 7 63 В 1933 7.63 11.1 6.78 7.4 77.8 -0.1 6.72 9 1934 6.72 5.7 7.63 7.3475 64.9 0.13 8.75 10* 1935 8.75 8.7 6.72 7.47 35.7 -0.01 7.93 11 1935 7.93 36 1 8.75 7.7575 21.2 0.06 7.92 1 12 1936 7.92 79.7 7.93 7.83 11.1 -0.17 8.5 1 1 13 1937 8.5 114.4 7.92 8.275 5.7 -0.01 8 f Л U 1938 8 109.6 8.5 8.0875 8.7 0.09 7.71 Рис. 7 4 9. Вид окна NetMaker после назначения входов и выходов. Теперь необходимо составить базу примеров для обучения сети, но сначала надо удалить последнюю строку. В меню "Row" (операции со строками) вы- полните команду "Delete Row" (удалить строку). Щелкните мышью на после- дней строке с данными, подтвердите ее удаление. Перемешаем строки с данными. В меню "Row" (операции со строками) выполните команду "Shuffle Rows" (перемешать строки). Выполните эту ко- манду еще раз. В меню "File" (файловые операции) выберите пункт "Create BrainMaker Files..." (записать файлы для BrainMaker). Нажмите кнопку "Write Files". NetMaker сохранил 3 файла: 1) mat-2.def - описание структуры, входных и выходных параметров ней- росети (NetMaker автоматически определяет необходимое число нейро- нов в скрытом слое и генерирует сеть);
206 Базы данных. Интеллектуальная обработка информации 2) mat-2.fct - примеры для обучения нейросети; 3) mat-2.tst - примеры для тестирования нейросети. Программу NetMaker можно закрыть, она больше не потребуется. Теперь нам предстоит поработать с другим приложением пакета - BrainMaker. Это - "нейросетевое ядро", которое обучает, тестирует и эксплуатирует сети, создан- ные в NetMaker. BrainMaker расположен в той же папке, что и NetMaker. Чтобы запустить программу, в меню "Старт" Windows 95 найдите папку "BrainMaker Professional" и выберите в ней иконку с надписью BrainMaker. Чтобы сделать то же в Windows 3.1, выберите группу "BrainMaker Professional" в Program Manager и сделайте двойной щелчок на иконке BrainMaker. Рис. 7.4.10, Окно BrainMaker после запуска программы. Нельзя не признать, что интерфейс BrainMaker не столь дружественный, как, например, у современных офисных пакетов (рис. 7.4.10). Однако програм- ма хорошо делает свое дело, не тратя ресурсов компьютера впустую. Сейчас нам предстоит обучить и протестировать нейросеть, созданную ранее В меню "File" (файловые операции) выберите пункт "Read Network..." (счи- тать сеть). В появившемся окне выберите файл "mat-2.der'. Нажмите "Ок". В окне программы появились 2 столбца: левый - это элементы входного вектора, правый-эталонный (Ptn) и реальный (Out) выходы нейросети. В процессе обу- чения каждое входное и выходное значение будет отображаться горизонталь- ной полоской, длина которой пропорциональна соответствующему значению. Интересно, сколько нейронов содержит наша сеть? В меню "Connections" (соединения) выполните команду "Change Network Size..." (изменить размер сети). Система выведет панель диалога, представленную на рис. 7.4.11. Видно, что число нейронов во входном слое - 6 (число значений во входном векторе), в скрытом слое - 10, в выходном слое - 1. В сети 70 межнейронных связей. В этой панели диалога можно изменить параметры сети, например, увеличить число нейронов, если сеть плохо обучается. Нажмите "Cancel" - мы не собира- лись ничего менять.
Глава 7. Нейросетевые системы 207 ( tinnqv Nrfwuik Si/н Inputs Fact File recurrent Neurons Б и Connections Число нейронов во входном слое ~ Layer Neurons Input- ' 6 Connections Recurrent Copies 0 Число нейронов в скрытом слое 2 3 4 5 Число нейронов в выходном слое Output 10 70 11 6 1 0 0 Ок Cancel Puc. 7.4 11 Диалоговая панель "Change Network Size". Зададим точность обучения. В меню "Parameters" (параметры) выберите пункт "Training Control Flow" (управление процессом обучения). Измените значение в строке "Training Tolerance" (точность обучения) на 0.2, нажмите "Ок". Этот пара- метр определяет максимально допустимое относительное отклонение действи- тельного значения на выходе сети от эталонного, заданного в примере. Сеть готова к обучению. В меню "Operate" (действия) выполните команду "Train Network" (обучить сеть). Видно, что входы и выход сети быстро изменя- ются - мелькают полоски, соответствующие их значениям. В двух верхних стро- ках окна отображается статистика обучения: 1) время, прошедшее с начала обучения (Training); 2) имя файла с примерами (Facts), 3) коэффициент, определяющий, насколько сильно BrainMaker изменяет веса межнейронных связей при неправильном ответе сети (Learn); 4) точность обучения (Tolerance); 5) текущий пример (Fact); 6) общее число обработанных примеров (Total); 7) число неправильных ответов нейросети (Bad) и число таких ответов в прошлом прогоне (Last); 8) число правильных ответов нейросети (Good) и число таких ответов в прошлом прогоне (Last);
208 Базы данных. Интеллектуальная обработка информации 9) число прогонов - циклов, в каждом из которых все множество примеров подается на вход сети (Run). Динамику обучения сети можно проследить в окне "Network Progress" (ди- намика обучения). В меню "Display" (отображение) выберите пункт "Network Progress Display" (отображение динамики обучения). В нижней части окна BrainMaker появится окно с гистограммой (вверху) и графиком (внизу) (см. рис. 7.4.12). Рис. 7.4.12. Окно BrainMaker в момент обучения. Гистограмма показывает распределение ошибок в прогоне. Горизонталь- ная ось - это относительное отклонение значения на выходе сети от эталона, заданного в примере. По вертикальной оси откладывается число выходов сети, на которых наблюдались соответствующие отклонения. Это значение совпада- ет с числом примеров, когда в сети один выход. Например, если при определен- ном входном векторе значение на выходе сети отличается от эталонного на 50%, то па отметке 0.5 по горизонтали появится столбик высотою 1. Если примеров с такой ошибкой будет несколько, то пропорционально изменится и высота стол- бика В начале обучения примеров с большими значениями ошибки доволь- но много - столбики почти равномерно распределены по горизонтальной
Глава 7. Нейросетевые системы 209 оси. В процессе обучения они движутся влево - точность сети повышает- ся. Обучение заканчивается, когда все столбики будут находиться левее значения Training Tolerance (точность обучения). В нашем случае оно рав- но 0.2. Наблюдение динамики обучения - не простая забава, оно позволя- ет выявить ошибки, сделанные при создании сети и формировании базы примеров. График внизу окна "Network Progress" отображает значение среднеквадра- тической ошибки ("RMS error") для каждого прогона. Горизонтальная ось ото- бражает номера прогонов. По вертикали откладываются значения среднеквад- ратической ошибки для конкретного прогона. Вычисляются они следующим образом: п . Ё(°'-р)2 RMSE = -Ьй------------- п где RMSE - значение среднеквадратической ошибки прогона, п—число при- меров, о. - значение выхода сети для z-го примера, р. - эталонное значение для /-го примера. На компьютере с процессором Pentium с тактовой частотой 100 МГц про- цесс обучения нашей сети займет от 5 до 15 минут. Для настройки межней- ронных весов используются случайные числа, поэтому точное время указать сложно. Следующий этап - тестирование обученной сети. В меню "Operate" (дей- ствия) выполните команду "Test Network" (обучить сеть). Результаты тестиро- вания показаны во второй строке окна (см. рис. 7.4.13). Сеть тестировалась шестью примерами. На пяти из них она дала правильный ответ, в одном приме- ре она ошиблась. Для столь небольшого объема исходных данных для обуче- ния это неплохой результат. Всего примеров Число ошибок Число правильных ответов сети Рис 7.4 13. Окно с результатами тестирования. Сеть готова выдать прогноз. Окно "Network Progress" загораживает нам область, где будет выводиться предсказанное значение. Чтобы убрать его, вы-
210 Базы данных. Интеллектуальная обработка информации берите в меню "Display" пункт "Network Progress Display". Изменим формат представления данных с горизонтальных полосок на числа. В меню "Display" выполните команду "Edit Network Display..." (изменить формат представле- ния). Замените везде формат "Termometer" (полоска) на ’’Number'’ (число). Нужный формат выбирается из списка выпадающего при нажатии кнопки со стрелкой. Рис. 7.4.14. Окно с результатами прогнозирования. В меню "Operate" выберите "Run Trained Network". В строке "Out" по- явится результат прогноза 7.5920 (см. рис. 7.4.14) Сравним его с реальным результатом. В 1986 году значение среднегодовой температуры в городе Мюнхене составило 7.71°С [49]. Определим относительную погрешность прогноза. |7.5920-7.71| -7.5920~ *0.0155 = 1.55% Сеть не видела ранее данных за 1986 год, однако смогла достаточно точно их предсказать, конечно, не без нашей помощи. Нельзя нс сказать, что результат мог бы получиться иным (несколько боль- ше или меньше). Связано это с рядом причин. Во-первых, начальные коэффи- циенты межнейронных связей - случайные числа, поэтому в каждом случае сеть обучается по-разному. Во-вторых, и это - главная причина, число приме- ров, которые мы использовали при обучении, невелико. Чтобы добиться более точного и стабильного результата, надо использовать больший объем исход- ных данных. Возможно, требуется провести анализ наблюдаемого явления и определить, какая дополнительная информация может потребоваться для раз-
Глава 7, Нейросетевые системы 211 работки прогноза. В-третьих, мы понизили точность обучения с 0.1 до 0.2, что- бы уменьшить время обучения. Для достижения более высокой точности мог- ло бы потребоваться увеличение автоматически заданного NetMaker числа ней- ронов скрытого слоя. В-четвертых, мы не использовали тех возможностей BrainMaker, которые позволяют улучшить результат обучения нейросети. Спи- сок довольно внушительный. Он еще раз подтверждает, что прогнозирование с использованием нейросетей - сложный и творческий процесс, требующий зна- ния теории нейровычислений, возможностей нейропакетов и понимания пред- метной области.
Глава 8. Генетические алгоритмы 8.1 Эволюционные вычисления и традиционные методы оптимизации Принятие решений - каждодневная деятельность человека, часть его по- вседневной жизни. В течение дня по различным ситуациям человек принимает в среднем 10000 решений [51]. Простые, привычные решения на уровне быто- вых проблем человек принимает легко, часто автоматически, не задумываясь. В сложных и ответственных случаях он обращается к друзьям, родственникам, опытным и знающим людям за подтверждением своего решения, несогласием с ним или за советом: каким .могло бы быть другое решение. Такой же подход к принятию решений сохранялся хпюгие столетия и в области профессиональ- ной деятельности человека, когда темп изменения окружающей среды был не- велик и новые явления возникали "по очереди", а не одновременно. И для адек- ватного реагирования на те или иные ситуации достаточно было учитывать один-два важных фактора, не рассматривая все их множество. Сейчас положение изменилось. Большое количество задач являются много- критериальными, то есть такими, в которых приходится учитывать большое число факторов. Здесь человеку приходится оценивать множество сил, влия- ний, интересов и последствий, характеризующих то или иное решение. Кроме того, значительно повысился темп жизни. Решения зачастую требуется прини- мать в режиме, близком к реальному времени. Принятие решения в большинстве случаев заключается в i снерации всех возможных альтернатив решений, их оценке и выборе лучшей среди них. При- нять "правильное" решение - значит выбрать такой вариант из числа возмож- ных, в котором с учетом всех разнообразных факторов и противоречивых тре- бований будет оптимизирована некая общая ценность, то есть решение будет в максимальной степени способствовать достижению поставленной цели. С появлением и развитием вычислительной техники указанные процессы генерации и выбора альтернатив решений стали реализовываться на компью- терах. В связи с этим появились новые задачи формализации и алгоритмиза- ции процесса принятия решений, которые сейчас составляют отдельную боль- шую область исследований. Формализация той или иной поставленной задачи, как правило, предпола- гает описание всех важных факторов, влияющих на достижение цели, их взаи- модействия, ограничительных условий и критерия оценки качества принимае- мого решения, на основе которого можно осуществлять выбор между альтер- нативами. Обычно в качестве критерия оценки выступает некая целевая фупк-
Глава 8, Генетические алгоритмы 213 ция, аргументами которой являются количественные характеристики, описы- вающие состояние факторов, влияющих на достижение цели в решаемой зада- че. При этом решению, приводящему к наилучшему результату, как правило, соответствует экстремальное значение целевой функции, то есть точка ее мак- симума или минимума. Таким образом, процесс генерации вариантов решений и выбора наилуч- шей из полученных альтернатив сводится, в общем случае, к созданию всех возможных комбинаций значений характеристик, влияющих на целевую функ- цию, и нахождение такой комбинации, которая приводит к ее экстремальному значению Все возможные комбинации аргументов при этом образуют простран- ство поиска задачи, размерность которого определяется числом аргументов целевой функции. А каждая из указанных комбинаций образует точку в дан- ном пространстве. Указанная выше интерпретация процесса принятия решений, несмотря на свою обобщенность и приблизительность, позволяет увидеть потенциальные возможности автоматизации, то есть применения вычислительной техники, для выполнения задач принятия решений. Наиболее широко вычислительная тех- ника используется сейчас для реализации самого трудоемкого процесса, гене- рации альтернатив решений и выбора наилучшей из них. Еще задолго до появления вычислительной техники были созданы формаль- ные методы поиска оптимальных решений, в основе которых лежали матема- тические вычисления, позволяющие находить экстремум целевой функции. Ценность каждого такого метода заключается в том, что с помощью него мож- но найти точку экстремума целевой функции, не перебирая всех возможных комбинаций ее аргументов. Тем более что зачастую это просто невозможно. Появление и бурное развитие вычислительной техники лишь подтолкнуло про- цесс создания и развития новых методов оптимизации, которые позволяли бы решать все новые классы задач и могли быть реализованы на вычислительных машинах. На сегодняшний день можно выделить три основных типа методов поиска оптимальных решений [52]: • методы, основанные на математических вычислениях, • перечислительные методы, • методы, использующие элемент случайности. Методы, основанные на математических вычислениях, изучены наиболее полно. Они подразделяются на направленные и ненаправленные. Суть ненап- равленного метода состоит в том, что локальный экстремум ищется путем ре- шения системы, как правило, нелинейных уравнений. Эта система составляет- ся путем приравнивания градиента целевой функции к нулю (например, метод градиентного спуска или покоординатного спуска). Направленные методы стро-
214 Базы данных. Интеллектуальная обработка информации ятся на перемещении отточки к точке в допустимой области, причем направле- ние подобных перемещений связывается с направлением, на которое указыва- ет градиент (например, метод касательных). К недостаткам этих методов можно отнести очень жесткие условия, накла- дываемые на целевую функцию. Она должна быть дифференцируема на всем пространстве поиска. При формализации современных задач это условие, как правило, соблюсти не удается. Кроме того, данные методы находят лишь ло- кальные экстремумы целевой функции, тогда как оптимальному решению со- ответствует только глобальный экстремум. Таким образом, методы поиска оп- тимальных решений, основанные на математических вычислениях, примени- мы лишь в случаях гладких, всюду дифференцируемых унимодальных (имею- щих один экстремум на пространстве поиска) целевых функций. Перечислительные методы также изучены достаточно подробно и имеют множество видов и форм. Их основная идея состоит в том, что пространство поиска любой задачи можно представить в виде совокупности дискретных то- чек. Даже если пространство поиска непрерывно, то конечная точность пред- ставления чисел в вычислительных машинах позволяет сделать такое допуще- ние. В этом случае поиск решения будет сводиться к перебору всех точек про- странства поиска и вычислению в них целевой функции, в одной из которых она, несомненно, примет экстремальное значение. Для реализации непосред- ственно процесса поиска сейчас разработано большое количество соответству- ющих алгоритмов. Недостаток этих методов очевиден. При увеличении размерности простран- ства поиска (числа аргументов целевой функции) количество точек простран- ства значительно увеличивается. Это приводит к значительным временнььм зат- ратам и необходимости применения все более мощной и дорогостоящей вы- числительной техники. В то же время размерность решаемых сейчас задач по- стоянно растет, а время, доступное для принятия решении сокращается. Таким образом, перечислительные методы также применимы для решения все более сужающегося класса задач. Методы, использующие элементы случайности, стали появляться относи- тельно недавно, по мере того как становились очевидными недостатки методов первых двух видов. В основе первого из таких методов лежит случайный по- иск в пространстве задачи с сохранением наилучшего полученного результата. Очевидно, что применение такого метода не гарантирует получения оптималь- ного решения. Кроме того, результат работы метода не может быть лучше, чем в случае методов поиска, поскольку в обоих случаях рассматриваются одни и те же дискретные точки пространства поиска задачи. Вместе с тем следует заметить, что сейчас при решении очень сложных задач основной целью является поиск уже не оптимального, а более "хороше-
Глава 8. Генетические алгоритмы 215 го" решения по сравнению с полученным ранее или заданным в качестве на- чального. Здесь методы, использующие элемент случайности, получают опре- деленное преимущество перед остальными. Однако даже с такими допущени- ями непосредственный случайный поиск является малоэффективным. Иссле- дования показали, что внесение в такие методы элементов детерминированно- сти дает значительное улучшение показателей. Одним из типов таких "частич- но" случайных методов являются эволюционные вычисления. Эволюционные вычисления - термин, обычно используемый для общего описания алгоритмов поиска, оптимизации или обучения, основанных на не- которых формализованных принципах естественного эволюционного процес- са [53]. Основное преимущество эволюционных вычислений в этой области заключается в возможности решения многомодальных (имеющих несколько локальных экстремумов) задач с большой размерностью за счет сочетания эле- ментов случайности и детерминированности точно так, как это происходит в природной среде. Детерминированность этих методов заключается в моделировании природ- ных процессов отбора, размножения и наследования, происходящих по строго определенным правилам. Основным правилом при этом является закон эволю- ции: "выживает сильнейший", который обеспечивает улучшение находимого решения Другим важным фактором эффективности эволюционных вычисле- ний является моделирование размножения и наследования. Рассматриваемые варианты решений могут по определенному правилу порождать новые реше- ния, которые будут наследовать лучшие черты своих "предков". В качестве случайного элемента в методах эволюционных вычислений мо- жет использоваться, например, моделирование процесса мутации. В этом слу- чае характеристики того или иного решения могут быть случайно изменены, что приведет к новому направлению в процессе эволюции решений и может ускорить процесс выработки лучшего решения. История эволюционных вычислений началась с разработки ряда различ- ных независимых моделей эволюционного процесса. Среди этих моделей можно выделить три основные парадигмы: • Генетические алгоритмы. • Эволюционные стратегии. • Эволюционное программирование. Основное отличие генетических алгоритмов заключается в представлении любой альтернативы решения в виде битовой строки фиксированной длины, манипуляции с которой производятся в отсутствие всякой связи с ее смысловой интерпретацией. То есть в данном случае применяется единое универсальное представление любой задачи. Парадигму генетических алгоритмов предложил Джон Холланд, опубликовавший в начале 60-х годов ее основные положения. А
216 Базы данных. Интеллектуальная обработка информации всеобщее признание она получила после выхода в свет в 1975 году его класси- ческого труда "Адаптация в естественных и искусственных системах". Эволюционные стратегии, напротив, оперируют объектами, тесно связан- ными с решаемой задачей. Каждая из альтернатив решения представляется еди- ным массивом численных параметров, за каждым из которых скрывается, по сути, аргумент целевой функции. Воздействие на данные массивы осуществ- ляется, в отличие от генетических алгоритмов, с учетом их смыслового содер- жания и направлено на улучшение значений входящих в них параметров. Пара- дигму эволюционных стратегий предложили в 1973 году Реченбсрг (I. Rechenberg) в своей работе "Эволюционные стратегии: оптимизация техничес- ких систем на основе принципов биологической эволюции" и в 1977 году Ше- фель (Н.-Р. Schwefel) в работе "Численная оптимизация компьютерных моде- лей посредством эволюционной стратегии". В основе направления эволюционного программирования лежит идея пред- ставления альтернатив в виде универсальных конечных автоматов, способных реагировать на стимулы, поступающие из окружающей среды. Соответствую- щим образом разрабатывались и операторы воздействия на них. Идеи эволю- ционного программирования были предложены в 1966 году Фогелем, Оуэнсом и Уолшем (L.J. Fogel, A.J. Owens, MJ. Walsh) в работе "Построение систем искусственного интеллекта путем моделирования эволюции". Как и всякий метод, использующий элемент случайности, эволюционные вычисления не гарантируют обнаружения глобального экстремума целевой фун- кции (или оптимального решения) за определенное время. Основное их преиму- щество в том, что они позволяют найти более "хорошие" решения очень трудных задач за меньшее время, чем другие методы. Естественно, эволюционные вычис- ления не являются оптимальным средством для решения любых задач, посколь- ку было доказано, что не существует метода поиска, который был бы наилучшим во всех случаях. Тем не менее методы эволюционных вычислений оказались до- статочно эффективными для решения ряда реальных задач инженерного проек- тирования, планирования, маршрутизации и размещения, управления портфеля- ми ценных бумаг, прогнозирования, а также во многих других областях. Отрицательной чертой эволюционных вычислений является то, что они представляют собой, скорее, подход к решению задач оптимизации, чем алго- ритм. И вследствие этого требуют адаптации к каждому конкретному классу задач путем выбора определенных характеристик и параметров, речь о кото- рых применительно к генетическим алгоритмам пойдет ниже. В настоящее время наблюдается взаимное проникновение указанных пара- дигм и их сращивание в единую концепцию эволюционных вычислений. По- этому далее имеет смысл рассматривать только одну из них. Здесь, в частно- сти, будут описаны генетические алгоритмы как наиболее распространенные.
Глава 8. Генетические алгоритмы 217 8.2 Основы теории генетических алгоритмов Генетические алгоритмы, являясь одной из парадигм эволюционных вы- числений, представляют собой алгоритмы поиска, построенные на принципах, сходных с принципами естественного отбора и генетики. Если говорить обоб- щенно, они объединяют в себе принцип выживания наиболее перспективных особей - решений и структуризированный обмен информацией, в котором при- сутствует элемент случайности, который моделирует природные процессы на- следования и мутации. Дополнительным свойством этих алгоритмов является невмешательство человека в развивающийся процесс поиска. Человек может влиять на него лишь опосредованно, задавая определенные параметры. Будучи разновидностью методов поиска с элементами случайности, генети- ческие алгоритмы имеют целью нахождение лучшего, а не оптимального решения задачи. Это связано с тем, что для сложной системы часто требуется найти хоть какое-нибудь удовлетворительное решение, а проблема достижения оптимума от- ходит на второй план. При этом другие методы, ориентированные па поиск имен- но оптимального решения, вследствие чрезвычайной сложности задачи становят- ся вообще неприменимыми. В этом кроется причина появления, развития и роста популярности генетических алгоритмов. Хотя, как и всякий другой метод поиска, этот подход не является оптимальным методом решения любых задач. Преимущества генетических алгоритмов становятся еще более прозрачны- ми, если рассмотреть основные их отличия от традиционных методов. Основ- ных отличий четыре [52]. Первое. Генетические алгоритмы работают с кодами, в которых представ- лен набор параметров, напрямую зависящих от аргументов целевой функции. Причем интерпретация этих кодов происходит только перед началом работы алгоритма и после завершения его работы для получения результата. В процес- се работы манипуляции с кодами происходят совершенно независимо от их интерпретации, код рассматривается просто как битовая строка. Второе. Для поиска генетический алгоритм использует несколько точек поискового пространства одновременно, а не переходит от точки к точке, как это делается в традиционных методах. Это позволяет преодолеть один из их недостатков - опасность попадания в локальный экстремум целевой функции, если она не является унимодальной, то есть имеет несколько таких экстрему- мов. Использование нескольких точек одновременно значительно снижает та- кую возможность. Третье. Генетические алгоритмы в процессе работы не используют ника- кой дополнительной информации, что повышает скорость работы. Единствен- ной используемой информацией может быть область допустимых значений параметров и целевой функции в произвольной точке.
218 Базы данных. Интеллектуальная обработка информации Четвертое. Генетический алгоритм использует как вероятностные правила для порождения новых точек анализа, так и детерминированные правила для перехода от одних точек к другим. Выше уже говорилось, что одновременное использование элементов случайности и детерминированности дает значительно больший эффект, чем раздельное. Прежде чем рассматривать непосредственно работу генетического алгорит- ма, введем ряд терминов, которые широко используются в данной области. Выше было показано, что генетический алгоритм работает с кодами безот- носительно их смысловой интерпретации. Поэтому сам код и его структура описываются понятием генотип, а его интерпретация, с точки зрения решае- мой задачи, понятием фенотип. Каждый код представляет, по сути, точку про- странства поиска. С целью максимально приблизиться к биологическим тер- минам, экземпляр кода называют хромосомой, особью или индивидуумом. Далее для обозначения строки кода мы будем в основном использовать термин "особь1’. На каждом шаге работы генетический алгоритм использует несколько то- чек поиска одновременно. Совокупность этих точек является набором особей, который называется популяцией. Количество особей в популяции называют размером популяции. Поскольку в данном параграфе мы рассматриваем клас- сические генетические алгоритмы, то можем сказать, что размер популяции является фиксированным и представляет одну из характеристик генетического алгоритма. На каждом шаге работы генетический алгоритм обновляет популя- цию путем создания новых особей и уничтожения старых. Чтобы отличать по- пуляции на каждом из шагов и сами эти шаги, их называют поколениями и обычно идентифицируют по номеру Например, популяция, полученная из ис- ходной популяции после первого шага работы алгоритма, будет первым поко- лением, после следующего шага - вторым, и т.д. В процессе работы алгоритма генерация новых особей происходит на ос- нове моделирования процесса размножения. При этом, естественно, порожда- ющие особи называются родителями, а порожденные - потомками Родительс- кая пара, как правило, порождает пару потомков. Непосредственная генерация новых кодовых строк из двух выбранных происходит за счет работы оператора скрещивания, который также называют кросс ин говером (от англ, crossover). При порождении новой популяции оператор скрещивания может применяться нс ко всем парам родителей. Часть этих пар может переходить в популяцию сле- дующего поколения непосредственно. Насколько часто будет возникать такая ситуация, зависит от значения вероятности применения оператора скрещива- ния, которая является одним из параметров генетического алгоритма. Моделирование процесса мутации новых особей осуществляется за счет работы оператора мутации. Основным параметром оператора мутации также является вероятность мутации.
Глава 8. Генетические алгоритмы 219 Поскольку размер популяции фиксирован, то порождение потомков долж- но сопровождаться уничтожением других особей. Выбор пар родителей из по- пуляции для порождения потомков производит оператор отбора, а выбор осо- бей для уничтожения - оператор редукции. Основным параметром их работы является, как правило, качество особи, которое определяется значением целе- вой функции в точке пространства поиска, описываемой этой особью. Таким образом, можно перечислить основные понятия и термины, исполь- зуемые в области генетических алгоритмов: • генотип и фенотип, • особь и качество особи, • популяция и размер популяции, • поколение, • родители и потомки. К характеристикам генетического алгоритма относятся: • размер популяции, • оператор скрещивания и вероятность его использования, • оператор мутации и вероятность мутации, • оператор отбора, • оператор редукции, • критерий останова. Операторы отбора, скрещивания, мутации и редукции называют еще гене- тическими операторами. Критерием останова работы генетического алгоритма может быть одно из трех событий: • Сформировано заданное пользователем число поколений. • Популяция достигла заданного пользователем качества (например, зна- чение качества всех особей превысило заданный порог). • Достигнут некоторый уровень сходимости. То есть особи в популяции стали настолько подобными, что дальнейшее их улучшение происходит чрезвычайно медленно. Характеристики генетического алгоритма выбираются таким образом, что- бы обеспечить малое время работы, с одной стороны, и поиск как можно луч- шего решения, с другой. Рассмотрим теперь непосредственно работу генетического алгоритма. Об- щая схема его работы представлена на рис. 8.1. Формирование исходной популяции происходит, как правило, с использо- ванием какого-либо случайного закона, на основе которого выбирается нужное количество точек поискового пространства. Исходная популяция может также быть результатом работы какого-либо другого алгоритма оптимизации. Все здесь зависит от разработчика конкретного генетического алгоритма.
220 Базы данных. Интеллектуальная обработка информации Рис. 8.1. Процесс работы генетического алгоритма.-
Глава 8. Генетические алгоритмы 221 В основе операюра отбора, который служит для выбора родительских пар и уничтожения особей, лежит принцип "выживает сильнейший". В качестве примера можно привести следующий оператор. Выбор особи для размножения производится случайно. Вероятность участия особи в процессе размножения вычисляется по формуле: где п - размер популяции, i - номер особи, Р. - вероятность участия особи в процессе размножения, f - значение целевой функции для i-й особи. Очевид- но, что одна особь может быть задействована в нескольких родительских па- рах. Аналогично может быть решен вопрос уничтожения особей. Только веро- ятность уничтожения, соответственно, должна быть обратно пропорциональна качеству особей. Однако обычно происходит просто уничтожение особей с наи- худшим качеством. Таким образом, выбирая для размножения наиболее каче- ственные особи и уничтожая наиболее слабые, генетический алгоритм посто- янно улучшает популяцию, ведя к нахождению все лучших решений. Оператор скрещивания призван моделировать природный процесс насле- дования, то есть обеспечивать передачу свойств родителей потомкам. Опишем простейший оператор скрещивания. Он выполняется в два этапа. Пусть особь представляет собой строку из п элементов. На первом этапе рав- новероятно выбирается натуральное число к от 1 до п-1. Это число называется точкой разбиения. В соответствии с ним обе исходные строки разбиваются на две подстроки. На втором этапе строки обмениваются своими подстроками, лежащими после точки разбиения, то есть элементами с к+1-го по n-й. Так по- лучаются две новые строки, которые наследовали частично свойства обоих родителей. Этот процесс проиллюстрирован ниже. строка1 Х1Х2...XkXk+1...Xn Х1Х2...XkYk+1...Yn строка2 Y1Y2...YkYk+1...Yn Y1Y2...YkXk+1...Xn Вероятность применения оператора скрещивания обычно выбирается доста- точно большой, в пределах от 0,9 до 1, чтобы обеспечить постоянное появление новых особей, расширяющих пространство поиска. При значении вероятности меньше 1 часто используют элитизм. Это особая стратегия, которая предполага- ет переход в популяцию следующего поколения элиты, то есть лучших особей текущей популяции, без всяких изменений. Применение элитизма способствует сохранению общего качества популяции на высоком уровне. При этом элитные
222 Базы данных. Интеллектуальная обработка информации особи участвуют еще и в процессе отбора родителей для последующего скрещи- вания. Количество элитных особей определяется обычно по формуле: K = (1-P)*N, (8.2) где К - количество элитных особей, Р - вероятность применения оператора скрещивания, N - размер популяции. В случае использования элитизма все выбранные родительские пары под- вергаются скрещиванию, несмотря на то, что вероятность применения опера- тора скрещивания меньше 1. Это позволяет сохранять размер популяции по- стоянным. Оператор мутации служит для моделирования природного процесса му- тации. Его применение в генетических алгоритмах обусловлено следующи- ми соображениями. Исходная популяция, какой бы большой она ни была, ох- ватывает ограниченную область пространства поиска. Оператор скрещива- ния, безусловно, расширяет эту область, но все же до определенной степени, поскольку использует ограниченный набор значений, заданный исходной популяцией. Внесение случайных изменений в особи позволяет преодолеть это ограничение и ино! да значительно сократить время поиска или улучшить качество результата. Как правило, вероятность мутации, в отличие от вероятности скрещива- ния, выбирается достаточно малой. Сам процесс мутации заключается в заме- не одного из элементов строки на другое значение. Это может быть переста- новка двух элементов в строке, замена элемента строки значением элемента из другой строки, в случае битовой строки может применяться инверсия одного из битов и т.д. В процессе работы алгоритма все указанные выше операторы применяют- ся многократно и ведут к постепенному изменению исходной популяции. По- скольку операторы отбора, скрещивания, мутации и редукции по своей сути направлены на улучшение каждой отдельной особи, то результатом их работы является постепенное улучшение популяции. В этом и заключается основной смысл работы генетического алгоритма - улучшить популяцию решений по сравнению с исходной. После завершения работы генетического алгоритма из конечной популя- ции выбирается та особь, которая дает максимальное (или минимальное) зна- чение целевой функции и является, таким образом, результатом работы генети- ческого алгоритма. За счет того, что конечная популяция лучше исходной, по- лученный результат представляет собой улучшенное решение. 8.3 Примеры решения задач Описав смысл терминов, понятий и характеристик генетического алгорит- ма, а также процесс его работы, рассмотрим примеры решения некоторых оп-
Глава 8. Генетические алгоритмы 223 тимизационных задач с использованием генетических алгоритмов, чтобы про- иллюстрировать рассмотренные положения. Поиск максимума одномерной функции Пусть имеется набор натуральных чисел от 0 до 31 и функция, определен- ная на этом наборе чисел, f(x) = х. Требуется найти максимальное значение функции. Задача, конечно, тривиальна и не требует применения столь изощ- ренных методов поиска, но мы решаем ее лишь для иллюстрации функциони- рования генетического алгоритма [52]. В качестве кода будем использовать двоичное представление аргументов функции. Это положение представляет собой фенотип нашего алгоритма. Сам код будет представлять собой двоичную строку из 5 бит. Это генотип алгорит- ма. Целевой функцией будет непосредственно сама рассматриваемая функция, аргументом которой является число, чье двоичное представление использует алгоритм. Определим некоторые характеристики генетического алгоритма. Пусть раз- мер популяции будет 4, вероятность мутации 0,001, сам процесс мутации зак- лючается в инверсии одного из битов строки, выбираемого случайно по равно- мерному закону. Оператор скрещивания и отбора аналогичны описанным выше. Поскольку задача является простейшей, будем считать, что алгоритм не ис- пользует элитизм. Пусть на основе равномерного распределения создана исходная популяция из четырех особей, представленная в таблице 8.1. Таблица 8.1 № строки Код Значение целевой функции Вероятность участия в процессе размножения 1 01011 11 11/43 2 10010 18 18/43 3 00010 2 2/43 4 01100 12 12/43 Предположим, что оператор отбора выбрал для производства потомков две пары строк (1,2) и (2,4). Работа оператора скрещивания проиллюстрирована в таблице 8 2. При этом в каждой паре разбиение на подстроки происходит неза- висимо.
224 Базы данных. Интеллектуальная обработка информации Таблица 8.2. № строки Родители Потомки Значение целевой функции для потомков 1 0 1 1011 00010 2 2 1 1 0010 11011 27 2 100 1 10 10000 16 4 011 I 00 01110 14 Пусть оператор мутации, несмотря на низкую вероятность, сработал для младшего бита потомка в строке 3, и данный код изменил свое значение с 10000 на 10001. Таким образом, популяция за счет порожденных потомков расширилась до восьми особей, представленных в таблице 8.3. Таблица 8.3. № строки Код Значение целевой функции Исходная популяция 1 01011 11 2 10010 18 3 00010 2 4 01100 12 Порожденные потомки 5 00010 2 6 11011 27 7 10001 17 8 01110 14 Оператор редукции далее сократит популяцию до исходного числа особей, исключив из нее те, чье значение целевой функции минимально. То есть будут исключены строки 1,3,4 и 5, и популяция первого поколения примет вид, пред- ставленный в таблице 8.4.
Глава 8. Генегпические алгоритмы 225 Таблица 8.4. № строки Код Значение целевой функции Вероятность участия в процессе размножения 1 10010 18 18/76 2 11011 27 27/76 3 10001 17 17/76 4 01110 14 14/76 На этом шаг работы генетического алгоритма закончится. Очевидно, что даже за эту одну итерацию качество популяции значительно возросло. Если в исходной популяции среднее значение целевой функции было 10,75, а ее мини- мальное значение составляло 2, то в популяции первого поколения среднее зна- чение возросло до 19, а минимальное значение составило 14. Лучшее же реше- ние увеличилось с 18 до 27 при оптимальном решении 31. Таким образом, данный пример наглядно иллюстрирует процесс улучше- ния как популяции в целом, так и наилучшего решения в частности в результа- те работы генетического алгоритма Решение задачи коммивояжера. Задача коммивояжера является классической оптимизационной задачей. Суть ее заключается в следующем. Дано множество из п городов и матрица расстояний между ними или стоимостей переезда (в зависимости от интерпре- тации). Цель коммивояжера - объехать все эти города по кратчайшему пути или с наименьшими затратами на поездку. Причем в каждом городе он должен побывать один раз и свой путь закончить в том же городе, откуда начал. Для решения предлагается следующая задача: имеется пять городов, сто- имость переезда между которыми представлена следующей матрицей [52]: 0 4 6 2 9 4 0 3 2 9 6 3 0 5 9 2 2 5 0 8 9 9 9 8 0 Для решения задачи применим следующий генетический алгоритм. Реше- ние представим в виде перестановки чисел от 1 до 5, отображающей последо- вательность посещения городов. А значение целевой функции будет равно сто- 8 - 307
226 Базы данных. Интеллектуальная обработка информации имости всей поездки, вычисленной в соответствии с вышеприведенной матри- цей. Сразу заметим, что одним из оптимальных решений задачи является пос- ледовательность 514235 стоимостью 25. В качестве оператора отбора будем использовать традиционный оператор, применявшийся в предыдущем примере При этом заметим, что чем меньше значение целевой функции, тем лучше. В качестве оператора скрещивания выберем более изощренную процедуру, похожую на двухточечный оператор скрещивания Поясним его работу на при- мере. Пусть есть две родительские перестановки (12345) и (34521). Случайно и равновероятно выбираются две точки разрыва. Для примера возьмем ситуа- цию, когда первая точка разрыва находится между первым и вторым элемента- ми перестановки, а вторая точка - между четвертым и пятым: (11234|5), (31452| 1). На первом этапе перестановки обмениваются фрагментами, заключенными между точками разрыва: (*|452|*), (*|234|*). На втором этапе вместо звездочек вставляются соответствующие числа из исходной родительской перестановки, начиная со второго числа выделенного фрагмента и пропуская уже имеющиеся в новой перестановке числа. В данном случае в первой перестановке (Г234|5) таким начальным числом является 3, за ним идет 4, которое есть в новой пере- становке, и мы его пропускаем, также пропускаем число 5, переходим на нача- ло перестановки и выбираем число 1. В итоге вместо (*|452[*) получаем (34521), аналогично из (3|452| 1) и (* 2341*) получаем (52341). Оператор мутации будет представлять собой случайную перестановку двух чисел в хромосоме, также выбранных случайно по равномерному закону. Ве- роятность мутации 0,01. Размер популяции выберем равным 4. Исходная популяция представлена в таблице 8 5. Таблица 8.5. № строки Код Значение целевой функции Вероятность участия в процессе размножения 1 12345 29 32/122 2 21435 29 32/122 3 54312 32 29/122 4 43125 32 29/122 Пусть для скрещивания были выбраны следующие пары: (1, 3) и (2, 4). В результате были получены потомки, представленные в таблице 8.6.
Глава 8. Генетические алгоритмы 227 Таблица 8.6. № строки Родители Потомки Значение целевой функции для потомков 1 1123145 5143Ц2 32 3 5143 112 1123154 мутация 13254 28 2 2Ц4315 4131215 32 4 4|312|5 2114315 29 Пусть для потомка (12354) сработал оператор мутации и обменялись места- ми числа 2 и 3. В данном случае строка (12354) изменилась и приняла значение (13254). Популяция первого поколения после отсечения худших особей в резуль- тате работы оператора редукции приняла вид, представленный в таблице 8.7. Таблица 8.7. № строки Код Значение целевой функции Вероятность участия в процессе размножения 1 (1) 12345 29 28/111 2 (2) 21435 29 28/111 3(н) 13254 28 29/111 4 (н) 21435 29 28/111 Пусть для получения второго поколения были выбраны следующие пары строк: (1, 4) и (2, 3). И в результате были получены потомки, показанные в таблице 8 8. Таблица 8 8. №строки Родители Потомки Значение целевой функции для потомков 1 Ц23145 1214135 29 4 1214135 1123145 29 2 121|435 1131452 32 3 1131254 12Ц354 29 8»
228 Базы данных. Интеллектуальная обработка информации Популяция второго поколения после отсечения худших особей приняла вид, показанный в таблице 8.9. Таблица 8.9. № строки Код Значение целевой функции Вероятность участия в процессе размножения 1 (1) 12345 29 28/111 2 (2) 21435 29 28/111 3(3) 13254 28 29/111 4 (н) 21354 29 28/111 Таким образом, после двух итераций значение целевой функции для луч- шего решения изменилось с 29 на 28. среднее значение изменилось с 30,5 до 28,75, а общее качество с 122 до 111. То есть также налицо незначительное, но улучшение популяции. Обучение нейронной сети Обучение нейронных сетей является одной из основных областей приме- нения генетических алгоритмов [54J. Для дальнейшего описания рассмотрим в общем виде, что представляет собой задача обучения нейронной сети. Для построения и обучения нейронной сети обычно создается набор при- меров, который представляет собой совокупность векторов вида (X, Y), где X = (хр х2,... , хп) - значения всех входов нейронной сети, a Y = (ур у2, ... , ут) - значения всех выходов нейронной сети, которые должны получаться в процес- се ее работы. Структура эталонных векторов задает одновременно количество входных и выходных нейронов (в данном случае пит соответственно). Целью обучения нейронной сети является достижение такой ситуации, когда при подаче на вход сети любого вектора X из набора примеров на ее выходе получается выходной вектор Y', отличающийся от эталонного вектора Y не более чем на заданную заранее и вычисляемую определенным образом величину 5. Процесс обучения нейронной сети заключается в подборе значений всех ее характеристик таким образом, чтобы отличия выходных векторов от эталон- ных не превышали заранее установленной величины. Основными характеристиками нейронной сети являются: • количество скрытых слоев, • количество нейронов в каждом из скрытых слоев, • веса входов каждого из скрытых и выходных нейронов w.., • функция активации Е() для каждого скрытого и выходного нейрона.
Глава 8. Генетические алгоритмы 229 Таким образом, мы можем обобщенно сформулировать оптимизационную задачу обучения нейронной сети. Исходными данными для нее будут: • количество входных и выходных нейронов, • набор обучающих примеров. В результате решения этой задачи мы должны получить следующие значе- ния: • количество скрытых слоев, • количество нейронов в каждом скрытом слое, • значения весов всех входов для каждого скрытого и выходного нейрона, • функции активации для каждого скрытого и выходного нейрона. Очевидно, что целевой функцией в данном случае будет максимальное от- личие выходного вектора Y' от эталонного Y - 8 , полученное среди всех век- торов набора примеров. Подбирая значения характеристик нейросети и вычис- ляя каждый раз 8^, мы можем найти такое значение 8т#х, которое требуется. И чем меньше будет это значение, тем качественнее построенная нейронная сеть. Таким образом, задача обучения нейронной сети сводится к задаче поиска оптимального решения. Заметим, что даже для простейших нейронных сетей эта задача является многомерной и крайне сложной. С другой стороны, цель найти сеть, удовлетворяющую условию 8тах = 0, для реальных задач недости- жима и обычно не ставится. Поэтому поиск оптимального решения превраща- ется в поиск лучшего решения (как можно меньшее значение 8 ), где с успе- хом можно применять генетические алгоритмы. Заметим, что для обучения нейросетей генетические алгоритмы в чистом виде, как правило, не применяют. Они обычно используются на различных эта- пах построения и обучения в качестве основного или вспомогательного сред- ства. В частности, генетический алгоритм может использоваться на первом этапе работы для поиска общих параметров нейросети: количества скрытых слоев и нейронов. Также генетический алгоритм может использоваться на заключитель- ном этапе работы для поиска всех значений весов (матрицы весов) нейросети и функций активации. Причем функции активации, как правило, выбираются из ограниченного набора, а еще чаще подбирается не сама формула функции ак- тивации, а один или несколько ее параметров (коэффициентов). В основном генетические алгоритмы используются для улучшения сетей, уже созданных и обученных с помощью какого-либо другого алгоритма. При этом оценка качества нейросети производится, как правило, средствами отдель- ного специализированного приложения. Для иллюстрации применения генетических алгоритмов в области созда- ния и обучения нейросетей рассмотрим пример. Для упрощения возьмем не- большую сеть прямого распространения (рис. 8.2) и построим для нее обучаю- щий генетический алгоритм.
230 Базы данных. Интеллектуальная обработка информации входной слой скрытый слой выходной слой Рис. 8.2. Нейронная сеть. Сеть состоит из 6 нейронов: трех входных, двух скрытых и одного выход- ного. Таким образом, сеть имеет всего один скрытый слой нейронов. В каче- стве функции активации всех скрытых и выходного нейронов используется сигмоидальная функция: 1 п F(Sum) = - ——Sum = ^xi-wi (8.3) 1+ в i=i где п - количество входов нейрона, х. - значение на i-м входе, w. - вес i-ro входа, а Р - параметр функции активации, влияющий на ее крутизну: чем больше Р, тем ближе сигмоидная функция приближается к обычной пороговой (рис. 8.3). Рис. 8.3. Сигмоидальная и пороговая функции. Таким образом, векторы примеров будут иметь вид (хр х,, х3, у(), где х. - входные значения, а у( - эталонное выходное значение.
Глава 8. Генетические алгоритмы 231 Для вычисления значения целевой функции будем использовать следую- щую формулу: k |у' - у С = max—1;--- • юо%, (8.4) J=l У., где к - количество примеров, у’ - значение выхода нейронной сети для j-ro примера, у - эталонное значение выхода нейронной сети для j-ro примера. Таким образом, целевая функция будет представлять собой максимальное для набора примеров относительное отклонение от эталонного значения, вы- раженное в процентах. Чем меньше значение целевой функции, тем сеть луч- ше. Здесь уже можно задать критерий останова генетического алгоритма. Можно указать число поколений, а можно задать условие на значение целевой функ- ции. Например, остановить работу алгоритма, когда для одной из особей значе- ние целевой функции будет равно 0,1%, что является достаточно хорошим ре- зультатом. При обучении нейросетей размер популяции выбирается достаточно боль- шим, как минимум 100 особей. Хромосома в нашем случае будет представлять массив из 11 действитель- ных чисел, по четыре на каждый скрытый нейрон и три для выходного нейро- на, которые представляют собой веса соответствующих входов нейронов и па- раметры их функций активации (рис. 8.2): W|| W|2 W|3 Pi W2| w22 W23 p2 W31 w32 p3 Для элементов хромосомы - генов - введем ограничения, обусловленные природой нейросетей: -1 < w < 1 и Р. > 0. В качестве операторов скрещивания, отбора и редукции выберем традици- онные операторы, рассмотренные выше при решении задачи нахождения мак- симума одномерной функции. Дополнительно для оператора скрещивания мож- но установить вероятность применения 0,95 и использовать элитизм. В качестве оператора мутации будем использовать случайное изменение значений весов и параметра функции активации для каждого нейрона на слу- чайную величину. Вероятность мутации 0,01. Причем одновременно будет из- меняться параметр функции только для одного нейрона, и для каждого нейро- на будет изменяться один из входных весов. Какие конкретно веса и параметры будут меняться, определяется по равномерному закону. Например, мутация может быть следующей: значение Р, увеличивается на 0,1; значение w(3 умень- шается на 0,05; w3I - уменьшается на 0,01; w31 - увеличивается на 0,05. Исходная популяция будет формироваться на основе равномерного распре- деления для каждого элемента хромосомы.
232 Базы данных. Интеллектуальная обработка информации Целью работы генетического алгоритма будет поиск значений весов для всех скрытых и выходных нейронов, а также параметра Р их функций активации. После останова работы такого алгоритма мы получим обученную нейро- сеть, удовлетворяющую заданным требованиям. Заметим, что в нашем приме- ре алгоритм применялся только для построения весовой матрицы сети и вы- числения параметров функций активации. Задача полнот о построения нейросети обычно решается в два этапа, на каж- дом из которых используется свой генетический алгоритм. На первом этапе генетический алгоритм используется для вычисления ба- зовых характеристик: числа скрытых слоев и числа нейронов в каждом скры- том слое. При этом для оценки качества каждого решения используется следу- ющий подход. Нейронная сеть, закодированная в проверяемой особи, обучает- ся в течение фиксированного ограниченного промежутка времени. Обучение может происходить как средствами специального генетического алгоритма, так и другими. Если используется генетический алгоритм, то время обучения мо- жет оцениваться количеством поколений. Например, каждая сеть обучается в течение 100 поколений. Затем выбирается лучшая особь, качество которой и определяет качество решения по базовым характеристикам сети. На втором этапе генетический алгоритм используется для вычисления мат- рицы весов и определения функций активации так, как это было рассмотрено выше. На обоих этапах используется один и тот же набор обучающих примеров, являющийся единственной информацией, использующейся в качестве исход- ных данных для построения и обучения нейронной сети при решении конкрет- ной задачи Рассмотренный процесс показывает, насколько сложной является задача построения и обучения нейросети как с точки зрения ее размерности, так и с точки зрения ее вычислительной сложности. Тем не менее, генетические алго- ритмы представляют один из эффективных и изящных путей ее решения. В заключение еще раз повторим, что эволюционные вычисления, в том числе и генетические алгоритмы, представляют собой подход к решению задачи по- иска лучшего решения, а не четко определенный алгоритм. Для решения конк- ретной задачи, помимо ее формализации, формулировки генотипа и фенотипа, требуется создавать и конкретный генетический алгоритм. Для этого задают значения размера популяции, вероятности мутации, описывают процесс рабо- ты операторов отбора, скрещивания, мутации и редукции, что и было показано в рассмотренных примерах. И может оказаться, что алгоритм, успешно решаю- щий одну задачу, совершенно не подходит для решения другой. В настоящее время существует отдельная область исследований, целью которых является создание генетических алгоритмов, эффективно решающих как можно боль-
Глава 8. Генетические алгоритмы 233 шее число задач. Результатом этих исследований являются значения характеристик генетических алгоритмов. Кроме создания новых алгоритмов, идет работа по усо- вершенствованию уже созданных. Также ведутся исследования по сокращению вре- мени работы генетических алгоритмов за счет распараллеливания вычислении и применения ряда новых подходов. Об этих средствах повышения эффективности и качества генетических алгоритмов речь пойдет в следующем параграфе. 8.4 Эффективность применения генетических алгоритмов и средства ее повышения Эффективность генетического алгоритма при решении конкретной задачи зависит от многих факторов и, в частности, от таких, как генетические опера- торы и выбор соответствующих значений параметров, а также способа пред- ставления задачи на хромосоме. Оптимизация этих факторов приводит к повы- шению скорости и устойчивости поиска, что существенно для применения ге- нетических алгоритмов. Скорость генетического алгоритма оценивается временем, необходимым для выполнения заданного пользователем числа итераций. Если критерием оста- нова является качество популяции или ее сходимость, то скорость оценивается временем достижения генетическим алгоритмом одного из этих событий. Устойчивость поиска оценивается степенью устойчивости алгоритма к по- паданию в точки локальных экстремумов и способностью постоянно увеличи- вать качество популяции от поколения к поколению. Два этих фактора; скорость и устойчивость - и определяют эффективность генетического алгоритма для решения каждой конкретной задачи. Основным способом повышения скорости работы генетических алгорит- мов является распараллеливание [52]. Причем этот процесс можно рассматри- вать с двух позиций. Распараллеливание может осуществляться на уровне орга- низации работы генетического алгоритма и на уровне его непосредственной реализации на вычислительной машине. Во втором случае используется следующая особенность генетических ал- горитмов. В процессе работы многократно приходится вычислять значения целевой функции для каждой особи, осуществлять преобразования оператора скрещивания и мутации для нескольких пар родителей и т.д. Все эти процессы могут быть реализованы одновременно на нескольких параллельных системах или процессорах, что пропорционально повысит скорость работы алгоритма. В первом же случае применяется структурирование популяции решений на основе одного из двух подходов: 1. Популяция разделяется на несколько различных подпопуляций (демосов), которые впоследствии развиваются параллельно и независимо. То есть
234 Базы данных. Интеллектуальная обработка информации скрещивание происходит только между членами одного демоса. На ка- ком-то этапе работы происходит обмен частью особей между подпопу- ляциями на основе случайной выборки. И так может продолжаться до завершения работы алгоритма. Данный подход получил название кон- цепции островов. 2. Для каждой особи устанавливается ее пространственное положение в популяции. Скрещивание в процессе работы происходит между ближай- шими особями. Такой подход получил название концепции скрещивания в локальной области. Оба подхода, очевидно, также могут эффективно реализовываться на па- раллельных вычислительных машинах. Кроме того, практика показала, что структурирование популяции приводит к повышению эффективности генети- ческого алгоритма даже при использовании традиционных вычислительных средств. Еще одним средством повышения скорости работы является кластериза- ция. Суть ее состоит, как правило, в двухэтапной работе генетического алго- ритма. На первом этапе генетический алгоритм работает традиционным обра- зом с целью получения популяции более "хороших” решений. После заверше- ния работы алгоритма из итоговой популяции выбираются группы наиболее близких решений. Эти группы в качестве единого целого образуют исходную популяцию для работы генетического алгоритма на втором этапе. Размер такой популяции будет, естественно, значительно меньше, и, соответственно, алго- ритм будет далее осуществлять поиск значительно быстрее. Сужения простран- ства поиска в данном случае не происходит, потому что применяется исключе- ние из рассмотрения только ряда очень похожих особей, существенно не влия- ющих на получение новых видов решений. Рассмотрим теперь влияние генетических операторов (операторов отбора, скрещивания, мутации и редукции) на устойчивость поиска. Как правило, диа- пазон такого влияния можно оценить, рассматривая вырожденные случаи ука- занных операторов. Вырожденными формами операторов скрещивания являются, с одной сто- роны, точное копирование потомками своих родителей, а с другой, порожде- ние потомков, в наибольшей степени отличающихся от них. Преимуществом первого варианта является скорейшее нахождение лучшего решения, а недо- статком, в свою очередь, тот факт, что алгоритм не сможет найти решения луч- ше, чем уже содержится в исходной популяции, поскольку в данном случае алгоритм не порождает принципиально новых особей, а лишь копирует уже имеющиеся Чтобы все-таки использовать достоинства этой формы операто- ров скрещивания в реальных генетических алгоритмах, применяют элитизм, речь о котором шла выше.
Глава 8. Генетические алгоритмы 235 Во втором случае алгоритм рассматривает наибольшее число различных осо- бей, расширяя область поиска, что, естественно, приводит к получению более качественного результата. Недостатком в данном случае является значительное замедление поиска. Одной из причин этого, в частности, является то, что потом- ки, значительно отличаясь от родителей, не наследуют их полезных свойств. В качестве реальных операторов скрещивания используются промежуточ- ные варианты В частности, родительское воспроизводство с мутацией и роди- тельское воспроизводство с рекомбинацией и мутацией. Родительское воспро- изводст во означает копирование строк родительских особей в строки потом- ков. В первом случае после этого потомки подвергаются воздействию мута- ции. Во втором случае после копирования особи-потомки обмениваются под- строками. этот процесс называется рекомбинацией и был описан в предыду- щих параграфах. После рекомбинации потомки также подвергаются воздей- ствию мутации. Последний подход получил наибольшее распространение в области генетических алгоритмов. Наиболее распространенными при этом являются одноточечный, двухто- чечный и равномерный операторы скрещивания Свои названия они получили от принципа разбиения кодовой строки на подстроки. Строка может, соответ- ственно, разбиваться на подстроки в одном или двух местах. Или строки могут образовывать особи-потомки, чередуя свои элементы. Основным параметром оператора мутации является вероятность его воз- действия. Обычно она выбирается достаточно малой, чтобы, с одной стороны, обеспечивать расширение области поиска, а с другой, не привести к чересчур серьезным изменениям потомков, нарушающим наследование полезных пара- метров родителей. Сама же суть воздействия мутации обычно определяется фенотипом и на эффективность алгоритма особого воздействия не оказывает. Существует также дополнительная стратегия расширения поискового про- странства, называемая стратегией разнообразия. Если генетический алгоритм использует данную стратегию, то каждый порожденный потомок подвергается незначительному случайному изменению. Отличие разнообразия и мутации в том, что оператор мутации вносит в хромосому достаточно значительные из- менения, а оператор разнообразия - наоборот. В этом заключается основная причина стопроцентной вероятности применения разнообразия. Ведь если ча- сто вносить в хромосомы потомков незначительные изменения, то они могут быть полезны, с точки зрения как расширения пространства поиска, так и на- следования полезных свойств Отметим, что стратегия разнообразия применя- ется далеко не во всех генетических алгоритмах, поскольку является лишь сред- ством повышения эффективности. Еще одним важнейшим фактором, влияющим на эффективность генетичес- кого алгоритма, является оператор отбора. Слепое следование принципу ’’вы-
236 Базы данных. Интеллектуальная обработка информации живает сильнейший" может привести к сужению области поиска и попаданию найденного решения в область локального экстремума целевой функции. С другой стороны, слишком слабый оператор отбора может привести к замедле- нию роста качества популяции, а значит, и к замедлению поиска. Кроме того, популяция при этом может не только не улучшаться, но и ухудшаться. Самыми распространенными операторами отбора родителей являются: • случайный равновероятный отбор; • рангово-пропорциональный отбор; • отбор пропорционально значению целевой функции. Виды операторов редукции особей с целью сохранения размера популяции практически совпадают с видами операторов отбора родителей. Среди них мож- но перечислить: • случайное равновероятное удаление; • удаление К наихудших (К равно размеру популяции); • удаление, обратно пропорциональное значению целевой функции. Поскольку процедуры отбора родителей и редукции разнесены по действию во времени и имеют разный смысл, сейчас ведутся активные исследования с целью выяснения, как влияет согласованность этих процедур на эффективность генетического алгоритма. Одним из параметров, также влияющих на устойчивость и скорость поис- ка, является размер популяции, с которой работает алгоритм. Классические ге- нетические алгоритмы предполагают, что размер популяции должен быть фик- сированным. Такие алгоритмы называют алгоритмами стационарного состоя- ния. В этом случае оптимальным считается размер 2Iog2(n), где п - количество решений задачи. Однако практика показала, что иногда бывает полезно варьировать размер популяции в определенных пределах. Подобные алгоритмы получили назва- ние поколенческих. В данном случае после очередного порождения потомков усечения популяции не происходит. Таким образом, на протяжении несколь- ких итераций размер популяции может расти, пока не достигнет определенно- го порога. После чего популяция усекается до своего исходного размера. Такой подход способствует расширению области поиска, но вместе с тем не ведет к значительному снижению скорости, поскольку усечение популяции хотя и реже, но все же происходит. В последнее время в области исследований, направленных на повышение эффективности генетических алгоритмов, большое значение приобрели идеи создания адаптивных генетических алгоритмов, которые могут изменять свои параметры в процессе работы. Они стали продолжением развития идеи поко- ленческих алгоритмов, которые в процессе работы изменяют размер популя- ции. Адаптивные алгоритмы способны изменять не только этот параметр, но и
Глава 8. Гдиетические алгоритмы 237 суть генетических операторов, вероятность мутации и даже генотип алгорит- ма. Как правило, данные изменения происходят путем выбора параметров из нескольких вариантов, определенных перед началом работы алгоритма. Идея адаптивных генетических алгоритмов получила свое воплощение в концепции nGA, представляющей многоуровневые генетические алгоритмы. Нижний уровень такого алгоритма непосредственно выполняет задачу улуч- шения популяции решений. Верхние уровни представляют собой генетичес- кие алгоритмы, решающие оптимизационную задачу по улучшению парамет- ров алгоритма нижнего уровня. При этом в качестве целевой функции исполь- зуется обычно скорость работы алгоритма нижнего уровня и скорость улучше- ния им популяции от поколения к поколению. В настоящее время генетические алгоритмы представляют одну из интен- сивно развивающихся областей пауки, исследования в которой ведут к посто- янному повышению эффективности их использования, а также выдвижению все новых подходов к построению конкретных алгоритмов. Отметим, что до недавнего времени в качестве критерия качества большинства конкретных ге- нетических алгоритмов использовалась эффективность решения задачи полу- чения битового вектора с максимальным числом единичных разрядов. Чем быстрее алгоритм находил наилучшее решение, тем он считался эффективнее. Сейчас эта задача уже не является объективным средством тестирования алго- ритмов, что свидетельствует об их бурном развитии не только с точки зрения применимости к тем или иным классам задач, но и с точки зрения их внутрен- него построения и принципов работы. Область применения генетических алгоритмов в настоящее время доста- точно обширна. Они успешно применяются для решения ряда больших и эко- номически значимых задач в бизнесе и инженерных разработках. С их помо- щью были разработаны промышленные проектные решения, позволившие сэ- кономить многомиллионные суммы. Финансовые компании широко использу- ют эти средства для прогнозирования развития финансовых рынков при управ- лении пакетами ценных бумаг. Наряду с другими методами эволюционных вычислений генетические алгоритмы обычно используются для оценки значе- ний непрерывных параметров моделей большой размерности, для решения комбинаторных задач, для оптимизации моделей, включающих одновременно непрерывные и дискретные параметры. Другая область применения - исполь- зование в системах извлечения новых знаний из больших баз данных, создание и обучение стохастических сетей, обучение нейронных сетей, оценка парамет- ров в задачах многомерного статистического анализа, получение исходных дан- ных для работы других алгоритмов поиска и оптимизации. Практическая деятельность человека ставит перед наукой все новые иссле- довательские задачи. Область применения генетических алгоритмов постоянно
238 Базы данных. Интеллектуальная обработка информации расширяется, что требует их совершенствования и исследования. Перечислим несколько новых задач, которые могут решаться с использованием генетических алгоритмов, и связанные с ними направления исследований в этой области. Традиционные оптимизационные задачи имеют целевую функцию с фикси- рованной областью значений, называемой также ландшафтом В последнее вре- мя потребовалось решение задач, в которых ландшафт со временем может изме- няться. То есть целевая функция при одних и тех же значениях аргументов в разные моменты времени может принимать различные значения. Создание алго- ритмов, способных работать с такими задачами, является сейчас одной из акту- альных и одновременно сложных проблем в области генетических алгоритмов. До сих пор продолжается дискуссия между сторонниками универсальных и проблемно-ориентированных представлений задач при использовании эволюци- онных вычислений. Можно говорить, что в этом вопросе чаша весов склоняется в сторону универсальных представлений, поскольку осуществлять изменения на уровне генотипа значительно проще и эффективнее, чем на уровне фенотипа. Перспективным направлением развития является добавление к генетическим операторам ламарковских операторов, которые позволяют вводить в рассмотрение признаки, приобретенные особью не в результате наследования, а в течение своего жизненного цикла. Это еще более приближает модель генетических алгоритмов к природным процессам и, по мнению ученых, способно повысить их эффективность. Идея приближения генетических алгоритмов к реальному эволюционному процессу нашла свое отражение и в предложениях ввести в рассмотрение такие понятия, как вид и пол, учитывать взаимодействие особей в популяции в процес- се "жизни”, причем особей как одного вида, так и различных. Это позволит моде- лировать процессы сотрудничества, отношений хозяев и паразитов и т.д. Помимо этих новых течений, в области исследования генетических алго- ритмов ведутся работы и в традиционных направлениях. Создаются все новые разновидности операторов отбора, скрещивания и мутации. Конструируются адаптивные алгоритмы, совершенствуются методы распараллеливания вычис- лений и структурирования популяций. Одновременно разрабатываются мето- дики оценки эффективности и тестирования генетических алгоритмов. Таким образом, генетические алгоритмы представляют собой одну из важ- ных и активно развивающихся парадигм обширной области алгоритмов поис- ка оптимальных решений. И в последнее время, с развитием методов компью- терной поддержки принятия решений, они приобретают все большее значение. 8.5 Примеры программного обеспечения Решение конкретной оптимизационной задачи зачастую требует построе- ния генетического алгоритма с уникальными значениями параметров. Однако ряд базовых свойств этих алгоритмов остается постоянным при решении со-
Глава 8. Генетические алгоритмы 239 вершенно разных задач. Поэтому в большинстве случаев для реализации конк- ретного генетического алгоритма не требуется создавать отдельный программ- ный продукт. Приведем здесь несколько примеров программного обеспечения, позволяющего реализовывать широкий набор генетических алгоритмов, кото- рые можно применять для решения самых различных задач. Заметим, что изменяемыми параметрами генетических алгоритмов в таких приложениях обычно являются значения различных вероятностей, размер по- пуляции и ряд специфических свойств алгоритма. А реализация генетических операторов, как правило, едина для всех алгоритмов и скрыта от пользователя. Пакет Evolver 4.0 компании Palisade Corp. Пакет Evolver представляет собой дополнение к программе MS Excel версий 5.0 и 7 0. При этом Excel используется как средство описания исходных данных алго- ритма и расчетов в процессе его работы. В процессе установки Evolver добавляет в Excel дополнительную панель инструментов, которая обеспечивает доступ к пакету (рис. 8.4) Если Evolver не запущен на выполнение, то панель управления не отобра- жается. При запуске Evolver приложение Excel запускается автоматически. Запуск окна установки параметров Г А Запустить, приостановить и прекратить работу ГА Показать процесс работы ГА Рис. 8.4. Панель инструментов Evolver. Исходные данные для работы формируются обычным образом. При этом можно применять весь набор средств, предоставляемых Excel. Особенность заключается лишь в том, что обязательно должна присутствовать ячейка, в ко- торой задана формула для вычисления целевой функции.
240 Базы данных. Интеллектуальная обработка информации Основное окно Evolver показано на рис. 8.5. На рис. 8.6 и 8.7 показаны окна, в котором можно задавать параметры генетического алгоритма и инфор- мацию об исходных данных. Тип оптимизации целевой функции - максимальное, минимальное или заданное значение Установка параметров генетического алгоритма Ячейка, содержащая описание целевой функции Ячейки, содержащие изменяемые исходные данные алгоритма (описание хромосомы) Ограничения на значения генов хромосом: Hard - жесткие ограничения Soft - мягкие ограничения (предусматривают коррекцию) Range - диапазон возможных значений АН - общий список ограничений Рис. 8.5. Основное окно установки параметров ГА. Тип изменения значений генов в хромосоме (обычно не требует изменения) Диапазон, тип (целые или действительные) и расположение в ячейках значений генов Позиция точки рабиения хромосомы для скрещивания (одноточечный кроссинговер) и вероятность мутации Комментарий к каждой группе ячеек с изменяемыми данными Рис. 8.6. Установка расположения исходных данных и их свойств.
Глава 8. Генетические алгоритмы 241 Размер популяции Параметры работы алгоритма останавливать ли при ошибках, показывать график целевой функции_ Параметры обновления экрана: после _ каждой итерации, только при получении лучшего значения или не обновлять Г“ Способ создания исходной популяции Критеоии останова по формированию заданного числа поколений, по истечении промежутка времени, при изменении лучшего решения нс более, чем на заданную величину на протяжении заданного числа поколений или при истинности заданной формулы Рис. 8.7. Установка параметров генетического алгоритма Задав параметры генетического алгоритма и описав исходные данные, нужно закрыть окно установки и нажать кнопку запуска оптимизации на панели инст- рументов (рис. 8.4). В процессе оптимизации на экране отображается график изменения целевой функции (рис. 8.8), а в строке состояния Excel - номер те- кущего поколения и лучшее для текущей популяции значение целевой функ- ции. Остановить алгоритм можно, нажав соответствующую кнопку на панели инструментов или клавишу Esc. Рис. 8.8. График изменения целевой функции в процессе работы.
242 Базы данных. Интеллектуальная обработка информации ------ Причина остановки работы Какие значения внести в лист Excel: лучшие, полученные в результате работы, исходные или полученные в предыдущем сеансе работы Сформировать лист отчета о работе алгоритма Прекратить работу или продолжить, сформировав заданное число попколений Рис. 8.9. Окно завершения работы генетического алгоритма. По завершении работы алгоритма появляется окно, в котором пользователь может указать дальнейшие действия (рис. 8.9). Обычно это формирование файла отчета на отдельном листе Excel и изменение информации на листе с исходны- ми данными, соответствующее лучшему найденному решению. Заметим, что все установки генетического алгоритма автоматически сохраняются вместе с файлом Excel. Evolver поставляется с подробной справочной системой и обучающим ви- деороликом, которые значительно облегчают знакомство с пакетом. Дополни- тельно к пакету может поставляться средство расширенной разработки генети- ческих алгоритмов, позволяющее конструировать собственные операторы скре- щивания, отбора и мутации. Пакет GeneHunter 1.0 компании Ward System Group. Пакет GeneHunter во многом схож с пакетом Evolver. Он также является надстройкой над MS Excel версий 5.0 и 7.0 и запускается из меню Сервис (рис. 8.10). Пакет является русифицированным и имеет ряд дополнительных настроек для генетических алгоритмов: включение стратегий элитизма и разнообразия. Основное окно GeneHunter показано на рис. 8.11. Поля окна GeneHunter практически повторяют поля Evol ver. Однако окно имеет ряд отличий. Для установки параметров алгоритма служит кнопка "Параметры...”, соответствующее диалоговое окно представлено на рис. 8.12. Окно установки ограничений на значения параметров пока- зано на рис. 8.13. Параметры генетического алгоритма не сохраняются автоматически с файлом Excel. Для сохранения параметров служит кноп- ка "Модель", после нажатия на которую появляется соответствующее диа- логовое окно (рис. 8.14).
Глава 8. Генетические алгоритмы 243 X Microsoft Lxcel Khwi «si Jgj Файл Правка, ??ВИд' Встдвка Формат I ?pt4h_ Данные Qiu с А 84 * 1 2 э 5 7 г 2 10 11 Значение аргумента х Значение 2 3 5 6 8 & 10 11 12 13 14 15 16 Л’ 18 1У 2W . ______ Аяток -ти -----— ‘Под^гараметга ----------- £цвнарш функции F(x) = -хЛ2 Зздита Наастро&чи Мсти» ^агмсь матроса HftcuaW -> mskj toe. )С0 )00 Пдомеп ы GeneHijJer Рис. 8.10. Запуск GeneHunter. А D Значение аргумента х Значение функции F(x) = -x*2 3 rtjc» L - p-гром Длыелоиг" £rp«KJ 114 Ц. > *35/Т -1000 -'i 000000 Рис. 8.11. Основное окно GeneHunter.
244 Базы данных. Интеллектуальная обработка информации . — I Время расчёта > |30 мин. 1 р Поколений > |2000| Г* Лучшее значение целевой Функции не изменилось за [30 поколений -Параметры эволюции----------- Вероятность скрещивания: 0 9 Вероятность мутации 0.01 Степень обновления: • 0.98 R Стратегия элтгизма |НН ' ' ' ' t OK I Отмена | ^правка | Рас. 8.12. Установка параметров генетического алгоритма. Рис. 8.13. Установка ограничений на значения генов. Рис 8 14 Сохранение параметров генетического алгоритма. Имеется также существенное отличие в параметрах оператора скрещива- ния. В Evolver вероятность скрещивания всегда равна I, зато пользователь мо- жет задавать положение точки разбиения хромосомы. В GeneHunter, наоборот, пользователь определяет вероятность скрещивания, а точка разбиения выбира- ется случайно по равномерному закону. Запуск алгоритма на выполнение производится кнопкой "Запуск”. Работу алгоритма можно прервать, нажав клавишу Esc, а затем в любое время продол- жить, нажав кнопку "Продолжить". Кнопка "Отмена" закрывает окно GeneHunter. В процессе работы генетического алгоритма в строке состояния
Глава 8. Генетические алгоритмы 245 Excel отображается номер текущего поколения и лучшее значение целевой фун- кции для него. Других возможностей отображения не предусмотрено, GeneHunter также не создает файла отчета. По завершении работы появляется информационное окно (рис. 8.15), предоставляющее пользователю возможность поместить на лист Excel результаты работы алгоритма. Рис. 8.15. Окно завершения работы генетического алгоритма. GeneHunter имеет некоторые неудобства интерфейса по сравнению с Evol ver, зато работает значительно быстрее него. А наличие русифицированной вер- сии, включая систему подсказки, делает его еще более предпочтительным для использования. Кроме того, в комплекте поставляются несколько самостоятель- ных приложений, реализующих генетические алгоритмы решения задач опти- мизации одномерной и двухмерной функций и задачи коммивояжера. В комп- лекте также содержится файл примеров в формате Excel, иллюстрирующий возможности решения с помощью GeneHunter задач оптимизации функций, коммивояжера, управления пакетом ценных бумаг, задачи о рюкзаке, обучения нейронной сети и ряд других. Рассмотрение этих примеров значительно упро- щает знакомство с пакетом и дает первоначальные навыки формализации ис- ходных задач для их последующего решения с помощью GeneHunter. Пакет Genetic Training Option компании California Scientific Software, Пакет GTO [54] является дополнительной утилитой, поставляемой для ней- росетевого пакета BrainMaker производства компании California Scientific Software Он применяется как для построения нейронных сетей, так и для улуч- шения созданной с помощью BrainMaker сети. Но в обоих случаях отдельно от BrainMaker использоваться не может. GTO может работать в двух режимах: вычисление базовых характеристик сети (число скрытых слоев и нейронов) и вычисление весовой матрицы. Вид функции активации для нейронов GTO не подбирает. Набор примеров для сети формируется с использованием BrainMaker, этот же пакет используется и при оценке качества очередной сгенерированной гене-
246 Базы данных. Интеллектуальная обработка информации тическим алгоритмом нейросети. При этом пользователь может задавать количе- ство итераций обучения, выполняемых BrainMaker. Таким образом, GTO только подбирает характеристики сети, а непосредственно оценка качества сети (путем ее обучения в течение фиксированного числа итераций) возлагается на BrainMaker. GTO сохраняет результаты своей работы в файлах формата BrainMaker, а также может использовать файлы, сформированные в нем в качестве исходных дан- ных. Этим достигается высокая степень интеграции между двумя пакетами. Рис. 8.16. Главное окно пакета GTO. Как и нейросетевой пакет, GTO имеет довольно неразвитый интерфейс (рис. 8.16), что, однако, компенсируется богатым набором установок различных па- раметров, доступных пользователю, и высокой скоростью работы. Подробное описание работы с GTO достаточно обширно, поэтому приводить его здесь не имеет смысла. Перечислим лишь основные принципы работы. Общий процесс создания сети с использованием BrainMaker и GTO может включать следующие этапы: 1. Создание файлов исходных данных (примеров) в BrainMaker 2. Поиск базовых параметров сети (числа скрытых слоев и нейронов) с использованием GTO. 3. Обучение сети (вычисление весовой матрицы) в BrainMaker. 4. Улучшение обученной сети с использованием GTO Причем этапы 3-й и 4-й могут повторяться многократно. Рассмотрим гене- тические алгоритмы, применяемые GTO на 2-м и 4-м этапах. Вычисление базовых параметров GTO проводит в определенных пределах. Пользователь задает, сколько скрытых слоев должна иметь сеть (один или два), и указывает диапазон количества нейронов для каждого слоя. Например, для
Глава 8. Генетические алгоритмы 247 первого скрытого слоя число нейронов может быть от 25 до 30. а для второго - от 9 до 12. Таким образом, применительно к базовым характеристикам GTO осуществляет только поиск числа нейронов в скрытых слоях в заданных пользо- вателем пределах (рис. 8.18). Оценка качества особей производится на основе качества обученной сети с выбранными GTO параметрами . Каждая оцениваемая сеть обучается BrainMaker за фиксированное число итераций, указываемое пользователем (рис. 8.17). За- тем вычисляется отличие результатов выполнения примеров сетью от эталон- ных. Основными функциями здесь являются среднее или среднеквадратичное отклонение (всего четыре функции) Пользователь также может задавать, ка- кую из этих функций использовать. Файлы описания нейросети и обучающих примеров Файл для записи результата Количество итераций обучения нейросети пакетом BrainMaker Рис. 8.17. Указание исходных данных для работы GTO. Работа GTO на этом этапе представляет алгоритм тотального поиска, а не генетический алгоритм, как таковой. Конструируются сети со всеми возмож- ными комбинациями характеристик, из которых затем пользователь на основе файла отчета выбирает подходящую сеть. Непосредственно генетический алгоритм работает на 4-м этапе для вычис- ления весовой матрицы сети Предварительно на этапе 3 пользователь, обучив с помощью BrainMaker несколько сетей, выбирает две лучшие, которые состав- ляют исходную популяцию алгоритма. Таким образом, размер популяции ра- вен двум.
248 Базы данных. Интеллектуальная обработка информации Hidden Neuimu Диапазон изменения количества нейронов в первом скрытом слое . Neurons, 1st hidden Absolute Mln 1 Max 32767 Neurons, 2nd hidden 32767 Iterate From To Step ш 11 0 0 0 |Р P One Hidden Layer Г Two Hidden Layers Hidden Layers Диапазон изменения количества нейронов во втором скрытом слое -Add a hidden neuron to layerfs]: P Let BiainMaker Decide F Each Hidden Layer In Turn Г" A Random Hidden Layer Г All Hidden Layers Al Once 1 1 2 H RMS Error Does Not Decrease By At Least (RMS): 0.000 1.000 0 0 0 Over (Runs): 0 1000 0 0 Cancell Puc. 8.18. Установка пределов поиска базовых характеристик сети. В качестве базовых характеристик пользователь может задавать следую- щие величины (рис. 8.19 - 8.21): • Количество итераций BrainMaker, используемое для обучения новой особи (сети) с целью оценки ее качества • Количество формируемых поколений. • Количество лучших сетей, сохраняемых на диске для дальнейшего ис- пользования. • Процент нейронов, участвующих в процессе мутации. • Процент нейронов, участвующих в процессе скрещивания. • Возможность мутации нейронов, участвовавших в процессе скрещивания. • Функция оценки качества сети (среднее или среднеквадратичное откло- нение от эталона и т.д.). Как видно, для оценки качества сетей, также как и на втором этапе, исполь- зуется ее обучение средствами BrainMaker. GTO вследствие особенностей нейронных сетей имеет сложный оператор скрещивания. Кроме того, заметим, что из двух родительских сетей GTO фор- мирует только одну дочернюю. В новую популяцию переходят две сети из трех, как минимум одна из которых является родительской. Нейронная сеть представляется на хромосоме двумя уровнями. Хромосома состоит из нейронов - генов. В свою очередь, каждый нейрон представляется набором значений своих входных весов.
Глава 8. Генетические алгоритмы 249 Gfnetal Genetic PaiamHcts Количество итераций обучения Train Each Net For [I Operate For 30 Maintain 5 100 _ Runs Generations best Nets нейросети пакетом BrainMaker — Критерий останова, количество сформированных поколений Train 1 Concurrent Sessions Ok I 'Cancel Количество сохраняемых в файле "лучших" нейросетей после работы GTO Рис 8.19. Базовые параметры работы GTO. Процент нейронов, подверженных мутации Процент нейронов, подверженных скрещиванию Абсолютное количество нейронов по категориям Процент нейронов, переходящих потомку непосредственно Подвержены ли нейроны, полученные в результате скрещивания, последующей мутации Рис. 8 20. Базовые параметры работы GTO Оператор скрещивания, учитывая такое построение, работает следующим образом. На первом этапе в дочернюю сеть переходит некоторое количество нейронов от первого родителя. Это количество нейронов задает пользователь, указывая процент нейронов для скрещивания (см. выше). Например, сеть со- держит 50 нейронов Процент скрещивания 40%. Это значит, что скрещиванию подвергаются 40% нейронов, а 60% (30 нейронов) переходят в дочернюю сеть непосредственно без изменений и мутации от первого родителя. Конкретные нейроны выбираются случайно по равномерному закону.
250 Базы данных. Интеллектуальная обработка информации Measure Genetic Training Quality Use Testing Fact File: -Gauge quality of child network:------- C Number of facts within tolerance of: 0.100 C Maximum (1 - average error) <• Maximum (1 - squared error) C Maximum sum of R*2s Ок Cancel Puc. 8.21. Базовые параметры работы GTO. Способ оценки качества полученной нейросети. На втором этапе оставшиеся нейроны подвергаются скрещиванию. В на- шем случае это 20 остальных нейронов. Скрещивание нейронов также проис- ходит по сложному алгоритму. Перед началом работы пользователь указывает три различные группы скрещивания (рис. 8,22): непосредственное скрещива- ние, скрещивание по равномерному закону и скрещивание по нормальному закону. Для нормального закона еще указывается дисперсия. Общий процент нейронов, подверженных скрещиванию Сю sovei Pai<iin<-tcis 50 % of network neurons will cross over .. % crossover completely Процент нейронов, переходящих от второго родителя 25 25 % crossover by random linear %— Процент нейронов, скрещиваемых по % crossover by gaussian % with bandwidth |0.25 ~1 равномерному закону Процент нейронов, скрещиваемых по Ок Cancel нормальному закону с указанной дисперсией Рис. 8.22. Группы скрещиваемых нейронов. Например, пусть 60% нейронов скрещиваются непосредственно и по 20% по нормальному и равномерному законам. Выбор конкретных нейронов в каж-
Глава 8. Генетические алгоритмы 251 дую группу происходит случайно по равномерному закону. Это означает, что 60% (12 нейронов из 20) выбранных для скрещивания нейронов перейдут до- черней сети без изменений непосредственно от второго родителя. А по 4 ней- рона перейдут дочерней сети только после того, как их веса подвергнутся из- менениям на основе весов соответствующих родительских нейронов. Получение значения веса при скрещивании двух нейронов осуществляется следующим образом. На основе закона распределения (равномерного или нор- мального) вычисляется значение случайной величины х. Далее вычисляется модуль разницы соответствующих весов родительских нейронов. Эта разница умножается на случайную величину х и суммируется с весом первого роди- тельского нейрона. Результат и будет весом нейрона-потомка: wn = w( + х * |w, - wj (8.5) Такое преобразование осуществляется для всех весов родительских нейро- нов. В результате получается набор значений всех входных весов, то есть новый нейрон. В целом процесс скрещивания нейронных сетей показан на рис. 8.23. Всего нейронов 10 Поцент скрещивания 50% (5 нейронов) Процент мутации 10 % (1 нейрон) Нейроны, полученные после скрещивания не мутируют Рис. 8.23. Скрещивание и мутация нейросетей, реализованные в GTO.
252 Базы данных. Интеллектуальная обработка информации Затем применяется оператор мутации В зависимости от установок пользо- вателя (см. выше) мутация может применяться к нейронам, полученным в ре- зультате скрещивания, или к нейронам первой родительской нейросети. На рис. 8.16 рассмотрен второй случай. Конкретные нейроны для мутации выбирают- ся по равномерному закону. Задавая параметры работы алгоритма, пользователь также разделяет *'му- тирующие" нейроны на три группы (рис. 8.24): не подвергающиеся измене- нию, мутирующие по равномерному и нормальному закону. Для законов рас- пределения задается математическое ожидание. Мутация заключается в изме- нении всех весов нейрона путем добавления к ним значения случайной вели- чины с соответствующим законом распределения. Общий процент нейронов, подверженных мутации Процент нейронов, мутирующих по нормальному закону Процент нейронов, мутирующих по равномерному закону 1 I Mui iliofi Paiaiictcr» 3 1 10 % )f ne (work neurons will mutate connections • Матожидание нормального закона - Матожидание равномерного закона 25 % with Gaussian spread: % with Linear spread: 0.25 25 0.5 33 X with zero mutation • Процент нейронов, не подвергающихся мутации Ok | Cancel | Рис. 8.24. Разбиение "мутирующих" нейронов на группы. Пусть в нашем примере процент мутации равен 20 и мутируют нейроны, полученные в результате скрещивания. Тогда для мутации будет выбрано 4 ней- рона (20% от 20). Пусть пользователь указал, что 50% нейронов не изменяются и по 25% мутируют по равномерному и нормальному законам Значит, 2 нейро- на перейдут дочерней сети без изменений. А к каждому из весов двух остав- шихся нейронов будут прибавлены значения случайных величин, вычисляе- мых отдельно для каждого веса по равномерному (для одного нейрона) и нор- мальному (для другого) законам. Конкретные нейроны в различные группы выбираются, как обычно, по равномерному закону. Полученная в результате этих сложных манипуляций новая сеть обучается BrainMaker, после чего оценивается ее качество. Затем из популяции отсекает- ся худшая сеть, и начинается следующая итерация GTO.
Глава 8. Генетические алгоритмы 253 Как видно, GTO реализует довольно ограниченный генетический алгоритм обучения нейросети по сравнению с тем, который рассматривался в параграфе 8.3. Однако он и не претендует на универсальность. Это всего лишь дополне- ние к BrainMaker. Но оно предоставляет пользователю массу настраиваемых параметров, что дает широкие возможности для экспериментов. Практика по- казывает, что применение GTO при построении нейросети в BrainMaker значи- тельно повышает ее качество. Здесь мы рассмотрели лишь ничтожную часть программных продуктов, реализующих генетические алгоритмы. Однако даже приведенные примеры позволяют оценить, насколько они сложны в реализации и просты в примене- нии - требуют от пользователя только формализации задачи и формирования исходных данных. Такая ситуация во многом способствует расширению облас- ти применения генетических алгоритмов.
Глава 9. Нечеткая логика и ее применение в экспертных системах 9.1. Предпосылки возникновения нечеткой логики Довольно часто оптимальное решение практической задачи трудно найти, используя классические методы математики. Причины этого состоят в следую- щем. Во-первых, не всегда возможно сделать приемлемое с точки зрения точ- ности и компактности аналитическое описание решаемой задачи. Во многих случаях затраты на его разработку превысили бы эффект от решения, а кроме того, время, необходимое для получения аналитического описания, как прави- ло, неприемлемо велико. Но всегда ли такое описание требуется, ведь человек способен находить оптимальные решения, пользуясь лишь абстрактными све- дениями и субъективными представлениями о задаче9 Во-вторых, в жизни нам постоянно приходится оперировать неточными значениями и не вполне ясны- ми понятиями, однако традиционные методы математики не допускают таких "вольностей Осознание этих проблем привело к появлению новой математи- ческой дисциплины - нечеткой логики, претендующей на устранение противо- речий между математикой и реальным миром. 9.2. Основы нечеткой логики Нечеткая логика (fuzzy logic) - это надмножество классической булевой логики [55, 56]. Она расширяет возможности классической логики, позволяя применять концепцию неопределенности в логических выводах. Употребле- ние термина "нечеткий" применительно к математической теории может ввес- ти в заблуждение. Более точно ее суть характеризовало бы название "непре- рывная логика". Аппарат нечеткой логики столь же строг и точен, как и класси- ческий, но вместе со значениями "ложь" и "истина" он позволяет оперировать значениями в промежутке между ними. Говоря образно, нечеткая логика по- зволяет ощущать все оттенки окружающего мира, а не только чистые цвета. Нечеткая логика как новая область математики была представлена в 60-х го- дах профессором калифорнийского университета Лотфи Заде (Lotfi Zadeh). Пер- воначально она разрабатывалась как средство моделирования неопределенности естественного языка, однако впоследствии круг задач, в которых нечеткая логи- ка нашла применение, значительно расширился. В настоящее время она исполь- зуется для управления линейными и нелинейными системами реального време- ни, при решении задач анализа данных, распознавания, исследования операций.
Глава 9. Нечеткая логика и ее применение в экспертных системах 255 Часто для иллюстрации связи нечеткой логики с естественными представ- лениями человека об окружающем мире приводят пример о пустыне. Опреде- лим понятие "пустыня" как "бесплодная территория, покрытая песком". Те- перь рассмотрим простейшее высказывание: "Сахара - это пустыня". Нельзя не согласиться с ним, принимая во внимание данное выше определение. Пред- положим, что с поверхности Сахары удалена одна песчинка. Осталась ли Саха- ра пустыней? Скорее всего, да. Продолжая удалять песчинки одну за другой, всякий раз оцениваем справедливость приведенного ранее высказывания. По прошествии определенного промежутка времени песка в Сахаре не останется и высказывание станет ложным. Но после какой именно песчинки его истин- ность меняется? В реальной жизни с удалением одной песчинки пустыня не исчезает. Пример показывает, что традиционная логика не всегда согласуется с представлениями человека. Для оценки степени истинности высказываний ес- тественный язык имеет специальные средства (некоторые наречия и обороты, например: "в некоторой степени", "очень" и др.). С возникновением нечеткой логики они появились и в математике. Одно из базовых понятий традиционной логики - понятие подмножества. Подобно этому в основе нечеткой логики лежит теория нечетких подмножеств (нечеткихмножеств). Эта теория занимается рассмотрением множеств, опре- деляемых небинарными отношениями вхождения. Это означает, что принима- ется во внимание не просто то, входит элемент во множество или не входит, но и степень его вхождения, которая может изменяться от 0 до 1. Пусть S - множество с конечным числом элементов, S={5;, 5,,..., sj, где п - число элементов (мощность) множества S. В классичес- кой теории множеств подмножество U множества S может быть определено как отображение элементов S на множество В = {О, 1}: U: S => В. Это отображение может быть представлено множеством упорядоченных пар вида: К ze[l, л], где 5 - z-й элемент множества S; п - мощность множества S; тш - элемент множества В = {0, 1}. Если mUt= 1, то з является элементом подмножества U. Элемент "О" множества В используется для обозначения того, что st не входит в подмножество U. Проверка истинности предиката "sA g U" осуществляется пу- тем нахождения пары, в которой sk - первый элемент Если для этой пары muk = 1, то значением предиката будет "истина", в противном случае - "ложь". Если U - подмножество S, то U может быть представлено «-мерным векто- ром (тир т mUn), где z-й элемент вектора равен "1", если соответствую- щий элемент множества S входит и в U. и п0" в противном случае. Таким обра- зом, U может быть однозначно представлено точкой в «-мерном бинарном ги- перкубе Вп, В = {0, 1} (см. рис. 9.1).
256 Базы данных. Интеллектуальная обработка информации Рис. 9.1. Графическое представление традиционного множества. Нечеткое подмножество F может быть представлено как отображение эле- ментов множества S на интервал I = [0, 1 ]. Это отображение определяется мно- жеством упорядоченных пар: {sfmF(s}}, z g [1, л], где s - l-Й элемент множества S; п - мощность множества S; mF(s) е [0, 1] - степень вхождения элемента s. в множество F. Значение mF (sj, равное 1, озна- чает полное вхождение, mF(s) - 0 указывает на то, что элемент $ не принадле- жит множеству F. Часто отображение задается функцией mF(x) принадлежнос- ти х нечеткому множеству F. В силу этого термины "нечеткое подмножество" и "функция принадлежности" употребляются как синонимы. Степень истиннос- ти предиката "sk е F" определяется путем нахождения парного элементу зна- чения mF(sJ, определяющего степень вхождения sk в F. Обобщая геометрическую интерпретацию традиционного подмножества на не- четкий случай, получаем представление F точкой в гиперкубе Г, I = [0,1 ]. В отличие от традиционных подмножеств точки, изображающие нечеткие подмножества, мо- гут находиться не только на вершинах гиперкуба, но и внутри него (см. рис. 9.2). Рис. 9.2. Графическое представление нечеткого множества.
Глава 9. Нечеткая логика и ее применение в экспертных системах 257 Рассмотрим пример определения нечеткого подмножества. Имеется мно- жество всех людей S. Определим нечеткое подмножество Т всех высоких лю- дей этого множества. Введем для каждого человека степень его принадлежно- сти подмножеству Т. Для этого зададим функцию принадлежности mT(h), оп- ределяющую, в какой степени можно считать высоким человека ростом h сан- тиметров. ГО, Л < 150 ?к7(Л) = < Л — 150 60 ’ 150 < h < 210 11. Л > 210 где Л - рост конкретного человека в сантиметрах. График этой функции пред- ставлен на рис. 9.3. Рис. 9.3. График функции принадлежности mr(h). Пусть рост Михаила - 163 см, тогда истинность высказывания "Михаил высок" будет равна 0.21. Использованная в данном случае функция принад- лежности тривиальна. При решении большинства реальных задач подобные функции имеют более сложный вид, кроме того, число их аргументов может быть большим. Методы построения функций принадлежности для нечетких подмножеств довольно разнообразны. В большинстве случаев они отражают субъективные представления экспертов о предметной области. Так, например, кому-то чело- век ростом 180 см может показаться высоким, а кому-то - нет. Однако часто такая субъективность помогает снизить степень неопределенности при реше- нии слабо формализованных задач. Как правило, для задания функций принад- лежности используются типовые зависимости, параметры которых определя- ются путем обработки мнений экспертов. Представление произвольных функ- ций при реализации автоматизированных систем часто затруднено, поэтому в реальных разработках такие зависимости аппроксимируются кусочно-линей- ными функциями. 9-307
258 Базы данных. Интеллектуальная обработка информации Необходимо осознавать разницу между нечеткой логикой и теорией веро- ятностей. Заключается она в различии понятий вероятности и степени принад- лежности. Вероятность определяет, насколько возможен один из нескольких взаимоисключающих исходов или одно из множества значений. Например, может определяться вероятность того, что утверждение истинно. Утверждение может быть либо истинным, либо ложным. Степень принадлежности показы- вает, насколько то или иное значение принадлежит определенному классу (под- множеству). Например, при определении истинности утверждения ее возмож- ные значения не ограничены "ложью" и "истиной", а могут попадать и в проме- жуток между ними. Еще одно различие выражено в математических свойствах этих понятий. В отличие от вероятности для степени принадлежности не тре- буется выполнение аксиомы аддитивности. 9.3. Экспертные системы, основанные на нечеткой логике Описанные выше положения можно применять для логического вывода утвер- ждений. Например, если известно, чтох е А и А с В, то из аксиомы вывода имеем хе В. Пусть А - множество всех народных депутатов, а В - множество тех, кто пользуется правом бесплатного проезда в общественном транспорте. Тогда утвер- ждение о вхождении А в В трансформируется в правило вывода: "Если лицо явля- ется народным депутатом, то оно пользуется правом бесплатного проезда в обще- ственном транспорте’’. Если множества не сравнимы непосредственно, может по- требоваться дополнительное функциональное преобразование, которое позволит рассматривать одно множество как подмножество другого. Например, результатом преобразования посылки "температура в комнате 30° С" для кондиционера может служить указание "включить вентилятор". Все значения температур, при которых необходимо его включение, образуют подмножество во множестве условий, при- водящих к включению вентилятора. Преобразование производится функцией уп- равления, роль которой в данном случае может выполнять термостат. Нечеткое правило логического вывода представляет собой упорядоченную пару (А, В), где А - нечеткое подмножество пространства входных значений X, В - нечеткое подмножество пространства выходных значений Y. Система нечетко- го вывода - это отображение в p‘n*<Y\ где poxw(Z) - оператор определения размерности пространства Z. Число элементов в и бесконечно вели- ко, поэтому невозможно задать правила нечеткого вывода соответствующими парами точек. Однако они могут быть описаны в терминах теории нечетких мно- жеств. Например, вполне работоспособная система кондиционирования может быть описана правилами: "если температура в комнате высокая, то скорость вра- щения вентилятора высокая" и "если температура в комнате низкая, то скорость
Глава 9. Нечеткая логика и ее применение в экспертных системах 259 вращения вентилятора низкая". Подобные правила вывода используются в не- четких экспертных системах. Как правило, они имеют вид: если цена велика и спрос низкий, то оборот мал, (1) где цена и спрос - входные переменные; оборот - выходное значение; вели- ка, низкий и мал - функции принадлежности (нечеткие множества), опреде- ленные на множествах значений цены, спроса и оборота соответственно. Нечеткие правила вывода образуют базу правил. Важно то, что в нечеткой экспертной системе в отличие от традиционной работают все правила одно- временно, но степень их влияния на выход может быть различной. Принцип вычисления суперпозиции многих влияний на окончательный результат лежит в основе нечетких экспертных систем. Процесс обработки нечетких правил вывода в экспертной системе состоит из 4 этапов: 1. вычисление степени истинности левых частей правил (между "если" и "то") - определение степени принадлежности входных значений нечет- ким подмножествам, указанным в левой части правил вывода; 2. модификация нечетких подмножеств, указанных в правой части правил вывода (после "то"), в соответствии со значениями истинности, получен- ными на первом этапе; 3. объединение (суперпозиция) модифицированных подмножеств; 4. скаляризация результата суперпозиции - переход от нечетких подмно- жеств к скалярным значениям. Для определения степени истинности левой части каждого правила нечет- кая экспертная система вычисляет значения функций принадлежности нечет- ких подмножеезв от соответствующих значений входных переменных. Напри- мер, для правила (1) определяется степень вхождения конкретного значения переменной цена в нечеткое подмножество велика, то есть истинность преди- ката "цена велика". К вычисленным значениям истинности могут применяться логические операции. Наиболее часто используются следующие определения операций нечеткой логики: Ггм/^(НЕ х) = 1 - truth(x), truth(x И у) = min{truth(x), truth(y)}, truth(x ИЛИ у) = max{truth(x), truth(y)}, где х и у - высказывания; truth(z) - степень истинности высказывания z. Полученное значение истинности используется для модификации нечеткого множества, указанного в правой части правила. Для выполнения такой моди- фикации используют один из двух методов: "минимума" (correlation-min encoding) и "произведения" (correlation-product encoding). Первый метод огра- ничивает функцию принадлежности для множества, указанного в правой части правила, значением истинности левой части (см. рис. 9.4). 9"
260 Базы данных. Интеллектуальная обработка информации Рис. 9.4. Метод "минимума". Во втором методе значение истинности левой части используется как коэффи- циент, на который умножаются значения функции принадлежности (см. рис. 9.5). Рис. 9.5. Метод "произведения". Результат выполнения правила - нечеткое множество. Говоря более строго, происходит ассоциирование переменной и функции принадлежности, указан- ных в правой части. Выходы всех правил вычисляются нечеткой экспертной системой отдель- но, однако в правой части нескольких из них может быть указана одна и та же нечеткая переменная. Как было сказано выше, при определении обобщенного результата необходимо учитывать все правила. Для этого система производит суперпозицию нечетких множеств, связанных с каждой из таких переменных. Эта операция называется нечетким объединением правил вывода. Например, правая часть правил (если цена мала, то спрос велик (если цена велика, то спрос мал
Глава 9, Нечеткая логика и ее применение в экспертных системах 261 содержит одну и ту же переменную - спрос. Два нечетких подмножества, получа- емые при выполнении этих правил, должны быть объединены экспертной системой. Традиционно суперпозиция функций принадлежности нечетких множеств mIF(x), m2F(x),.., mnF(x) определяется как: m umF(x)= max < miF<x)} Vx> i e [1, п]. Графическое представление подобной суперпозиции приведено на рис. 9.6. Рис. 9.6. Метод "Max Combination". Другой метод суперпозиции состоит в суммировании значений всех функ- ций принадлежности (графическая интерпретация приведена на рис. 9.7): т Jx) = sum r' z И ^т1Гг(х) \/х, i е [д i=l Рис. 9.7. Метод "Sum Combination". Самым простым (но и наименее часто используемым) является подход, ког- да суперпозиция не производится. Выбирается одно из правил вывода, резуль- тат которого используется в качестве интегрального результата. Конечный этап обработки базы правил вывода - переход от нечетких значе- ний к конкретным скалярным. Процесс преобразования нечеткого множества в единственное значение называется "скаляризацией" или "дефазификацией” (defuzzification). Чаще всего в качестве такого значения используется "центр
262 Базы данных. Интеллектуальная обработка информации тяжести” функции принадлежности нечеткого множества (centroid defuzzification method) (см. рис. 9.8). Рис. 9.8. Скаляризация методом "центра тяжести". Другой распространенный подход - использование максимального значе- ния функции принадлежности (modal defuzzification method) (см. рис. 9.9). Кон- кретный выбор методов суперпозиции и скаляризации осуществляется в зави- симости от желаемого поведения нечеткой экспертной системы. Рис. 9.9. Скаляризация методом "максимума". Рассмотрим пример того, как обрабатываются нечеткие правила вывода в экспертной системе, управляющей вентилятором комнатного кондиционера. Задача кондиционера - поддерживать оптимальную температуру воздуха в ком- нате, охлаждая его, когда жарко, и нагревая, когда холодно. Пусть, изменяя ско- рость вращения вентилятора, прогоняющего воздух через охлаждающий эле- мент, мы можем менять температуру воздуха, тогда алгоритм работы кондици- онера может быть задан следующими правилами: 1) если температура воздуха в комнате высокая, то скорость вращения вен- тилятора высокая; 2) если температура воздуха в комнате средняя, то скорость вращения вен- тилятора средняя; 3) если температура воздуха в комнате низкая, то скорость вращения венти- лятора низкая;
Глава 9. Нечеткая логика и ее применение в экспертных системах 263 Для того чтобы система могла обрабатывать эти правила, надо задать функции принадлежности для нечетких подмножеств, определенных на значениях температу- ры (г) и скорости вращения вентилятора (v). Пусть температура воздуха в комнате на- ходится в пределах от 0°С до 60°С - в противном случае кондиционер вряд ли поможет. Функцию принадлежности для нечеткого подмножества низкая, определенную на интервале изменения температуры, можно задать, например, так (см. рис. 9.10): г. °C Рис. 9.10. Нечеткое подмножество "низкая", определенное на множестве значений температуры. Если температура меньше 12°С, то это - определенно низкая температура для комнаты (mTHU3KJj) = 1, t 12). Температуру выше 20°С никак нельзя на- звать низкой (^Гнюкая(0 = 0, t > 20). В промежутке между этими значениями функция принадлежности линейно убывает - с увеличением температуры уменьшается истинность утверждения "температура воздуха в комнате низкая". Аналитически отТн1ОММ(0 выражается следующим образом: 1,/< 12 ШТнияМ = ” 0, t > 20 Сходные рассуждения позволяют нам задать функции принадлежности для оставшихся подмножеств, средняя и высокая (см. рис. 9.11-9.12). 12 20 30 t,°C Рис. 9 II. Нечеткое подмножество "средняя", определенное на множестве значений температуры.
264 Базы данных. Интеллектуальная обработка информации 'О, t < 12 или t> 30 тТсредняя(Х) 4 12 «S t < 20 205г<30 8 ’ 30-г 10 ’ Рис. 9.12. Нечеткое подмножество "высокая”, определенное на множестве значений температуры. ГО, Г <20 г — 20 —20 < / < 30 1, t Z 30 Определим нечеткие подмножества для скорости вращения вентилятора. Пусть она может изменяться от 0 до 1000 об/мин. Вполне допустимым будет следующий вариант определения функций принадлежности для нечетких под- множеств низкая, средняя и высокая (см. рис. 9.13-9.15) Рис. 9.13. Нечеткое подмножество "низкая”, определенное на множестве значений ' скорости вращения вентилятора. I, v<200 400 — v 200 , 200 < v < 400 Ю, V > 400
Глава 9. Нечеткая логика и ее применение в экспертных системах 265 200 400 600 1 000 V, об/мин Рис. 9.14 Нечеткое подмножество "средняя", определенное на множестве значений скорости вращения вентилятора. 0, v < 200 или v > 600 г-200 —до , 200 2 v < 400 600-v 2(ю . 400 ь v S 600 400 600 1000 v, об/мин Рис. 9.15. Нечеткое подмножество "высокая", определенное на множестве значений скорости вращения вентилятора. 0, v < 400 v — 400 —200“’400 ^v< 600 l,v>600 Рассмотрим теперь, как нечеткая экспертная система определяет скорость вращения вентилятора в зависимости от температуры воздуха в комнате. Пусть эта температура равна 22°С. Сначала экспертной системе надо определить истинность левых частей правил вывода при подстановке в них текущего значения температуры. Для этого она должна найти степень вхождения / - 22°С в каждое из указанных слева нечетких подмножеств. В левых частях правил указаны три подмноже- ства, заданных на интервале значений температуры: высокая, низкая и сред- няя Степень вхождения находим, вычисляя значение функций принадлежнос- ти каждого из подмножеств от t = 22°С:
266 Базы данных. Интеллектуальная обработка информации т (22) = 0.2; Т высокая' z ’ mT , (22) = 0.8; Т средняя' ' ’ m (22) = 0. Значения истинности левой части каждого правила используются для мо- дификации нечеткого множества, указанного в его правой части. Модифика- цию будем производить описанным выше методом "произведения" (correlation product encoding). На рис. 9 16 изображено, как трансформируются находящи- еся в правых частях правил нечеткие подмножества высокая, средняя и низкая. | «к—Н О 200 400 600 1000 v об/мин 0 1000 V, об/мин * 0.8 ~ Рис 9 16. Модификация нечетких подмножеств, определенных на интервале изменения скорости вращения вентилятора Далее нечеткой экспертной системе необходимо обобщить результаты дей- ствия всех правил вывода, то есть произвести суперпозицию полученных не- четких множеств. Воспользуемся для этого методом "Max Combination" (см. рис. 9.6). Результат объединения нечетких множеств показан на рис. 9.17. Теперь необходимо осуществить переход от суперпозиции множеств к ска- лярному значению. Скаляризацию произведем методом "центра тяжести". Ил- люстрация того, как получается результат, представлена на рис. 9.18.
Глава 9, Нечеткая логика и ее применение в экспертных системах 267 Рис. 9 17. Результат суперпозиции нечетких множеств. Результат скаляризации Рис. 9.18. Получение скалярного значения скорости вращения вентилятора методом "центра тяжести" для t = 22°С. Центр тяжести фигуры на рис. 9.18 находится в точке v = 560.5691. Это и будет значением скорости вращения вентилятора, которое выдаст экспертная система при температуре воздуха в комнате равной 22°С. При других значени- ях температуры функция принадлежности обобщенного результата выполне- ния всех правил, изображенная на рис. 9.18, будет меняться. Вот как она будет выглядеть, если на вход экспертной системы поступит значение t = 28°С (см. рис. 9.19). Центр тяжести в этом случае находится в точке v = 746.6667, поэто- му управляемый нашей системой вентилятор будет вращаться с такой скорос- тью, когда в комнате 28°С.
268 Базы данных. Интеллектуальная обработка информации Рис. 9.19. Получение скалярного значения скорости вращения вентилятора методом "центра тяжести " для t = 28°С. Описанные выше операции выполняются каждый раз, когда требуется ре- зультат логического вывода. В системах, управляющих динамическими про- цессами, эта последовательность действий выполняется циклически. В силу того что результаты правил вычисляются раздельно, нечеткие экспертные сис- темы эффективно реализуются на базе параллельных вычислительных систем. Возникает вопрос, оправдана ли настолько сложная система при управле- нии таким простым устройством, как вентилятор? Практика показывает, что оправдана. Так, например, кондиционеры, основанные на нечеткой логике, обес- печивают меньшие, по сравнению с традиционными, колебания температуры. Также они дают существенную экономию электроэнергии. Далее, используя один из пакетов нечеткой логики, мы увидим, как экспертная система, осно- ванная на приведенных выше правилах, функционирует в динамике. Также мы сравним ее работу с обычной схемой управления на базе термостата, использу- ющейся в большинстве устройств охлаждения. 9.4. Пакеты нечеткой логики для IBM PC Отношение к нечеткой логике далеко не однозначно, до сих пор многие относятся скептически к будущему и возможностям этой теории. Однако нельзя не признать, что системы, созданные на ее базе, давно и успешно работают. Одной из первых сфер, где они нашли применение, стала военная промышлен- ность Нечеткая логика оказалась тем инструментом, который позволил созда- вать высокоточные системы управления оружием. К настоящему времени круг задач, при решении которых используется нечеткая логика, заметно расширил- ся. Возможно, и вам уже приходилось сталкиваться с бытовой техникой, преж- де всего видеокамерами, стиральными машинами, кондиционерами и фотоап- паратами, на которых есть надпись ’’Fuzzy". Такая техника, как правило, стоит дороже и обладает большими возможностями по сравнению с обычными при-
Глава 9. Нечеткая логика и ее применение в экспертных системах 269 борами1. В числе отраслей науки и техники, в которых использование нечеткой логики наиболее заметно, чаше всего называют- • автомобильную промышленность (системы круиз-контроля, системы управления двигателями, трансмиссиями, антиблокировочные тормозные системы); • аэрокосмическая промышленность (высокопроизводительные системы управления самолетами и космическими аппаратами); • приборостроение и производство бытовой техники (стиральные маши- ны, телевизоры, видеокамеры, фотоаппараты, видеомагнитофоны и др ); • системы управления производством и транспортом; анализ и прогнозирование в сфере политики и экономики; • финансы (системы управления портфелем ценных бумаг, системы ана- лиза рисков); анализ данных (системы классификации, кластеризации и распознава- ния образов). Применение нечеткой логики в этих отраслях позволяет повысить эффек- тивность создаваемых систем, уменьшить время и затраты на их разработку. В 90-х годах появились пакеты программ, дающие возможность создавать и эксплуатировать нечеткие экспертные системы. Один из наиболее развитых подобных пакетов - система CubiCalc американской фирмы HyperLogic. CubiCalc - многофункциональный пакет. Это не только оболочка для создания законченных нечетких экспертных систем, но и средство разработки приложе- ний, использующих нечеткую логику. Требования CubiCalc 2.0 к ресурсам ком- пьютера весьма скромны; ПЭВМ совместимая с IBM PC AT 286, оболочка Microsoft Windows версии 3.1 или старше, 1 Мб свободного ОЗУ и минимум 1 Мб свободного места на жестком диске. Однако, несмотря на отсутствие той '’прожорливости”, которая свойственна многим современным приложениям, возможности пакета обширны. CubiCalc содержит средства для задания пра- вил вывода, описания нечетких множеств, ввода и представления данных. В ее состав входит довольно мощный язык программирования CubiCalc's Expression Language (CEL). Система предоставляет инструменты для отладки разрабаты- ваемых приложений. С их помощью можно выполнять приложения по шагам, контролировать значения переменных. Очень интересной представляется воз- можность преобразования проекюв CubiCalc в самостоятельные приложения или DLL (Dynamic Link Library). Также пакет позволяет генерировать на языке * В качестве примера - текст из буклета к стиральной машине Zanussi Input: "Непревзойденный уровень стирки обеспечивается применением принципа Fuzzy Logic. В основе этого принципа - способность стиральной машины "взвешивать" белье и автоматически определять вид стирки, а также длительность цикла и количество используемой воды В результате, Вы экономите время, электроэнергию, воду, а главное - Ваша одежда после каждой стирки выглядит как новая".
270 Базы данных. Интеллектуальная обработка информации Си тексты, содержащие алгоритмы работы нечеткой экспертной системы. Эти тексты затем могут быть встроены в приложения пользователя. Далее мы под- робнее познакомимся с возможностями и приемами работы с системой CubiCalc. Еще один пакет для создания нечетких экспертных систем - FIDE (Fuzzy Inference Development Environment - оболочка разработки систем нечеткого логического вывода) фирмы Aptronix (США). Его возможности сходны с воз- можностями CubiCalc. В основном пакет FIDE ориентирован на разработку контроллеров, использующих нечеткую логику. Он позволяет готовить модули объектного кода или тексты на языке Ассемблер для процессоров МС6805, МС68НС11, МС68НС16 и МС6833Х фирмы Motorola. Последняя версия паке- та позволяет генерировать исходные тесты на языке Java. FIDE работает на IBM PC класса 386 и выше в среде Microsoft Windows или OS/2. На диске пакет занимает около 4 МБайт Его демонстрационная версия доступна на сайте ком- пании-производителя по URL: http://www.aptronix.com. 9.5. Создание нечеткой экспертной системы в пакете CubiCalc Попробуем применить принципы, изложенные выше, для разработки простой нечеткой экспертной системы. В качестве оболочки для ее создания мы будем ис- пользовать пакет CubiCalc, уже упоминавшийся ранее. Но прежде чем приступить к работе, познакомимся с его возможностями и принципами работы подробнее. Подобно другим системам разработки приложений, CubiCalc хранит всю ин- формацию, описывающую создаваемую нечеткую экспертную систему, как еди- ный проект. Проект содержит определения источников входных данных и проце- дур их обработки, правил нечеткого логического вывода, функций принадлежнос- ти для используемых нечетких множеств, процедур представления результатов. Процесс разработки экспертной системы в среде CubiCalc начинается с определения переменных, которые будут использованы в проекте. Пакет по- зволяет работать с нечеткими (с ними связываются функции принадлежности) и скалярными переменными, а также с массивами. Для их задания предназна- чена специальная компонента системы ’’Редактор переменных” (Vanable Editor). Важный этап разработки проекта - определение нечетких множеств, которые будут использованы в процессе работы. Для этого в состав CubiCalc входит графический редактор (Adjective Editor). Он позволяет достаточно просто за- давать и модифицировать описания функций принадлежности входных и вы- ходных переменных. Система использует кусочно-линейную аппроксимацию этих функций, графики которых строятся с использованием мыши, а также го- товых шаблонов, предоставляемых пакетом. Пример описания функций при- надлежности средствами CubiCalc приведен на рис. 9.20.
Глава 9. Нечеткая логика и ее применение в экспертных системах 271 Рис. 9.20. Пример описания функций принадлежности средствами CubiCalc. Нечеткие правила логического вывода в CubiCalc формулируются как пред- ложения на английском языке. Словарный запас пакета скуднее, чем у "средне- статистического" англичанина, поэтому общаться с ним приходится, исполь- зуя фиксированное число слов. Тем не менее их набор достаточен для форму- лирования правил любой сложности. Типичное правило на языке системы выг- лядит так: If Price is High AND Demand is Low then Purchases should be Small. (Если цена высока и спрос низок, то объем закупок мал) Для определения правил используется встроенный текстовый "редактор правил" (Rule Editor). Процесс выполнения проекта в CubiCalc состоит из нескольких этапов (см. рис. 9.21): инициализация (Initialization); ввод данных (Input); предобработка (Preprocessing); выполнение правил (Rules Execution); постобработка (Postprocessing); вывод данных (Output); моделирование (Simulation). Для описания алгоритмов, работающих на этих этапах, используется язык программирования CubiCalc's Expression Language (CEL). Его возможности и синтаксис традиционны для процедурных языков третьего поколения. К осо- бенностям CEL следует отнести наличие средств определения степени вхож- дения скалярных значений в нечеткие множества, средства матричной обра- ботки и обмена данными с другими приложениями или экземплярами CubiCalc, используя технологию DDE (Dynamic Data Exchange).
272 Базы данных. Интеллектуальная обработка информации Нет Рис. 9.21. Алгоритм функционирования нечеткой экспертной системы.
Глава 9. Нечеткая логика и ее применение в экспертных системах 273 На шаге инициализации производится присвоение начальных значений пере- менным, а также выполнение действий, предусмотренных пользователем, для под- готовки нечеткой экспертной системы к работе. Последующие этапы повторяются циклически до тех пор, пока не будет выполняться условие завершения обработки. На шаге ввода данных CubiCalc, если требуется, получает значения из входного файла или берет значения, введенные пользователем. В системе реализован произ- вольный доступ к файлам, состоящим из записей. Предобработка используется для преобразования введенных данных, изменения значений переменных. Этап выполнения правил нечеткого вывода - основа функционирования CubiCalc. Он предназначен для вычисления выхода базы правил в зависимости от текущих значений входных переменных. Последовательность действий, выполняемых на этом этапе, традиционна для подобных систем. CubiCalc по- зволяет выбрать методы суперпозиции и скаляризации нечетких множеств, ко- торые будут использованы в процессе логического вывода. На стадии постобработки реализуются операции преобразования результатов вывода, присвоения значений внутренним переменным, используемым для записи результатов в факт или представления их в графическом виде на этапе вывода дан- ных. Кроме того, на этой стадии могут модифицироваться условия окончания вы- полнения проекта. Этап моделирования используется для получения отклика внеш- ней системы на данные, генерируемые нечеткой экспертной системой. Теперь мы знаем достаточно, чтобы написать собственную нечеткую экс- пертную систему. Воспользуемся исходными данными рассмотренной выше задачи об управлении вентилятором. Ранее мы уже определились, как должна работать система управления скоростью вращения вентилятора, какие правила и функции принадлежности надо использовать. Теперь эти правила и функции надо ввести в CubiCalc. Разработку нашей системы разобьем на 5 этапов: 1) определение набора используемых переменных; 2) ввод правил нечеткого логического вывода; 3) определение функций принадлежности для нечетких множеств, задан- ных на интервале изменения температуры и скорости вращения; 4) указание операций, которые потребуются для обеспечения функциони- рования системы в динамике; 5) определение переменных, значения которых будут отображаться на гра- фике в процессе работы. Для начала запустим CubiCalc. Как и большинство приложений Windows, при установке CubiCalc создает для себя папку в главном меню "Старт1'. По умолчанию эта папка называется "CubiCalc 2.0". Для запуска программы надо выбрать в этой папке иконку с названием ’’CubiCalc RTC 2.0". Чтобы загрузить CubiCalc из Windows 3.1, надо в Program Manager выбрать группу "CubiCalc 2.0" и щелкнуть два раза на иконке "CubiCalc RTC 2.0".
274 Базы данных. Интеллектуальная обработка информации Рис. 9.22. Вид главного окна CubiCalc после загрузки. Главное окно CubiCalc поддерживает стандартный для Windows интерфейс с системой меню (см. рис. 9.22). Выбор команд из меню можно осуществить как мышью, так и с помощью клавиатуры. Подробные сведения о том. как это сде- лать, а также о приемах работы в Windows можно получить в справочной систе- ме Windows. Вызвать ее можно, выбрав в меню "Пуск" команду "Справка". При загрузке CubiCalc автоматически открывает новый проект "Untitled" (без имени). Далее мы дадим е.му название. Поразмыслим о том, какие пере- менные будут нам необходимы Экспертная система будет использовать значе- ние температуры в комнате, на ее выходе будет значение скорости вращения вентилятора. В CubiCalc доступны несколько типов переменных* 1) Fuzzy Input - входная переменная, на области значений которой задают- ся нечеткие множества, используемые в левой части правил вывода; 2) Fuzzy Output - результат работы системы нечеткого логического вывода, на интервале ее изменения определяются нечеткие множества, использу- емые в правой части правил вывода; 3) Constant - переменная с фиксированным значением; 4) Temporary - переменная, принимающая действительные значения. Это- му типу переменных соответствует тип "float" языка С. Тип Temporary позволяет также задавать массивы размерностью до 3. Очевидно, что переменная, хранящая значение температуры воздуха в ком- нате, должна быть типа "Fuzzy Input", а переменная, в которую записывается скорость вентилятора, - "Fuzzy Output". Определим их переменные в CubiCalc.
Глава 9. Нечеткая логика и ее применение в экспертных системах 275 В меню "Project" (проект) выберите команду "Variables..." (переменные). На- жмите кнопку "New" (новая переменная) на появившейся диалоговой панели. Система попросит нас ввести имя и атрибуты новой переменной (см. рис. 9.23). L dil Variable Цате: RoomTemperature <• Fuzzy [nput C Fuzzy Qutput Constant f Temporary S're Г' Array variable Initial yalue 0.0 Range Low 0 Range High: 60 Cancel | * Puc. 9.23. Диалоговая панель дтя задания атрибутов новой переменной. В строке "Room" введем название переменной - RoomTemperature (темпе- ратура в комнате). Выберем ее тип - "Fuzzy Input", а также зададим диапазон изменения ее значений. В поле "Range Low" (нижняя граница диапазона изме- нения) введем "0", а в поле "Range High" (верхняя граница диапазона измене- ния) - "60" (в рассмотренном выше примере температура изменялась от 0°С до 60°С). Остальные поля оставьте без изменений. Нажмите кнопку "ОК" - RoomTemperature появилась в списке переменных (см. рис. 9.24). Рис. 9.24. Панель диалога со списком переменных.
276 Базы данных. Интеллектуальная обработка информации Определим переменную для скорости вращения вентилятора. Нажмите кнопку "New". Введите название переменной - FanSpeed (скорость вентилятора). Укажите ее тип ("Fuzzy Output") и диапазон изменения значений (от 0 до 1000). Нажмите "ОК". В панели со списком переменных щелкните на кнопке "Done" (готово). Теперь нам необходимо задать правила вывода, которыми будет руководство- ваться наша экспертная система. Перед этим необходимо определиться, какие нечегкие множества мы будем использовать и как их именовать в CubiCalc - правила в системе записываются на английском языке. В примере, рассмотрен- ном ранее, было определено по 3 множества для каждой переменной: "высокая', "средняя" и "низкая". Нет причин это менять, договоримся лишь использовать английские названия вместо русских: High (высокая), Normal (средняя) и Low (низкая). Как уже отмечалось, простейшее правило в CubiCalc имеет вид: if <переменная> is <нечеткое множество> then <переменная> is <нечеткое множество>; Для того чтобы запустить редактор правил системы, в меню "Project" (про- ект) выполните команду "Rules" (правила). Возможности этого редактора ана- логичны программе "Блокнот" (Notepad) из поставки Windows. Введите прави- ла, представленные на рис. 9.25. [3 Rulfs й Rules for the fan controller expert system й Если температура воздуха в комнате высокая, то скорость й врацения вентилятора высокая if RooaTeaporature is High then FanSpeed is High; й Если температура воздуха в комнате средняя, то скорость й вращения вентилятора средняя if RooaTeaporature is Noraal then FanSpeed is Normal; й Если температура воздуха в комнате низкая, то скорость й врацония вентилятора низкая if RoomTemperature is Loh then FanSpeed is Low;| i Рис. 9.25. Редактор правил вывода. Строки, начинающиеся с рассматриваются системой как комментарий. Любая непустая строка интерпретируется как правило вывода. Обратите вни- мание, что правило заканчивается точкой с запятой.
Iлава 9. Нечеткая логика и ее применение в экспертных системах 277 Наверное, настало время сохранить разрабатываемый проект. Как в большин- стве программ, результаты работы можно сохранять в любое время, и не надо пренебрегать такой возможностью. В меню "File” (операции с файлами) выбери- те пункт "Save As...” (сохранить как). Задайте имя файла проекта и каталог, в котором его надо сохранить. Неплохим именем будет - "fan" (вентилятор). Следующий этап создания нечеткой экспертной системы - определение функций принадлежности для нечетких множеств. В меню '’Project" (проект) выполните команду "Adjectives for..." (функции принадлежности для). Появит- ся диалоговая панель со списком переменных типа "Fuzzy Input" и "Fuzzy Output" (см. рис. 9.26). Выберите переменную RoomTemperature и щелкните на кнопке "Edit" (редактировать). Рис. 9.26. Выбор переменной для определения функций принадлежности. Система выведет окно редактора функций принадлежности для перемен- ной RoomTemperature (см. рис. 9.27). Рис. 9.27. Окно редактора функций принадлежности.
278 Базы данных. Интеллектуальная обработка информации Редактор позволяет задавать кусочно-линейные функции принадлеж- ности, определенные на множестве значений переменных типа "Fuzzy Input" и "Fuzzy Output". Функция задается опорными точками, которые соединяются отрезками. Позиции точек задаются пользователем. Точку можно перетащить в другое место мышью, либо ввести ее координаты с клавиатуры. При необходимости опорные точки можно добавлять или удалять. В верхней части окна редактора функций принадлежности расположена строка состояния, в которой отображаются: 1) позиция выделенной точки по горизонтали и вертикали (X и Y); 2) название нечеткого множества, которому соответсгвует выделенная фун- кция принадлежности: 3) центр тяжести выделенной функции принадлежности (CG). В правой части окна расположена инструментальная панель с кноп- ками, используемыми для выполнения основных операций редактора. Ниже приведена таблица, в которой приведено назначение каждой из кнопок, кроме того, указаны соответствующие им сочетания клавиш и команд меню. Кнопка (пункт меню) Назначение Adjective/Zoom... сжать график по горизонтали вдвое «—+j Adjective/Zoom... растянуть график по горизонтали вдвое J Adjectr ve/Zoom.. растянуть график до размеров окна Л’ r^fl III Adjective/Zoom... сжать график по вертикали вдвое
Глава 9. Нечеткая логика и ее применение в экспертных системах 279 1 \djective/Point Position (F7) задать позицию опорной точки 1 К 6Z \djecti ve/Zoom... растянуть график в два раза по вертикали 1 Xdjecti ve/Snap to Grid выровнять позиции точек по сетке I Edit/Select All выделить все опорные точки, кроме крайних run НЩ Xdjecti ve/Show Grid отобразить/скрыть сетку 7 | 11 Vdjective/Change List... редактировать список функций принадлежности U' r Kdjecti ve/Set Grid... задать параметры сетки Xdjecti ve/Hide Inactive скрыть все функции принадлежности, кроме выделенной ( Shift+1 Enter) выделить предыдущую функцию
280 Базы данных. Интеллектуальная обработка информации (Enter) выделить следующую функцию Adjective/Insert Point... (INS) добавить новую точку По умолчанию для каждой переменной создается описание нечеткого мно- жества "DEFAULT". Функция принадлежности для него напоминает треуголь- ник (см. рис. [6]). Нам она не потребуется, однако сразу удалить его нельзя - для переменной должна быть задана хотя бы одна функция принадлежности. Для создания экспертной системы нам требуется определить три функции на интервале изменения RoomTemperature: High, Normal и Low. Начнем с фун- кции High. В меню "Adjective" (редактор функций принадлежности) выберите команду "Change List..." (изменить набор). Нажмите кнопку "New..." на появив- шейся панели. Система выведет окно диалога, в котором надо будет задать па- раметры новой функции (см. рис. 9.28). Рис. 9.28. Определение параметров новой функции принадлежности В поле "Name" введите имя функции - "High". Все остальные поля можно оставить без изменений, следует лишь обратить внимание на переключатели '’Shape". Выбор одного из них позволяет задать вид функции: Triangle (треу- гольник) и Trapezoid (трапеция). Triangle отличается от Trapezoid числом опор- ных точек: у Triangle их пять, а у Trapezoid - шесть. Для случая функции "High" больше подходит Triangle. Нажмите "ОК". В панели со списком функций при- надлежности щелкните мышкой на кнопке "Done" (готово). График получен- ной функции представлен на рис. 9.29.
Глава 9. Нечеткая логика и ее применение в экспертных системах 281 Рис. 9.29. Первоначальный график функции "High". В том виде, в котором он изображен на рис. 9.23, график сильно отличается от эталона (см. рис. 9.12). Наша задача - подправить его. Проше всего это сде- лать, вручную задав координаты опорных точек. Чтобы изменить позицию точ- ки, выделите ее, например, щелкнув на ней мышью, нажмите клавишу F7 и введите новые значения X и Y в появившемся окне. Для изменения графика можно рекомендовать следующую последовательность действий. 1) Щелкните мышью на крайней правой опорной точке, нажмите F7 и за- дайте новые координаты: X = 60, Y = 1. 2) Удалите вторую справа опорную точку. Для этого надо выделить ее, на- жать клавишу Del. 3) Выделите вторую точку слева и измените ее координаты. Новое значение X должно быть равно 20. Теперь функция High соответствует графику на рис. 9.12. Для переменной RoomTemperature надо определить еще 2 функции принадлежности: Normal и Low. При их задании надо ориентироваться на графики на рис. 9.11 (для Normal) и рис. 9.10 (для Low). Порядок действий при их определении мало отличается от описанного выше. Следует лишь учесть, что все функции для одной переменной отображаются на одном графике. Функция, выбранная в данный момент, отобра- жается сплошной линией. Остальные показаны пунктиром (см. рис. 9.30).
282 Базы данных. Интеллектуальная обработка информации Low Normal High Рис. 9.30. Функции принадлежности для переменной RoomTemperature. Далее требуется задать нечеткие подмножества для переменной FanSpeed. Как и в случае переменной RoomTemperature, мы будем использовать 3 множе- ства: High (высокая), Normal (средняя) и Low (низкая). В меню "Project" (про- ект) выполните команду "Adjectives for..." (функции принадлежности для). Выберите переменную FanSpeed и щелкните на кнопке "Edit" (редактировать). При задании функций надо руководствоваться их графиками, представленны- ми на рис. 9.15 (High), рис. 9.14 (Normal) и рис. 9.13 (Low). Конечный результат должен соответствовать рис. 9.31. Рис. 9.31. Функции принадлежности для переменной FanSpeed.
Глава 9. Нечеткая логика и ее применение в экспертных системах 283 Наша система готова к работе, однако у нас нет ни комнаты с воздухом, ни вентилятора. Все это можно имитировать средствами CubiCalc. Во-первых, надо задать начальные условия - температуру в комнате до на- чала работы системы. Удобнее всего это делать на шаге инициализации (см. рис. 9.21). Для того чтобы задать операции, которые выполняются на этом шаге, в меню "Project" (проект) выберите команду "Initialization" (инициализация). Появится окно редактора, в котором надо будет записать выражения на языке программирования CEL (CubiCalc Expression Language). Внесем некоторый элемент случайности. Пусть начальная температура будут определяться выра- жением, приведенным на рис. 9.32. ЕЗ Initialization RoomTemperature=9aussian() и 1G + 2G; Рис. 9.32. Выражение для инициализации экспертной системы. В этом выражении использована встроенная функция CEL - gaussian(), ге- нерирующая случайные значения, подчиняющиеся нормальному распределе- нию с нулевым средним и единичной дисперсией. Во-вторых, надо задать отклик температуры в комнате на изменение скоро- сти вращения вентилятора. Можно воспользоваться, например, правилом, пред- ставленным на рисунке 9.33. Оно предполагает возможность установления рав- новесия между температурой и скоростью вращения вентилятора и вместе с тем учитывает действие случайных факторов. Отклик удобнее всего вычис- лять на этапе моделирования (см. рис. 9.21). Рис. 9.33. Выражение для отклика температуры в комнате на изменение скорости вращения вентилятора. Чтобы ввест и это выражение, надо выполнить команду "Simulation" (моде- лирование) в меню "Project" (проект), а затем записать его окне редактора. Можно запустить нашу экспертную систему уже сейчас, однако мы не увидим результатов ее работы. Чтобы проследить, как она функционирует в
284 Базы данных. Интеллектуальная обработка информации динамике, надо отобразить на графике изменение нужных нам переменных во времени. Интересно было бы понаблюдать, как меняется температура в комнате при работе системы В меню "Project" (проект) выберите команду "Plots..." (графи- ки). Появится окно со списком графиков, которые строит система в процессе функционирования. Нажмите кнопку "New" (новый график). Выберите его тип - "Strip Chart - Plot Variables Against Time" (график зависимости переменных от времени). CubiCalc выведет окно, в котором нужно будет задать параметры графика (см. рис. 9.34). Введите в поле "Title" название графика - Temperature. Определить интервал отображения значений температуры от 5°С (поле "Y Scale Low") до 60оС (поле "Y Scale High"). Выберите название переменной RoomTemperature в первой пустой строчке (см. рис. 9.34). Задайте цвет и вид точки, которыми будет отображаться график. Нажмите "ОК". В панели со спис- ком графиков щелкните мышкой на кнопке "Done" (готово). Рис. 9 34. Панель задания параметров графика Нечеткая экспертная система начала работать. На графике видно, что тем- пература изменяется в окрестностях некоторого оптимального значения. Это
Глава 9. Нечеткая логика и ее применение в экспертных системах 285 значение мы косвенно определили при задании функций принадлежности для температуры воздуха в комнате. Понаблюдаем, как ведет себя система в начале работы. Остановим ее. Для этого в меню "Execute" (выполнение) выберем команду "Terminate" (прервать работу). Запустим пошаговое выполнение нашей экспертной системы. Этот режим инициируется в CubiCalc клавишей F8. По этой же клавише выполняет- ся одна итерация цикла, представленного на рис. 9.21. На рис. 9.35 показан график, который был получен после нескольких итераций. 131 Plot Temperature Рис. 9.35. График температуры. Представляет интерес сравнение нашей системы с какой-нибудь традици- онный схемой терморегуляции. Сравним ее с термостатом -устройством, кото- рое будет включать вентилятор при превышении температурой некоторого по- рога (в нашем случае 20°С). Введем две дополнительных переменных: 1) UsualFanS - скорость вращения обычного вентилятора; 2) UsualRoomT - температура воздуха в комнате для схемы охлаждения с термостатом. Обе переменные будут иметь тип "Temporary". Для их добавления надо в меню "Project" (проект) выбрать пункт "Variables..." (переменные). Не забудьте правильно указать их тип в панели "Edit Variable" (редактировать переменную).
286 Базы данных. Интеллектуальная обработка информации Для имитации схемы на термостате модифицируем выражения, выполняю- щиеся на этапах инициализации и моделирования. Вот как должны выглядеть тексты программ, выполняющихся на этих этапах после модификации (см. рис. 9.36 и рис. 9.37). Рис. 9.36. Текст блока инициализации (меню "Project/lnitialization"). Simulation RoonTemperatur© = RoomTomporaturo + (466 * FanSpeed) и 6.001 + gaussian() к 0.1; II имитация схемы на термостате if(UsualRoomT > 26) UsualFanS । ELSE UsualFanS END = 600; 0; UsualRoomT (ЧОО - = UsualRoomT + UsualFanS) * 0.061 + gaussian() * 6.1 Л Puc. 9.37. Текст блока моделирования (меню "Project; Simulation'). Дополним график, выводимый во время работы проекта. В меню "Project" (проект) выберите команду "Plots..." (графики). Выберите в списке график "Temperature" и нажмите кнопку "Change". Измените диапазон значений по оси Y: от 5 до 45 градусов. Это позволит нам более точно рассмотреть, чем разли- чается работа двух систем терморегуляции. Во второй строке со списком "Y Variable" выберите переменную UsualRoomT. Назначьте ее графику цвет и форму точки (см. рис. 9.38). Нажмите "ОК". В панели со списком графиков щелкните мышкой на кнопке "Done" (готово). Запустим проект (меню "Execution/Run"). График изменения температуры при работе двух систем представлен на рис. 9.39.
Глава 9. Нечеткая логика и ее применение в экспертных системах 287 Defini! Strip Churl Iltle Temperature Y Scale Low 5.0000 Y Scale High 45 000 Update plot every iterations Y Variable Color and Eattem RoomT emperatui UsualRoomT P Show Axes P Label Axes Г Black Field P Tick Marks Г Show Grid Qjvisions: 1° Puc. 9.38. Панель задания параметров графика. 1 Рис. 9.39. График температуры при работе сравниваемых систем. Анализируя графики, нетрудно сделать вывод о том, что система управле- ния вентилятором на базе нечеткой логики быстрее адаптируется к изменени- ям температуры в помещении. Колебания температуры при ее работе, в отли- чие от термостатной схемы, малозаметны. Управление бытовой техникой - далеко не единственное применение не- четких экспертных систем. Они могут оказать существенную помощь при ана-
288 Базы данных. Интеллектуальная обработка информации лизе данных в бизнесе и финансах. Еще в конце 80-х годов в японском банке "Fuji Bank" была создана нечеткая экспертная система для управления портфе- лем ценных бумаг. Утверждается, что она принесла немалую прибыль. В состав дистрибутива CubiCalc входит пример упрощенной нечеткой экс- пертной системы, способной облегчить работу коммерческого директора мага- зина. Эта система позволяет определить, какого объема заказ надо сделать по- ставщику товаров. В ее задачи входит также поддержание объема товаров на складе магазина на должном уровне. Входными данными для системы служат: текущий объем товаров на складе, объем продаж, объем невыполненных зака- зов и объем заказов на товар, уже размещенных у поставщика. Решения вырабатываются системой с использованием очевидных правил. В правилах использованы следующие нечеткие (лингвистические) переменные: SalesRate - величина изменения объема продаж; BackLog - объем заказов клиентов, которые магазин не смог выполнить; OnOrder - объем заказов на товары, размещенных у поставщика; StocklnHouse - объем товаров на складе магазина; FuzzyOrder - объем нового заказа на товары. Для каждой из переменных определены нечеткие множества, которые ха- рактеризуют величину их значений. Например, для переменной BackLog зада- ны нечеткие множества (см. рис. 9.40): very_low (очень низкий), low (низкий), normal (обычный), high (высокий) и very_high (очень высокий). Normal High / r_L' Very.HIgh Рис. 9.40. Задание нечетких множеств для переменной BackLog.
Глава 9. Нечеткая логика и ее применение в экспертных системах 289 Система использует следующие правила вывода: 1) Правила, описывающие поведение в зависимости от изменений объема продаж. 1.1) If SalesRate is Falling then FuzzyOrder should be small; 1.2) If SalesRate is Rising then FuzzyOrder should be large; 1.3) If SalesRate is Steady then FuzzyOrder should be normal; 2) Правила, позволяющие учитывать объем размещенных заказов и объем невыполненных заказов. 2.1) If BackLog is high and OnOrder is not high then FuzzyOrder should be large; 2 2) If BackLog is very low and OnOrder is high then FuzzyOrder should be nearzero; 2.3) If OnOrder is high then FuzzyOrder should be small; 2.4) If (OnOrder is medium or BackLog is normal) and SalesRate is not Falling then FuzzyOrder should be normal; 2.5) If OnOrder is low and SalesRate is not Falling then FuzzyOrder should be large; 3) Учет объема товаров на складе. 3.1) If (StocklnHouse is high or StocklnHouse is medium) and SalesRate is Falling then FuzzyOrder should be near_zero. Как было отмечено, этот пример иллюстративный, поэтому входные дан- ные генерируются самой системой, ввод реальных данных не предусмотрен. Входные данные и результаты работы отображаются на графике, вид которого приведен на рис. 9.41. Рис. 9.41. Представление результатов работы в CubiCalc. J0 - 307
290 Базы данных. Интеллектуальная обработка информации Несмотря на упрощенность примера, нельзя не заметить, что поведение довольно сложной системы может быть описано всего лишь несколькими до- вольно абстрактными нечеткими правилами вывода. Это еще раз подтвержда- ет справедливость утверждения о большом потенциале нечеткой логики как средства решения практических задач. Кроме рассмотренного, в дистрибутив CubiCalc входят и другие примеры решения задач управления динамическими системами: парковка трейлера, по- гоня собаки за кошкой, движение автомобиля по окружности и др. Примеры помогают пользователю достаточно быстро освоиться с основными возможно- стями и функциями пакета. В основе нечеткой логики лежат достаточно сложные математические кон- цепции, однако ухватить основную идею достаточно легко. Сфера применения этой математической дисциплины постоянно расширяется, причем не после- днюю роль в этом процессе играют системы, подобные CubiCalc. Разработка систем поддержки принятия решений с использованием концепции нечеткой логики может заметно повысить их эффективность.
Глава 10. Параллельные базы данных 10.1. Современное состояние работ по машинам баз данных 10.1.1. Модели машин баз данных Решение многих важных проблем требует использования больших баз данных (БД) в реальном времени. Для выполнения заранее известного на- бора запросов могут быть применены предварительно организованные спе- циальным образом данные. Для подготовки этих данных могут быть исполь- зованы средства создания адекватного запросам набора отношений базы данных, индексирования ключевых атрибутов на основе, например, хэши- рования или Т-, В-деревьев, предварительной сортировки, и тому подобные приемы, сокращающие время выполнения заранее известных запросов. Од- нако в случае порождения запросов на основе результатов уже выполнен- ных запросов, что имеет место в современных системах поддержки приня- тия решений, требуется работа с не организованными специальным обра- зом данными. В этом случае только параллельное выполнение запросов может дать результат в приемлемое время. Попытки создать узкоспециализированные машины баз данных [57-62] оказались безуспешными. Некоторые из этих машин основывались на экзо- тических моделях памяти [63], возникших в силу представления о трудоем- кости отдельных, часто вспомогательных операций, например, сортировки индексов. Кроме того, предлагаемые проекты узкоспециализированных ма- шин плохо совместимы с концепцией открытых систем: эти машины трудно масштабируются, практически отсутствует модульность, программные сред- ства систем управления баз данных (СУБД) одной машины не переносимы на другие. В то же время появились промышленные реализации параллельных реля- ционных баз данных Teradata NCR [64], Tandem [65], Oracle-nCUBE [66], ис- пользующих в качестве аппаратной платформы параллельные системы из се- рийных микропроцессоров, микросхем памяти и дешевых серийных дисков. Именно параллельные системы наилучшим образом утилизируют выпускае- мые в массовых количествах быстрые и дешевые микропроцессоры, микро- схемы памяти и дисковые устройства. Успешная реализация СУБД на парал- лельных системах во многом основана на использовании реляционной модели баз данных, допускающей параллелизм обработки кортежей отношений и ат- рибутов кортежей [67-70]. ю*
292 Базы данных. Интеллектуальная обработка информации 10.1.2. Структуры аппаратных платформ распределенных и параллельных реляционных баз данных В основном как аппаратные платформы для баз данных используются три типа логических (виртуальных) структур вычислительных систем [71,72]: • с разделяемой оперативной и внешней (дисковой) памятью, • с разделяемой внешней памятью, • с распределенной памятью, в которых отсутствуют разделяемые ресур- сы памяти. Системы с разделяемыми основной и дисковой памятью имеют единое ад- ресное пространство основной памяти и один общедоступный логический диск. Структура систем этого типа приведена на рис. 10.1. Рис. 10.1. Структура систем с разделяемыми основной и дисковой памятью Взаимодействие между процессорами выполняется через разделяемую па- мять. Обычно такие системы имеют архитектуру с неявной реализацией коге- рентности и принадлежат классу симметричных мультипроцессоров (SMP) или систем с архитектурой ccNUMA [73]. Однако логически разделяемая память может быть построена программными средствами на базе механизма передачи сообщений. В последнем случае важна оценка целесообразности затрат време- ни на поддержание архитектуры с разделяемой памятью. Системы с разделяемой дисковой памятью имеют структуру, показанную на рис 10.2. Разделяемый логический общедоступный диск обычно реализу- ется из нескольких устройств дисковой памяти, подсоединенных к локаль- ной сети, к которой подключены также вычислительные модули (ВМ). Дис-
Глава 10. Параллельные базы данных 293 ковая память может использоваться для хранения, например, системной кон- трольной точки. Рис. 10.2. Структура систем с разделяемой дисковой памятью В системах с распределенной памятью, структура которых показана на рис 10.3, каждый ВМ снабжается собственной локальной дисковой памятью. Рис. 10.3. Структура систем с распределенной памятью, в которых отсутствуют разделяемые ресурсы памяти Подобные системы представляют собой сеть автономных компьютеров, взаимодействие между которыми выполняется посредством обмена сообще- ниями. Приведенные логические структуры являются предельными вариантами. Возможно использование комбинированных структур, в которых часть памяти распределена, а часть разделяется группами процессоров.
294 Базы данных. Интеллектуальная обработка информации 10.1.3. Интерфейс между базой данных и вычислительной системой Приведенные логические структуры систем представляют собой уровень интерфейса между вышележащими уровнями программных средств СУБД и нижележащим уровнем аппаратуры. Логическая структура закладывается в СУБД в механизм распределения данных по устройствам памяти и в алгорит- мы оптимизации выполнения запросов к хранимым в базе данным. Например, чаще всего применяются две модели реляционных баз данных В одной модели память имеет двухуровневую организацию и состоит из электронной опера- тивной памяти и дисковой внешней памяти. В другой модели память одноуров- невая и только оперативная [74]. Первая модель отражает объективное состоя- ние возможностей устройств хранения данных в начале 90-х годов, вторая - современное состояние в области массово-параллельных систем, состоящих из тысяч ВМ, каждая из которых имеет от 0.1 до 2 Гбайт оперативной памяти. В последнем случае общий объем оперативной памяти может достигать несколь- ких терабайт Кроме приведенных выше логических структур, могут использоваться и другие, например, буквально соответствующие аппаратным средствам какого- либо типа компьютерной системы. Важно, чтобы эти структуры имели пара- метрическое описание, закладываемое в алгоритмы оптимизации выполнения запросов СУБД. При этом следует разделять случаи использования одного и того же алгоритма с различными значениями параметров и применения раз- личных алгоритмов. Это касается, например, неприемлемости крайней точки зрения, при которой две вышеприведенные модели с одноуровневой и двуху- ровневой памя гью не различимы при указании нулевого значения параметра, задающего объем дисковой памяти. 10.2. Реализации операций реляционных баз данных на параллельных системах с интерфейсом передачи сообщений 10.2.1. Основные распараллеливаемые операции Основные определения операций реляционных баз данных приведем в гом виде, как они представлены в [75] Пусть F={A0, Al,..., Ап}, где АО,..., Ап - множества. Отношение Р на мно- жестве F - это подмножество декартова произведения dom(A0)*dom(Ai)* ... *dom(An), где dom(Aj) - это домен (множество значений) Aj R[A0 Al А2 ... Anj представляет P на множестве {АО, Al, А2,..., Ап} и называется схемой Р. В
Глава 10. Параллельные базы данных 295 R[AO Al А2 ... Ап] каждый столбец Aj называется атрибутом R и обозначается как R.Aj. Каждая строка R называется кортежем и обозначается как <30,31,32,..., ап>, где aj принадлежит dom(Aj). Значение атрибута Aj кортежа к, принадлежащего R, обозначается как k[Aj]. Для иллюстрации изложенного рассмотрим пока- занные на рис. 10.4 реляционные отношения, содержащие сведения о служа- щих предприятия. Отношение EHW Отношение ЕА Номер Рост Вес Номер Возраст 101 175 95 101 31 106 161 65 106 25 115 182 80 115 40 303 175 80 303 34 304 165 65 304 43 801 175 87 801 55 Рис. 10.4 Пример реляционных отношений Отношение EHW имеет три атрибута - EHW.Howep, EHW.Poct и EHW.Bcc, а отношение ЕА имеет только два атрибута - ЕА.Номер и ЕА.Возраст. Каждое отношение состоит из 6 кортежей. Четыре операции реляционной алгебры, на которых в основном базируется параллельная работа с базами данных, - это селекция, проекция, соединение и агрегация. Эти три операции формально определяются следующим образом: 1. Селекция - это выбор из отношения R[XYZ] подмножества кортежей, удовлетворяющих заданному условию, и определяется как: Sei (R) = { R[XYZ] / R.B = b }, где В - атрибут R. B=b Пример операции селекция', вывести список служащих ростом 175. Sei (EHW)= EHW.Poct=175 Результат: Номер Рост Вес 101 175 95 303 175 80 801 175 87
296 Базы данных. Интеллектуальная обработка информации 2. Проекция - выбор части атрибутов отношения (R[XYZ]), исключая по- вторения, определяется как: Pr (R)={ R В}, где В - множество атрибутов R. В Пример операции проекция: перечислить все веса сотрудников. Pr (EHW)= EHW.Bec Результат: Вес 95 65 80 87 3. Соединение - сравнение на совпадение значений двух атрибутов (столб- цов) разных отношений (таблиц) и построение отношения из строк со- единяемых отношений, для которых сравниваемые значения атрибутов одинаковы. Соединение (join) двух отношений R[XYZ] и S[VWX] обозначается как R[XYZ] ® S[VWX] и определяется как T[XYZVW]= R[XYZ] ® S[VWX]={XYZVW/T.X=R X &T.X=S.X&R.Y=y }, R.Y=y R.Y-y Если не существует общих атрибутов, то соединение R и S -это декартово произведение R и S. Пример операции соединение: найти вес и возраст сотрудников, имеющих рост 175. EHW[HoMep, Рост, Вес] ® ЕА[Номер, Возраст]- EHW. Рост=175 Результат: Номер Вес Рост Возраст 101 95 175 31 303 80 175 34 801 87 175 55 4. Операции агрегации - обозначаются aggf(X)(R) и вычисляют глобальные функции агрегации на атрибуте X отношения R Пример функции агрега-
Глава 10. Параллельные базы данных 297 ции f(x): суммирование aggsum(X), максимальный элемент aggmax(X), минимальный элемент aggmin(X), среднее aggmean(X). Например, общий вес служащих определяется как aggsum (EHW.Bec)(EHW) = 472. В вычислительных системах с передачей сообщений кортежи каждого отно- шения в базе данных распределяются между дисковыми запоминающими уст- ройствами, подсоединенными к каждому вычислительному модулю (ВМ). ВМ состоит из процессора и памяти, подсоединенных либо к локальным дисковым устройствам, либо к разделяемому массиву дисковых устройств. Распределение кортежей по ВМ позволяет просматривать большие отношения параллельно. 10.2.2. Виды параллельной обработки в базах данных Данные распределяются по ВМ при помощи фрагментации и тиражирова- ния (репликации) Фрагментация бывает горизонтальной, вертикальной и го- ризонтально-вертикальной. Горизонтальная фрагментация выполняется операцией селекции, распре- деляющей кортежи в соответствии с предикатом селекции. Вертикальная фрагментация реализуется с применением операции проек- ции, направляющей разделы кортежей в соответствующие ВМ. Фрагменты данных могут тиражироваться (копироваться) для минимиза- ции времени доступа к данным за счет пересылки данных между вычислитель- ными модулями и хранения многих копий фрагментов данных. Схема разбиения данных значительно влияет на время реализации операций. Если ситуация требует, чтобы в каждом разбиении были кортежи, значения атри- бутов которых лежат в определенном диапазоне, тогда может быть использовано горизонтальное разбиение. Горизонтальное разбиение отношений увеличивает объем данных, которые могут быть обработаны без взаимодействия процессов. Если ситуация требует, чтобы в каждом разбиении было только некоторое подмно- жество атрибутов кортежей, тогда может быть использовано вертикальное разбиение. Вертикальное разбиение отношений уменьшает объем резидентных данных и делает ненужным проектирование требуемых атрибутов в первоначальном отношении. Если использовано вертикальное разбиение, необходимы дополнительные соединения для достижения значений нерезидентных атрибутов. Результатом дополнительного соединения является взаимодействие ВМ и увеличение вре- мени вычислений. 10.2.3. Основные свойства параллельных и распределенных БД Как распределенная, так и параллельная базы данных - это совокупность баз данных, распределенных по компьютерной сети и способных выступить
298 Базы данных. Интеллектуальная обработка информации как интегрированное целое, прозрачное для пользователей. Прозрачность - невидимость для пользователя фрагментации данных, то есть язык запросов к распределенной или параллельной базе не отличается от языка запросов к пос- ледовательной. Сейчас общепринятым языком запросов служит SQL [7]. При- кладные программы на SQL, написанные для однопроцессорных систем, мож- но выполнять параллельно на системах с распределенной памятью. Практика показывает, что при исполнении прикладных программ, написанных на стан- дартном SQL, без переделки программ в системах Teradata и Tandem достига- ется почти линейные ускорение [63]. В СУБД распределенных и параллельных баз данных выделяют следую- щие виды параллелизма: - межзапросный, при котором выполняется множество запросов разных транзакций; - внутризанросный, выполняющий несколько операций, относящихся к од- ному запросу; - внутриоперационный, при котором выполняются параллельно части од- ной операции. Между системами управления, распределенными и параллельными базами данных есть много общего при наличии существенного различия, состоящего в том, что в параллельной базе данных применяются все три вида параллелиз- ма, а в распределенной базе - только два первых. Распределенные СУБД, ори- ентированные на сети персональных ЭВМ и рабочих станций, способны обес- печивать эффективное распределение исполнения транзакций по компьютерам. При выполнении запроса должна быть использована информация о рас- пределении данных. Распределенные (фрагментированные) отношения рекон- струируются путем обращения операций, использованных при фрагмента- ции. К операциям реляционной алгебры добавляются операторы приема и по- сылки сообщений. Среди возможных вариантов реализации совокупности опе- раций запросов необходимо выбрать самый дешевый, например, требующий наименьшего времени выполнения. Очень важно оптимизировать порядок вы- полнения соединений (join), так как при их реализации идет просмотр и срав- нение атрибутов всех кортежей отношений. Рационально выбранный порядок исполнения может дать несколько порядков ускорения выполнения. Корректность совмещенного выполнения совокупности транзакций обес- печивается блокированием доступа к изменяемым данным посредством синх- ропримитивов. Обычно используется двухфазовое блокирование: ни одна блокировка от имени какой-либо транзакции не должна устанавливаться, пока не будет снята ранее установленная блокировка.
Глава 10. Параллельные базы данных 299 Блокирование может быть централизованным и распределенным, децент- рализованным. При централизованном - одна таблица и один менеджер блоки- ровок. Недостатки - один узел порождает ненадежность и узкое место, ограни- чивающее пропускную способность. Децентрализованное блокирование предполагает коммуникационные зат- раты. Альтернатива блокировкам - временные метки и оптимистичное управле- ние одновременным доступом: считается, что все можно. После выполнения проверяется, было ли нарушение. Если да, то отбрасывание результатов и по- втор. 10.2.4. Параллельное выполнение операций Действия над отношениями БД могут быть разделены на два типа: не тре- бующие участия всех кортежей отношений (uniscan) и требующие участия всех кортежей (multiscan) [75]. Например, соединение и проекция - это multiscan операции, так как каждый кортеж при их исполнении сравнивается с множе- ством кортежей Однако селекция и операция агрегации - это uniscan опера- ции, потому что обработка каждого кортежа не зависит от обработки других кортежей. Реализация операций, не требующих участия всех кортежей В селекции на горизонтально фрагментированном отношении принимают участие распределенные по ВМ кортежи, Параллельное исполнение селекции заключается в чтении каждой ВМ своего резидентного множества кортежей и сравнения для каждого кортежа значения атрибута кортежа с требуемым значе- нием. Если ВМ обнаруживает, что значение атрибута очередного кортежа удов- летворяет оператору селекции, то она сохраняет кортеж (ссылку па кортеж). В параллельных системах операции агрегации обычно выполняются за две фазы. На первой фазе каждая ВМ вычисляет свое локальное значение. Кортежи считываются аналогично тому, как в операции селекции На второй фазе гло- бальное значение вычисляется с использованием всех локальных значений и помещается либо в определенную ВМ, либо в управляющую ЭВМ. Для выполнения операции агрегации может быть сформирована структура межмодульных связей типа "дерево". В этом случае операция агрегации вы- полняется следующим образом. На первом шаге листовые ВМ (т.е. не имею- щие потомков) передают свои локально вычисленные значения операции агре- гации ВМ-родителям. На последующих шагах ВМ, принявшие сообщение от ВМ-потомков, вычисляют новое значение агрегации с учетом своих резидент- ных кортежей и передают его вверх по дереву ВМ-родителям Этот процесс продолжается до тех пор, пока результат не достигнет корня дерева. Число шагов
300 Базы данных. Интеллектуальная обработка информации пересылки в таком алгоритме будет равно длине самой длинной ветви дерева. Иногда пользователь может пожелать вычислить какое-нибудь значение по категориям. Например, в БД населения страны пользователь может получить средний возраст населения каждого региона. В этом случае необходимо произ- вести перераспределение данных между ВМ так, чтобы в каждой ВМ находи- лись данные, относящиеся к данной категории, затем в каждой ВМ вычисляет- ся свое значение для резидентной категории. Реализация операций, требующих участия всех кортежей Параллельные алгоритмы, осуществляющие inultiscan операции, могут быть разделены на основанные на трансляционной передаче отношений (broadcast)