Как работает мозг - Стивен Пинкер
Шрифт:
Интервал:
Закладка:
В нашем примере образец мыслекода, который выражает семейные отношения, представлен двумя типами утверждений. Пример первого типа – Alex father-of Andrew (Алекс отец Эндрю): имя, за которым следует указание на тип родственных отношений, а затем еще одно имя. Пример второго типа – Alex is-male (Алекс мужского пола): имя, за которым следует указание на пол. Пусть вас не смущает то, что в записях мыслекода я использую английскую лексику и синтаксис. Это делается только для того, чтобы вам, читатель, было легче понять, что означают символы. В случае с машиной эти символы представляют собой разные метки. Это могут быть какие угодно символы, расположенные в каком угодно порядке – при условии, что каждый символ последовательно используется для обозначения одного и того же человека (например, тот символ, который мы используем для обозначения Алекса, всегда используется для Алекса и никогда не используется для обозначения кого-либо еще), и что они располагаются в одном и том же порядке (чтобы они могли правильно передавать информацию о том, кто чей отец). Метки могут иметь форму штрихов в штрих-коде, распознаваемом сканером, или замочных скважин, к каждой из которых подходит только один ключ, или форм, которые подходят только к одному шаблону. Естественно, в случае серийных компьютеров это будут разные последовательности расположения зарядов в кристаллах микросхем, а в случае мозга – последовательности возбуждения в группах нейронов. Здесь очень важно отметить, что машина не может понимать символы таким же образом, как вы и я; элементы конструкции машины реагируют на их форму, выполняя ту или иную операцию – как автомат для продажи жвачки реагирует на вес и форму монетки, выдавая покупателю жвачку.
Приводимый ниже пример – это попытка пролить свет на суть машинного вычисления, показать вам, как машине удается это провернуть. Чтобы более наглядно представить мое положение о том, что символ может одновременно обозначать некое понятие и механическим путем обусловливать некое событие, я покажу весь процесс работы продукционной системы шаг за шагом и опишу все происходящее дважды: на концептуальном уровне, в терминах содержания задачи и логики, которая используется для ее решения, и на механическом уровне, в терминах действий машины – считывания данных и нанесения меток. Система разумна в том смысле, что эти два уровня точно соответствуют друг другу: каждая идея соответствует метке, каждый логический шаг соответствует действию.
Назовем ту часть памяти системы, в которой содержатся записи о родственных отношениях, «Долгосрочной памятью». Другую часть назовем «Краткосрочной памятью» – это нечто вроде чернового блокнота для вычислений. Часть «Краткосрочной памяти» представляет собой область задач; в ней содержится список вопросов, на которые система пытается ответить. Системе нужно узнать, является ли Горди родным дядей по отношению ко мне (условное обозначение – Я). В самом начале память выглядит следующим образом:
На концептуальном уровне наша цель – ответить на вопрос; ответ будет положительным, если факт, которого он касается, истинен. На механическом уровне система должна определить, есть ли где-нибудь в ее памяти последовательность знаков, идентичная той последовательности, которую мы видим со знаком вопроса в колонке «Задачи». Функция одного из демонов системы – отвечать на вопросы, связанные с поиском, считывая аналогичные знаки в колонках «Задачи» и «Долгосрочная память». Обнаружив совпадение, он печатает метку рядом с вопросом, что означает, что вопрос получил положительный ответ. Для удобства давайте скажем, что метка имеет форму слова Yes (Да).
IF: Goal = blah-blah-blah?
Long-Term Memory = blah-blah-blah
THEN: MARK GOAL
Yes
(ЕСЛИ: Задача = то-то и то-то?
Долгосрочная память = то-то и то-то
ТО: МЕТКА ЗАДАЧИ
Да)
Концептуальная проблема, стоящая перед системой, состоит в том, что у нее нет эксплицитного знания о том, кто чей дядя. Это знание имплицитно следует из других фактов, которые она знает. На механическом уровне то же самое будет значить вот что: в разделе «Долгосрочная память» нет метки uncle-of (дядя); там есть только метки sibling-of (брат/сестра) и parent-of (родитель). На концептуальном уровне нам нужно вывести знание о том, кто чей дядя, из знания о том, кто приходится кому родителем и братом/сестрой. На механическом уровне нам нужен демон, который сделает запись uncle-of (дядя), по обе стороны от которой будут нужные метки, обнаруженные в записях с элементами sibling-of (брат/сестра) и parent-of (родитель). На концептуальном уровне нам нужно выяснить, кто у нас родители, идентифицировать их братьев и сестер, потом выбрать из них лиц мужского пола. На механическом уровне нам нужен следующий демон, который сделает в области «Задачи» новые записи, запускающие соответствующие операции поиска в памяти:
IF: Goal = Q uncle-of Р
THEN: ADD GOAL
Find P’s Parents
Find Parents’ Siblings
Distinguish Uncles/Aunts
(ЕСЛИ: Задача = Q дядя PTO: ДОБАВИТЬ ЗАДАЧУ
Найти родителей Р
Найти братьев/сестер родителей
Различить дядь/теть)
Этот демон запускается записью uncle-of (дядя) в колонке «Задачи». В этой колонке действительно есть такая запись, поэтому демон начинает действовать и добавляет к этой колонке новые метки:
Необходим также элемент программы – еще один демон или дополнительный механизм внутри данного демона, который будет отвечать за Р и Q, то есть заменять ярлык Р списком конкретных ярлыков имен: Me (Я), Abel (Абель), Gordie (Горди) и т. д. Эти детали я здесь не привожу, чтобы не усложнять восприятие процесса.
Новые записи в колонке «Задачи» побуждают к действию других демонов. Один из них (на концептуальном уровне) ищет родителей системы, копируя (на механическом уровне) все записи, содержащие имена родителей, в раздел «Краткосрочная память» (если только там уже нет таких записей, конечно; это условие необходимо, чтобы демон не продолжал бессмысленно делать одну копию за другой, как ученик чародея):
IF: Goal = Find P’s Parents
Long-Term Memory = X parent-of P
Short-Term Memory ≠ X parent-of P
THEN: COPY TO Short-Term Memory
X parent-of P
ERASE GOAL
(ЕСЛИ: Задача = найти родителей P
Долгосрочная память = X родитель P
Краткосрочная память ≠ X родитель P
ТО: КОПИРОВАТЬ В КРАТКОСРОЧНУЮ ПАМЯТЬ
X родитель P
СТЕРЕТЬ ЗАДАЧУ)
Теперь наша доска объявлений выглядит следующим образом:
Теперь, когда мы знаем родителей, мы можем найти братьев и сестер родителей. На механическом уровне это означает, что теперь, когда имена родителей записаны в разделе «Краткосрочная память», может начинать работу демон, копирующий записи о братьях и сестрах родителей:
IF: Goal = Find Parents’ Siblings
Short-Term Memory = X parent-of Y
Long-Term Memory = Z sibling-of X
Short-Term Memory
Z sibling-of X
THEN: COPY TO Short-Term Memory
Z sibling-of X
ERASE GOAL
(ЕСЛИ: Задача = найти родителей P
Краткосрочная память = X родитель Y
Долгосрочная память = Z брат/сестра X
Краткосрочная память
Z брат/сестра X
ТО: КОПИРОВАТЬ В КРАТКОСРОЧНУЮ ПАМЯТЬ
Z брат/сестра X
СТЕРЕТЬ ЗАДАЧУ)
Вот что у него получается:
На данном этапе мы рассматриваем дядь и теть вместе. Чтобы отделить дядь от теть, нам нужно найти среди них мужчин. На механическом уровне система должна найти записи, рядом с которыми в разделе «Долгосрочная память» стоят метки is-male (мужского пола). Вот демон, который выполняет эту проверку:
IF: Goal = Distinguish Uncles/Aunts
Short-Term Memory = X parent-of Y
Long-Term Memory = Z sibling-of X
Long-Term Memory = Z is-male
THEN: STORE IN LONG-TERM MEMORY
Z uncle-of Y
ERASE GOAL
(ЕСЛИ: Задача = различить дядь/теть
Краткосрочная память = X родитель Y
Долгосрочная память = Z брат/сестра X
Долгосрочная память = Z мужского пола
ТО: ХРАНИТЬ В ДОЛГОСРОЧНОЙ ПАМЯТИ
Z дядя Y
СТЕРЕТЬ ЗАДАЧУ)
Это демон, который наиболее явно воплощает в себе понимание системой значения слова «дядя»: это человек мужского пола, брат одного из родителей. Система добавляет запись о том, кто является дядей, в раздел «Долгосрочная память», а не «Краткосрочная память», потому что эта запись представляет собой элемент знания, который всегда истинен:
На концептуальном уровне мы всего лишь логически вывели факт, который был запрошен. На механическом уровне мы только что создали идентичные друг другу вплоть до последней метки записи в колонках «Задачи» и «Долгосрочная память». Запускается самый первый из упомянутых мной демонов, который осуществляет поиск таких пар; он ставит метку, обозначающую, что задача решена:
Чего мы достигли? Мы построили из безжизненных деталей автомата по продаже жвачки систему, которая делает нечто, отдаленно напоминающее работу мышления: она устанавливает истинность утверждения, с которым ранее никогда не имела дела. Из утверждений о конкретных родителях, братьях и сестрах и знания о том, что значит быть чьим-то дядей, она выработала истинные утверждения о конкретных дядях. И все это, повторю еще раз, было сделано путем обработки символов – материальных изображений, обладающих репрезентативными и каузальными свойствами, то есть одновременно способных нести в себе информацию о чем-либо и принимать участие в цепочке физических событий. Указанные события и составляют процесс вычисления: вычислительные механизмы задуманы таким образом, что если интерпретация символов, запускающих машину, является истинным утверждением, тогда и интерпретация символов, синтезированная машиной, тоже является истинным утверждением. Вычислительная теория сознания – это гипотеза о том, что интеллект как раз представляет собой вычисление в этом значении слова.