Джон Маккарти Отец искусственного интеллекта, автор языка LISP
Джон Маккарти
Отец искусственного интеллекта, автор языка LISP
LISP был для нас не просто языком, который используют для определенных целей, им можно было полюбоваться, как прелестной вещью. Поэтому существовала постоянная напряженность в отношениях между теми, кто восхищался LISPom за его чистоту, и теми, кто стремился использовать его для различных вычислений. Безусловно, с помощью LISPa проделано множество вычислений. Но в самом начале было не так. Часто говорили, что главная цель LISPa — делать больше LISPa.
Пол Абрахамс
Джон Маккарти
Слова, вынесенные в эпиграф, принадлежат бывшему дипломнику Джона Маккарти в период разработки нового языка программирования. Для специалистов по информатике эти слова неудивительны, т. к. имя Джона Маккарти известно во всем мире. Его называют отцом искусственного интеллекта, он первый ввел термин "искусственный интеллект" и создал первый язык искусственного интеллекта.
Джон Маккарти сыграл решающую роль в основании двух самых известных научных центров США по исследованию проблем искусственного интеллекта — в Массачусетском университете в 1957 году и в Стэнфордском университете в 1963 году. Среди его многочисленных работ, внесших значительный вклад в науку, наиболее важные относятся к концу 50-х годов, когда он работал в Массачусетском Технологическом институте. Именно там в 1959 году Маккарти предложил концепцию разделения времени — режима работы компьютера, который позволяет нескольким программистам, работая за разными терминалами, одновременно использовать его память и процессор. Помимо всего прочего, это означало, что исследователи в области искусственного интеллекта получили возможность составлять и проверять экспериментальные программы непосредственно, не ожидая по нескольку часов и дней, пока их задания, заложенные среди других в пакеты перфокарт, будут обработаны единственным оператором вычислительной машины.
В 80-х годах главный научный интерес Джона Маккарти — это формализация так называемых "знаний здравого смысла".
Джон Маккарти родился 4 сентября 1927 года в Бостоне, штат Массачусетс, в семье профсоюзного деятеля-марксиста. Уже в возрасте 8 лет он твердо знал, что непременно будет ученым. Не имея возможности и опыта работы с компьютером, Маккарти интересовался техническими новинками и строил планы на будущие. В 1944 году Джон поступил в Калифорнийский технологический университет (Cal-Tech), но был отчислен за многочисленные пропуски по физкультуре, которая давалась ему с большим трудом. В 1945 году он был призван на службу в армию. После возвращения из армии Маккарти повторно зачислили в Калифорнийский технологический университет. Окончив его, Джон продолжил свое образование в Принстоне, где и получил степень доктора наук.
В начале 50-х годов Маккарти разделял взгляды коммунистов, а десятилетием позже стал радикалом с длинными волосами и лентой на лбу. В 70-е годы он взбирался на горы, летал на самолете и иногда, для разнообразия, прыгал с парашютом. 80-е годы Маккарти встретил одетым в строгий костюм и высказывающим столь же "строгие" консервативные взгляды. Одно в нем было неизменно, Маккарти был поистине генератором самых фантастических идей, которые он разбрасывал с такой скоростью, с какой вводил информацию в компьютер у себя дома или на работе. Один журналист описал его как "человека поразительной внешности, седовласого патриарха с бородкой обольстителя… и шокирующими манерами, например привычкой поворачиваться и уходить, оборвав разговор на полуслове".
Задолго до того, как разгорелись споры в области искусственного интеллекта, исследователям пришлось преодолеть ряд серьезных трудностей в применении компьютеров. При взаимодействии человека с компьютером наиболее важны два момента: во-первых, по возможности более легкий доступ к машинам, во-вторых, более совершенные языки программирования. В решение обеих задач в конце 50-х годов существенный вклад внес Джон Маккарти, именно он первым ввел термин "искусственный интеллект". В 1956 году Маккарти организовал Дартмутскую конференцию. Эта конференция объединила многих экспертов в области машинного интеллекта, которые и заложили основу для будущих исследований в области искусственного интеллекта, а именно так они назвали науку и практику создания интеллектуальных компьютерных программ. Маккарти был по праву назван отцом искусственного интеллекта.
В 1956–1959 годах Джон Маккарти вместе со студентами Массачусетского технологического института (МТИ) разработал новый изящный язык для работы со списками, которому и дал имя LISP. Причем многие студенты внесли существенный вклад в эту разработку. В частности, Д. Эдвардс запрограммировал процесс очистки памяти от ненужных массивов, так называемой сборки мусора (garbage collection), являющийся фундаментальным понятием в LISP, да и в других языках.
Название язык получил от сокращения английских слов LISP Processing (LISP), что означает "обработка списков".
После своего появления LISP присваивали много эпитетов, отражающих его черты, — это язык функций, символьный язык, язык обработки списков, рекурсивный язык. С позиций сегодняшнего дня LISP определяют как язык программирования функционального типа, в основу которого положен метод ?-исчисления (метод ?-исчисления разработан в 30-е годы А. Черчем в качестве строгой математической модели для вычисления функций).
Программы и данные LISP существуют в форме символьных выражений, которые хранятся в виде списковых структур. LISP имеет дело с двумя видами объектов: атомами и списками. Атомы — это символы, используемые для идентификации объектов, которые могут быть числовыми или символьными (понятия, материалы, люди и т. д.). Список — это последовательность из нуля или более элементов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. LISP манипулирует списками путем использования трех примитивных функций: CAR, CDR и CONS, из которых получаются все другие функции обработки списков. В функции CAR в качестве значения аргумента используется первый элемент списка; значением аргумента в функции CDR является оставшаяся часть списка после удаления первого элемента, а функция CONS собирает вновь то, что CAR и CDR разбили на части. Интересно отметить, что слова "CAR" и "CDR" остались в LISP на память от первой реализации языка на ламповом компьютере IBM 704. Они являются сокращением английских слов, означающих "содержимое адресной части регистра" и "содержимое уменьшаемой части регистра", соответственно, терминами, характерными для машин первого поколения.
Во многих отношениях LISP отличается от других языков прежде всего тем, что выполнение программы не состоит в последовательности шагов, как в других языках. В основном LISP относится к языкам интерпретирующего типа, однако в некоторых его диалектах имеется функция COMPILE, которая может быть использована для компилирования LISP-npoграмм.
В 1962 году Джон Маккарти переехал в Стэнфорд. В этот период он решил первые проблемы в разделе математики, называемом семантикой вычислений. Маккарти уделял большое внимание проблемам общности. Он пишет: "Еще в 1958 году было очевидно, что системы искусственного интеллекта страдают отсутствием общности. Первый явный симптом состоит в том, что небольшое добавление к идее программы часто приводит к переписыванию заново всего начала со структурами данных". Некоторый прогресс был достигнут с появлением модульности структур данных, но по-прежнему невозможно было обходиться без переписывания программ. Другим симптомом, по мнению Маккарти, являлся тот факт, что никто не знал, как создать такую базу данных, содержащую общеполезные знания об окружающем мире, которую могла бы использовать любая программа, нуждающаяся в этих знаниях. В 1963 году Маккарти публикует статью, посвященную именно проблемам общности в системах искусственного интеллекта. В ней он выдвигает предположение, что, может быть, стоило бы попробовать что-нибудь более похожее на генетическую эволюцию, например, дублировать подпрограммы, одни копии модифицировать, а другие оставлять неизменными. Обучающаяся система экспериментировала бы: а не лучше ли заменить некоторые вызовы начальных подпрограмм вызовами модифицированных подпрограмм? Может быть, потребовалось бы зарезервировать для модификаций некоторое количество параметров подпрограмм. Однако все способы представления знаний с помощью программ сталкивались с возникновением такого вопроса, насколько скоро придется комбинировать несопоставимые знания или создавать программы, модифицирующие знания. Маккарти считал, что малые модификации поведения в большинстве случаев можно описать как малые изменения представлений о мире и для этого необходима система, точно отражающая эти представления.
Он писал: "Если вы хотите, чтобы машина могла выводить абстракции, скорее всего, это значит, что она должна уметь представлять эти абстракции некоторым достаточно простым способом".
Еще тогда возникла идея увеличения общности, которая заключается в том, чтобы воспользоваться логикой для такого описания фактов, которое не зависело бы от того, как эти факты будут использоваться впоследствии. Тогда Маккарти казалось (как, впрочем, и сейчас), что люди по объективным причинам предпочитают общаться с помощью декларативных предложений, а не языков программирования, все равно, является ли субъект общения человеком, существом с Альфа Центавра или компьютерной программой. Более того, и для внутреннего представления проявляются преимущества декларативной информации.
За любое увеличение выразительной силы, по мнению Маккарти, приходится платить требуемой сложностью программ, осуществляющих рассуждения и решающих задачи. Другими словами, ограничение выразительности декларативной информации позволяет упростить процедуру поиска. Одно из основных ограничений, которое обычно принимается, заключается в необходимом соблюдении следующего условия: при выведении новых фактов таковыми должны являться только формулы без переменных, т. е. рассуждения в высказываниях должны производиться с подстановкой вместо переменных константы. Оказывается, что повседневная жизнь человека по большей части сопровождается именно такими рассуждениями.
В это же время Маккарти вместе с Хэйесом занимался проблемами эпистемологических и эвристических аспектов задач искусственного интеллекта. Они предположили, что изучать проблемы общности гораздо проще в рамках эпистемологического подхода. Разница состоит в том, что при эпистемологическом подходе требуется полный набор фактов, гарантирующий, что некоторая стратегия достигает цели, в то время как эвристический подход предполагает поиск приемлемой стратегии исходя из наличных фактов.
Основная идея работы состояла в создании базы данных "здравого смысла" общего назначения. Информацию "здравого смысла", имеющуюся у людей, предполагалось записать в логической форме и включить в базу данных. Любая программа целенаправленного поиска могла бы обратиться к ней за фактами, необходимыми для того, чтобы решить, как достигнуть поставленной цели. Наиболее значимыми фактами базы данных должны были быть факты с результатами действий робота, пытающегося перемещать объекты с одного места на другое.
Джон Маккарти (80-е годы)
Изучение этой проблемы привело к созданию в 1960 году "исчисления ситуаций", целью которого было нахождение способа описания результатов действий вне зависимости от проблемной области. Однако ситуационное вычисление было применимо только в том случае, когда рассуждения о дискретных событиях, результатом каждого из которых является новая общая ситуация, имеют смысл. Непрерывные события и события, происходящие одновременно, теорией не охватывались. Оказалось, что, к сожалению, практически невозможно использовать ситуационное исчисление даже для довольно ограниченных задач. Использование универсальных программ для доказательства теорем приводило к слишком медленной работе программы, потому что в 1969 году программы для доказательства теорем не имели средств управления поиском. Все это привело к созданию системы STRIPS, в которой использовались только логические рассуждения в рамках конкретной ситуации. Формализм системы STRIPS был более ограниченным, чем исчисление ситуаций в полном объеме. Чтобы избежать противоречий, необходимо было аккуратно выбирать факты, входившие в число аксиом. Эти противоречия могли возникать при невозможности удалить высказывание, которое не являлось бы истинным в результате действия происшедшей ситуации.
Другим теоретическим достижением Джона Маккарти являлся метод ограничений для немонотонных рассуждений. Немонотонность значительно расширила возможности выражения универсальных знаний о результатах событий в ситуационном исчислении. Она также дала метод решения проблемы фрейма, которая, по мнению Маккарти, была еще одним препятствием для достижения общности.
В 1971 году Джон Маккарти был награжден премией Тьюринга за достижения в области искусственного интеллекта. Ныне он профессор информатики, профессор кафедры им. Шарля М. Пижо Инженерной школы Стэнфордского университета. Маккарти работает над новым языком программирования Elephant. Этот язык предназначен для программ, взаимодействующих с людьми или с программами, принадлежащими другим организациям. В настоящие время наиболее важный из его проектов заключается в формализации контекста и его приложений к искусственному интеллекту. Маккарти по праву можно назвать генератором идей, которые помогают приблизить компьютеры к более высокому уровню интеллекта. Только время покажет, верно ли его утверждение о возможности создания компьютера, более умного, чем человеческий мозг.