
- •Теория субд
- •За таблицами – наше будущее!
- •Связываем данные
- •Объектный рай
- •Сетевая база данных
- •Клиент-сервер
- •Особенности клиент-сервера
- •Индексы на сервере
- •Третий уровень
- •Сетевые субд
- •Архитектуры субд: технология локальных (настольных) бд
- •Архитектуры субд: технология "клиент-сервер"
- •В чем сходства и различия?
- •Выбираем бд
- •Кибернетическое будущее за базами знаний
- •Искусственный интеллект
- •Данные и знания
- •Базы знаний и экспертные системы
- •Машинное обучение
- •Анализ данных и olap-технологии
- •Индукция правил и деревья решений
- •Хранилища данных и корпоративная память
- •Машинное обучение – ключ к кибернетическому бессмертию
- •Кофе. Солнце. Базы данных
- •Не microsoft'ом единым. Bde
- •Odbc на практике
- •Форточки и odbc
- •Odbc для пингвина
- •Какие они бывают?
- •Что такое правильная база данных?
- •Нужна наглядная схема!
- •А как это сделать?
Базы знаний и экспертные системы
Знания имеют существенно более сложную природу, чем данные. Поэтому для хранения и обработки знаний служат специальные компьютерные системы - базы знаний. Например, база знаний может использоваться при разработке web-интерфейса интернет-магазина, рекомендаций покупателям о приобретении тех или иных товаров (история покупок и правила наподобие приведенного выше – основа для этого). Другой пример – база знаний в составе ERP-системы предприятия, которая на основе опыта, полученного несколькими специалистами в результате подбора поставщиков, предоставляет сведения о целесообразности закупки тех или иных товаров.
Вопросы эффективного представления знаний в машинном виде являются весьма нетривиальными и во многом зависят от поставленных задач. Весьма широко распространено представление знаний в виде правил "если - то" (продукционное представление), в виде сети связанных определенными отношениями объектов (семантические сети), в виде иерархического множества объектов с определенными свойствами (фреймовое представление) и на языке логики предикатов (логическое представление).
Благодаря множеству представлений существует множество различных программных средств для создания баз знаний, называемых также оболочками экспертных систем. Среди них можно отметить CLIPS и JESS, а также более профессиональную среду моделирования G2. Во многих случаях бывает удобнее реализовывать базу знаний на языках программирования искусственного интеллекта (ЛИСПе, Прологе) или на традиционных языках программирования.
Чаще всего базы знаний используются при создании экспертных систем -программ, способных играть роль человека-эксперта в некоторой предмет ной области, то есть, как правило, предоставлять консультации по некоторым проблемам в режиме "вопрос -ответ". Например, экспертная система в книжном интернет-магазине может рекомендовать приобрести конкретные книги или книги конкретных жанров с учетом потребностей, предпочтений и даже настроения пользователей. Простой пример диалога пользователя с экспертной системой может выглядеть так:
ЭС: Какой жанр книг вы предпочитаете? П: Техническую литературу. ЭС: В какой области? П: Microsoft Office.
ЭС: Вы программист или продвинутый пользователь? П: Программист.
ЭС: Вас интересует программирование для платформы Microsoft .NET? П: Да.
ЭС: Вас интересует какой-нибудь конкретный продукт? П: Visio.
ЭС: Могу порекомендовать "Microsoft Office Visio 2003 не для дилетантов", Леонтьев Б.К., ЗАО "Новый издательский дом", 2005 год.
Примером "советующих" экспертных систем в области торговли может стать небезызвестный проект Yandex GURU (http://guru.yandex.ru), дающий советы при выборе товаров.
Структура типовой экспертной системы показана на рис. 1. Основным модулем системы является база знаний, содержащая множество знаний эксперта о предметной области. Базы знаний реальных экспертных систем содержат тысячи и десятки тысяч (иногда сотни тысяч) правил. Данные о конкретной решаемой задаче содержатся в рабочей памяти - туда заносятся начальные данные, ответы пользователя, а также полученные системой в ходе рассуждений выводы. Собственно, за проведение рас-
суждений отвечает процессор логического вывода, который пытается применить правила базы знаний к решению конкретной задачи.
Основная проблема создания экспертных систем – получение знаний от человека-эксперта. Поскольку эксперт, как правило, не обладает навыками программирования, а программист не способен адекватно общаться с экспертом на его языке, обычно в роли посредника выступает отдельный специалист – инженер по знаниям (рис. 2). Задача инженера по знаниям – уметь "разговаривать на одном языке" с экспертом (специалистом в своей области знаний) и с программистом, который при всем желании не смог бы вникнуть в тонкости предметной области. Для извлечения знаний существует множество методов, но эта задача остается чрезвычайно трудоемкой, препятствуя широкому распространению баз знаний.