ZX Review
#7-8-9-10
08 ноября 1997 |
|
Читатель-читателю - Группа 'Light'. Спектрум и экспертная система.
┌──────────────────────────────┐ │ │ │ ЧИТАТЕЛЬ - ЧИТАТЕЛЮ │ │ │ └──────────────────────────────┘ Music by ZET (c) Группа 'Light', г.Серпухов СПЕКТРУМ И ЭКСПЕРТНАЯ СИСТЕМА Хотим сразу ответить на воп- рос - а для чего и зачем это нужно и где это применяется? А самое главное - неужели это мож- но реализовать на Спектруме? Ответим сразу - МОЖНО, даже на 48K. Но сначала давайте сразу же определим, что такое экспертная система. Под экспертной систе- мой понимается компьютерная сис- тема, способная предложить ра- зумный совет или осуществить ра- зумное решение поставленной за- дачи при имеющихся в наличии не- которых исходных данных. Примером экспертных систем на Спектруме могут служить, в пер- вую очередь, стратегические иг- ры, а тем более шахматные прог- раммы. Это утверждение основано на определении экспертной систе- мы, которое одобрено комитетом группы специалистов по экспер- тным системам Британского ком- пьютерного общества. Конечно, данная статья никак не может претендовать на полно- ту освещения этого раздела, но мы надеемся, что она, по крайней мере, пробудит в Вас интерес к этой области, которая граничит с искуственным интеллектом. В данной статье мы рассмот- рим экспертную систему, которая предполагает присутствие челове- ка в начальном процессе выработ- ки решения, т.е. в процессе обу- чения системы. Рассматриваемую здесь экспер- тную систему можно упрощенно представить в виде следующего алгоритма: ┌─────────────┐ │Ввод │ ┌─> │переменных │ │ └─────────────┘ │ v │ ┌─────────────┐ │ │Применение │ │ │текущих │ │ │решающих │ │ │правил │ │ └─────────────┘ │ v │ ┌─────────────┐ │ │Предположение│ └─── │о возможном │ │исходе │ └─────────────┘ Все бы хорошо, однако на на- чальном этапе в такой экспертной системе не содержится данных, по которым программа могла бы дать предположение о возможном исхо- де. И вот тут на сцене появляет- ся человек, который выступает в роли учителя. Вводя в компьютер те переменные, на которые точно известен исход, человек обучает его. Т.о., на начальном этапе, т.е. на этапе обучения, алгоритм экспертной системы может выгля- деть следующим образом: ┌─────────────┐ │Ввод │ ┌─> │переменных │ <─┐ │ └─────────────┘ │ │ v │ │ ┌─────────────┐ │ │ │Применение │ │ │ │текущих │ │ │ │решающих │ │ │ │правил │ │ │ └─────────────┘ │ │ v │ │ ┌─────────────┐ │ │ │Предположение│ │ │ │о возможном │ │ │ │исходе │ │ │ └─────────────┘ │ │ v │ │Да ┌─────────────┐ │ └─── │Это верно │ │ └─────────────┘ │ v Нет │ ┌─────────────┐ │ │Модификация │ │ │решающих │───┘ │правил │ └─────────────┘ Как видно из алгоритма, прос- тейшую экспертную систему не- трудно реализовать на Спектруме. В доказательство этого по данно- му алгоритму составим программу на Бейсике, как на самом распро- страненном языке. При желании эту программу легко перевести на любой другой язык, даже на ас- семблер. Для простоты предполо- жим, что имеются всего два воз- можных исхода: например, завтра будет дождь и завтра не будет дождя. Если ввести и запустить эту программу, то она задаст во- прос о количестве задействован- ных переменных. Номер переменной │ Имя переменной ──────────────────┼────────────────────── 1 │ Давление повышается 2 │ Давление понижается 3 │ Ветер есть 4 │ Ветра нет Ясно, что выбор переменных лежит целиком на ваших знаниях и способностях. Затем в памяти ма- шины создаются три массива. Мас- сив R - должен содержать прави- ла вывода суждений (которые раз- рабатывает ЭВМ), массив V - зна- чения переменных, представленных в данном конкретном случае, мас- сив V$ - служит для хранения имен переменных. Программа после запуска зап- рашивает имена этих переменных. Она также запрашивает имена пе- ременных O$ и B$ - двух возмож- ных исходов. Далее выясняются детали конкретного примера (для данной программы требуются отве- ты типа Да/Нет). Собрав все необходимые сведе- ния, программа делает предполо- жение относительно возможного исхода. Когда Вы согласны с мне- нием системы, вводите Y, или N - если не согласны. Затем перехо- дите к другому примеру. Таким образом осуществляется процесс машинного обучения. Следует от- метить, что постепенно машина улучшает свои предсказания отно- сительно возможного исхода, хо- тя насколько лучше - зависит от того, какую информацию Вы ввели вначале. (Прим. ред. - обучение системы пойдет куда лучше, если вводить в нее РЕАЛЬНО случившиеся факты - а был ли на самом де- ле дождь - а не свое согласие или несогла- сие с ее решением). А теперь сам листинг программы. 10 CLS 20 INPUT "ВВЕДИТЕ ЧИСЛО ПЕРЕМЕННЫХ"; VAR 30 DIM V(VAR): DIM R(VAR): DIM V$(VAR) 40 FOR I=1 TO VAR 50 V(I)=0 60 R(I)=0 70 NEXT I:PRINT 80 PRINT "НАЗОВИТЕ ЭТИ ПЕРЕМЕННЫЕ " 90 FOR I=1 TO VAR 100 INPUT "ИМЯ ПЕРЕМЕННОЙ :";V$(I) 110 NEXT I: PRINT 120 PRINT "НАЗОВИТЕ ВОЗМОЖНЫЕ ИСХОДЫ:" 130 INPUT "ПЕРВЫЙ ИСХОД: "; O$ 140 INPUT "ВТОРОЙ ИСХОД: "; B$ 150 PRINT 160 FOR I=1 TO VAR 170 V(I)=0 180 PRINT "ПЕРЕМЕННАЯ: ";V$(I) 190 INPUT "ЭТА ПЕРЕМЕННАЯ ЕСТЬ <Y/N>";A$ 200 IF A$="Y" OR A$="y" THEN LET V(I)=1 210 NEXT I 220 DC=0 230 FOR I=1 TO VAR 240 DC=DC+V(I)*R(I) 250 NEXT I 260 PRINT "ВОЗМОЖНЫЙ ИСХОД - "; 261 IF DC > 0 THEN PRINT O$ 262 IF DC < 0 THEN PRINT B$ 270 INPUT "ЭТО ВЕРНО <Y/N>";A$ 280 IF A$="Y" OR A$="y" THEN GOTO 150 290 IF DC > 0 THEN FOR I=1 TO VAR: R(I)= R(I)-V(I): NEXT I 291 IF DC < 0 THEN FOR I=1 TO VAR: R(I)= R(I)+V(I): NEXT I 300 GOTO 150 После того, как Вы решите, что обучили свою экспертную сис- тему всему на свете, можно спо- койно исключить из программы обучающий блок (не забудьте только сохранить массивы с дан- ными) и включить данную програм- му в состав какой-либо еще прог- раммы, или использовать ее неза- висимо (например для предсказа- ния дождя для дня грядущего). Представим, однако, что мы включили данную экспертную сис- тему в стратегическую игру, и компьютер на основании этой сис- темы управляет неким боевым ро- ботом, имеющим самую слабую за- щиту и самые слабые средства на- падения. Предположим также, что в нашу систему вложено правило уничтожать все вражеские объек- ты в пределах видимости. И вот может наступить момент, когда этот слабенький робот героичес- ки полезет на Вашу ракетную ус- тановку, и, как следствие, око- ло нее и останется. Здесь имеет- ся два выхода: первый - это опи- сать все возможные ситуации (что не очень-то реально) и второй - ввести в систему возможность ориентироваться с минимальными и максимальными значениями пере- менных. Говоря простым языком - сделать так, чтобы наш гипотети- ческий робот с защитой, скажем, в 1 единицу не полез в драку с роботом, имеющим защиту в 20 единиц. Тогда блок-схема данной экспертной системы будет выгля- деть следующим образом: ┌───────────────┐ │ Начало │ │ │ <─┐ └───────────────┘ │ v │ ┌───────────────┐ │ │ │ │ │ Запрос │ │ │ переменных │ │ │ │ │ └───────────────┘ │ v │ ┌───────────────┐ │ │Выбор наиболее │ │ ┌──>│ вероятного │ │ │ │ исхода │ │ │ └───────────────┘ │ │ v │ │Да ┌───────────────┐ │ │ │Могут ли задан-│ │ │ │ные минималь- │ │ │ │ные и макси- │ │ │ │мальные значе- │ │ └── │ния повлиять │ │ │на выбор воз- │ │ │можных │ │ │исходов │ │ └───────────────┘ │ v Нет │ ┌───────────────┐ │ │ │ │ │ РЕШЕНИЕ │───┘ │ │ └───────────────┘ Надо сказать, что данная блок-схема не является совершен- ной, однако за счет того, что минимальные и максимальные зна- чения переменных проверяются только в случае необходимости, алгоритм получается довольно быстродействующим. Надо сказать, что быстродей- ствие играет далеко не последнюю роль. Конечно, когда Вы построи- ли экспертную систему, которая ставит медицинские диагнозы, то тут быстродействие системы не очень принципиально. Другое де- ло - компьютерные игры. Тут даже можно пожертвовать некоторой ин- теллектуальностью ради скорости программы. А дело тут вот в чем: Сущес- твуют два типа процесса выра- ботки решений - параллельное и последовательное. Вот их блок- схемы: ┌───────────┐ │Переменные │ └───────────┘ v v v ┌───────────┐ │ │ └───────────┘ v ┌───────────┐ │ Исход │ └───────────┘ Параллельное решение ┌─────────────────────┐ │Запросить переменную │ <┐ └─────────────────────┘ │ v │ ┌─────────────────────┐ │ │Могу ли я предсказать│───┘ │какой-то исход │ НЕТ └─────────────────────┘ v ДА ┌─────────────────────┐ │Возможный исход │ └─────────────────────┘ Последовательное решение Несомненно, последовательное решение является более быстрым, так как параллельное решение требует ввода всех известных переменных, а последовательное может сделать вывод, используя только часть из них. Кстати, есть предположение, что именно так действует человеческий мозг в процессе выработки решений. Несомненно, что в общем слу- чае параллельная процедура поз- воляет получить более точное ре- шение по сравнению с последова- тельной. Однако в данном случае договоримся, что нас интересу- ет больше скорость расчета, чем правильность решения. Алгоритм расчета в данном случае будет выглядеть следующим образом: ┌───────────────┐ │ Начало │ <─┐ └───────────────┘ │ v │ ┌───────────────┐ │ │ │ │ │ Запрос │ │ │ переменной │ │ │ │ │ └───────────────┘ │ v │ ┌───────────────┐ │ │Выбор наиболее │ │ ┌──>│ вероятного │ │ │ │ исхода │ │ │ └───────────────┘ │ │ v │ │Да ┌───────────────┐ │ │ │Могут ли задан-│ │ │ │ные минималь- │ │ │ │ные и макси- │ │ │ │мальные значе- │ │ └── │ния для осталь-│ │ │ных переменных │ │ │повлиять на │ │ │выбор воз- │ │ │можных исходов │ │ └───────────────┘ │ v Нет │ ┌───────────────┐ │ │ │ │ │ РЕШЕНИЕ │───┘ │ │ └───────────────┘ Таким образом, мы получили быстродействующий алгоритм, опи- сывающий действие экспертной си- стемы при выработке решения. Естественно, что материал этой статьи не описывает все возможные решения и алгоритмы по этому вопросу, ведь проблема ис- куственного интеллекта не решена до сих пор. Однако простейшие алгоритмы возможно применять да- же при программировании на СПЕК- ТРУМЕ. А реализация этих алго- ритмов за Вами. Ну что? Беретесь создать на Speccy интеллектуаль- ные программы? Те, кому понравилась эта идея, могут писать свои сообра- жения по адресу: 142214 г.Серпухов, ул.Подоль- ская, д.107, кв.57 * * *
Другие статьи номера:
Похожие статьи:
В этот день... 21 ноября