ОглавлениеНазадВпередНастройки
Добавить цитату

Заменят ли нас машины?

В рассказе Льюиса Кэрролла «Что Черепаха сказала Ахиллу» быстроногий греческий воин догоняет неспешную черепаху, тем самым опровергая апорию Зенона о том, что, сколь бы малое преимущество на старте ни получила черепаха, Ахилл не сможет ее догнать. (За то время, которое потребуется Ахиллу, чтобы преодолеть это расстояние, черепаха пройдет еще небольшую часть пути; за то время, которое потребуется Ахиллу, чтобы преодолеть это небольшое расстояние, черепаха пройдет еще немного, и так до бесконечности.) Черепаха предлагает Ахиллу аналогичный парадокс из области логики. Ахилл достает из своего шлема огромный блокнот и карандаш, а черепаха диктует ему первую аксиому Евклида:

(A) Равные одному и тому же равны между собой.

(B) Две стороны этого треугольника равны одному и тому же.

(Z) Две стороны этого треугольника равны между собой.

Ахиллу приходится согласиться с тем, что любой, кто считает истинными посылки А и В и суждение «Если А и В, тогда Z», должен будет признать истинным также Z. Но теперь черепаха не соглашается с логикой Ахилла. Она говорит, что вынуждена отвергнуть заключение Z, потому что никем и никогда не было написано правило логического вывода из списка посылок, которые она должна принять. Она призывает Ахилла заставить ее признать истинность Z. Ахилл в ответ добавляет в свой блокнот суждение С:

(C) Если А и В истинны, то Z должно быть истинным.

Черепаха отвечает, что не понимает, почему она должна признать, что, поскольку истинны А, В и С, Z тоже должно быть истинным. Ахилл добавляет еще одно суждение —

(D) Если А, В и С истинны, то Z должно быть истинным —

и заявляет, что «логика возьмет вас за горло и вынудит» принять Z. Черепаха отвечает так:

«То, что мне сказала Логика, следовало бы записать, – заметила Черепаха. – Внесите, пожалуйста, в свой блокнот условное суждение, которое мы обозначим Е:

Е. «Если А, В, С и D истинны, то Z должно быть истинным».

– Согласен, – ответил Ахилл с оттенком печали в голосе.

В этот момент неотложные дела в банке вынудили рассказчика оставить счастливую пару. Лишь через несколько месяцев ему довелось снова проходить мимо того места, где беседовали Ахилл и Черепаха. Ахилл по-прежнему сидел на спине у многотерпеливой Черепахи и что-то писал в почти заполненном блокноте. Приблизившись, рассказчик услышал, как Черепаха сказала:

– Записали последнее условное суждение? Если я не сбилась со счета, оно должно быть тысяча первым. Осталось еще несколько миллионов96.

Решение этого парадокса, конечно же, заключается в том, что ни одна система гипотетических умозаключений не может строго следовать явно выраженным правилам. В тот или иной момент она должна, как сказал Джерри Рубин (а чуть позже – и корпорация «Найк»), «просто делать это» (имеется в виду рекламный слоган фирмы «Найк» Just do it! – Прим. пер.). Подразумевается, что правило должно просто выполняться за счет рефлекторной, грубой силы системы, без лишних вопросов. В этот момент система, если она имеет форму машины, будет не следовать правилам, а просто подчиняться законам физики. Аналогичным образом, если демоны (правила замещения одних символов другими символами) считывают и записывают репрезентации, а внутри каждого демона есть демоны еще меньше (и еще глупее), то в какой-то момент нам все же придется отказаться от их услуг, позвать охотников за привидениями и заменить самых маленьких и самых глупых демонов машинами. В случае людей и животных это будут машины, построенные из нейронов: нейронные сети. Давайте посмотрим, каким образом наша картина того, как работает мышление, подкрепляется простыми идеями о том, как работает мозг.

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

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



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

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



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

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



А если верить администрации президента Рейгана, пытавшейся оправдать урезанное финансирование школьного питания, овощем можно считать даже кетчуп (хотя после обрушившейся на эту программу критики администрация была вынуждена признать, что кетчуп – не очень хороший пример). На концептуальном уровне мы воздерживаемся от однозначных заявлений о том, является ли данный предмет овощем или нет, и предпочитаем говорить, что этот предмет – более удачный или менее удачный пример овоща. На механическом уровне мы уже не утверждаем, что узел, представляющий «овощность», должен быть включен или выключен, а допускаем варьирование значения, которое может составлять от 0 (для камня) и 0,1 (для кетчупа) до 0,4 (для чеснока) и 1,0 (для сельдерея).

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



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

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

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

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



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

Что еще более важно, связи являются избыточными, так что даже если автоассоциативная сеть получает лишь часть шаблона объекта, скажем, только информацию о зелености и хрусткости, то остаток шаблона (в данном случае наличие листвы) заполняется автоматически. Это в некотором смысле напоминает мышление. Нам не нужны встроенные ярлыки для каждого объекта в памяти; практически любой признак того или иного объекта сразу вызывает его в памяти целиком. Например, мы можем вспомнить про овощи, подумав о чем-то покрытом листвой, или зеленом и хрустящем, или имеющем листву и хрустящем. Наглядный пример – наша способность восстановить слово по его фрагментам. Мы видим этот рисунок не как беспорядочные обрывки линий или даже как бессмысленную последовательность букв вроде 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.

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

Цитируется в переводе Ю. Данилова.