Гёдель, Эшер, Бах. Эта бесконечная гирлянда — страница 153 из 188

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

ДНК и белки дают некоторую перспективу

Этот довод звучит весьма убедительно; тем не менее, если интерпретировать его немного свободнее, он может быть понят как аргумент против ДНК и РНК. Зачем кодировать генетическую информацию в ДНК, если, сохраняя ее прямо в белках, можно избежать не одного, а двух лишних уровней интерпретации? Оказывается, что иметь одну и ту же информацию, закодированную в нескольких разных формах для разных целей, очень полезно. Одно из преимуществ кодирования генетической информации в ДНК в модулярной форме (в форме данных) заключается в том, что таким образом два индивидуальных гена могут быть скомбинированы для формирования нового генотипа. Это было бы очень трудно, если бы информация содержалась только в белках. Вторым доводом в пользу хранения информации в ДНК является то, что это облегчает транскрипцию и трансляцию ее в белки. Когда информация не нужна, она не занимает много места; когда она нужна, она извлекается и служит эталоном. Не существует механизма для копирования одного белка на основе другого — их третичная укладка сделала бы такое копирование слишком громоздким. Кроме того, генетическая информация почти неизбежно должна быть представлена в трехмерных структурах, таких, как энзимы, поскольку узнавание молекул и манипуляция ими по природе являются трехмерными операциями. Поэтому в контексте клеток довод в пользу исключительно процедурного представления информации кажется неверным. Это говорит о том, что в возможности перехода от процедурной к декларативной информации и обратно есть свои преимущества. Это, возможно, верно и для ИИ.

Этот вопрос был затронут Фрэнсисом Криком на конференции по общению с внеземными культурами:

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

Модульность знания

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

Рассмотрим прямолинейную программу, производящую теоремы на основе аксиом и правил вывода ТТЧ. У «знаний» подобной программы — два аспекта. Они находятся косвенно в аксиомах и правилах и явно — в произведенных теоремах. В зависимости от того, под каким углом вы смотрите на знания, вы скажете, что они либо модулярны, либо распространены по всей программе и совершенно не модулярны. Представьте себе, например, что вы написали такую программу, но забыли включить в нее Аксиому I из списка аксиом. После того, как программа вывела тысячи теорем, вы обнаруживаете свою ошибку и вставляете новую аксиому. Тот факт, что вам это легко удается, показывает, что неявные знания системы модулярны; однако вклад новой аксиомы в явные знания системы станет заметен не скоро — после того, как произведенный ею эффект распространится по системе, подобно тому, как по комнате, в которой разбили флакон с духами, медленно распространяется аромат. В этом смысле, новое знание включается в систему постепенно. Более того, если бы вы захотели вернуться назад и заменить Аксиому I на ее отрицание, для этого вам пришлось бы убрать все теоремы, в деривации которых участвовала Аксиома I. Ясно, что явные знания системы далеко не так модулярны, как ее неявные знания.

Было бы полезно научиться делать пересадку знания в модулярной форме. Тогда, чтобы обучить человека французскому языку, нужно было бы лишь, проникнув в его мозг, определенным образом изменить его нейронную структуру, — и человек бегло заговорил бы по-французски! Разумеется, все это только юмористические мечтания.

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

Представление знания с помощью логического формализма

Существует несколько философских школ, по-разному трактующих лучшие способы представления знания и работы с ним. Одна из наиболее влиятельных школ пропагандирует представление знаний с помощью формальной нотации, подобной нотации ТТЧ, — с использованием препозиционных связок и кванторов. Не удивительно, что основные операции в подобной системе выглядят как формализация дедуктивных рассуждений. Логические заключения могут быть сделаны при помощи правил вывода, аналогичных соответствующим правилам ТТЧ. Спрашивая такую систему о какой-либо идее, мы ставим перед ней цель в виде строчки, которую необходимо вывести. Например: «Является ли МУМОН теоремой?» Тут вступают в действие автоматические рассуждающие механизмы, которые пытаются приблизиться к цели, используя различные методы упрощения задач.

Предположим, например, что дано высказывание «все формальные арифметические системы неполны»; вы спрашиваете программу: «Полны ли „Principia Mathematical“». Сканируя имеющуюся в ее распоряжении информацию (часто называемую базой данных), программа может заметить, что если бы ей удалось установить, что «Principia Mathematica» — это формальная арифметика, то она могла бы ответить на вопрос. Таким образом, высказывание «„Principia Mathematica“ — это формальная арифметика» становится подзадачей, после чего в действие вступает метод упрощения задач. Если программа сможет найти что-либо еще, что могло бы способствовать подтверждению (или опровержению) задачи или подзадачи, она начнет работать над этой информацией — и так далее, рекурсивным образом. Этот процесс называется обратным сцеплением данных, поскольку он начинается с цели и затем отступает назад — предположительно к уже известным вещам. Если представить графически основную задачу, подзадачи, подподзадачи и так далее, у нас получится структура дерева, поскольку основная задача может включать несколько подзадач, каждая из которых, в свою очередь, может подразделяться на несколько подподзадач… и т. д.

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

Осознание дедуктивное и осознание аналогическое

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

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