ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 12.01.2024
Просмотров: 293
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
вызывается соответствующее продукционное правило и в результате идентифицируется порода, а затем результат сообщается пользователю. Если же порода не идентифицирована, то это тоже сообщается пользователю.
/*Декларации базы данных. База данных будет хранить ответы пользователя на вопросы системы пользовательского интерфейса. Эти данные представляют собой ответы "Да" или "Нет". */ 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)),
/*Декларации базы данных. База данных будет хранить ответы пользователя на вопросы системы пользовательского интерфейса. Эти данные представляют собой ответы "Да" или "Нет". */ 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.
Какова основа методологии объектно-ориентированного программирования?
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) нейронов, соединенных многочисленными связями (в среднем
— несколько тысяч связей на один нейрон, однако это значение может сильно меняться). Нейрон — это специальная клетка, способная распространять электрохимические сигналы. Нейрон имеет разветвленную структуру вводных каналов информации
(дендриты), ядро и разветвляющийся выходной канал (аксон). Аксоны такой клетки соединяются с дендритами других нейронов клеток с помощью синапсов.
Будучи активированным, нейрон посылает электрохимический сигнал по своему аксону, и через синапсы этот сигнал достигает других нейронов, которые могут, в свою очередь, активироваться. Нейрон активируется, когда суммарный уровень сигналов, пришедших в его ядро из дендритов, превысит определенный уровень (порог активации).
Интенсивность сигнала, получаемого нейроном (а, следовательно, и возможность его активации), сильно зависит от активности синапсов.
Каждый синапс представляет собой промежуток (синаптическую щель) между аксоном и дендритом, и специальные химические вещества
(медиаторы) передают сигнал через этот промежуток. Один из самых авторитетных исследователей нейросистем, Дональд Хебб, сформулировал
постулат, что обучение заключается в первую очередь в изменениях «силы» синаптических связей. Например, в классическом опыте Павлова каждый раз непосредственно перед кормлением собаки звонил колокольчик, и собака быстро научилась связывать звонок колокольчика с пищей. Это произошло потому, что синаптические связи между участками коры головного мозга, ответственными за слух, и слюнными железами усилились, так что при возбуждении коры мозга звуком колокольчика у собаки начиналось слюноотделение.
Таким образом, будучи построенным из очень большого числа совсем простых элементов (каждый из которых фактически вычисляет взвешенную сумму входных сигналов и если суммарный вход превышает определенный уровень, то передает дальше двоичный сигнал), мозг способен решать чрезвычайно сложные задачи.
Таким образом, будучи построенным из очень большого числа совсем простых элементов (каждый из которых фактически вычисляет взвешенную сумму входных сигналов и если суммарный вход превышает определенный уровень, то передает дальше двоичный сигнал), мозг способен решать чрезвычайно сложные задачи.
1 2 3 4 5 6 7 8 9