Когда активизируется А, сеть должна включить «А исключающее или В». Когда включается В, сеть должна включить А исключающее или В. Эти факты заставят сеть увеличить вес связи, исходящей от А (скажем, до 0,6) и увеличить вес связи, исходящей от В (скажем, до 0,6), тем самым сделав каждый из этих весов достаточно большим, чтобы преодолеть пороговое значение выходного узла (скажем, 0,5). Но когда включены и А и В одновременно, получается слишком много хорошего сразу: узел «А исключающее или В» ревет белугой как раз тогда, когда нам нужно, чтобы он молчал. Если мы попытаемся применить более низкие коэффициенты весов и более высокий порог, мы можем заставить его молчать, когда включены и А и В, но, увы, он будет молчать и тогда, когда включится только А или только В. Можно экспериментировать с весами сколько угодно, но это ничего не даст. Исключающее или – лишь один из многих демонов, которых нельзя создать на основе персептронов. В числе других – демоны, определяющие, четное или нечетное число блоков активизировано; демоны, определяющие, симметрична ли последовательность активных узлов, а также демоны, выполняющие простейшие задачи на сложение[112].
Выход из этой ситуации – сделать сеть менее похожей на пресловутую собаку Павлова и добавить между уровнями входа и выхода еще один уровень: внутреннюю репрезентацию. Нужна такая репрезентация, которая эксплицирует все ключевые виды информации, связанные с входными сигналами, чтобы каждый выходной узел мог просто складывать входные значения и получать правильный ответ. Вот как это работает в случае с исключающим или:
Два скрытых узла между вводом и выводом вычисляют полезные промежуточные результаты. Узел слева вычисляет результат для простого случая «А или В», который, в свою очередь, активизирует выходной узел. Узел справа вычисляет результат для более сложного случая «А и В», и этот результат тормозит выходной узел. Выходной узел может просто вычислить «(А или В) и не (А и В)», это ему вполне по силам. Отметим, что на микроскопическом уровне построения простейших демонов из модельных нейронов без внутренних репрезентаций не обойтись; одних только связей по типу стимула и реакции не достаточно.
Более того, скрытый уровень сети можно научить самостоятельно устанавливать веса связей, используя более хитроумную версию метода обучения, чем в случае персептрона. Как и ранее, учитель задает сети правильный выход для каждого входа, а сеть подстраивает веса связей в большую или меньшую сторону, пытаясь сократить разницу. Однако в связи с этим возникает проблема, с которой не приходилось сталкиваться персептрону: как настроить связи, исходящие от узлов ввода к скрытым узлам. Проблема заключается в том, что учитель, если только он не умеет читать мысли, никак не может знать «правильные» значения для скрытых узлов, запечатанных внутри сети. Психологи Дэвид Румельхарт, Джеффри Хинтон и Рональд Уильямс пришли к хитрому решению. Узлы вывода распространяют обратно к каждому из скрытых узлов сигнал, представляющий сумму ошибок скрытого узла по всем узлам вывода, с которыми он связан («ты посылаешь слишком интенсивный сигнал возбуждения» или «ты посылаешь недостаточно интенсивный сигнал возбуждения» с количественным указанием отклонения). Этот сигнал может служить в качестве суррогата обучающего сигнала, который может использоваться для настройки вводов скрытых узлов. Связи, идущие от узлов уровня ввода к каждому из скрытых узлов, можно немного уменьшить или увеличить, чтобы сократить тенденцию скрытого узла к отклонению вверх или вниз с учетом текущего паттерна ввода. Данный метод, известный как метод обратного распространения ошибки обучения, может быть применен повторно к любому количеству уровней сети.