bannerbanner
Настройки чтения
Размер шрифта
Высота строк
Поля
На страницу:
12 из 18


Как только мы разрешим сети быть неточной, она сможет представлять разные степени очевидности и вероятности событий и принимать статистические решения. Предположим, что каждый узел сети представляет какую-то одну улику, доказывающую причастность дворецкого к преступлению (отпечатки пальцев на ноже, любовные письма, адресованные жене убитого, и так далее). Предположим, что верхний узел представляет вывод о том, что это сделал дворецкий. На концептуальном уровне чем больше у нас улик, указывающих на то, что убийство мог совершить дворецкий, тем выше будет вероятность того, что это действительно сделал дворецкий.

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

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

Здесь начинают происходить интереснейшие вещи. Сеть начинает напоминать мыслительные процессы в голове человека, чего нельзя сказать о слабо соединенных сетях. По этой причине психологи и исследователи искусственного интеллекта используют сети, в которых все соединено со всем, для моделирования самых разных примеров распознавания простых шаблонов. Созданы сети для распознавания линий, из которых состоят буквы; букв, из которых состоят слова; частей тела, из которых состоят животные, предметов мебели, из которых состоит интерьер комнаты. Зачастую при этом отказываются от узла принятия решений, ведется исчисление только корреляций свойств. Эти сети, называемые иногда блоками автоматического ассоциативного установления соединений, или автоассоциативными сетями, имеют пять привлекательных особенностей.



Во-первых, блок автоматического ассоциативного установления соединений – это память с адресацией по содержимому. В любом серийном компьютере биты сами по себе не несут никакого значения, а байтам, состоящим из них, присвоены произвольные адреса, как номера домов на улице, не имеющие ничего общего с их содержимым. Доступ к ячейкам памяти осуществляется по адресам, а чтобы определить, хранится ли где-либо в памяти тот или иной шаблон, нужно проверить каждую ячейку (или использовать пути быстрого доступа). В случае с памятью, адресуемой по содержимому, напротив, при указании объекта автоматически активизируется любая ячейка памяти, в которой содержится копия этого объекта. Поскольку объект представлен в автоассоциативной сети путем возбуждения узлов, представляющих его свойства (в нашем случае с сельдереем – это зеленый цвет, наличие листвы и так далее), а поскольку эти узлы соединены друг с другом сильными связями, возбужденные узлы будут подкреплять друг друга, и после нескольких таких кругов, в течение которых будет активизирована вся сеть, все узлы, связанные с объектом, перейдут в возбужденное состояние. Это означает, что объект распознан. Нужно отметить, что совокупность связей одной автоассоциативной сети может вмещать не одну, а несколько групп весов, благодаря чему память может хранить одновременно несколько объектов.

Что еще более важно, связи являются избыточными, так что даже если автоассоциативная сеть получает лишь часть шаблона объекта, скажем, только информацию о зелености и хрусткости, то остаток шаблона (в данном случае наличие листвы) заполняется автоматически. Это в некотором смысле напоминает мышление. Нам не нужны встроенные ярлыки для каждого объекта в памяти; практически любой признак того или иного объекта сразу вызывает его в памяти целиком. Например, мы можем вспомнить про овощи, подумав о чем-то покрытом листвой, или зеленом и хрустящем, или имеющем листву и хрустящем. Наглядный пример – наша способность восстановить слово по его фрагментам. Мы видим этот рисунок не как беспорядочные обрывки линий или даже как бессмысленную последовательность букв вроде MIHB, а как что-то больше похожее на правду (на рисунке слово MIND – англ, «разум, мышление». – Прим. пер.):



Второе преимущество, известное как «изящная деградация», позволяет решить проблемы зашумленного входного сигнала или аппаратного отказа. Кому из нас не хотелось бросить чем-нибудь тяжелым в монитор, увидев, что в ответ на команду pritn file (англ, «печаьт файла») компьютер отвечает сообщением об ошибке pritn: command not found (англ, «печаьт: команда не найдена»)? В фильме Вуди Аллена «Хватай деньги и беги» (Take the Money and Run) грабителя банка Верджила Старквела подводит его же собственный почерк: кассирша не может понять, что он написал в записке, принимая слово gun («пистолет») за gub. На карикатуре Гари Ларсона, украшающей дверь не одного психолога-когнитивиста, пилот пролетает над необитаемым островом, на котором потерпевший кораблекрушение человек написал на песке послание. Пилот, прочитав надпись, кричит по рации: «Подождите! Подождите!… Нет, отбой – кажется, там написано “ПОМОРИТЕ”!» (в оригинале – HELF вместо англ. HELP «помогите». – Прим. пер.). Люди справляются с этими трудностями лучше, потому что у нас есть автоассоциативные сети, которые, принимая во внимание преобладание взаимно состоятельных элементов информации, исключают единственный не соответствующий элемент. На слово pritn мозг отреагирует активацией более привычного шаблона print, слово gub будет заменено шаблоном gun, a HELF – шаблоном HELP. Компьютер, столкнувшись с единственным испорченным битом на диске, крохотной каплей ржавчины в одном из разъемов или кратковременным понижением напряжения в сети, может зависнуть или выйти из строя. Но человек – даже если он устал, у него похмелье или травма головного мозга – не зависнет и не выйдет из строя; скорее всего, он будет действовать не так быстро и точно, но все-таки сможет выдать вразумительный ответ.

Третье преимущество автоассоциативных сетей в том, что они могут выполнять простой тип вычислений, известный как удовлетворение ограничений. Многие задачи, которые пытаются решить люди, относятся к разряду задач, в которых причину трудно отделить от следствия. В главе 1 я приводил пример о том, что мы определяем яркость поверхности, исходя из предположений об угле наклона, и вычисляем угол поверхности, исходя из предположений о ее яркости, при этом не зная наверняка ни того, ни другого. Многие подобные задачи относятся к сфере восприятия, языка и здравого смысла. Что я вижу – сгиб поверхности или ее край? Что я слышу – гласную [I] (как в слове pin) или гласную [е] (как в слове реп), произнесенную с южным акцентом? Стал ли я жертвой человеческой злобы или глупости? Подобные неоднозначные ситуации иногда можно разрешить, выбрав интерпретацию, которая была бы непротиворечивой относительно самого большого количества интерпретаций других неоднозначных ситуаций, если бы их все можно было разрешить одновременно. Например, если один звук речи позволяет интерпретировать слово либо как send, либо как sinned, а другой – либо как реп, либо как pin, я могу разрешить эту неопределенность, если услышу, как один и тот же говорящий произносит оба слова с одним и тем же гласным звуком. Я бы рассуждал следующим образом: видимо, говорящий имел в виду слова send и реп, потому что фраза send а реп («послать ручку») – единственный вариант, который не нарушает никаких ограничений. Если предположить, что это были слова sinned и pin, то получится sinned a pin (англ, «согрешил булавку»), фраза, которая нарушает правила грамматики и вероятной сочетаемости слов по смыслу; вариант send и pin исключается из-за другого ограничения: известно, что обе гласные были произнесены одинаково; вариант sinned и реп («согрешил» и «ручка») можно исключить, потому что он нарушает оба ограничения.

Подобные рассуждения займут много времени, если мы будем проверять все варианты сочетаемости по одному. Однако в автоассоциативной сети они заранее закодированы в связях, и сеть может оценить все варианты одновременно. Предположим, что каждая интерпретация – это модельный нейрон; один нейрон – для варианта sinned, еще один – для send, и т. д. Предположим, что пары узлов, интерпретации которых непротиворечивы, соединены с положительными весами, а пары узлов, интерпретации которых противоречат друг другу, – соединены с отрицательными весами. Возбуждение затронет всю сеть, и если все пройдет успешно, то мы получим состояние сети, при котором активным будет самое большое количество взаимно непротиворечивых интерпретаций. Хорошим сравнением здесь будет мыльный пузырь, который колеблется, принимая разнообразные яйцевидные и амебовидные формы из-за того, что притяжение соседних молекул заставляет его оставаться шарообразным.

Бывает, что у сети ограничений могут быть взаимно противоречивые, но одинаково стабильные состояния. Это отражение такого явления, как противоречивость целого: целостный объект, но не его части, может быть интерпретирован двояко. Если пристально смотреть на рисунок куба на странице 123 (куб Неккера"), в какой-то момент ваше восприятие перевернется: вам начнет казаться, что вы видите не верхнюю его грань (вид снизу), а нижнюю грань (вид сверху). Когда происходит целостный переворот, изменение затрагивает интерпретацию каждой из частей объекта. Каждая ближняя к нам грань становится дальней гранью, каждый внутренний угол становится внешним углом, и так далее. И наоборот: если вы намеренно постараетесь увидеть внешний угол как внутренний, то можно произвольно вызвать обратный переворот всего куба. Динамика этого отражена в схеме под рисунком куба. Узлы представляют интерпретации элементов куба, и интерпретации, не противоречащие друг другу в структуре трехмерного объекта, возбуждают друг друга, в то время как противоречивые интерпретации тормозят друг друга.

Четвертое преимущество связано со способностью сети автоматически делать заключения. Если бы мы подключили наш распознаватель (который направлял бы данные с группы входных узлов на узел принятия решений) к нашему принтеру (у которого был бы узел намерений, от которого сигнал разветвлялся бы на группу выходных узлов), то получили бы простейший демон подстановок – например, на букву «В» он бы реагировал тем, что печатал бы «С». Однако если обойтись без посредника и присоединить входные узлы непосредственно к выходным узлам, можно получить очень интересный результат.



Вместо верного букве демона подстановок мы получим демона, который может делать простые обобщения. Такая сеть называется ассоциатором паттернов100.



Предположим, что входные узлы нижнего уровня представляют внешние признаки животных: «покрытое шерстью», «четвероногое», «покрытое перьями», «зеленое», «длинношеее» и т. д. Если создать достаточное количество узлов, каждое животное можно будет представить, включив узлы, соответствующие его уникальному набору признаков. Например, попугай будет представлен включением узла «покрытое перьями», выключением узла «покрытое шерстью» и т. д. Теперь представим, что выходные узлы верхнего уровня соответствуют зоологическим категориям. Один из них представляет тот факт, что животное травоядное, другой – что оно теплокровное и т. д. При том, что у нас нет узлов, соответствующих конкретным животным (так, у нас нет блока «попугай»), весы будут автоматически представлять статистическое знание о классах животных. Они воплощают знание о том, что животные с перьями обычно бывают теплокровными, что животные, покрытые шерстью, обычно живородящие, и т. д. Любой факт, хранящийся в связях для одного животного (попугаи – теплокровные) автоматически переносится на похожих животных (волнистые попугайчики – теплокровные), потому что для сети неважно, что связи относятся к конкретному животному. Связи просто указывают, какие внешние характеристики предполагают какие внешне невидимые свойства, вообще не учитывая факт разделения животных на виды.

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

Пятая хитрость нейронных сетей в том, что они могут учиться на примерах, при этом обучение состоит в изменении весов связей. Разработчику модели (как и процессу эволюции) не приходится устанавливать вручную тысячи коэффициентов веса, необходимых для того, чтобы получить нужный выход. Представим, что «учитель» подает в ассоциатор паттернов не только вход, но и правильный выход. Механизм обучения сравнивает реальный выход, полученный сетью (а он поначалу будет достаточно произвольным), с правильным ответом и корректирует коэффициенты веса с тем, чтобы минимизировать разницу между этими двумя значениями. Если сеть тормозит выходной узел, который по версии учителя должен быть возбужден, нам нужно сделать так, чтобы текущее поступление активных входов в будущем приводило к его возбуждению. Следовательно, коэффициенты веса на активных входах к этому мятежному выходному узлу нужно немного увеличить. Кроме того, нужно слегка снизить величину порога самого выходного узла, чтобы сделать его более чувствительным к любому инициирующему сигналу. Если сеть активизирует выходной узел, а учитель говорит, что он должен быть выключен, происходит противоположное: коэффициенты весов активных на данный момент входных элементов немного снижаются (возможно даже снижение веса ниже нуля, до отрицательного значения), а величина порога нужного узла увеличивается. Благодаря этому повышается вероятность того, что «гиперактивный» выходной узел в будущем будет выключаться при получении таких входных сигналов. В сеть вновь и вновь подаются целые серии входных сигналов и соответствующих им выходов, каждый раз при этом возникают волны небольших изменений в весах связей, пока сеть не начнет выдавать правильный выход для каждого входа – по крайней мере, в той мере, в которой это возможно.

Ассоциатор паттернов, оснащенный таким методом обучения, называется персептроном. Персептроны интересны, однако у них есть один большой недостаток. Они напоминают плохого повара, который считает, что если каждый ингредиент в небольшом количестве хорош, то все ингредиенты сразу и помногу – это будет еще лучше. Решая, правомерно ли определенный набор сигнальных входов приводит к выключению выходного сигнала, персептрон взвешивает их и складывает. Это зачастую дает неверный ответ, причем даже к простой задаче. Хрестоматийный пример этого недостатка – это то, как персептрон справляется с простой логической операцией, называемой «исключающее ИЛИ», что означает «А или В, но не оба сразу».



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

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



Два скрытых узла между вводом и выводом вычисляют полезные промежуточные результаты. Узел слева вычисляет результат для простого случая «А или В», который, в свою очередь, активизирует выходной узел. Узел справа вычисляет результат для более сложного случая «А и В», и этот результат тормозит выходной узел. Выходной узел может просто вычислить «(А или В) и не (А и В)», это ему вполне по силам. Отметим, что на микроскопическом уровне построения простейших демонов из модельных нейронов без внутренних репрезентаций не обойтись; одних только связей по типу стимула и реакции не достаточно.

Более того, скрытый уровень сети можно научить самостоятельно устанавливать веса связей, используя более хитроумную версию метода обучения, чем в случае персептрона. Как и ранее, учитель задает сети правильный выход для каждого входа, а сеть подстраивает веса связей в большую или меньшую сторону, пытаясь сократить разницу. Однако в связи с этим возникает проблема, с которой не приходилось сталкиваться персептрону: как настроить связи, исходящие от узлов ввода к скрытым узлам. Проблема заключается в том, что учитель, если только он не умеет читать мысли, никак не может знать «правильные» значения для скрытых узлов, запечатанных внутри сети. Психологи Дэвид Румельхарт, Джеффри Хинтон и Рональд Уильямс пришли к хитрому решению. Узлы вывода распространяют обратно к каждому из скрытых узлов сигнал, представляющий сумму ошибок скрытого узла по всем узлам вывода, с которыми он связан («ты посылаешь слишком интенсивный сигнал возбуждения» или «ты посылаешь недостаточно интенсивный сигнал возбуждения» с количественным указанием отклонения). Этот сигнал может служить в качестве суррогата обучающего сигнала, который может использоваться для настройки вводов скрытых узлов. Связи, идущие от узлов уровня ввода к каждому из скрытых узлов, можно немного уменьшить или увеличить, чтобы сократить тенденцию скрытого узла к отклонению вверх или вниз с учетом текущего паттерна ввода. Данный метод, известный как метод обратного распространения ошибки обучения, может быть применен повторно к любому количеству уровней сети.

Мы пришли к тому, что многие психологи считают вершиной мастерства разработчика нейронных сетей. В некотором смысле мы сделали полный круг, потому что сеть, включающая скрытый уровень, напоминает ту самую условную карту логических вентилей, которую Мак-Каллок и Питтс предложили как модель нейронно-логического компьютера. На концептуальном уровне сеть со скрытыми узлами – это способ составить из совокупности суждений, которые могут быть истинными или ложными, сложную логическую функцию, скрепляемую связями «и», «или», «не» – но только с двумя отличительными особенностями. Первая особенность – это то, что значения здесь могут быть не только однозначно включенными или выключенными, но и варьируемыми, а следовательно – могут представлять ту или иную степень истинности или вероятности истинности данного утверждения, а не только абсолютно истинные или абсолютно ложные утверждения. Вторая особенность в том, что эту сеть можно во многих случаях обучить устанавливать правильные веса, подавая вводы и правильные для них выводы. Вдобавок к этим двум особенностям нужно отметить особое отношение: нужно ориентироваться на огромное количество связей между нейронами мозга и не смущаться, как бы много связей и логических элементов ни пришлось добавить в сеть. Придерживаясь такого морального принципа, можно создать сети, способные рассчитывать множество возможностей и, следовательно, использовать статистическую избыточность характеристик мира. А это, в свою очередь, позволит нейронным сетям распространять информацию с одного ввода на другие подобные вводы без дополнительного обучения, при условии, что для данной задачи подобные вводы дают подобные выводы102.

Это всего лишь несколько идей относительно того, как можно воплотить наших крохотных демонов с их досками объявлений в форму машин, отдаленно напоминающих нейронные сети. Эти идеи служат мостиком – пусть пока довольно шатким – на пути объяснения, которое начинается в концептуальной сфере (народная интуитивная психология и лежащие в ее основе своеобразные версии знаний, логики и теории вероятности), ведет дальше к правилам и репрезентациям (демонам и символам) и в конечном итоге приводит к реальным нейронам. Нейронные сети также скрывают приятные сюрпризы. Пытаясь разобраться в «программном обеспечении» мозга, мы в конечном итоге можем использовать только демонов достаточно глупых, чтобы их можно было заменить машиной. Если нам понадобится более умный демон, то придется еще как-то разгадать, как построить его из более глупых демонов. Процесс идет быстрее, а иногда и совсем иначе, когда разработчики нейронных сетей, идущие от нейронов к верхним уровням, создают целый арсенал готовых демонов, которые выполняют простые действия (как в случае с памятью, адресуемой по содержимому или с автоматически обобщающим информацию ассоциатором паттернов). Разработчики ментального программного обеспечения (которые, по сути, занимаются обратным проектированием) располагают неплохим арсеналом запчастей, из которых они могут собрать умных демонов.

Коннектоплазма

В какой же части мыслекода заканчиваются правила и репрезентации, и начинаются нейронные сети? Большинство когнитивистов приходят к единому мнению по крайней мере по поводу крайних точек. На высших уровнях когнитивной способности, где мы сознательно проходим каждый шаг, применяя правила, которые мы выучили в школе или обнаружили сами, мышление похоже на продукционную систему с символическими записями в памяти и демонами, выполняющими операции. На нижнем уровне записи и правила выполняются в рамках чего-то вроде нейронной сети, которая реагирует на знакомые паттерны и ассоциирует их с другими паттернами. Однако граница между ними остается предметом споров. Можно ли сказать, что простые нейронные сети отвечают за преобладающую часть повседневного мышления, а уровню явных правил и суждений оставляют только плоды учености? Или сети больше напоминают строительный материал, не способный на проявление человеческого рассудка, пока из него не будут построены структурированные репрезентации и программы?

На страницу:
12 из 18