Место функционального программирования в искусственном интеллекте
Естественно предположить, что методики, предлагаемые учеными в рамках функциональной парадигмы программирования, нашли широчайший отклик в душах специалистов по искусственному интеллекту. Это произошло потому, что функциональное программирование позволяет описывать вычислительные процессы на более высоком уровне абстракции, разрешая ученому не задумываться о способах кодирования данных и дальнейшей обработке такого способа кодирования, а предлагая непосредственно описывать исследуемый процесс в терминах той проблемной области, где этот процесс рассматривается (естественно, такое описание должно находиться в рамках синтаксиса языка программирования).
Так, к примеру, разработку систем искусственного интеллекта в рамках структурного, эволюционного и имитационного подходов без всяких проблем можно осуществить на функциональных языках программирования. Да и логический подход также неплохо проецируется на методики функционального программирования, хотя для него была создана отдельная парадигма — логическое программирование, самым известным представителем которой в мире языков программирования является язык Prolog.
Любые формализмы и модели, которые необходимы в системах искусственного интеллекта, можно с небольшими ресурсными затратами реализовать на функциональных языках программирования. Модель человеческого нейрона — без проблем. Реализация генетических алгоритмов (один из эволюционных подходов) — пара часов работы. Парсер для ограниченного естественного языка для общения с системой — пара десятков килобайт исходного кода.
Единственное, что сдерживало совместное развитие функционального программирования и искусственного интеллекта, — отсутствие серьезного аппаратно-технического обеспечения для построения систем. Оба направления развития информатики и компьютерной науки требуют достаточно мощных вычислительных ресурсов, которые ранее были либо вообще недоступны, либо слишком дорогостоящи. Поэтому многие научные лаборатории занимались исследованиями в области искусственного интеллекта на менее ресурсоемких системах разработки.
Однако сегодня, когда компьютеры становятся все более и более мощными, большинство научных лабораторий во всех странах мира, где ведутся исследования по искусственному интеллекту, переходят на функциональные языки, в том числе и на язык Haskell, для которого создастся все больше и больше библиотек и расширений, некоторые из которых предназначены для решения конкретных задач искусственного интеллекта. Поэтому изучение как этого языка, так и функциональной парадигмы в целом является делом своевременным и вполне перспективным.
Рассмотреть столь сложную тему, как искусственный интеллект, в одной главе небольшой книги невозможно, поэтому заинтересованного читателя можно отослать к чтению специализированной литературы, отдельные книги и статьи приведены в соответствующем разделе библиографии. Далее в последующих разделах кратко рассматриваются лишь некоторые прикладные аспекты систем искусственного интеллекта, которые могут помочь в создании более серьезного программного обеспечения.
Функциональное программирование и искусственный интеллект
В главе кратко рассматриваются основные задачи, решаемые методами искусственного интеллекта, а также намечены способы их решения при помощи инструментов, предлагаемых функциональным программированием. Несколько более подробно описываются такие области изучения искусственного интеллекта. как нечеткая логика (бесконечнозначное расширение классической булевской логики), вывод на знаниях, а также анализ и синтез фраз па естественном языке.
Заканчивают главу и книгу в целом мысли о дальнейших перспективах функционального программирования в современном мире, его роли и месте в технологии разработки программного обеспечения.
Основные задачи искусственного интеллекта
В каждой естественной науке заключено столько истины, сколько в ней есть математики.
Искусственный интеллект — это один из новейших разделов информатики, изучающий алгоритмическую реализацию способов решения неформализованных или слабоформализованных задач, когда такие способы используются человеческим разумом. Иными словами, в рамках искусственного интеллекта изучаются методы решения компьютером задач, не имеющих явного алгоритмического решения. Необходимо отметить, что в последнее время под термином «искусственный интеллект» уже не понимается моделирование человеческого разума, хотя такое моделирование можно считать одним из направлений развития искусственного интеллекта.
Теорией явно не определено, что именно считать необходимыми и достаточными условиями достижения интеллектуальности, хотя на этот счет и существует ряд гипотез, например гипотеза Ньюэлла-Саймона. В рамках искусственного интеллекта различают два основных направления:
- 1) символьное (семиотическое, нисходящее) направление, которое основано на моделировании высокоуровневых процессов мышления человека, па представлении и использовании знаний;
- 2) нсйрокибсрнстичсскос (нейросетевое, восходящее) направление, которое основано на моделировании отдельных низкоуровневых структур мозга (нейронов).
Таким образом, сверхзадачей искусственного интеллекта является построение компьютерной интеллектуальной системы, которая обладала бы уровнем эффективности решений неформализованных задач, сравнимым с человеческим или превосходящим его. В качестве критерия и конструктивного определения интеллектуальности предложен мысленный эксперимент, известный как тест Тьюринга.
Тест Тьюринга был предложен Аланом Тьюрингом в 1950 г. в статье «Вычислительные машины и разум» для проверки того, является ли компьютер разумным в человеческом смысле слова. Тест заключается в том, что судья (человек) переписывается на естественном языке с двумя собеседниками, один из которых — человек, другой — компьютер. Если судья не может надежно определить, кто есть кто, компьютер прошел тест. Предполагается, что каждый из собеседников стремится, чтобы человеком признали его. С целью сделать тест простым и универсальным переписка сводится к обмену текстовыми сообщениями. Переписка должна производиться через контролируемые промежутки времени, чтобы судья нс мог делать заключения исходя из скорости ответов. (Во времена Тьюринга компьютеры реагировали медленнее человека. Сейчас это правило необходимо, потому что они реагируют гораздо быстрее, чем человек).
А. Тьюринг предложил тест, чтобы заменить бессмысленный, по его мнению, вопрос «может ли машина мыслить?» на более определенный.
К настоящему времени пи одна аппаратно-программная система пс достигла такого уровня развития, что смогла бы успешно пройти тест Тьюринга. Поэтому в последнее время в рамках идеологии искусственного интеллекта рассматривается третий подход к построению систем, а именно создание смешанных чсловс-комашинных, или, как еще говорят, интерактивных интеллектуальных систем, осуществляющих симбиоз возможностей естественного и искусственного интеллекта. Важнейшими проблемами в этих исследованиях являются оптимальное распределение функций между естественным и искусственным интеллектом и организация диалога между человеком и машиной.
Это понимание породило один из современных аспектов постановки задачи разработки искусственного интеллекта, а именно рассмотрение искусственного интеллекта в качестве инструмента для приближения сингулярности в се сверхинтеллектуальном понимании, то есть достижение предполагаемой точки в будущем, когда эволюция человеческого разума в результате развития нанотехнологии, биотехнологии и искусственного интеллекта ускорится до такой степени, что дальнейшие изменения приведут к возникновению разума с гораздо более высоким уровнем быстродействия и новым качеством мышления.