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