unit AIObj
Разрабатываем экспертную систему. Урок 1. Немного
теории.
Все статьи по данной теме
В прежние времена
экспертные системы были закрыты для широкого круга пользователь компьютеров. Они
были ориентированы на мощные ЭВМ и использовали для своего создания сложный и
геморройный язык программирования ЛИСП (язык обработки списков), что создавало
дополнительные проблемы в их освоении. В рамках данного цикла уроков мы
разработаем экспертную систему руководствуясь книгой Криса Нейлора "Как
построить свою экспертную систему". В этой книге приведены простые примеры
экспертных систем на языке программирования БЕЙСИК. Мы же переведем их на
Delphi с использование объектно-ориентированного
программирования.
Прежде чем приступить к
разработке, освежим свою память или проведем ликбез по теории экспертных систем
и искусственного интеллекта.
И так, для начала давайте
ответим на вопрос, что же такое экспертная система? Крис Нейлор в своей
книге так определяет этот термин: экспертная система - это система,
которая объединяет возможности компьютера и знания вместе с опытом эксперта в
такой форме, что может дать разумный совет или осуществить разумное
решение поставленной задачи. К дополнительному свойству экспертной
системы можно отнести способность пояснять ход своих рассуждений в
понятной для пользователя форме.
Перечислим в качестве
примера задачи, которые может решать экспертная система, взятых из книги "Как
построить свою экспертную систему":
-
Диагностика общих
болезней.
-
Поиск неисправностей в
простых цепях.
-
Диагностика болезней
растений.
-
Анализ
электрокардиограмм.
-
Классификация животных,
птиц или растений по видам.
Маловероятно, что рядовому
пользователю потребуется решать подобные задачи, и, скорее всего, он захочет
применить ее для чего нибудь другого. В частности, если ЭС может
производить анализ электрокардиограмм, то она наверняка сможет так же
проанализировать графики котировок акций. Почему бы не использовать экспертную
систему, например, для зарабатывания на фондовой бирже? А раз ЭС
может искать неисправности в простых цепях или диагностировать болезни, то
почему бы не попробовать ее применить для поиска ошибок в компьютерных
программах или для анализа программного кода на предмет возможных проблем в
будущем?
Так, с практическим
применением экспертных систем разобрались. Разумеется, оно не ограничивается
тем, что написано в вышеназванной книжке и моих комментариях к этому
перечню. Тут, уж как говориться, насколько вашей фантазии хватит.
Поехали дальше. Для начала
развеем типичные мифы по поводу экспертных систем:
Миф первый. Экспертная
система может делать только то, что способен делать человек. Это в корне
неверно. Можно создать экспертную систему, для которой вообще не существует
человека эксперта. Спрашивается, каким образом? Создать систему, способную
самообучаться. Тоесть, получать на вход информацию, затем анализировать ее и
сохранять в своей памяти в виде базы знаний. Чем можно наполнить эту самую базу
знаний? Да хоть чем, это тоже ограничивает лишь ваша фантазия. Теоретически, в
памяти компьютера могут храниться знания, которыми в совокупности не обладает ни
один человек.
Миф второй. Экспертная
система никогда не заменит человека. Конечно заменит! Иначе зачем тогда ее
разрабатывать? Цель автоматизации - перенести рутинные функции человека на
машину, освободив последнего для более важных дел. К рутинным функция можно
отнести и процесс принятия решения, так как если требуется принять разумное
решение, то необходимо проанализировать множество факторов, оценить последствия,
сопоставить многочисленные "за" и "против". со всеми этими задачами великолепно
справиться компьютер.
Теперь давайте попробуем
разобраться, как будет храниться база знаний в памяти компьютера. Крис
Нейлор в своей книге предлагает использовать матрицу (двумерный массив), которая
доступна как в языке программирования БЕЙСИК, так и на в Delphi.
Строки матрицы - это входящие параметры, наблюдения, столбцы -
возможные варианты решений (предсказаний). В ячейках матрицы мы будем хранить
вероятности (или весовые коэффициенты) решений (предсказаний) в зависимости от
исходных данных.
Под наблюдениями понимается
положительный ответ на вопрос, на который можно ответить "да" или "нет". Грубо
говоря, наблюдение - это констатация факта. Нейлор приводит пример с
предсказанием погоды, будет ли завтра дождь. В матрице у него два столбца, "да"
или "нет", а в строках такие наблюдения, как "Сегодня холодно?", "Сегодня
пасмурно?" и так далее.
Мы же можем создать
экспертную систему с другой областью запросов. Например, пойдет завтра
Газпром вверх или вниз? Соответственно, у нас будут и другие входные данные.
Например, сегодня Газпром рос? Сегодня индекс РТС рос? Месяца назад Центробанк
повышал учетную ставку?
На этом я, пожалуй за кончу
вводную часть, а остальную теорию, в частности, элементы теории вероятностей и
матстатитсики, а так же саму реализацию экспертной системы на Delphi
оставлю для будущих уроков.
Все статьи по данной теме
|