18 лет назад 5 октября 2006 в 12:22 2285

Язык искусственного интеллекта

«Успех» — значение этого социально окрашенного слова известно каждому. И, однако, каждый вкладывает в это слово собственный смысл. Кому-то подавай власть над всем миром, а кого-то вполне устроит прохождение очередного уровня в трехмерном шутере. С чем, пожалуй, почти никто не станет спорить, так это с тем, что успех доставляет удовольствие — материальное или моральное. Но далеко не каждый, как Марвин Мински (Marvin Minsky), размышляя об успехе, разразился бы подобной тирадой: «Если бы мы могли преднамеренно взять под контроль наши системы удовольствия, мы могли бы воспроизводить удовольствие успеха без необходимости в самом деле достигать чего-то. И это было бы концом всего».

Мински и сам является олицетворением успеха, ибо он в середине 50-х годов прошлого века стал одним из основоположников искусственного интеллекта. Однако сегодня мы поговорим не о нем, а том, без кого, возможно, сама идея искусственного интеллекта не появилась бы вообще или, во всяком случае, приняла бы совершенно другие очертания. Сегодня объектом нашего внимания станет создатель языка искусственного интеллекта LISP — Джон Маккарти (John McCarthy).

Джон Маккарти не имел никакого отношения к Джозефу Раймонду Маккарти (Joseph Raymond McCarthy) — сенатору-республиканцу от штата Висконсин, который в начале 1950-х годов развернул в США мощную кампанию по борьбе с «коммунистическим заговором». Более того, Джон Маккарти имел все шансы нарваться на неприятности в результате разгула в США маккартизма. Такие были времена — в СССР ловили «безродных космополитов», а в США Комиссия Конгресса допрашивала «коммунистических шпионов». Джон Маккарти происходил из семьи самых что ни на есть убежденных стопроцентных коммунистов. Он родился в 1927 году в Бостоне. Его отец был активистом американской компартии, а мать писала в местную коммунистическую прессу статьи, громящие акул капитализма. Политические интересы родителей были причиной частых незапланированных переездов с места на место: Бостон, Нью-Йорк, Лос-Анджелес.

Однако семья Маккарти была глубоко уверена, что будущее человечества (по их мнению — коммунизм) невозможно без развития технологий. У юного Джона математические способности обнаружились очень рано. Уже в 10 лет он приобрел математические задачники, которые использовали студенты первого и второго курсов Калифорнийского технологического института (КТИ). Мало того, что приобрел, так он их еще и перерешал. В 1944 году Джон Маккарти поступил в КТИ, однако вскоре был призван в армию и отправился на войну. Судя по всему, коммунистические убеждения семьи не очень основательно засели в голове Маккарти, ибо, например, его старший брат Патрик был уволен из армии США за коммунистические взгляды, а вот он служил до самого конца войны и вернулся в КТИ в 1945 году.

В 1948 году Джону Маккарти посчастливилось посетить в КТИ симпозиум по церебральным механизмам в поведении, на котором он услышал выступление самого фон Неймана, сделавшего доклад о самокопирующихся автоматах. После этого выступления Маккарти задумался о том, что такое сознание, интеллект, и о возможностях реализации интеллекта на вычислительных машинах. В 1949 году для работы над докторской диссертацией он перевелся в Принстонский университет, где на одном из факультетов работал Джон фон Нейман (John von Neumann). Там же под присмотром фон Неймана он приступил к своим первым попыткам моделирования человеческого интеллекта на машине. В конечном итоге он остался крайне недоволен этими попытками.

В 1953 году произошло знаменательное событие. Исследователи из Кембриджа — Джеймс Уотсон (James Watson) и Френсис Крик (Francis Crick) открыли строение ДНК. Это событие непосредственно никак не было связано с работами Маккарти, однако существенно повлияло на общий климат вокруг этого довольно сомнительного по тем меркам занятия. Если до 50-х годов XX века понятие «сознание» проходило скорее по «метафизическому департаменту» (им занимались богословы, философы и старик Фрейд), то открытие механизма генетической наследственности показало наличие неких реальных механизмов передачи информации от человека к человеку (от родителей детям). Иначе говоря, такие энтузиасты, как Джон Маккарти, пришли к выводу, что сознание, интеллект, или, как стали говорить позднее, базу знаний и механизм выводов, можно копировать. Соответственно, если возможно копирование с одного биологического объекта на другой, то почему бы не организовать копирование сознания с биологического объекта на электронный.

Сам термин «искусственный интеллект», как рассказывают, появился на пляже в Сан-Диего, где между делом Маккарти и Алан Тьюринг (Alan Turing) обсуждали принципиальную возможность машины не просто считать, а решать задачи, которые считаются интеллектуальными. За пример задач такого типа была взята игра в шахматы как наиболее распространенное увлечение математиков той поры.

В 1954 году Джон Маккарти совместно с Клодом Шенноном (Claude Shannon), Марвином Мински и Нэтом Рочестером (Nat Rochester) задумали провести двухмесячную исследовательскую конференцию, целью которой было изучение вопроса: «Возможно ли настолько точное описание интеллекта, чтобы имитировать его на машине?» Получив от Фонда Рокфеллера 7500 долларов, организаторы провели в колледже Дартмута мозговой штурм. Конечно, это было утопией — всего за два месяца решить задачу создания искусственного интеллекта. Самое главное, что понял Маккарти, — для того чтобы описать сознание в машинных терминах, необходим специальный язык программирования. В распоряжении будущего «отца искусственного интеллекта» было чудо техники того времени — машина IBM 704. Если кто помнит, на тот момент для этой машины Джон Бэкус (John Backus) только-только создал первый HL-язык «Фортран». Этот язык отлично подходил для программирования вычислительных задач, но пытаться создавать при помощи него искусственный интеллект нечего было и думать. А в чем, собственно, загвоздка?

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

Есть немало слов, довольно четко определяющих какие-то понятия, например: «хлеб», «молоко», «рука». Есть слова, которые связаны с довольно размытыми понятиями: «успех», «кино», «компьютер». Смысл некоторых слов понять вообще невозможно без дополнительного пространного объяснения в несколько абзацев: «апперцепция», «толерантность», «коммунизм». Это только существительные, а как интерпретировать прилагательные «кислый», «сладкий», «едкий»? Что такое «лететь кувырком»; «много» — это сколько и т. д.? Есть еще одна проблема. Прочтите следующую фразу: «Однажды сильный я был вышел мороз из лесу в студеную пору зимнюю».

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

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

Так что для создания искусственного интеллекта нужно было создать язык, который бы: представлял в удобной для дальнейшей интерпретации форме факты; умел бы хранить их; в момент обработки мог бы расширять базу фактов и в дальнейшем использовать новые факты так, как будто они поступили извне. Джон Маккарти решил, что задача будет облегчена, если рассматривать слово как последовательный список букв; фразу или предложение — как список слов, текст — как список предложений. Он так и поступил, создав обработчик списков — LISts Processing, или, сокращенно, LISP.

Первая версия языка LISP была реализована для машины IBM 704, которая таким образом «вывела в люди» два языка программирования, активно использующиеся до сих пор (однако как основательно в то время работали люди!). Нельзя сказать, что Маккарти начал с нуля. 11 сентября 1956 года математик Аллен Ньюэлл (Allen Newell), сверстник Маккарти, продемонстрировал работу компьютерной программы «Логик-теоретик», созданной для доказательства математических теорем. Ньюэлл несколько опередил Маккарти, свою программу он написал (разумеется, не один, а в коллективе) на языке IPL (Information Processing Language), который сам и разработал. В языке IPL впервые был применен подход связывания символов и слов в некий список. Однако язык IPL был довольно сложным и не прозрачным, а потому не прижился.

Язык LISP совершенно не похож на классические языки программирования высокого уровня. «Фортран», хотя и упростил работу программиста, сохранил «ассемблерную» структуру описания последовательности действий процессора. Листинг на «Фортране» представляет собой обычную линейную последовательность, в которой все «действие» развивается сверху вниз. Имеются, конечно, циклы, условные переходы, математические выражения, но в целом это все тот же набор команд «Ассемблера», хотя и «упакованных» в операторы. Разработанный Джоном Маккарти язык чудесным образом реализовал представление знаний путем установления соответствий между символами и их значениями. Используя LISP, программист как бы обучал машину, наполняя ее знаниями. Это весьма похоже на то, как мама обучает своего ребенка. Любой вопрос дитяти вида: «Пулемет — это что?» — порождает мамин ответ вида: «Это то, из чего стреляют». За этим вполне может следовать вопрос: «Стреляют — это что?» И так до тех пор, пока у мамы хватает знаний или терпения. Причем замечено, что и то, и другое обычно исчерпывается почти одновременно.

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

В 1998 году NASA запустило беспилотный космический корабль Deep Space 1 с задачей изучения планет нашей Солнечной системы. В рамках исследования Deep Space должен был несколько дней работать под управлением программы, написанной на LISP. И вот, к ужасу разработчиков, когда Deep Space находился на расстоянии более ста миллионов километров от Земли, в программе была обнаружена ошибка. А вы говорите — Билл Гейтс! Ну ладно, ошибки в программах были и будут всегда, но в программах, написанных на других языках, такая ошибка требует исправления текста и новой перекомпиляции. Чего, конечно, уже нельзя было сделать в такой ситуации. Однако, используя возможности языка LISP, удалось удаленно (весьма удаленно!) найти ошибку и внести изменения. После чего Deep Space продолжил свои исследования.

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

Среди его друзей значились такие культовые фигуры, как популяризатор термина «робот» Айзек Азимов. Кстати, Мински никак не мог затащить друга в свою лабораторию искусственного интеллекта в Массачусетском технологическом институте: Азимов боялся, что «скучная реальность» настоящей лаборатории окажет пагубное воздействие на его воображение. Марвин Мински обронил как-то: «Если есть что-то, что вам очень нравится, то вам следует смотреть на это не как на то, что делает вам хорошо, а как на разновидность рака мозга, поскольку это означает, что некая малая часть вашего разума решила, как отключить все остальные». Нет, ну что он хотел этим сказать? UP

Дмитрий Румянцев

Никто не прокомментировал материал. Есть мысли?