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