Выбрать главу

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

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

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

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

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

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

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

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

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

От компьютерных хайку — к грамматике СРП

Сложность представления знаний в человеческой голове впервые поразила меня, когда я начал работать над программой по созданию английских предложений, основанных на неожиданном выборе и соединении слов. Я пришел к этой идее довольно интересным путем. Как-то я услышал по радио несколько примеров хайку, сочиненных компьютерами. Они меня чем-то глубоко затронули. Идея заставить компьютер производить нечто, что обычно считается искусством, была довольно юмористична и в то же время содержала элемент глубокой тайны. Меня позабавил юмор и мотивировала загадочность — даже противоречивость — программирования творческих актов. Тогда я и решил написать программу, еще более загадочную и противоречивую, чем программа хайку.

Сначала я был озабочен тем, как сделать грамматику гибкой и рекурсивной, чтобы не возникало впечатления, что программа просто механически подставляет слова в пробелы некоего трафарета. Примерно тогда же я наткнулся на статью Виктора Ингве в «Scientific American», в которой он описывал простую, но гибкую грамматику, способную порождать большое количество разнообразных предложений того типа, который можно найти в некоторых детских книгах. Я модифицировал некоторые идеи этой статьи и у меня получился набор процедур, составивших грамматику типа Схемы Рекурсивных Переходов, описанной в главе V. В этой грамматике выбор слов в предложении определялся процессом, который сначала выбирал наугад общую структуру предложения; постепенно процесс принятия решений распространялся на более низкие уровни предложения, пока не достигался уровень слов и букв. Многое должно было делаться ниже уровня слов, как например, спряжение глаголов и постановка слов во множественное число. Неправильные глаголы и существительные сначала формировались по общим правилам и затем, если результат совпадал с записанным в специальной таблице, производилась замена на нужную — нерегулярную — форму. Как только каждое слово достигало конечной формы, оно печаталось. Программа напоминала знаменитую обезьяну за пишущей машинкой, но оперировала при этом сразу на нескольких лингвистических уровнях, а не только на уровне букв.