Перцептрон

Модель МакКаллока—Питтса стала первым важным шагом на пути развития теории искусственных нейронных сетей. Но, конечно, она не могла не содержать недостатков. Какой же недостаток в первую очередь должен бросаться в глаза? Какое самое важное свойство нейронов отсутствовало в этой модели? Несложно понять, что это свойство — обучаемость. Сейчас надежно установлено, что долговременная память и процессы обучения связаны, в первую очередь, с синаптической пластичностью — изменением связей между нейронами. Однако связи между нейронами у МакКаллока и Питтса считались фиксированными. Как же должны обучаться нейронные сети? По каким принципам у них должны меняться веса связей? И что в итоге обучения должно получаться?

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

В 1950-х годах Фрэнк Розенблатт предложил обучаемую искусственную нейронную сеть специального вида, названную им перцептроном (от perception — восприятие). Эта сеть предлагалась как модель зрительного восприятия. Она должна была учиться распознавать разные объекты по их изображениям. Таким образом, у сети появлялась вполне конкретная задача и, кроме того, архитектура.

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

Второй слой назывался ассоциативным. Каждый нейрон этого слоя получал сигналы от всех нейронов первого слоя. Эти сигналы домножались на соответствующие веса связей и суммировались (сигнал от некоторого рецептора присутствовал, если соответствующая точка изображения была белой). Если суммарный сигнал превосходил заданный порог, то ассоциативный нейрон активировался и передавал сигнал на нейроны выходного слоя. В простом варианте веса брались равными 1 (возбуждающая связь), –1 (тормозящая связь) или 0 (отсутствие связи). В таком случае ассоциативные нейроны полностью повторяли модель МакКаллока — Питтса и активировались, когда получали сигнал от некоторого минимального числа рецепторов. В еще более простом варианте тормозящие связи к ассоциативным нейронам могли отсутствовать.

Исходно в выходном слое перцептрона присутствовал один нейрон, который суммировал входы от ассоциативных нейронов, помноженные на веса связей (здесь веса уже обязательно брались вещественными). Выходной нейрон активировался, если суммарный сигнал превышал некоторый порог. Подразумевалось, что выходной нейрон должен активироваться, только когда на вход перцептрона подается изображение объекта некоторого класса (в качестве таких объектов выступали буквы английского алфавита). Схема перцептрона Розенблатта приведена на рисунке.

formula_16

 

Чтобы перцептрон стал распознавать некоторую букву, нужно установить правильные веса связей, т. е. произвести его обучение. Связи должны постепенно настраиваться при предъявлении изображений как искомого, так и ложных объектов. Здесь могут использоваться модификации правила Хебба: если выходной нейрон активировался при предъявлении ложного объекта, необходимо уменьшить веса тех связей, по которым поступал сигнал; если выходной нейрон не активировался при предъявлении искомого объекта, нужно увеличить веса тех связей, по которым поступал сигнал. Исходно настраивались связи только между ассоциативными и выходными нейронами. В дальнейшем эти правила нашли более строгое выражение в методе коррекции ошибки (но подумайте, не настораживает ли вас что-то в самих этих правилах?) При этом начальные веса связей могут быть заданы случайным образом.

Достаточно очевидно, что при предъявлении одного и того же изображения некоторой буквы перцептрон научится ее распознавать, ведь большие веса будут у тех связей, через которые распространяется активность при предъявлении искомого объекта, что обеспечивает активацию выходного нейрона. И действительно, перцептрон, в 1957 году смоделированный на компьютере IBM 704, а затем реализованный в 1960 году в виде компьютера MARK 1, показал некоторые способности к обучению и распознаванию. Но всегда ли он сможет научиться отличать искомый объект от ложного? И что будет, если изображение искомого объекта будет варьироваться?

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

Эту проблему часто иллюстрируют на примере задачи об «исключающем или». В этой задаче нужно научиться распознавать «изображения», содержащие всего два пикселя, в зависимости от «яркостей» которых изображения относятся к двум классам: (0, 1) и (1, 0) — истинные изображения, а (0, 0) и (1, 1) — ложные изображения. Соответственно необходимо построить «перцептрон», входной слой которого состоит из двух нейронов, а выходной нейрон оказывается активным или пассивным в зависимости от принадлежности изображения указанным классам (уже здесь возникает вопрос, куда пропал ассоциативный слой, но мы его немного отложим). Проще говоря, необходимо построить перцептрон, реализующий логическую операцию «исключающее или».

Если входные нейроны соединить с выходным нейроном связями с некоторыми весами, то на его вход будет поступать линейная комбинация вида W1X1+W2X2, где Wi — это веса связей, а Xi — сигналы от входных нейронов. Выходной нейрон активируется, когда W1X1+W2X2>e, где e — некоторый порог (активационная функция нейрона является «ступенькой»: на выходе ноль, когда входной сигнал меньше порога, и единица, когда больше). Несложно видеть, что плоскость X1OX2 разделяется на две части прямой линией, с одной стороны от которой находятся объекты, активирующие нейрон, а с другой стороны — не активирующие. Понятно, что нет такой прямой, по разные стороны от которой оказались бы пары точек (0, 0), (1, 1) и (0, 1), (1, 0). Иными словами, требуемого перцептрона не существует.

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

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

Некоторые другие проблемы не будут иметь решения с одним слоем ассоциативных нейронов, если ограничить их количество или, например, запретить связываться каждому из сенсорных нейронов со всеми ассоциативными нейронами сразу. Здесь стоит отметить, что если бы нейроны просто суммировали (с учетом весов связей) входные сигналы и посылали бы результат на выход (т. е. обладали бы линейной активационной функцией), то добавление дополнительных ассоциативных слоев в перцептрон ничего не изменило. Реакция выходного нейрона была бы всегда линейной комбинацией сигналов, поступающих на рецепторы. Добавление дополнительных ассоциативных слоев в этом случае не позволило бы решить проблему «исключающего или». Нелинейность активационной функции здесь имеет принципиальное значение. Благодаря ей увеличение промежуточных слоев позволяет усложнять форму линии, разделяющей классы искомых и ложных объектов. Часто ограничения, присущие однослойным сетям или же сетям с линейными активационными функциями, ошибочно приписывали не только перцептронам, но и произвольным ИНС вообще. Однако результаты Минского и Паперта вовсе не относились только к двухслойным или линейным перцептронам.

Эта, отчасти действительная, отчасти мнимая, ограниченность перцептронов многими была воспринята как приговор искусственным нейронным сетям как таковым. Чрезмерные ожидания сменились столь же необоснованным разочарованием, и массовый интерес к ИНС на время угас. Говорят даже, что критика Минского развернула направление исследований в области ИИ в сторону символьных вычислений от направления, называемого сейчас коннективизмом (или коннекционизмом, от англ. connect — соединять, связывать), по поводу чего сам Минский впоследствии высказывал некоторое сожаление. В рамках коннективизма системы ИИ строятся как совокупности связанных между собой относительно простых элементов. К символьным вычислениям относятся, в частности, экспертные системы, методы эвристического программирования, математическая логика, да и почти вся математика.

Лишь в 1986 году был предложен алгоритм обучения многослойного перцептрона, что стало одной из причин новой волны интереса к ИНС вообще и к этому типу сетей в частности (конечно, не стоит думать, что в период 1969–1986 гг. исследований в области ИНС не проводилось, тем более что появлялись все новые нейрофизиологические данные). Идею многослойных перцептронов (или, как сейчас говорят, сетей прямого распространения сигнала) высказывал еще сам Розенблатт, но без алгоритма их обучения. Сложность обучения многослойной сети состоит в том, что мы знаем правильное значение лишь для выходного нейрона, но не для нейронов промежуточных слоев, поэтому простые правила обучения не работают. Широко используемый алгоритм обучения многослойных перцептронов состоит в обратном распространении ошибки: ошибка на выходе сети как бы распространяется обратно для установления желаемых значений активности в нейронах промежуточных слоев, что позволяет провести коррекцию весов связей. Алгоритм коррекции уже не такой естественный, как в случае с перцептроном с одним ассоциативным слоем, и включает ряд дифференциальных уравнений. Этот алгоритм обучения уже никак не связан с биологией и выводился из сугубо математических соображений.

Однако, как выяснилось, увеличение числа скрытых слоев (при фиксированном числе нейронов) несущественно повышает возможности перцептрона, но заметно усложняет его обучение. И главное, с его помощью остаются нерешаемыми именно те задачи, для которых перцептроны исходно и предназначались. Это задачи распознавания объектов по изображениям. Даже такая простая вещь, как распознавание букв при их произвольном положении на сетчатке, для перцептрона затруднительна. Перцептрон пытается запомнить изображения поразному смещенной буквы сравнительно независимо. И если ему предъявить изображение этой же буквы, но в том месте на сетчатке, где она раньше не появлялась, перцептрон может ее и не узнать. Формально перцептрон может научиться распознавать все, что угодно. Но в худшем случае ему потребуется столько ассоциативных нейронов, сколько возможно вариантов стимула — это как раз и доказали Минский и Паперт. Так, для всех возможных изображений 1000X1000 пикселей потребуется перцептрон с 2^1 000 000 нейронами (единица с тремястами тысячами нулей), что уже можно сравнить с числом атомов во Вселенной, так как это количество элементов сети, а не их комбинаций. Конечно, на практике не нужно уметь распознавать все произвольные изображения. Кроме того, некоторые изменения стимула, не препятствующие его распознаванию, допускаются.

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

Но дело вовсе не в количестве нейронов — это лишь внешнее проявление того, что перцептрон плохо умеет обобщать. Об этом основном недостатке перцептронов говорил еще и сам Розенблатт. Да и Минский в своей критике говорил то же самое, но другими словами. Он это называл проблемой инвариантов. Инвариант — весьма продуктивное понятие в математике, означающее некую характеристику объекта, не меняющуюся при заданном типе преобразований этого объекта. К примеру, площадь объекта является инвариантом по отношению к его перемещениям и вращению (но не к изменению масштаба). Итак, перцептрон оказывается неспособным обобщить примеры стимулов, подверженных преобразованиям некоторых типов, чтобы потом уметь распознавать эти стимулы при любых других преобразованиях этих же типов. В таких случаях он может лишь «вызубрить» все варианты, что, как мы знаем, является самым слабым способом обучения. Странно, что критика Минского, в которой просто более строго формулировались те недостатки перцептронов, на которые указывал ранее и Розенблатт, вызвала такую бурную реакцию. К сожалению, сам Розенблатт, погибший в результате несчастного случая в 1971 году, уже не мог вести дальше эти исследования.

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

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