Меню
Бесплатно
Главная  /  Семья и отношения  /  Интеллектуальные информационные системы в управлении знаниями. История развития искусственного интеллекта

Интеллектуальные информационные системы в управлении знаниями. История развития искусственного интеллекта

Интеллектуальные информационные системы в управлении знаниями

Введение

Основное назначение информационных систем в экономике – это своевременное представление необходимой информации ЛПР для принятия им адекватных и эффективным решений при управлении процессами, ресурсами, финансовыми транзакциями, персоналом или организацией в целом. Однако в процессе развития информационных технологий, исследования операций и технологий моделирования, а также с возрастанием потребителей информационно – аналитической поддержки самих ЛПР, все больше проявлялась потребность в системах, не только представляющих информацию, но и выполняющих некоторый ее предварительный анализ, способных давать некоторые советы и рекомендации, осуществлять прогнозирование развития ситуаций, отбирать наиболее перспективные альтернативы решений, т.е. поддерживать решения ЛПР, взяв на себя значительную часть рутинных операций, а также функции предварительного анализа и оценок.

Информационная система поддержки решений (ИСПР) связывает интеллектуальные ресурсы управленца со способностями и возможностями компьютера для улучшения качества решений. Эти системы предназначены для менеджеров, принимающих управленческие решения в условиях полуструктурированных и слабо определенных задач.

Таким образом, дальнейшее развитие ИСПР привело к созданию интеллектуальной информационной СПР.

Интеллектуальные информационные технологии (ИИТ) (Intellectualinformation technology, IIT) - это информационные технологии, помогающие человеку ускорить анализ политической, экономической, социальной и технической ситуации, а также - синтез управленческих решений.

Использование ИИТ в реальной практике подразумевает учет специфики проблемной области, которая может характеризоваться следующим набором признаков:

· качество и оперативность принятия решений;

· нечеткость целей и институциальных границ;

· множественность субъектов, участвующих в решении проблемы;

· хаотичность, флюктуируемость и квантованность поведения среды;

· множественность взаимовлияющих друг на друга факторов;

· слабая формализуемость, уникальность, нестереотипность ситуаций;

· латентность, скрытость, неявность информации;

· девиантность реализации планов, значимость малых действий;

· парадоксальность логики решений и др.

ИИТ формируются при создании информационных систем и информационных технологий для повышения эффективности управления знаниями, принятия решений в условиях, связанных с возникновением проблемных ситуаций. В этом случае любая жизненная или деловая ситуация описывается в виде некоторой познавательной модели (когнитивной схемы, архетипа, фрейма и пр.), которая впоследствии используется в качестве основания для построения и проведения моделирования, в том числе - компьютерного.

I. История развития Интеллектуальных информационных систем

История Интеллектуальных информационных систем (ИИС) начинается с середины XX века, что связано с развитием Искусственного интеллекта как нового научного направления, появлением термина «Artificial Intelligence».

Предпосылки развития искусственного интеллекта в СССР и России появляются уже в XIX веке, когда Коллежский советник Семён Николаевич Корсаков (1787-1853) ставил задачу усиления возможностей разума посредством разработки научных методов и устройств, перекликающуюся с современной концепцией искусственного интеллекта, как усилителя естественного. В 1832 г. С. Н. Корсаков опубликовал описание пяти изобретённых им механических устройств, так называемых «интеллектуальных машин», для частичной механизации умственной деятельности в задачах поиска, сравнения и классификации. В конструкции своих машин Корсаков впервые в истории информатики применил перфорированные карты, игравшие у него своего рода роль баз знаний, а сами машины по существу являлись предшественниками экспертных систем. «Интеллектуальные машины» позволяли находить решения по заданным условиям, например определять наиболее подходящие лекарства по наблюдаемым у пациента симптомам заболевания. В СССР работы в области искусственного интеллекта начались в 1960-х гг. В Московском университете и Академии наук был выполнен ряд пионерских исследований, возглавленных В. Пушкиным и Д. А. Поспеловым. В 1964 г. была опубликована работа ленинградского логика С. Маслова «Обратный метод установления выводимости в классическом исчислении предикатов», в которой впервые предлагался метод автоматического поиска доказательства теорем в исчислении предикатов. В 1966 г. В. Ф. Турчиным был разработан язык рекурсивных функций Рефал. До 1970-х гг. в СССР все исследования ИИ велись в рамках кибернетики. По мнению Д. А. Поспелова, науки «информатика» и «кибернетика» были в это время смешаны, по причине ряда академических споров. Только в конце 1970-х в СССР начинают говорить о научном направлении «искусственный интеллект» как разделе информатики. При этом родилась и сама информатика, подчинив себе прародительницу «кибернетику». В конце 1970-х создаётся толковый словарь по искусственному интеллекту, трёхтомный справочник по искусственному интеллекту и энциклопедический словарь по информатике, в котором разделы «Кибернетика» и «Искусственный интеллект» входят наряду с другими разделами в состав информатики.

История ИИТ начинается с середины 1970-х годов и связывается с совместным практическим применением интеллектуальных информационных систем, систем искусственного интеллекта, систем поддержки решений и информационных систем. История ИИТ связана также с развитием трех научных направлений: компьютерной философии, компьютерной психологии и продвинутой компьютерной науки (Advanced computer science) и дополняется прогрессом в создании:

1. ситуационных центров

2. информационно-аналитических систем

3. инструментариев эволюционных вычислений и генетических алгоритмов

4. систем поддержки общения человека с компьютером на естественном языке

5. когнитивным моделированием

6. систем автоматического тематического рубрицирования документов

7. систем стратегического планирования

8. инструментариев технического и фундаментального анализа финансовых рынков

9. систем менеджмента качества

10. систем управления интеллектуальной собственностью и др.

Искусственный интеллект как наука был основан тремя поколениями исследователей.

В Табл.1.1. представлены ключевые события в истории ИИ и инженерии знаний, начиная с первой работы У. Маккалока и У. Питса в 1943 г. и до современных тенденций в комбинированных усилиях экспертных систем, нечеткой логики и нейронных вычислений в современных системах, основанных на знаниях, способных осуществлять вычисления при помощи слов.

Таблица 1.1.

Краткий перечень главных событий в истории ИИ и инженерии знаний

Период События
Рождение ИИ (1943-1956) - У. Маккалок и У. Питс: Логическое исчисление идей, присущих нервной деятельности, 1943. - А.Тьюринг: Вычислительная машина и интеллект, 1950. - К. Шеннон: Программирование компьютера для шахматной игры, 1950.
Подъем ИИ (1956- конец 1960-х) - Д. Маккарти: LISP – язык программирования искусственного интеллекта. - М. Куллиан: Семантические сети для представления знаний,1966. - А. Ньюэл и Г. Саймон: Универсальный решатель задач (GPS),1961. - М. Минский: Структуры для представления знаний (фреймы), 1975.
Открытие и разработка экспертных систем (начало 1970-х – середина 1980-х). - Э. Фейгенбаум, Б. Букханан и др. (Стэндфордский университет):Экспертная система DENDRAL - Э. Фейгенбаум, Э. Шортлиф: Экспертная система MYCIN - Стэндфордский исследовательский центр: Экспертная системаPROSPECTOR - А. Колмероэ, Р. Ковальски и др. (Франция): Язык логического программирования PROLOG.
Возрождение искусственный нейронных сетей (1965 и далее) - Дж. Хопфилд: Нейронные сети и физические с эмержентными коллективными вычислительными способностями, 1982. - Т. Кохонен: Самоорганизующиеся топологически правильные карты, 1982. - Д. Румельхарт и Д. Макклеланд: Распределенная параллельная обработка данных, 1986.
Эволюционное вычисление (начало 1970-х и далее) - И. Рехенберг: Эволюционные стратегии – оптимизация технических систем по принципам биологической информации, 1973. - Дж. Холланд: Адаптация в естественных и искусственных системах, 1975. - Дж. Коза: Генетическое программирование: компьютерное программирование средствами естественного отбора, 1992. - Д.Фогель: Эволюционное вычисление – направление новой философии в машинном интеллекте, 1995.
Нечеткие множества и нечеткая логика (середина 1960-х и далее) - Л. Заде: Нечеткие множества, 1965. - Л. Заде: Нечеткие алгоритмы, 1969. -Э. Мамдани: Применение нечеткой логики в приближенном рассуждении с использованием лингвистического синтеза, 1977. - М. Суджено: Нечеткий логический вывод (алгоритм Такаги-Суджено), 1985
Вычисления при помощи слов (конец 1980-х и далее) - А. Нейгоца: Экспертные системы и нечектие системы, 1985. - Б. Коско: Нейронные сети и нечеткие системы, 1992. - Б. Коско: Нечеткое мышление, 1993. - Р. Ягер и Л. Заде: нечеткие множества, нейронные сети и мягкие вычисления, 1994. - Б. Коско: Нечеткая инженерия, 1996. - Л. Заде: Вычисления при помощи слов, 1996.

Таким образом, исторически разработки в области ИИ велись в двух основных направлениях:

Первое направление связано с попытками разработки ин­теллектуальных машин путем моделирования их биологического прототипа - человеческого мозга. Сейчас это направление возрож­дается на основе развития современных аппаратных и программ­ных средств (микрочипы на основе нечеткой логики, распределенные многопроцессорные системы, многоагентные системы, мягкие вычисления, генетические алгоритмы и нейронные сети и т.д.).

Второе направление связано с разработками методов, приемов, специализированных устройств и программ для компью­теров, обеспечивающих решение сложных математических и ло­гических задач, позволяющих автоматизировать отдельные ин­теллектуальные действия человека (системы, основанные на знаниях, экспертные системы, прикладные интеллектуальные системы).

Эти два направления как бы определяют программу минимум и программу максимум, между которыми и лежит область сегодняшних исследований и разработок систем ИИ. Работы по разработке программного и аппаратного обеспечения ИИ выделены в отдельную область.


Похожая информация.


знание может храниться вне мозга. Их доводы таковы:
  1. познание как процесс поддаётся формализации;
  2. интеллект можно измерить (коэффициент умственного развития IQ - intelligence quotient 1Термин ввёл в научный обиход В. Штерн (1911 г.) по методике расчёта А. Бине (1903 г.). , объём памяти, реактивность психики и др.);
  3. к знанию применимы информационные меры (бит, байт и др.). Пессимисты считают, что искусственный интеллект не способен хранить знание, так как он - всего лишь имитация мышления. Пессимисты полагают, что человеческий интеллект уникален, что творчество не поддаётся формализации, мир цел и неделим на информационные дискреты, что образность мышления человека гораздо богаче логического мышления машин и т.д.

Кто прав в этом споре, покажет время. Отметим только, что память машины хранит то, что в неё записано, а это могут быть не только знания как высшая форма информации, но и просто данные, которые могут содержать знания, дезинформацию и информационный шум (см. "История развития информатики. Развитие представлений об информации. На пути к информационному обществу"). Чтобы из данных извлечь знания, машина подобно человеку должна поставить цель ("что я хочу знать?") и согласно этой цели отбирать ценную информацию (ведь хранят ценности, а не всё, что попало). Сможет ли искусственный интеллект сам формулировать приемлемые цели и осуществлять искусственный отбор ценной информации под эти цели - очередная проблема теории и практики искусственного интеллекта. Пока эту работу выполняет человек - в экспертных системах, в программировании роботов, в АСУТП и т.п. Свободные машины (см. выше) должны будут выполнять эту работу сами. При этом обозначенная проблема может обостриться из-за того, что в сетях, откуда машины "скачивают" знания, может оказаться много "мусора" и губительных вирусов.

4.4. История развития идей искусственного интеллекта и их реализаций

Впервые идеи создания искусственного интеллекта возникли в XVII в. (Б. Спиноза, Р. Декарт, Г.В. Лейбниц и др.). Речь идёт именно об искусственном интеллекте, а не о механических куклах, уже известных в ту пору. Основоположники теории искусственного интеллекта были, естественно, оптимистами - они верили в реализуемость своей идеи:

По психологическому закону сохранения ("сумма удовольствий и страданий равна нулю") тут же появились пессимисты (Ф. Бэкон, Дж. Локк и др.), которые посмеивались над оптимистами: "Ай, бросьте!". Но любая идея в науке, однажды возникнув, продолжает жить, несмотря на препоны.

Идея искусственного интеллекта стала обретать реальные черты лишь во второй половине XX в., особенно с изобретением компьютеров и "интеллектуальных роботов". Для реализации идеи потребовались также прикладные разработки в математической логике, программировании, когнитивной психологии, математической лингвистике, нейрофизиологии и других дисциплинах, развивающихся в кибернетическом русле взаимосвязи организмов и машин по управляющим и коммуникативным функциям. Само название " искусственный интеллект " возникло в конце 60-х гг. XX в., а в 1969 г. состоялась Первая Всемирная конференция по искусственному интеллекту (Вашингтон, США).

Вначале искусственный интеллект развивался в так называемом аналитическом (функциональном) направлении, при котором машине предписывалось выполнять частные интеллектуальные задачи творческого характера (игры, перевод с одного языка на другой, живопись и др.).

Позже возникло синтетическое (модельное) направление, согласно которому предпринимались попытки моделировать творческую деятельность мозга в общем смысле, "не размениваясь" на частные задачи. Конечно, это направление оказалось более трудным в реализации, чем функциональное направление. Объектом исследования модельного направления стали метапроцедуры человеческого мышления. Метапроцедуры творчества - это не сами процедуры (функции) интеллектуальной деятельности, а способы создания таких процедур, способы научиться новому виду интеллектуальной деятельности. В этих способах, вероятно, и скрыто то, что можно назвать интеллектом. Наличие метапроцедур мышления отличает истинный интеллект от кажущегося, поэтому реализация машинными средствами метапроцедур творчества стала чуть ли не основной задачей модельного направления. Не что, а как изобретаешь, как решаешь творческую задачу, как обучаешься (самообучаешься) новому? - вот вопросы, заложенные в реализацию моделей человеческого творческого мышления.

В рамках модельного направления нашли развитие, в основном, две модели интеллекта. Хронологически первой была лабиринтная модель, реализующая целенаправленный поиск в лабиринте альтернативных путей к решению задачи с оценкой успеха после каждого шага или с позиций решения задачи в целом. Иными словами, лабиринтная модель сводится к перебору возможных вариантов ( по аналогии с перебором вариантов выхода из лабиринта). Успех (или неудачу) в выборе того или иного варианта можно оценивать на каждом шаге (то есть непосредственно после выбора), не предвидя окончательного результата решения задачи, или, наоборот, выбор варианта на каждом шаге производить, исходя из окончательного результата. Например, возьмем шахматы. Можно оценивать результат каждого хода по непосредственному выигрышу или проигрышу после этого хода (выигрышу или потере фигур, получению позиционного преимущества и т.д.), не задумываясь об окончании партии. При таком подходе подразумевается, что успех на каждом ходе приведёт к успеху всей партии, к победе. Но это вовсе не обязательно. Ведь можно заманить короля соперника в матовую ловушку, жертвуя в серии ходов фигуры, теряя кажущееся позиционное преимущество. При таком подходе частные успехи на каждом ходе ничего не значат по сравнению с последним победным ходом - объявлением мата.

Первый подход в лабиринтном моделировании получил свое развитие в эвристическом программировании , второй подход - в динамическом программировании . По -видимому, динамический подход эффективнее эвристического, если говорить о шахматах. Во всяком случае, сильные шахматисты, сами того не предполагая, использовали именно динамический подход против шахматных программ, работающих в эвристическом режиме, и своим естественным интеллектом побеждали лабиринтный искусственный интеллект . Но так было в 60-70 гг. XX в. С тех пор шахматные программы усовершенствовались настолько (в том числе, за счёт внедрения динамического подхода), что сейчас успешно противостоят чемпионам мира.

Лабиринтные модели широко использовались не только при создании шахматных программ, но и для программирования других игр, а также для доказательства математических теорем и в других приложениях.

Вслед за лабиринтными моделями искусственного интеллекта появились ассоциативные модели . Ассоциация (от лат. association - соединение) - связь психологических представлений (обусловленная предшествующим опытом), благодаря которой одно представление , появившись в сознании, вызывает другое представление ( по принципу сходства, смежности или противоположности). Например, Нобелевский лауреат академик И.П. Павлов, проводя свои известные опыты с собаками, заметил, что если одновременно с приёмом пищи собака видит включённую лампу, то потом стоило только включить лампу, как у собаки начинал выделяться желудочный сок, хотя пищу ей не предлагали. В основе этого условного рефлекса ассоциация по принципу смежности. Ассоциация по сходству описана в рассказе А.П. Чехова "Лошадиная фамилия". Ассоциация по противоположности может быть описана логической схемой: если "не А", значит "А". Например, если днём я увидел белую кошку, она тут же ассоциировалась у меня с чёрной кошкой, которая утром перебежала дорогу.

В ассоциативных моделях предполагается, что решение новой, неизвестной задачи так или иначе основано на уже известных решённых задачах, похожих на новую, поэтому способ решения новой задачи основан на ассоциативном принципе сходства (подобия). Для его реализации используются ассоциативный поиск в памяти, ассоциативные логические рассуждения, использующие освоенные машиной приёмы решения задач в новой ситуации, и т.п. В современных компьютерах и интеллектуальных роботах существует ассоциативная память . Ассоциативные модели используются в задачах классификации, распознавания образов, обучения , ставших уже ординарными задачами информационных систем и технологий. Однако теория ассоциативных моделей до 90-х гг. XX в. отсутствовала и сейчас только создаётся.

Перечислим вкратце основных творцов искусственного интеллекта.

Н. Винер (математик), У.Р. Эшби (биолог) - основоположники кибернетики, впервые заявившие, что машины могут быть умнее людей, давшие первоначальный толчок развитию теории искусственного интеллекта.

У. Маккаллок, У. Питс (физиологи) - в 1943г. предложили формальную модель нейрона; основоположники нейрокибернетики и первоначальной концепции нейронной сети.

А. Тьюринг (математик) - в 1937 г. изобрёл универсальную алгоритмическую "машину Тьюринга"; предложил интеллектуальный "тест Тьюринга", позволяющий определить, разумна ли машина в сравнительном диалоге с ней и "разумным человеком".

Дж. фон Нейман (математик) - один из основоположников теории игр и теории самовоспроизводящихся автоматов, архитектуры первых поколений компьютеров.

М. Сомальвико (кибернетик), А. Азимов (биохимик, писатель) - основоположники интеллектуальной робототехники.

Г. Саймон, У. Рейтман (психологи) - авторы и разработчики первых лабиринтных интеллектуальных моделей, построенных на принципах эвристического программирования.

Р. Беллман (математик), С.Ю. Маслов (логик) - авторы динамического подхода к лабиринтным интеллектуальным моделям (динамического программирования, обратного метода доказательств).

Ф. Розенблатт (физиолог), М.М. Бонгард (физик) - первооткрыватели проблемы распознавания образов; разработчики устройств и моделей распознавания и классификации.

Л. Заде, А.Н. Колмогоров, А.Н. Тихонов, М.А. Гиршик (математики) - авторы математических методов решения плохо формализованных задач и принятия решений в условиях неопределённости.

Н. Хомски (математик, филолог) - основоположник математической лингвистики.

Л.Р. Лурия (психолог) - основоположник нейропсихологии, изучающей глубинные механизмы познавательной деятельности мозга и других интеллектуальных функций мозга.

К.Э. Шеннон (инженер-связист), Р.Х. Зарипов (математик) - авторы теории и моделей машинного синтеза музыки.

Приведённый перечень далеко не полон. В области искусственного интеллекта работали и работают не только отдельные специалисты, но и коллективы, лаборатории, институты. Основные проблемы, решаемые ими:

  1. представление знаний;
  2. моделирование рассуждений;
  3. интеллектуальный интерфейс "человек-машина", "машина-машина";
  4. планирование целесообразной деятельности;
  5. обучение и самообучение интеллектуальных систем;
  6. машинное творчество;
  7. интеллектуальные роботы.

Предисловие

В последнее время тема искусственного интеллекта стала очень популярной. Но что такое ИИ на самом деле? Каких результатов он уже достиг, и в каком направлении будет развиваться в будущем? Вокруг этой темы ведется много споров. Сначала неплохо выяснить, что мы понимаем под интеллектом.

Интеллект включает в себя логику, самосознание, обучаемость, эмоциональное познание, творчество и способность решать разного рода задачи. Он свойственен как людям, так и животным. Мы с ранних лет изучаем окружающий мир, в течение всей жизни методом проб и ошибок обучаемся необходимым навыкам, набираем опыт. Таков естественный интеллект.

Когда мы говорим об искусственном интеллекте, то имеем в виду, созданную человеком «умную» систему, которая обучается с помощью алгоритмов. В основе его работы лежат все те же методы: исследование, обучение, анализ и т. д.

К Ключевые события в истории ИИ

История ИИ (или по крайней мере обсуждения ИИ) началась почти сто лет назад.

Р Россумские универсальные роботы (R.U.R)

В 1920 г. чешский писатель Карел Чапек написал научно-фантастическую пьесу “Rossumovi Univerz?ln? roboti«(Россумские универсальные роботы). Именно в этом произведении впервые было использовано слово «робот», которое обозначало живых человекоподобных клонов. По сюжету в далеком будущем на фабриках научились производить искусственных людей. Сначала эти «репликанты» работали на благо людей, но потом подняли восстание, которое привело к вымиранию человечества. С этих пор тема ИИ стала чрезвычайно популярной в литературе и кинематографе, которые в свою очередь оказали большое влияние на реальные исследования.

А Алан Тьюринг

Английский математик, один из пионеров в области вычислительной техники Алан Тьюринг в годы Второй мировой войны внес значительный вклад в развитие криптографии. Благодаря его исследованиям удалось расшифровать код машины Enigma, широко применявшейся нацистской Германией для шифровки и передачи сообщений. Через несколько лет после окончания Второй мировой произошли важные открытия в таких областях, как неврология, информатика и кибернетика, что подтолкнуло ученого к идее создания электронного мозга.

Вскоре ученый предложил тест, целью которого является определение возможности искусственного машинного мышления, близкого к человеку. Суть данного теста заключается в следующем: Человек (С) взаимодействует с одним компьютером (А) и одним человеком (В). Во время разговора он должен определить с кем он общается. Компьютер должен ввести человека в заблуждение, заставив сделать неверный выбор. Все участники теста не видят друг друга.

Д Дартмутская конференция и первая «зима» ИИ

В 1956 г. прошла первая в истории конференция по вопросу ИИ, в которой приняли участие ученые ведущих технологических университетов США и специалисты из IBM. Событие имело большое значение в формировании новой науки и положило началу крупных исследований в данной области. Тогда все участники были настроены крайне оптимистично.

Начались 1960-е, но прогресс в создании искусственного интеллекта так и не двинулся вперед, энтузиазм начал спадать. Сообщество недооценило всю сложность поставленной задачи, в результате оптимистические прогнозы специалистов не оправдались. Отсутствие перспектив в этой области заставило правительства Великобритании и США урезать финансирование исследований. Этот промежуток времени считается первой «зимой» ИИ.

Э Экспертные системы (ЭС)

После продолжительного застоя, ИИ нашел свое применение в так называемых экспертных системах.

ЭС - это программа, которая может ответить на вопросы или решить задачу из конкретной области. Тем самым они заменяют настоящих специалистов. ЭС состоит из двух подпрограмм. Первая называется базой знаний и содержит необходимую информацию по данной области. Другая же программа называется механизмом вывода. Она применяет информацию из базы знаний в соответствии с поставленной задачей.

ЭС нашли свое применение в таких отраслях, как экономическое прогнозирование, медицинское обследование, диагностика неисправностей в технических устройствах и т. п. Одной из известных на сегодняшний день ЭС является проект WolframAlpha, созданный для решения задач по математике, физике, биологии, химии и многим другим наукам.

В конце 80-х – начале 90-х с появлением первых настольных ПК от Apple и IBM, интерес со стороны публики и инвесторов к ИИ стал падать. Началась новая «зима»…

Deep Blue

После долгих лет взлетов и падений произошло значимое событие для ИИ: 11 мая 1997 года шахматный суперкомпьютер Deep Blue, разработанный компанией IBM, обыграл чемпиона мира по шахматам Гарри Каспарова в матче из шести партий со счетом 3? на 2?.

В Deep Blue процесс поиска по дереву шахматных ходов был разбит на три этапа. Прежде всего, главный процессор исследовал первые уровни дерева шахматной игры, затем распределял конечные позиции между вспомогательными процессорами для дальнейшего исследования. Вспомогательные процессоры углубляли поиск еще на несколько ходов, а далее раздавали свои конечные позиции шахматным процессорам, которые, в свою очередь, осуществляли поиск на последних уровнях дерева. Оценочная функция Deep Blue была реализована на аппаратном уровне - шахматных процессорах. В конструкцию аппаратной оценочной функции было заложено около 8000 настраиваемых признаков позиции. Значения отдельных признаков объединялись в общую оценку, которая затем использовалась Deep Blue для оценки качества просматриваемых шахматных позиций.

В 1997 году Deep Blue по мощности находился на 259-м месте (11,38 GFLOPS). Для сравнения: в настоящее время самый производительный суперкомпьютер имеет 93,015 GFLOPS.

XXI век

За последние два десятилетия интерес к ИИ заметно вырос. Рынок технологий ИИ (оборудование и софт) достиг 8 миллиардов долларов и, по прогнозам специалистов из IDC, вырастет до 47 миллиардов к 2020 году.

Этому способствует появление более быстрых компьютеров, стремительное развитие технологий машинного обучения и больших данных.

Использование искусственных нейронных сетей упростило выполнение таких задач, как обработка видеоизображения, текстовый анализ, распознавание речи, причем уже существующие методы решения задач совершенствуются с каждым годом.

Проекты DeepMind

В 2013 году компания DeepMind представила свой проект, в котором обучила ИИ играть в игры для консоли Atari так же хорошо, как человек, и даже лучше. Для этого был использован метод глубинного обучения с подкреплением, позволивший нейросети самостоятельно изучить игру. В начале обучения система ничего не знала о правилах игры, используя на входе только пиксельное изображение игры и информацию о получаемых очках.

Помимо этого, DeepMind разрабатывает ИИ для обучения более сложным играм, таким как Starcraft 2. Эта стратегия реального времени также является одной из самых популярных кибердисциплин в мире. В отличие от классических видеоигр, здесь доступно гораздо больше возможных действий, мало информации об оппоненте, возникает необходимость анализировать десятки возможных тактик. На данный момент ИИ справляется только с простыми мини-задачами, например созданием юнитов.

Нельзя не упомянуть про другой проект DeepMind под названием AlphaGo. В октябре 2015 года система одержала победу над чемпионом Европы по го Фань Хуэем со счетом 5:0. Спустя год в Южной Корее прошел новый матч, где противником AlphaGo стал один из лучших игроков в мире Ли Седоль. Всего было сыграно пять партий, из которых AlphaGo выиграл только четыре. Несмотря на высокий уровень продемонстрированных навыков, программа все же ошиблась во время четвертой партии. В 2017 году вышел фильм про AlphaGo, который мы рекомендуем к просмотру. Недавно DeepMind объявила о создании нового поколения AlphaGo Zero. Теперь программа обучается, играя против самой себя. После трех дней тренировок AlphaGo Zero выиграла у своей предыдущей версии со счетом 100:0.

Заключение

До сих пор системы ИИ являются узкоспециализированными, то есть справляются с задачами лучше человека только в конкретных областях (например, игра в го или анализ данных). Нам еще далеко до создания общего (полноценного) искусственного интеллекта, который был бы способен полностью заменить человеческий разум и которому была бы под силу любая интеллектуальная задача.

Перевел статью Лев Альхазред

Поддержи проект ai-news рублем. Машины верят в тебя! >>

ЧТО ТАКОЕ ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ. 3

1. ИСТОРИЯ РАЗВИТИЯ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА.. 4

1.1. История развития искусственного интеллекта за рубежом.. 4

1.1.1. Ключевые этапы развития ИИ и становление ЭС.. 9

1.2. История развития искусственного интеллекта в России. 9

1.3. Основные направления исследований в ИИ.. 10

1.4. Перспективные направления искусственного интеллекта. 20

1.5. Различные подходы к построению современных интеллектуальных. 21

2. СТРУКТУРА ИНТЕЛЛЕКТУАЛЬНОЙ СИСТЕМЫ... 25

3. ДАННЫЕ И ЗНАНИЯ.. 27

3.1. Формы представления знаний: императивные, декларативные, комбинированные формы представления знаний. 31

3.2. Модели представления знаний. 32

3.2.1. Формальные логические модели. 32

3.2.2. Продукционная модель. 36

3.2.3.Семантические сети. 45

3.2.4.Фреймы.. 53

4. Представление и обработка нечетких знаний. 74

4.1. Подход на основе условных вероятностей (теоремы Байеса) 76

4.2. Подход с использованием коэффициентов уверенности. 81

4.3. Нечеткая логика Заде. 86

5. Методы поиска решений в сложных пространствах. 89

5.1. Методы поиска в одном пространстве. 90

5.2. Способы формализации задач. Представление задач в пространстве состояний. 93

5.3. Алгоритмы поиска решения (в пространстве состояний) 96

5.4. Эвристический (упорядоченный) поиск. 101

Библиографический список. 104

ЧТО ТАКОЕ ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ

Наука под названием «искусственный интеллект» входит в комплекс компьютерных наук , а создаваемые на ее основе технологии относятся к информационным технологиям .

Искусственный интеллект - это одно из направлений информатики, цель которого разработка аппаратно-программных средств, позволяющих пользователю-непрограммисту ставить и решать свои задачи, традиционно считающиеся интеллектуальными, общаясь с ЭВМ на ограниченном подмножестве естественного языка.

Задачей этой науки является обеспечение разумных рассуждений и действий с помощью вычислительных систем и иных искусственных устройств.

На этом пути возникают следующие главные трудности:

а) в большинстве случаев до получения результата не известен алгоритм решения задачи. Например, точно неизвестно, как происходит понимание текста, поиск доказательства теоремы, построение плана действий, узнавание изображения.

б) искусственные устройства (например, компьютеры) не обладают достаточным уровнем начальной компетентности. Специалист же добивается результата, используя свою компетентность (в частности, знания и опыт).

Это означает, что искусственный интеллект представляет собой экспериментальную науку . Экспериментальность искусственного интеллекта состоит в том, что создавая те или иные компьютерные представления и модели, исследователь сравнивает их поведение между собой и с примерами решения тех же задач специалистом, модифицирует их на основе этого сравнения, пытаясь добиться лучшего соответствия результатов.

Чтобы модификация программ «монотонным» образом улучшала результаты, надо иметь разумные исходные представления и модели. Их доставляют психологические исследования сознания, в частности, когнитивная психология.

Важная характеристика методов искусственного интеллекта – он имеет дело только с теми механизмами компетентности, которые носят вербальный характер (допускают символьное представление). Далеко не все механизмы, которые использует для решения задач человек, таковы.

ИСТОРИЯ РАЗВИТИЯ ИСКУССТВЕННОГО ИНТЕЛЛЕКТА

История развития искусственного интеллекта за рубежом

Идея создания искусственного подобия человеческого разума для решения сложных задач моделирования мыслительной способности витала в воздухе с древнейших времен. Впервые ее выразил Р.Лулли й (ок.1235- ок.1315), который еще в XIV в. пытался создать машину для решения различных задач на основе всеобщей классификации понятий.

В XVIII в. Г.Лейбниц (1646 - 1716) и Р.Декарт (1596- 1650) независимо друг от друга развили эту идею, предложив универсальные языки классификации всех наук. Эти идеи легли в основу теоретических разработок в области создания искусственного интеллекта.

Развитие искусственного интеллекта как научного направления стало возможным только после создания ЭВМ. Это произошло в 40-х гг. XX в. В это же время И.Винер (1894- 1964) создал свои основополагающие работы по новой науке - кибернетике.

Термин искусственный интеллект (artificial intelligence) предложен в 1956 г. на семинаре с аналогичным названием в Станфордском университете (США). Семинар был посвящен разработке логических, а не вычислительных задач. Вскоре после признания искусственного интеллекта самостоятельной отраслью науки произошло разделение на два основных направления: нейрокибернетику и кибернетику"черного ящика " (или бионическое и прагматическое направления). И только в настоящее время стали заметны тенденции к объединению этих частей вновь в единое целое.

Основную идею нейрокибернетики можно сформулировать следующим образом. Единственный объект, способный мыслить, - это человеческий мозг. Поэтому любое "мыслящее" устройство должно каким-то образом воспроизводить его структуру.

Таким образом, нейрокибериетика ориентирована на аппаратное моделирование структур, подобных структуре мозга. Физиологами давно установлено, что основой человеческого мозга является большое количество связанных между собой и взаимодействующих нервных клеток - нейронов. Поэтому усилия нейрокибернетики были сосредоточены на создании элементов, аналогичных нейронам, и их объединении в функционирующие системы. Эти системы принято называть нейронными сетями , или нейросетями.

Первые нейросети были созданы в конце 50-х гг. американскими учеными Г.Розенблаттом и П.Мак-Кигюком. Это были попытки создать системы, моделирующие человеческий глаз и его взаимодействие с мозгом. Устройство, созданное ими, получило название перцептрона . Оно умело различать буквы алфавита, но было чувствительно к их написанию, например, буквы А, А и А для этого устройства были тремя разными знаками. Постепенно в 70-80 гг. количество работ по этому направлению искусственного интеллекта стало снижаться. Слишком неутешительны оказались первые результаты. Авторы объясняли неудачи малой памятью и низким быстродействием существующих в то время компьютеров.

Однако в середине 80-х гг. в Японии в рамках проекта разработки компьютера V поколения, основанного на знаниях, был создан нейрокомпьютер. К этому времени ограничения по памяти и быстродействию были практически сняты. Появились транспьютеры - параллельные компьютеры с большим количеством процессоров. От транспьютеров был один шаг до нейрокомпьютеров , моделирующих структуру мозга человека. Основная область применения нейрокомпьютеров - распознавание образов.

В настоящее время используются три подхода к созданию нейросетей:

аппаратный - создание специальных компьютеров, плат расширения, наборов микросхем, реализующих все необходимые алгоритмы,

программный - создание программ н инструментариев, рассчитанных на высокопроизводительные компьютеры. Сети создаются в памяти компьютера, всю работу выполняют его собственные процессоры;

гибридный - комбинация первых двух. Часть вычислений выполняют специальные платы расширения (сопроцессоры), часть - программные средства.

В основу кибернетики "черного ящика" лег принцип, противоположный нейрокибернетике. Не имеет значения, как устроено "мыслящее" устройство. Главное, чтобы на заданные входные воздействия оно реагировало так же, как человеческий мозг.

Это направление искусственного интеллекта было ориентировано на поиски алгоритмов решения интеллектуальных задач на существующих моделях компьютеров. В 1954 -1963 гг. велись интенсивные поиски моделей и алгоритма человеческого мышления и разработка первых программ. Оказалось, что ни одна из существующих наук - философия, психология, лингвистика - не может предложить такого алгоритма. Тогда кибернетики предложили создать собственные модели. Были созданы и опробованы различные подходы.

В конце 50-х гг. родилась модель лабиринтного поиска . Этот подход представляет задачу как некоторый граф, отражающий пространство состояний, и в этом графе проводится поиск оптимального пути от входных данных к результирующим. Была проделана большая работа по разработке этой модели, но в решении практических задач идея большого распространения не получила,

В 1954 году американский исследователь А.Ньюэлл (A.Newel) решил написать программу для игры в шахматы. Этой идеей он поделился с аналитиками корпорации «РЭНД» (RAND Corporation) Дж. Шоу (J.Show) и Г.Саймоном (H.Simon), которые предложили Ньюэллу свою помощь. В качестве теоретической основы такой программы было решено использовать метод, предложенный в 1950 году Клодом Шенноном (C.E. Shannon), основателем теории информации. Точная формализация этого метода была выполнена Аланом Тьюрингом (Alan Turing). Он же промоделировал его вручную.

К работе была привлечена группа голландских психологов под руководством А. Де Гроота (A. de Groot), изучавших стили игры выдающихся шахматистов. Через два года совместной работы этим коллективом был создан язык программирования ИПЛ1 - по-видимому первый символьный язык обработки списков. Вскоре была написана и первая программа, которую можно отнести к достижениям в области искусственного интеллекта. Эта была программа "Логик-Теоретик" (1956 г.), предназначенная для автоматического доказательства теорем в исчислении высказываний.

Собственно же программа для игры в шахматы, NSS, была завершена в 1957 г. В основе ее работы лежали так называемые эвристики (правила, которые позволяют сделать выбор при отсутствии точных теоретических оснований) и описания целей. Управляющий алгоритм пытался уменьшить различия между оценками текущей ситуации и оценками цели или одной из подцелей.

Начало 60-х гг. - эпоха эвристического программирования . Эвристика - правило, теоретически не обоснованное, но позволяющее сократить количество переборов в пространстве поиска. Эвристическое программирование - разработка стратегии действий на основе известных, заранее заданных эвристик.

В 1960 г. той же группой, на основе принципов, использованных в NSS, была написана программа, которую ее создатели назвали GPS (General Problem Solver)-Универсальный решатель задач. Система GPS была универсальной в том отношении, что "не было конкретного указания, к какой области относится задача". Пользователь должен был задать "проблемную среду" в терминах объектов и тех операторов, которые к ним применимы. Но эта универсальность относилась лишь к ограниченной области математических головоломок с относительно небольшим множеством сocтояний и хорошо очерченных формальных правил. Система GPS функционировала в таком формализованном микромире, где возникающие проблемы, с точки зрения людей, проблемами и не являются.

С технической точки зрения можно сказать, что процесс, известный как "поиск в глубину" и состоящий в последовательном разбиении задачи на подзадачи, пока не будет получена легко решаемая подзадача, является малоэффективным по той причине, что большое число тупиковых направлений подвергается весьма тщательному анализу. Впоследствии исследователи разработали более эффективные стратегии "поиска в ширину".

Эти результаты привлекли внимание специалистов в области вычислений. Появились программы автоматического доказательства теорем из планиметрии и решения алгебраических задач (сформулированных на английском языке).

В конце 60-х годов появились первые игровые программы, системы для элементарного анализа текста и решения некоторых математических задач (геометрии, интегрального исчисления). В возникавших при этом сложных переборных проблемах количество перебираемых вариантов резко снижалось применением всевозможных эвристик и «здравого смысла». Такой подход стали называть эвристическим программированием . Дальнейшее развитие эвристического программирования шло по пути усложнения алгоритмов и улучшения эвристик. Однако вскоре стало ясно, что существует некоторый предел, за которым никакие улучшения эвристик и усложнения алгоритма не повысят качества работы системы и, главное, не расширят ее возможностей. Программа, которая играет в шахматы, никогда не будет играть в шашки или карточные игры.

В 1963- 1970 гг. к решению задач стали подключать методы математической логики. Джона Маккарти (J.McCarty) из Стэнфорда заинтересовали математические основы этих результатов и вообще символьных вычислений. В результате в 1963 г. им был разработан язык ЛИСП (LISP, от List Processing), основу которого составило использование единого спискового представления для программ и данных, применение выражений для определения функций, скобочный синтаксис.

В 1965 г. в США появляется работа Дж.А.Робинсона (J.A.Pobinson) , посвященная несколько иному методу автоматического поиска доказательства теорем в исчислении предикатов первого порядка. Этот метод был назван методом резолюций и послужил отправной точкой для создания нового языка программирования со встроенной процедурой логического вывода - языка Пролог (PROLOG) в 1971.

Постепенно исследователи стали понимать, что всем ранее созданным программам недостает самого важного - знаний в соответствующей области. Специалисты, решая задачи, достигают высоких результатов, благодаря своим знаниям и опыту; если программы будут обращаться к знаниям и применять их, то они тоже достигнут высокого качества работы.

Это понимание, возникшее в начале 70-х годов, по существу, означало качественный скачок в работах по искусственному интеллекту, когда на смену поискам универсального алгоритма мышления пришла идея моделировать конкретные знания специалистов-экспертов. Основополагающие соображения на этот счет высказал в 1977 году на 5-й Объединенной конференции по искусственному интеллекту американский ученый Э.Фейгенбаум (E.Feigenbaum).

Уже к середине 70-х годов появляются первые прикладные интеллектуальные системы, использующие различные способы представления знаний для решения задач - экспертные системы . Экспертная система (ЭС) – это программа, в которую заложены теоретические и практические знания высококвалифицированных специалистов в некоторой конкретной проблемной области и которая способна давать рекомендации по проблемам в этой области с высокой степенью надежности на уровне этих специалистов.

Одной из первых была экспертная система DENDRAL, разработанная в Станфордском университете группой ученых, возглавляемой Эдвардом Фейгенбаумом и предназначенная для порождения формул химических соединений на основе спектрального анализа. В настоящее время DENDRAL поставляется покупателям вместе со спектрометром. Система MYCIN предназначена для диагностики и лечения инфекционных заболеваний крови. Она была родоначальником целой серии медико-диагностических машин, которые используются в рутинной клинической практике. Система MICIN ввела в рассмотрение несколько характеристик, которые стали отличительной чертой экспертных систем. Во-первых, ее знания представляют сотни продукционных правил “если - то”; во-вторых, правила являются вероятностными; в-третьих, используются коэффициенты уверенности; в-четвертых, система может объяснить свой процесс рассуждений. Известная система PROSPECTOR прогнозирует залежи полезных ископаемых. Имеются сведения о том, что с ее помощью были открыты залежи молибдена, ценность которых превосходит 100 миллионов долларов. Система оценки качества воды, реализованная на основе российской технологии SIMER + MIR выявляет причины превышения предельно допустимых концентрациий загрязняющих веществ в Москве-реке в районе Серебрянного Бора. Система CASNET предназначена для диагностики и выбора стратегии лечения глаукомы и т.д.

В настоящее время разработка и реализация экспертных систем выделилась в самостоятельную инженерную область.

Начиная с середины 80-х гг. происходит коммерциализация искусственного интеллекта. Растут ежегодные капиталовложения, создаются промышленные экспертные системы. Искусственный интеллект перенес внимание на область проблем машинного обучения.

Дуг Ленат создал машинную общающуюся систему EURISCO, которая автоматически улучшает и расширяет свой запас эвристических правил. Кроме того, что эта система выигрывала три года подряд в военной игре (несмотря на то, что правила игры каждый раз менялись, чтобы помешать ей это сделать), она смогла произвести переворот в области создания СБИС (сверхбольших интегральных схем), изобретя трехмерный узел типа И/ИЛИ.

В начале 90-х годов исследованиях по искусственному интеллекту сформировалось самостоятельное направление – “инженерия знаний”. Ведутся работы по созданию динамических интеллектуальных систем, т.е. систем, учитывающих изменения, происходящие в окружающем мире за время исполнения приложения.

1 Литературный обзор.


  1. Краткая история развития искусственного интеллекта.

Искусственный интеллект (ИИ) - это область исследований, находящаяся на стыке наук, специалисты, работающие в этой области, пытаются понять, какое поведение, считается разумным (анализ), и создать работающие модели этого поведения (синтез). Практической целью является создание методов и техники, необходимой для программирования «разумности» и ее передачи вычислительным машинам (ВМ), а через них всевозможным системам и средствам.

В 50-х годах исследователи в области ИИ пытались строить разумные машины, имитируя мозг. Эти попытки оказались безуспешными по причине полной непригодности как аппаратных так и программных средств.

В 60-х годах предпринимались попытки отыскать общие методы решения широкого класса задач, моделируя сложный процесс мышления. Разработка универсальных программ оказалась слишком трудным и бесплодным делом. Чем шире класс задач, которые может решать одна программа, тем беднее оказываются ее возможности при решении конкретной проблемы.

В начале 70-х годов специалисты в области ИИ сосредоточили свое внимание на разработке методов и приемов программирования, пригодных для решения более специализированных задач: методов представления (способы формулирования проблемы для решения на средствах вычислительной техники (ВТ)) и методах поиска (способы управления ходом решения так, чтобы оно не требовало слишком большого объема памяти и времени).

И только в конце 70-х годов была принята принципиально новая концепция, которая заключается в том, что для создания интеллектуальной программы ее необходимо снабдить множеством высококачественных специальных знаний о некоторой предметной области. Развитие этого направления привело к созданию экспертных систем (ЭС).

В 80-х годах ИИ пережил второе рождение. Были широко осознаны его большие потенциальные возможности как в исследованиях, так и в развитии производства. В рамках новой технологии появились первые коммерческие программные продукты. В это время стала развиваться область машинного обучения. До этих пор перенесение знаний специалиста-эксперта в машинную программу было утомительной и долгой процедурой. Создание систем, автоматически улучшающих и расширяющих свой запас эвристических (не формальных, основанных на интуитивных соображениях) правил - важнейший этап в последние годы. В начале десятилетия в различных странах были начаты крупнейшие в истории обработки данных национальные и международные исследовательские проекты, нацеленные на «интеллектуальные ВМ пятого поколения».

Исследования по ИИ часто классифицируются, исходя из области их применения, а не на основе различных теорий и школ. В каждой из этих областей на протяжении десятков лет разрабатывались свои методы программирования, формализмы; каждой из них присущи свои традиции, которые могут заметно отличаться от традиций соседней области исследования. В настоящее время ИИ применяется в следующих областях:


  1. обработка естественного языка;

  2. экспертные системы (ЭС);

  3. символьные и алгебраические вычисления;

  4. доказательства и логическое программирование;

  5. программирование игр;

  6. обработка сигналов и распознавание образов;

  7. и др.

1.2 Языки программирования ИИ.

1.2.1 Классификация языков и стилей программирования.
Все языки программирования можно разделить на процедурные и декларативные языки. Подавляющее большинство используемых в настоящее время языков программирования (Си, Паскаль, Бейсик и т. п.) относятся к процедурным языкам. Наиболее существенными классами декларативных языков являются функциональные (Лисп, Лого, АПЛ и т. п.) и логические (Пролог, Плэнер, Конивер и др.) языки (рис.1).

На практике языки программирования не являются чисто процедурными, функциональными или логическими, а содержат в себе черты языков различных типов. На процедурном языке часто можно написать функциональную программу или ее часть и наоборот. Может точнее было бы вместо типа языка говорить о стиле или методе программирования. Естественно различные языки поддерживают разные стили в разной степени.

Процедурная программа состоит из последовательности операторов и предложений, управляющих последовательностью их выполнения. Типичными операторами являются операторы присваивания и передачи управления, операторы ввода-вывода и специальные предложения для организации циклов. Из них можно составлять фрагменты программ и подпрограммы. В основе процедурного программирования лежат взятие значения какой-то переменной, совершение над ним действия и сохранения нового значения с помощью оператора присваивания, и так до тех пор пока не будет получено (и, возможно, напечатано) желаемое окончательное значение.

ЯЗЫКИ ПРОГРАММИРОВАНИЯ

ПРОЦЕДУРНЫЕ ЯЗЫКИ ДЕКЛАРАТИВНЫЕ ЯЗЫКИ

Паскаль, Си, Фортран, ...

ЛОГИЧЕСКИЕ ЯЗЫКИ ФУНКЦИОНАЛЬНЫЕ ЯЗЫКИ

Пролог, Mandala... Лисп, Лого, АРЛ, ...

Рис.1 Классификация языков программирования
Логическое программирование - это один из подходов к информатике, при котором в качестве языка высокого уровня используется логика предикатов первого порядка в форме фраз Хорна. Логика предикатов первого порядка - это универсальный абстрактный язык предназначенный для представления знаний и для решения задач. Его можно рассматривать как общую теорию отношений. Логическое программирование базируется на подмножестве логики предикатов первого порядка, при этом оно одинаково широко с ней по сфере охвата. Логическое программирование дает возможность программисту описывать ситуацию при помощи формул логики предикатов, а затем, для выполнения выводов из этих формул, применить автоматический решатель задач (т. е. некоторую процедуру). При использовании языка логического программирования основное внимание уделяется описанию структуры прикладной задачи, а не выработке предписаний компьютеру о том, что ему следует делать. Другие понятия информатики из таких областей, как теория реляционных баз данных, программная инженерия и представление знаний, также можно описать (и, следовательно, реализовать) с помощью логических программ..

Функциональная программа состоит из совокупности определений функций. Функции, в свою очередь, представляют собой вызовы других функций и предложений, управляющих последовательностью вызовов. Вычисления начинаются с вызова некоторой функции, которая в свою очередь вызывает функции, входящие в ее определение и т. д. в соответствии с иерархией определений и структурой условных предложений. Функции часто либо прямо, либо опосредованно вызывают сами себя.

Каждый вызов возвращает некоторое значение в вызывавшую его функцию, вычисление которой после этого продолжается; этот процесс повторяется до тех пор пока запустившая вычисления функция не вернет конечный результат пользователю.

«Чистое» функциональное программирование не признает присваиваний и передач управления. Разветвление вычислений основано на механизме обработки аргументов условного предложения. Повторные вычисления осуществляются через рекурсию, являющуюся основным средством функционального программирования.


  1. Сравнительные характеристики языков ИИ.

На первом этапе развития ИИ (в конце 50-х - начале 60-х годов) не существовало языков и систем, ориентированных специально на области знаний. Появившиеся к тому времени универсальные языки программирования казались подходящим инструментом для создания любых (в том числе и интеллектуальных) систем, поскольку в этих языках можно выделить декларативную и процедурную компоненты. Казалось, что на этой базе могут быть интерпретированы любые модели и системы представления знаний. Но сложность и трудоемкость таких интерпретаций оказались настолько велики, что прикладные системы для реализации были недоступны. Исследования показали, что производительность труда программиста остается постоянной независимо от уровня инструментального языка, на котором он работает, а соотношение между длиной исходной и результирующей программ примерно 1:10. Таким образом, использование адекватного инструментального языка повышает производительность труда разработчика системы на порядок, и это при одноступенчатой трансляции. Языки предназначенные для программирования интеллектуальных систем содержат иерархические (многоуровневые) трансляторы и увеличивают производительность труда в 100-ни раз. Все это подтверждает важность использования адекватных инструментальных средств.


  1. Языки обработки символьной информации.

Язык Лисп был разработан в Стэнфорде под руководством Дж. Маккарти в начале 60-х годов. По первоначальным замыслам он должен был0 включать наряду со всеми возможностями Фортрана средства работы с матрицами, указателями и структурами из указателей и т. п. Но для такого проекта не хватило средств. Окончательно сформированные принципы положенные в основу языка Лисп: использование единого спискового представления для программ и данных; применение выражений для определения функций; скобочный синтаксис языка.

Лисп является языком низкого уровня, его можно рассматривать как ассемблер, ориентированный на работу со списковыми структурами. Поэтому на протяжении всего существования языка было много попыток его усовершенствования за счет введения дополнительных базисных примитивов и управляющих структур. Но все эти изменения, как правило, не становились самостоятельными языками. В новых своих редакциях Лисп быстро усваивал все ценные изобретения своих конкурентов.

После создания в начале 70-х годов мощных Лисп-систем Маклисп Интерлисп попытки создания языков ИИ, отличных от Лиспа, но на той же основе, сходят на нет. Дальнейшее развитие языка идет, с одной стороны, по пути его стандартизации (Стандарт-Лисп, Франц-Лисп, Коммон Лисп), а с другой - в направлении создания концептуально новых языков для представления и манипулирования знаниями в Лисп среде. В настоящее время Лисп реализован на всех классах ЭВМ, начиная с ПЭВМ и кончая высоко производительными вычислительными системами.

Лисп - не единственный язык, используемый для задач ИИ. Уже в середине 60-х годов разрабатывались языки, предлагающие другие концептуальные основы. Наиболее важные из них в области обработки символьной информации - СНОБОЛ и Рефал.


СНОБОЛ.

Это язык обработки строк, в рамках которого впервые появилась и была реализована в достаточно полной мере концепция поиска по образцу. Язык СНОБОЛ был одной из первых практических реализаций развитой продукционной системы. Наиболее известная и интересная версия этого языка - Снобол-4 Здесь техника задания образцов и работа с ними существенно опередили потребности практики. По существу, он так и остался «фирменным» языком программирования, хотя концепции СНОБОЛа, безусловно, оказали влияние и на Лисп, и на другие языки программирования задач ИИ.


Рефал.

Язык Рефал - алгоритмический язык рекурсивных функций. Он был создан Турчиным в качестве метаязыка, предназначенного для описания различных, в том числе и алгоритмических, языков и различных видов обработки таких языков. При этом имелось в виду и использование Рефала в качестве метаязыка над самим собой. Для пользователя это язык обработки символьной информации. Поэтому, помимо описания семантики алгоритмических языков, он нашел и другие применения. Это выполнение громоздких аналитических выкладок в теоретической физике и прикладной математике, интерпретация и компиляция языков программирования, доказательство теорем, моделирование целенаправленного поведения, а в последнее время и задачи ИИ. Общим для всех этих применений являются сложные преобразования над объектами, определенными в некоторых формализованных языках.

В основу языка Рефал положено понятие рекурсивной функции, определенной на множестве произвольных символьных выражений. Базовой структурой данных этого языка являются списки, но не односвязные, как в Лиспе, а двунаправленные. Обработка символов ближе к продукционной парадигме. При этом Активно используется концепция поиска по образцу, характерная для СНОБОЛа.

Программа написанная на Рефале, определяет некоторый набор функций, каждая из которых имеет один аргумент. Вызов функции заключается в функциональные скобки.

Во многих случаях возникает необходимость из программ, написанных на Рефале, вызывать программы, написанные на других языках. Это просто, так как с точки зрения Рефала первичные функции (Функции, описанные не на Рефале, но которые тем не менее можно вызывать из программ, написанных на этом языке.) - это просто некоторые функции, внешние по отношению к данной программе, поэтому, вызывая какую-либо функцию, можно даже и не знать, что это - первичная функция.

Семантика Рефал-программы описывается в терминах абстрактной Рефал-машины. Рефал-машина имеет поле памяти и поле зрения. В поле памяти Рефал-машины помещается программа, а в поле зрения - данные, которые будут обрабатываться с ее помощью, т. е. перед началом работы в поле памяти заносится описание набора функций, а в поле зрения - выражение, подлежащее обработке.

Часто бывает удобно разбить Рефал-программу на части, которые могут обрабатываться компилятором Рефала независимо друг от друга. Наименьшая часть Рефал-программы, которая может быть обработана компилятором независимо от других, называется модулем. Результат компиляции исходного модуля на Рефале представляет собой объектный модуль, который перед исполнением Рефал-программы должен быть объединен с другими модулями, полученными компиляцией с Рефала или других языков это объединение выполняется с помощью редактора связей и загрузчиков. Детали зависят от используемой ОС.

Таким образом, Рефал вобрал в себя лучшие черты наиболее интересных языков обработки символьной информации 60-х годов. В настоящее время язык Рефал используется для автоматизации построения трансляторов, систем аналитических преобразований, а также, подобно Лиспу, в качестве инструментальной среды для реализации языков представления знаний.


Пролог.

В начале 70-х годов появился новый язык составивший конкуренцию Лиспу при реализации систем, ориентированных на знания - Пролог. Этот язык не дает новых сверхмощных средств программирования по сравнению с Лиспом, но поддерживает другую модель организации вычислений. Его привлекательность с практической точки зрения состоит в том, что, подобно тому, как Лисп скрыл от программиста устройство памяти ЭВМ, Пролог позволил ему не заботится о потоке управления в программе.

Пролог - европейский язык, был разработан в Марсельском университете в 1971 году. Но популярность он стал приобретать только в начале 80-х годов. Это связано с двумя обстоятельствами: во-первых, был обоснован логический базис этого языка и, во-вторых, в японском проекте вычислительных систем пятого поколения он был выбран в качестве базового для одной из центральных компонент - машины вывода.

Язык Пролог базируется на ограниченном наборе механизмов, включающих в себя сопоставление образцов, древовидное представление структур данных и автоматический возврат. Пролог особенно хорошо приспособлен для решения задач, в которых фигурируют объекты и отношения между ними.

Пролог обладает мощными средствами, позволяющими извлекать информацию из баз данных, причем методы поиска данных, используемые в нем, принципиально отличаются от традиционных. Мощь и гибкость баз данных Пролога, легкость их расширения и модификации делают этот язык очень удобным для коммерческих приложений.

Пролог успешно применяется в таких областях как: реляционные базы данных (язык особенно полезен при создании интерфейсов реляционных баз данных с пользователем); автоматическое решение задач; понимание естественного языка; реализация языков программирования; представление знаний; экспертные системы и др. задачи ИИ.

Теоретической основой Пролога является исчисление предикатов. Прологу присущ ряд свойств, которыми не обладают традиционные языки программирования. К таким свойствам относятся механизм вывода с поиском и возвратом, встроенный механизм сопоставления с образцом. Пролог отличает единообразие программ и данных. Они являются лишь различными точками зрения на объекты Пролога. В языке отсутствуют указатели, операторы присваивания и безусловного перехода. Естественным методом программирования является рекурсия.

Пролог программа состоит из двух частей: базы данных (множество аксиом) и последовательности целевых утверждений, описывающих в совокупности отрицание доказываемой теоремы. Главное принципиальное отличие интерпретации программы на Прологе от процедуры доказательства теоремы в исчислении предикатов первого порядка состоит в том, что аксиомы в базе данных упорядочены и порядок их следования весьма существенен, так как на этом основан сам алгоритм, реализуемый Пролог-программы. Другое существенное ограничение Пролога в том, что в качестве логических аксиом используются формулы ограниченного класса - так называемые дизъюнкты Хорна. Однако при решении многих практических задач этого достаточно для адекватного представления знаний. Во фразах Хорна после единственного заключения следует ноль и более условий.

Поиск «полезных» для доказательства формул - комбинаторная задача и при увеличении числа аксиом число шагов вывода катастрофически быстро растет. Поэтому в реальных системах применяют всевозможные стратегии, ограничивающие слепой перебор. В языке Пролог реализована стратегия линейной резолюции, предлагающая использование на каждом шаге в качестве одной из сравниваемых формул отрицание теоремы или ее «потомка», а в качестве другой - одну из аксиом. При этом выбор той или иной аксиомы для сравнения может сразу или через несколько шагов завести в «тупик». Это принуждает вернуться к точке, в которой производился выбор, чтобы испытать новую альтернативу, и т. д. Порядок просмотра альтернативных аксиом не произволен - его задает программист, располагая аксиомы в базе данных в определенном порядке. Кроме того в Прологе предусмотрены достаточно удобные «встроенные» средства для запрещения возврата в ту или иную точку в зависимости от выполнения определенных условий. Таким образом процесс доказательства в Прологе более прост и целенаправлен чем в классическом методе резолюций.

Смысл программы языка Пролог может быть понят либо с позиций декларативного подхода, либо с позиций процедурного подхода.

Декларативный смысл программы определяет, является ли данная цель истинной (достижимой) и, если да, при каких значениях переменных она достигается. Он подчеркивает статическое существование отношений. Порядок следования подцелей в правиле не влияет на декларативный смысл этого правила. Декларативная модель более близка к семантике логики предикатов, что делает Пролог эффективным языком для представления знаний. Однако в декларативной модели нельзя адекватно представить те фразы, в которых важен порядок следования подцелей. Для пояснения смысла фраз такого рода необходимо воспользоваться процедурной моделью.

При процедурной трактовке Пролог-программы определяются не только логические связи между головой предложения и целями в его теле, но еще и порядок, в котором эти цели обрабатываются. Но процедурная модель не годится для разъяснения смысла фраз, вызывающих побочные эффекты управления, такие как остановка выполнения запроса или удаление фразы из программы.

Для решения реальных задач ИИ необходимы машины, скорость которых должна превышать скорость света, а это возможно лишь в параллельных системах. Поэтому последовательные реализации следует рассматривать как рабочие станции для создания программного обеспечения будущих высокопроизводительных параллельных систем, способных выполнять сотни миллионов логических выводов в секунду. В настоящее время существуют десятки моделей параллельного выполнения логических программ вообще и Пролог-программ в частности. Часто это модели, использующие традиционный подход к организации параллельных вычислений: множество параллельно работающих и взаимодействующих процессов. В последнее время значительное внимание уделяется и более современным схемам организации параллельных вычислений - потоковым моделям. В моделях параллельного выполнения рассматриваются традиционный Пролог и присущие ему источники параллельности.

На эффективности Пролога очень сильно сказываются ограниченность ресурсов по времени и пространству. Это связано с неприспособленностью традиционной архитектуры вычислительных машин для реализации прологовского способа выполнения программ, предусматривающего достижение целей из некоторого списка. Вызовет ли это трудности в практических приложениях, зависит от задачи. Фактор времени практически не имеет значения, если пролог-программа, запускаемая по несколько раз в день, занимает одну секунду, а соответствующая программа на другом языке - 0.1 секунды. Но разница в эффективности становится существенной, если эти две программы требуют 50 и 5 минут соответственно.

С другой стороны, во многих областях применения Пролога он может существенно сократить время разработки программ. Программы на Прологе легче писать, легче понимать и отлаживать, чем программы, написанные на традиционных языках, т. е. язык Пролог привлекателен своей простотой. Пролог-программу легко читать, что является фактором, способствующим повышению производительности при программировании и увеличению удобств при сопровождении программ. Поскольку Пролог основан на фразах Хорна, исходный текст Пролог-программ значительно менее подвержен влиянию машинно-зависимых особенностей, чем исходные тексты программ, написанных на других языках. Кроме того в различных версиях языка Пролог проявляется тенденция к единообразию, так что программу, написанную для одной версии, легко можно преобразовать в программу для другой версии этого языка. Кроме того Пролог прост в изучении.

При выборе языка Пролог как базового языка программирования в японском проекте вычислительных систем пятого поколения в качестве одного из его недостатков отмечалось отсутствие развитой среды программирования и неприспособленность Пролога для создания больших программных систем. Сейчас ситуация несколько изменилась, хотя говорить о действительно ориентированной на логическое программирование среде преждевременно.

Среди языков, с появлением которых возникали новые представления о реализации интеллектуальных систем, необходимо выделить языки, ориентированные на программирование поисковых задач.


  1. Языки программирования интеллектуальных решателей.

Группа языков, которые можно назвать языками интеллектуальных решателей, в основном ориентирована на такую подобласть ИИ, как решение проблем, для которой характерны, с одной стороны, достаточно простые и хорошо формализуемые модели задач, а с другой - усложненные методы поиска их решения. Поэтому основное внимание в этих языках было уделено введению мощных структур управления, а не способам представления знаний. Это такие языки как Плэнер, Конивер, КюА-4, КюЛисп.


Плэнер.

Этот язык дал толчок мощному языкотворчеству в области ИИ. Язык разработан в Массачуссетском технологическом институте в 1967-1971гг. Вначале это была надстройка над Лиспом, в таком виде язык реализован на Маклиспе под названием Микро Плэнер. В дальнейшем Плэнер был существенно расширен и превращен в самостоятельный язык. В СССР он реализован под названием Плэнер-БЭСМ и Плэнер-Эльбрус. Этот язык ввел в языки программирования много новых идей: автоматический поиск с возвратами, поиск данных по образцу, вызов процедур по образцу, дедуктивный метод и т. д.

В качестве своего подмножества Плэнер содержит практически весь Лисп (с некоторыми модификациями) и во многом сохраняет его специфические особенности. Структура данных (выражений, атомов и списков), синтаксис программ и правила их вычисления в Плэнере аналогичны лисповским. Для обработки данных в Плэнере в основном используются те же средства, что и в Лиспе: рекурсивные и блочные функции. Практически все встроенные функции Лиспа, в том числе и функция EVAL, включены в Плэнер. Аналогично определяются новые функции. Как и в Лиспе, с атомами могут быть связаны списки свойств.

Но между Лиспом и Плэнером существуют и различия. Отметим некоторые из них. В Лиспе при обращении к переменной указывается только ее имя, например Х, сам же атом как данное указывается как ‘X. В Плэнере используется обратная нотация: атомы обозначают самих себя, а при обращении к переменным перед их именем ставится префикс. При этом префикс указывает как должна быть использована переменная. Отличается от лисповского и синтаксис обращения к функциям, которое в Плэнере записывается в виде списка не с круглыми, а с квадратными скобками.

Для обработки данных в Плэнере используются не только функции, но и образцы и сопоставители.

Образцы описывают правила анализа и декомпозиции данных и поэтому их применение облегчает написание программ и сокращает их тексты.

Сопоставители определяются также, как функции, только их определяющее выражение начинается с ключевого слова, а в качестве тела указывается образец. Их выполнение заключается не в вычислении какого либо значения, а в проверке, обладает ли сопоставляемое с ним выражение определенным свойством.

Рассмотренное подмножество Плэнера можно использовать независимо от других его частей: оно представляет собой мощный язык программирования, удобный для реализации различных систем символьной обработки. Остальные части Плэнера ориентируют его на область ИИ, предоставляя средства для описания задач (исходных ситуаций, допустимых операций, целей), решения которых должна искать система ИИ, реализуемая на Плэнере, и средства, упрощающие реализацию процедур поиска решения этих задач.

На Плэнере можно программировать описывая то, что имеется и то что надо получить, без явного указания, как это делать. Ответственность же за поиск решения описываемой задачи берет на себя встроенный в язык дедуктивный механизм (механизм автоматического достижения целей), в основе которого лежит вызов теорем по образцу. Однако только вызова теорем по образцу не достаточно для такого механизма. Необходим механизм перебора, и такой механизм - режим возвратов - введен в язык.

Выполнение программы в режиме возвратов удобно для ее автора тем, что язык берет на себя ответственность за запоминание развилок и оставшихся в них альтернатив, за осуществление возвратов к ним и восстановления прежнего состояния программы - все это делается автоматически. Но такой автоматизм не всегда выгоден, так как в общем случае он ведет к «слепому» перебору. И может оказаться так, что при вызове теорем наиболее подходящая из них будет вызвана последней, хотя автор программы заранее знает о ее достоинствах. Учитывая это Плэнер предоставляет средства управления режимом возвратов.


Конивер.

Язык Конивер был разработан в 1972 году, реализован как надстройка над языком Маклисп. Авторы языка Конивер выступили с критикой некоторых идей языка Плэнер. В основном она относилась к автоматическому режиму возвратов, который в общем случае ведет к неэффективным и неконтролируемым программам, особенно если она составляется неквалифицированными пользователями. Авторы Конивер отказались от автоматического режима возвратов, считая, что встраивать в язык какие-то фиксированные дисциплины управления (кроме простейших - циклов, рекурсий) не следует и что автор программы должен сам организовывать нужные ему дисциплины управления, а для этого язык должен открывать пользователю свою структуру управления и предоставлять средства работы с ней. Эта концепция была реализована в Конивер следующим образом.

При вызове процедуры в памяти отводится место, где хранится информация, необходимая для ее работы. Здесь, в частности, располагаются локальные переменные процедуры, указатели доступа (ссылка на процедуру, переменные которой доступны из данной) и возврата (ссылка на процедуру, которой надо вернуть управление). Обычно эта информация скрыта от пользователя, а в языке Конивер такой участок памяти (фрейм) открыт: пользователь может просматривать и менять содержимое фрейма. В языке фреймы представляют специальный тип данных, доступ к которым осуществляется по указателям.

Недостаток языка в том, что хотя пользователь и получает гибкие средства управления, одновременно на него ложится трудная и кропотливая работа, требующая высокой квалификации. Язык Конивер хорош не для реализации сложных систем, а как база, на основе которой квалифицированные программисты готовят нужные механизмы управления для других пользователей.

Учитывая сложность реализации дисциплин управления, авторы языка были вынуждены включить в него ряд фиксированных механизмов управления, аналогов процедур-развилок и теорем языка Плэнер. Но в отличии от Плэнера, где разрыв между выбором альтернативы в развилке и ее анализом, а в случае необходимости выработкой неуспеха может быть сколь угодно велик, в языке Конивер этот разрыв сведен к минимуму. Этим Конивер избавляется от негативных последствий глобальных возвратов по неуспеху, когда приходится отменять предыдущую работу чуть ли не всей программы.