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