«Успех» — значение этого социально окрашенного слова известно каждому. И, однако, каждый вкладывает в это слово собственный смысл. Кому-то подавай власть над всем миром, а кого-то вполне устроит прохождение очередного уровня в трехмерном шутере. С чем, пожалуй, почти никто не станет спорить, так это с тем, что успех доставляет удовольствие — материальное или моральное. Но далеко не каждый, как Марвин Мински (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
Дмитрий Румянцев