Логично начать с простого: выделим по одному элементу сети для каждого из 27 персонажей базы данных «"Ракеты" и "Акулы"». Напомним: элемент – это просто вычислительная единица. Раз наша нейронная сеть будет хранить информацию о людях, разумно начать с принципа «один человек – один элемент».
Рассмотрим элемент для одного человека. Арт стоит первым в списке, так что начнем с него. Создадим элемент, который назовем Арт (персона). Наша цель – построить сеть, где мысль о любой характеристике человека автоматически вызывает в памяти все остальные его характеристики. По нашим данным, Арт обладает следующими характеристиками: его зовут Арт, он член банды «Ракеты», ему за 40, у него неполное среднее образование, он холост и промышляет наркоторговлей. Важно понимать: человек по имени Арт – это не то же самое, что имя «Арт». Ваше имя, например, это не вы сами, ведь другой человек может носить такое же имя. Имя – просто слово, которым вас называют. Поэтому имя Арт следует рассматривать как одну из характеристик человека, которого мы называем Артом.
Теперь сделаем следующий шаг: создадим по одному элементу для каждой характеристики Арта. Для наглядности поместим элемент персоны в центр, а элементы характеристик – вокруг него. Получится схема как на рисунке 4.3.

Рисунок 4.3. Арт без связей
Размер и форма элементов (круги или овалы) выбраны просто для удобства размещения текста.
Что дальше? Мы хотим, чтобы сеть по любой характеристике Арта могла восстановить все остальные. Например, услышав имя Арт, мы должны вспомнить: «Арт из "Ракет"» или «Арту за 40, он холост». И наоборот: если кто-то ищет холостого наркоторговца за 40, мы должны сказать: «Знаю такого. Его зовут Арт». Как этого добиться?
В нашей нейронной сети «подумать о характеристике» означает подать входной сигнал на соответствующий элемент. Например, чтобы подумать о человеке по имени Арт, мы подаем сигнал на элемент «Арт (имя)». Этот сигнал активирует элемент имени, и нам нужно, чтобы активация распространилась на элементы всех остальных характеристик Арта. Ключевой момент: сеть должна каким-то образом «знать» конкретные характеристики Арта, и должен существовать механизм их взаимной активации.
Напомним: знания сети заключены в ее связях. И вот мы делаем следующий – возможно, самый важный – шаг в построении нейронной сети. Мы соединим каждый элемент характеристики с элементом «Арт (персона)» двунаправленными связями. Двунаправленность означает, что активация может передаваться в обе стороны: от элементов характеристик к элементу персоны и обратно. На схеме такие связи изображаются стрелками с наконечниками на обоих концах. В реальности эти связи формируются через обучение на основе наблюдений.
После установления связей между характеристиками и элементом персоны наша сеть выглядит так:

Рисунок 4.4. Ары со связями
Допустим, в начальном состоянии все элементы имеют уровень активации чуть ниже нуля, и при отрицательной активации они не передают сигналы другим элементам. Теперь представим, что кто-то видит имя «Арт». Это создает входной сигнал для элемента «Арт (персона)», и его активация поднимается выше нуля. Между элементами «Арт (имя)» и «Арт (имя)» есть связь, которая активирует элемент персоны, поднимая его активацию выше нуля. Обратите внимание: между элементом персоны и каждым элементом характеристики существуют двунаправленные связи. Благодаря им активируются элементы «Неполное среднее», «Ракеты», «Холост», «Наркоторговец» и «40+». Если бы связи были односторонними – только от характеристик к персоне, – активация элемента персоны не могла бы распространиться обратно на характеристики. Двусторонние связи превращают элемент персоны в своеобразный узел, позволяющий активации одной характеристики запустить активацию всех остальных. Этот узловой элемент не получает сигналов извне, как другие элементы. Он принимает сигналы от одного или нескольких элементов характеристик и передает их остальным.
Двунаправленные связи обеспечивают исключительную гибкость в работе с информацией об Арте. Как мы убедились, мысль об имени Арт – или, говоря языком нейронных сетей, входной сигнал на элемент имени – вызывает в памяти все остальные характеристики Арта. В терминах сети это означает активацию всех элементов его характеристик. Мы достигли одной из поставленных целей. Правда, пока только для Арта – а впереди еще 26 гангстеров!
Но принципы, сработавшие для Арта, применимы и к остальным персонажам базы данных. Нам просто нужно создать множество узловых элементов, каждый со связями с соответствующими характеристиками. На рисунке 4.5 показана сеть для Арта, Грега, Неда и Рика. Для наглядности мы сгруппировали элементы одного типа (имена, возраст и т. д.) в отдельные кластеры.

Рисунок 4.5. Сеть для четырех членов банд «Ракеты» и «Акулы»: НС, С и В обозначают уровни образования; Хол., Жен. и Разв. – семейное положение, как на рисунке 4.2
Это лишь фрагмент полной сети – если изобразить все связи между элементами, схема станет нечитаемой. Но вы можете представить себе полную картину: 27 элементов персон, 27 элементов имен и связи между каждым гангстером и всеми его характеристиками.
Осталось добавить в сеть на рисунке 4.5 последнюю важную деталь. Чтобы понять ее смысл, проведем мысленный эксперимент. Допустим, мы подаем входной сигнал на элемент «Ракеты». В терминах нейронной сети это означает, что мы думаем о соответствующей характеристике. Сначала активация элемента «Ракеты» запустит активацию элементов «Арт (персона)» и «Грег (имя)». Пока все идет по плану – Арт и Грег действительно члены банды «Ракеты». Эти элементы персон активируют все связанные с ними характеристики. Например, от элемента «Грег (персона)» активация распространится на элементы: «Грег (имя)», «Среднее образование», «Ракеты», «Наркоторговец», «20+» и «Женат». Пока все работает как надо.
Но по мере развития процесса активация начнет расходиться по сети все шире. Например, активированный элемент «Женат» передаст сигнал элементу «Нед (имя)», поскольку они связаны. А так как Нед – член банды «Акулы», это приведет к активации элемента «Акулы». В результате элемент «Акулы» получит некоторую положительную активацию.
Стоп! Мы же начали с размышления о «Ракетах» (подали сигнал на элемент «Ракеты»). Нам совершенно не нужно, чтобы обратная связь заставила нас думать об «Акулах».
К счастью, есть элегантное решение этой проблемы.
Поможет взаимное торможение. Элемент «Ракеты» будет подавлять элемент «Акулы», а элемент «Акулы» – подавлять элемент «Ракеты». На первый взгляд это кажется бессмысленным. Если торможение взаимное, что это дает? Да, «Ракеты» подавляют «Акул», но ведь и «Акулы» подавляют «Ракет»? Верно, но обратите внимание: элемент «Ракеты» имеет более высокую активацию (он получил прямой входной сигнал, а элемент «Акулы» – нет). Как мы видели в главе 3, сильнее активированные элементы эффективнее подавляют конкурентов. В нашем случае мощная активация элемента «Ракеты» существенно снизит активацию элемента «Акулы», тогда как слабая активация «Акул» лишь незначительно уменьшит активацию «Ракет». В результате разница между их уровнями активации возрастет, и сеть придет в состояние, где элемент «Ракеты» остается активным, а элемент «Акулы» – нет. Это проявление эффекта усиления контраста, который мы обсуждали в главе 3.
В более общем смысле взаимное торможение внутри групп элементов одного типа приводит к выявлению «победителя» в каждой группе. Это крайне важно: человек не может быть одновременно женатым, холостым и разведенным; тот, кому 20 с чем-то, не может быть одновременно 30– и 40-летним. Поэтому мы делаем последний шаг в построении сети: вводим взаимное торможение между всеми элементами внутри каждой группы. Элементы в группе представляют один тип характеристики. Элементы возраста будут подавлять друг друга, как и элементы образования, но элементы возраста не будут влиять на элементы образования. Центральные элементы персон также будут подавлять друг друга.
Мы применили механизм взаимного торможения, чтобы сеть работала нужным образом. Примечательно, что в мозге животных и человека взаимное торможение (также называемое латеральным торможением) – повсеместное явление: соседние нейроны подавляют активность друг друга. Цель такого торможения – усилить различия между близкими сенсорными сигналами, сделать их более заметными. Вдохновившись этим свойством нейронов, Джей применил латеральное торможение для схожей цели. Это и другие свойства нейронов вдохновляли исследователей до и после Джея на создание моделей, основанных на принципах работы мозга, для объяснения различных аспектов мышления. Одним из пионеров нейронных сетей, который повлиял на этот аспект модели «"Ракеты" и "Акулы"», был нейротеоретик с математическим образованием Стивен Гроссберг.
Итак, сеть построена, и мы готовы испытать ее в действии – подать входные сигналы и посмотреть на результат. Но сначала стоит узнать ее название. Представляя эту сеть, Джей назвал ее сетью интерактивной активации и конкуренции (ИАК). Интерактивная активация означает взаимное влияние элементов на уровни активации друг друга, а конкуренция – взаимное торможение между элементами одного типа (и между центральными узловыми элементами). Как мы увидим, сеть ИАК обладает поразительной объяснительной силой в самых разных областях, в том числе в качестве системы памяти.