Теория СУБД

БАЗЫ ЗНАНИЙ И ЭКСПЕРТНЫЕ СИСТЕМЫ

Знания имеют существенно более сложную природу, чем данные. Поэто­му для хранения и обработки знаний служат специальные компьютерные системы — базы знаний. Например, ба­за знаний может использоваться при разработке web-интерфейса интер­нет-магазина, рекомендаций покупа­телям о приобретении тех или иных товаров (история покупок и правила наподобие приведенного выше — ос­нова для этого). Другой пример — база знаний в составе ERP-системы пред­приятия, которая на основе опыта, по­лученного несколькими специалиста­ми в результате подбора поставщиков, предоставляет сведения о целе­сообразности закупки тех или иных товаров.

Вопросы эффективного представле­ния знаний в машинном виде являют­ся весьма нетривиальными и во мно­гом зависят от поставленных задач. Весьма широко распространено представление знаний в виде правил "если — то" (продукционное представ­ление), в виде сети связанных опре­деленными отношениями объектов (семантические сети), в виде иерар­хического множества объектов с оп­ределенными свойствами (фреймо­вое представление) и на языке логи­ки предикатов (логическое представ­ление).

Благодаря множеству представле­ний существует множество различ­ных программных средств для созда­ния баз знаний, называемых также оболочками экспертных систем. Среди них можно отметить CLIPS и JESS, а также более профессиональную сре­ду моделирования G2. Во многих слу­чаях бывает удобнее реализовывать базу знаний на языках программиро­вания искусственного интеллекта (ЛИСПе, Прологе) или на традицион­ных языках программирования.

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

ЭС: Какой жанр книг вы предпочитаете? П: Техническую литературу. ЭС: В какой области? П: Microsoft Office.

ЭС: Вы программист или продвинутый пользователь? П: Программист.

ЭС: Вас интересует программирование для платфор­мы Microsoft .NET? П: Да.

ЭС: Вас интересует какой-нибудь конкретный продукт? П: Visio.

ЭС: Могу порекомендовать "Microsoft Office Visio 2003 не для дилетантов", Леонтьев Б.К., ЗАО "Новый изда­тельский дом", 2005 год.

Примером "советующих" эксперт­ных систем в области торговли может стать небезызвестный проект Yandex GURU (http://guru.yandex.ru), дающий советы при выборе товаров.

Структура типовой экспертной сис­темы показана на рис. 1. Основным мо­дулем системы является база знаний, содержащая множество знаний экс­перта о предметной области. Базы знаний реальных экспертных систем содержат тысячи и десятки тысяч (иногда сотни тысяч) правил. Данные о конкретной решаемой задаче содер­жатся в рабочей памяти — туда зано­сятся начальные данные, ответы пользователя, а также полученные системой в ходе рассуждений выво­ды. Собственно, за проведение рас-

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

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

МАШИННОЕ ОБУЧЕНИЕ

Иногда требуется решить задачу, обратную построению баз данных. Имеются массивы разрозненных дан­ных, и требуется обнаружить в них скрытые закономерности. Типичный пример — уже упомянутая статистика покупок в интернет-магазине. Кто бы мог подумать, что покупатели клюшек для гольфа также часто интересуют ся дорогими игровыми приставками? Оказывается, многие состоятельные бизнесмены любят делать своим вну­кам хорошие подарки...

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

Рассмотрим основные методы, ис­пользуемые в машинном обучении совместно с базами данных. К сожа­лению, многие интересные современ­ные методы нам не удастся даже упомянуть (к примеру, извлечение структуры web-сайтов и web-сооб-ществ, эволюционное обучение, при­менение методов машинного обуче­ния к анализу текстов, фильтрации спама и др.).