Системы искусственного интеллекта. Тематический план
Скачать 1.4 Mb.
|
ТЕМА 2.10 СОЗДАНИЕ ЭКСПЕРТНЫХ СИСТЕМ План лекции: 2.10.1 Структура экспертной системы 2.10.2 Представление знаний 2.10.3 Методы вывода 2.10.4 Система пользовательского интерфейса 2.10.5 Экспертная система, базирующаяся на правилах 2.10.1 Структура экспертной системы Чтобы выполнять работу эксперта, компьютерная программа должна быть способна решать задачи посредством логического вывода и получать при этом достаточно надежные результаты. При этом программа должна иметь доступ к системе фактов, называемой базой знаний, а также должна во время консультации уметь выводить заключения из информации, имеющейся в базе знаний. Некоторые экспертные системы могут кроме этого использовать новую информацию, добавляемую во время консультации. Таким образом, экспертную систему можно представить состоящей из трех частей: 1) базы знаний (БЗ); 2) механизма вывода (МВ); 3) системы пользовательского интерфейса (СПИ). База знаний — это основная, центральная часть экспертной системы. Она содержит правила, описывающие отношения (или явления), методы и знания для решения задач из области применения данной экспертной системы. Механизм вывода содержит принципы и правила работы. Фактически механизм вывода запускает экспертную систему в работу, определяя, какие правила нужно вызвать, и организуя доступ к ним в базе знаний. Механизм вывода также выполняет правила, определяет, когда найдено приемлемое решение, и передает результаты программе интерфейса с пользователем. Интерфейс — это та часть экспертной системы, которая непосредственно взаимодействует с пользователем. Система интерфейса с пользователем принимает информацию от него. Затем система интерфейса, основываясь на виде и характере информации, введенной пользователем, передает необходимые данные механизму вывода. Когда механизм вывода возвращает знания, выведенные из базы знаний, интерфейс передает их обратно пользователю в удобной для него форме. 2.10.2 Представление знаний Представление знаний — это множество соглашений по синтаксису и семантике, согласно которым описываются объекты. Хорошее правило при проектировании представления знаний — организация знаний в такой форме, которая позволяет легко осуществлять доступ с помощью простых и естественных механизмов. Один из способов представления знаний — классификация и помещение фактов и чисел (фрагментов фактического знания) в правила Prolog. Это представление подходит для использования в экспертных системах, базирующихся на правилах. В настоящее время системы, базирующиеся на правилах, наиболее популярны. Они разработаны и используются в широком диапазоне приложений от науки и инженерной работы до бизнеса. Поэтому именно такие системы мы будем подробно рассматривать в этом разделе. 2.10.3 Методы вывода Метод вывода — это систематический способ для доказательства того, что из множества предположений следует некоторое заключение. Этот систематический способ закодирован в правилах вывода, которые специфицируют принятую логику получения заключения. Вывод осуществляется посредством поиска и сопоставления по образцу. При этом механизм вывода инициализирует процесс сопоставления начиная с «верхнего» правила. Обращение к правилу называется его «вызовом»; вызов соответствующих правил в процессе сопоставления продолжается до тех пор, пока не произошло сопоставление или не исчерпана вся база знаний, а сопоставление не найдено. Во втором случае трансформированные запросы являются значениями, которые сопоставляются со значениями, находящимися в базе знаний. Если механизм вывода обнаруживает, что можно вызвать более одного правила, то необходимо осуществить определенный выбор, при этом приоритет обычно отдается либо правилам, которые более специфицированы, либо правилам, которые учитывают больше текущих данных. Этот процесс называется разрешением конфликта. 2.10.4 Система пользовательского интерфейса Система пользовательского интерфейса обеспечивает взаимодействие между экспертной системой и пользователем. Такое взаимодействие обычно включает в себя следующие функции: 1) обработку данных, полученных с клавиатуры, и отображение вводимых и выводимых данных на экране дисплея; 2) поддержку диалога между пользователем и системой; 3) распознавание ситуаций непонимания между пользователем и системой; 4) обеспечение «дружественности» системы по отношению к пользователю. Система пользовательского интерфейса должна эффективно обрабатывать ввод и вывод. Для этого требуется обрабатывать вводимые и выводимые данные быстро, представляя их четко и в наглядной форме. Кроме того, система интерфейса должна поддерживать соответствующий диалог между пользователем и системой. Консультация должна завершаться четким утверждением, выдаваемым системой, и объяснением последовательности вывода, приведшей к этому утверждению. 2.10.5 Экспертная система, базирующаяся на правилах Экспертная система, базирующаяся на правилах (на языке Prolog) содержит множество правил, которые вызываются посредством входных данных в момент сопоставления. Такая экспертная система также содержит интерпретатор в механизме вывода, который выбирает и активизирует различные модули системы. Работу этого интерпретатора можно описать как последовательность трех шагов: 1) интерпретатор сопоставляет образец правила с элементами данных в базе знаний; 2) если можно вызвать более одного правила, то интерпретатор использует механизм разрешения конфликта для выбора правила; 3) интерпретатор применяет выбранное правило, чтобы найти ответ на заданный вопрос. Этот процесс интерпретации является циклическим и называется циклом «распознавание—действие». В системе, базирующейся на правилах, количество продукционных правил определяет размер базы знаний. Некоторые наиболее сложные системы имеют базы знаний из более 5000 продукционных правил. Пример. Построим экспертную систему для идентификации породы собак, которая должна помочь потенциальному хозяину выбрать породу собаки в соответствии с определенными критериями. Предположим, что пользователь сообщил множество характеристик собаки в ответ на вопросы экспертной системы. Интерпретатор работает в цикле «распознавание– действие». Если введенные характеристики сопоставимы с характеристиками какой-либо породы собаки, составляющими часть базы знаний, то вызывается соответствующее продукционное правило и в результате идентифицируется порода, а затем результат сообщается пользователю. Если же порода не идентифицирована, то это тоже сообщается пользователю. /*Декларации базы данных. База данных будет хранить ответы пользователя на вопросы системы пользовательского интерфейса. Эти данные представляют собой ответы "Да" или "Нет". */ database dpos(symbol) dneg(symbol) /*Предикаты для выполнения вывода и для взаимодействия с пользователем */ predicates do_expert do_consult dog_is(symbol) clear_facts prop(symbol) clauses do_expert:- write("Отвечайте на вопросы, выбирая характеристики собаки (y/n)"),nl,nl, do_consult. /*Консультирующее правило do_consult имеет две альтернативные формы. Первая взаимодействует с механизмом вывода: если результат цикла "распознавание—действие" положительный, то результат сообщается пользователю. Вторая форма сообщает об отрицательном результате */ do_consult:-dog_is(X),!, write("Вам подойдет собака породы ", X),nl,readln (_), clear_facts. do_consult:- write("Извините, но мы не можем Вам помочь."),nl, readln (_), clear_facts. /*Механизм вывода*/ /*Правило prop используется для сопоставления данных пользователя с данными в продукционных правилах. Правило также производит добавление предложений с ответами "y" ("да") и "n" ("нет") для использования при сопоставлении с образцом */ prop(X):- dpos(X),!. prop(X):- not(dneg(X)), write ("Устраивает ли Вас характеристика?",X),nl, readln(A), A="y", asserta(dpos(X)). prop(X):- asserta(dneg(X)), fail. clear_facts:- retract(dpos(_)), fail. clear_facts:- retract(dneg(_)), fail. /*Продукционные правила*/ dog_is("Английский бульдог"):- prop("короткая шерсть"), prop("рост 55 см"), prop("низко посажен хвост"), prop("хороший характер"). dog_is("Гончая"):- prop("короткая шерсть"), prop("рост 55 см"), prop("длинные уши"), prop("хороший характер"). dog_is("Дог"):- prop("короткая шерсть"), prop("низко посажен хвост"), prop("хороший характер"), prop("вес 45 кг"). dog_is("Коккер-спаниель"):- prop("длинная шерсть"), prop("рост 55 см"), prop("низко посажен хвост"), prop("длинные уши"), prop("хороший характер"). dog_is("Ирландский сеттер"):- prop("длинная шерсть"), prop("рост 75 см"), prop("длинные уши"). dog_is("Сенбернар"):- prop("длинная шерсть"), prop("низко посажен хвост"), prop("хороший характер"), prop("вес 45 кг"). goal do_expert. Вопросы для самопроверки: 1. Перечислите известные вам основные методологии программирования. 2. Какова основа методологии объектно-ориентированного программирования? 3. В чем состоят отличия методологии функционального программирования? 4. Что такое терм? Приведите примеры термов. 5. Что такое резолюция? В чем состоит основа метода резолюции? 6. Объясните на примере механизм резолюции. 7. Как резолюцию используют для доказательства теорем? 8. Приведите примеры резолюции в языке Prolog. Объясните, что именно делает система языка Prolog с вашей программой. 9. Что такое унификация переменных? 10. Перечислите основные разделы программы на языке Prolog и укажите их назначение. 11. Перечислите отличительные особенности внешних и внутренних целей. 12. Каково назначение метода отката после неудачи? Какой предикат реализует этот метод? 13. Каково назначение метода отсечения и отката? Какой предикат реализует этот метод? 14. Какое правило называют правилом рекурсии? Каков синтаксис записи такого правила? 15. Что такое список в языке Prolog? Какова структура и организация списка? Приведите примеры списков. 16. Что называют «головой» списка, а что — его «хвостом»? 17. Перечислите известные вам операции над списками. Какими предикатами они реализуются? 18. Перечислите предикаты Prolog для работы с файлами. Каково назначение каждого из них? 19. Укажите последовательность действий, необходимых для записи информации в файл. 20. Какая база данных называется динамической? Как описать предикат динамической базы данных? 21. Какова структура экспертной системы, базирующейся на правилах? ГЛАВА 3. НЕЙРОННЫЕ СЕТИ ТЕМА 3.1 ВВЕДЕНИЕ В НЕЙРОННЫЕ СЕТИ Еще одно базовое направление развития искусственного интеллекта основано не на моделировании процесса принятия решения человеком (как в экспертных системах), а на попытке создать нейронную модель мозга. В силу слабой изученности физиологии человеческого мозга адекватность такой модели представляется весьма сомнительной. Тем не менее даже те малые (а возможно, и ошибочные) знания физиологии мозга, которые были получены в 1960-е гг., позволили создать работоспособные нейронные модели. Теория искусственных нейронных сетей (НС) зародилась еще в 1940-х гг., и к 1960-м гг. уже были разработаны однослойные НС (перцептроны), которые в ряде случаев оказались способны обучаться, осуществлять предсказания и распознавать образы. Появилась надежда, что механизм работы мозга «угадан» правильно, и скоро удастся создать настоящий искусственный интеллект, — надо лишь создать (на программном или аппаратном уровне) побольше нейронов. Однако перцептроны хорошо показали себя именно «в ряде случаев», тогда как во многих других, казалось бы, похожих ситуациях они работать почему-то отказывались. Один из «отцов-основателей» теории нейронных сетей, Марвин Минский, используя точные математические методы, доказал, что существует теоретический предел (причем довольно низкий) возможностей однослойных сетей, и они не способны решать многие простые задачи. К тому же он высказал собственное мнение, что нейронные сети перспектив не имеют. Авторитет Минского был настолько велик, а его расчеты — настолько убедительны, что все исследования в этой области повсеместно были свернуты, и в течение почти 20 лет интерес к ним не проявлялся, а энтузиастов-одиночек никто не хотел слушать. Только в 1980-х гг. в этой области произошел прорыв благодаря революционным работам Джона Хопфилда и Тейво Кохонена. Многослойные нейронные сети нового поколения успешно справлялись с задачами, которые были недоступны для персептронов. Началось лавинообразное развитие данного направления; к этому моменту искусственный интеллект уже рассматривался как вполне утилитарная область с достаточно четко очерченными задачами. Элементная база позволила создать мощные нейрокомпьютеры и программные нейропакеты для распознавания образов, прогнозирования и решения ряда других задач, в которых входные данные были неполны, зашумлены и даже противоречивы. Значительное финансирование эти исследования получили даже не столько благодаря широкому внедрению НС-систем в военное дело, сколько из-за их способности делать весьма точные прогнозы в социально-экономической сфере (в бизнесе). Так, современные нейросистемы способны предсказывать колебания курсов валют и акций на достаточном промежутке времени точнее самых опытных брокеров, учитывая при этом массу косвенных параметров — от солнечной активности до политической ситуации в стране. При этом такие системы, как правило, предполагают обязательное наличие доступа в сеть Интернет, что необходимо для обеспечения следующих задач: - получение входных данных для анализа (например, котировок акций в различных системах валют, индексов инфляции, текущих параметров рекламной активности и политической ситуации и множества других); - реализация интерфейса (брокер может работать с большим корпоративным нейрокомпьютером через сеть Интернет); - доступ к базам данных, необходимым для обучения нейросистемы (например, данных о биржевой ситуации за какой-либо прошедший период). Чем большее количество примеров будет представлено системе для обучения, тем более точных прогнозов можно от нее добиться. Эта информация является достаточно дорогой, но существуют базы с данными за десятки лет. Однако подобные нейронные сети имеют и некоторые специфические недостатки. Прежде всего они связаны с недостатками механизмов обучения нейронных сетей. Не вдаваясь в детали, отметим, что все разнообразные механизмы обучения имеют свои слабые места, которые могут привести к неправильной настройке системы. Другой недостаток состоит в том, что нейронные сети не могут объяснять свои действия (процесс получения того или иного решения), что является сильной стороной экспертных систем. Наряду с прогнозированием еще одной очень полезной способностью нейронных сетей, как уже отмечалось, является распознавание образов в условиях зашумленной входной информации. И здесь опять-таки, кроме военного применения (обнаружение, слежение и т. п.), для нейронных сетей существует масса приложений в сфере бизнеса, среди которых можно назвать определение разнообразных рисков и поддержку принятия решений. Последнее в перспективе может оказаться наиболее эффективным при объединении нейронных сетей и экспертных систем в единый комплекс (так же, как правое полушарие головного мозга человека отвечает за первичную обработку входной информации от органов чувств и рефлекторную деятельность, а левое — за логический анализ и принятие решений). При этом первичная обработка нейронной сетью скорее всего потребует наибольших ресурсов. Так, например, с математической точки зрения мозг футболиста в момент удара по мячу производит гораздо больше вычислительных операций, чем мозг шахматиста за всю партию. За утилитарным использованием нейронных сетей собственно моделирование работы мозга отошло на второй план. Здесь продвинуться удалось не так сильно, и успехи в практическом применении мало что доказывают. Даже самые мощные нейрокомпьютеры не сравнимы по своей сложности даже с нервной системой муравья, — куда уж там до человека! Да и, с другой стороны, достижения нейробиологов базируются в основном на изучении морских зайчиков (двустворчатых моллюсков). Работа же человеческого мозга связана с электромагнитной активностью и другими слабо изученными полями, роль которых почти неизвестна. К тому же нейроны отнюдь не однородны и не равноценны даже у того же морского зайчика. Человеческий мозг — это, наверное, самое сложное, что создала природа, и его изучение — долгий и трудный процесс даже на простом физиологическом уровне. Вспомним хотя бы, как долго ученые, а вместе с ними, и все остальные обыватели заблуждались, считая, что нервные клетки «не восстанавливаются». В силу всего этого очень сомнительна популярная идея о том, что если удастся считать всю информацию с мозга человека и перенести ее в компьютер, то мы получим «виртуальную копию личности», которая будет «жить» в машине или в Глобальной сети, даруя бессмертие данному индивиду ... Таким образом, отождествлять искусственный интеллект с мышлением человека можно лишь весьма условно. Пожалуй, самым большим их сходством является способность совершать ошибки. Познание человеком самого себя идет медленнее, чем развитие технологий ИИ, которые стали самостоятельным научным направлением (хотя сама научная терминология сохраняет «человекообразный» стиль — «нечеткая логика», «генетические алгоритмы» и т. д.). В последние несколько лет мы наблюдаем буквально «взрыв» интереса к нейронным сетям, которые успешно применяются в самых различных областях — в бизнесе, медицине, технике, геологии, физике. Нейронные сети вошли в практику везде, где нужно решать задачи прогнозирования, классификации или управления. Такой впечатляющий успех определяется несколькими причинами. Богатые возможности. Нейронные сети — это исключительно мощный метод моделирования, позволяющий воспроизводить чрезвычайно сложные зависимости. В частности, нейронные сети нелинейны по своей природе. На протяжении многих лет линейное моделирование было основным методом моделирования в большинстве областей, поскольку для него хорошо разработаны процедуры оптимизации. В задачах же, где линейная аппроксимация неудовлетворительна (а таких задач достаточно много), линейные модели работают плохо. Кроме того, нейронные сети справляются с «проклятием размерности», которое не позволяет моделировать линейные зависимости в случае большого числа переменных. Простота в использовании. Нейронные сети учатся на примерах. Пользователь нейронной сети подбирает представительные данные, а затем запускает алгоритм обучения, который автоматически воспринимает структуру данных. При этом от пользователя, конечно, требуется какой-то набор эвристических знаний о том, как нужно отбирать и подготавливать данные, выбирать нужную архитектуру сети и интерпретировать результаты, однако уровень знаний, необходимый для успешного применения нейронных сетей, гораздо скромнее, чем, например, при использовании традиционных методов статистики. Нейронные сети привлекательны и с интуитивной точки зрения, поскольку они основаны на примитивной биологической модели нервных систем. В будущем развитие таких нейробиологических моделей может действительно привести к созданию мыслящих компьютеров либо к реализации возможности прямого подключения традиционных компьютеров к мозгу, когда нейросеть выполняет функции некоего «промежуточного звена» для распознавания «мыслей» пользователя (управляющих сигналов) среди снятой с мозга полной энцефалограммы; возможно, такая нейросеть будет «обучаться» взаимодействию с конкретным пользователем («хозяином») еще с младенчества. Нейронные сети возникли из исследований в области искусственного интеллекта, а именно из попыток воспроизвести способность биологических нервных систем обучаться и исправлять ошибки, моделируя низкоуровневую структуру мозга. Основной областью исследований по искусственному интеллекту в 1960 – 1980-е гг. были экспертные системы, которые базировались на высокоуровневом моделировании процесса мышления (в частности, на представлении, что процесс нашего мышления построен на манипуляциях с символами). Однако очень скоро стало ясно, что такие системы хотя и могут принести пользу в некоторых областях, но не охватывают некоторые ключевые аспекты человеческого интеллекта. Согласно одной из распространенных точек зрения, причина в том, что они не в состоянии воспроизвести структуру мозга, а чтобы создать искусственный интеллект, необходимо построить систему с похожей архитектурой. Мозг человека состоит из очень большого числа (приблизительно 10 000 000 000) нейронов, соединенных многочисленными связями (в среднем — несколько тысяч связей на один нейрон, однако это значение может сильно меняться). Нейрон — это специальная клетка, способная распространять электрохимические сигналы. Нейрон имеет разветвленную структуру вводных каналов информации (дендриты), ядро и разветвляющийся выходной канал (аксон). Аксоны такой клетки соединяются с дендритами других нейронов клеток с помощью синапсов. Будучи активированным, нейрон посылает электрохимический сигнал по своему аксону, и через синапсы этот сигнал достигает других нейронов, которые могут, в свою очередь, активироваться. Нейрон активируется, когда суммарный уровень сигналов, пришедших в его ядро из дендритов, превысит определенный уровень (порог активации). Интенсивность сигнала, получаемого нейроном (а, следовательно, и возможность его активации), сильно зависит от активности синапсов. Каждый синапс представляет собой промежуток (синаптическую щель) между аксоном и дендритом, и специальные химические вещества (медиаторы) передают сигнал через этот промежуток. Один из самых авторитетных исследователей нейросистем, Дональд Хебб, сформулировал постулат, что обучение заключается в первую очередь в изменениях «силы» синаптических связей. Например, в классическом опыте Павлова каждый раз непосредственно перед кормлением собаки звонил колокольчик, и собака быстро научилась связывать звонок колокольчика с пищей. Это произошло потому, что синаптические связи между участками коры головного мозга, ответственными за слух, и слюнными железами усилились, так что при возбуждении коры мозга звуком колокольчика у собаки начиналось слюноотделение. Таким образом, будучи построенным из очень большого числа совсем простых элементов (каждый из которых фактически вычисляет взвешенную сумму входных сигналов и если суммарный вход превышает определенный уровень, то передает дальше двоичный сигнал), мозг способен решать чрезвычайно сложные задачи. |