Сверточные сети. Неокогнитрон

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

Локальность восприятия нам уже знакома, она означает, что нейрон, получающий информацию, следит не за всем входным пространством сигналов, а только за его частью. Ранее мы говорили, что такая область слежения называется рецептивным полем нейрона.

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

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

Деление нейронов на функции связано с обнаружением в первичной зрительной коре двух основных типов нейронов. Простые (simple) нейроны реагируют на стимул, расположенный в определенном месте их исходного рецептивного поля. Сложные (complex) нейроны проявляют активность на стимул, независимо от его положения.

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

Исходные рецептивные поля простой клетки (Николлс Дж., Мартин Р., Валлас Б., Фукс П.)

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

Из этих двух идей родились соответствующие модели нейронных сетей. Первую подобную сеть создал Кунихика Фукусима. Она получила название когнитрон. Позже он создал более продвинутую сеть – неокогнитрон (Fukushima, 1980). Неокогнитрон – это конструкция из несколько слоев. Каждый слой состоит из простых (s) и сложных (c) нейронов.

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

Рецептивные поля простых клеток, настроенных на поиск выбранного паттерна в разных позициях (Fukushima K. , 2013)

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


Плоскости неокогнитрона

 Каждый слой после входного имеет своим входом картину, образованную комплексными нейронами предыдущего слоя. От слоя к слою происходит все большее обобщение информации, которое в результате приводит к распознаванию конкретных образов независимо от их расположения на исходной картинке и некоторой трансформации.

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

Процесс распознавания в неокогнитроне

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

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

Обучение неокогнитрона происходит без учителя. Оно соответствует описанной ранее процедуре выделения полного набора факторов. Когда на вход неокогнитрона подаются реальные изображения, нейронам не остается ничего другого, кроме как выделять свойственные этим изображениям компоненты. Так, если подавать на вход рукописные цифры, то малые рецептивные поля простых нейронов первого слоя увидят линии, углы и сопряжения. Размеры зон конкуренции определяют, сколько различных факторов может выделиться в каждой пространственной области. В первую очередь выделяются наиболее значимые компоненты. Для рукописных цифр это будут линии под различными углами. Если останутся свободные факторы, то далее могут выделиться и более сложные элементы.

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

Распознавание в неокогнитроне (Fukushima K. , Neocognitron, 2007)

Видео ниже позволяет получить наглядное представление о неокогнитроне.


Альтернатива обучению без учителя – это обучение с учителем. Так, в примере с цифрами мы можем не ждать, пока сеть сама выделит статистически устойчивые формы, а говорить ей, что за цифра ей предъявляется, и требовать соответствующего обучения. Наиболее значительных результатов в таком обучении сверточных сетей добился Ян ЛеКун (Y. LeCun and Y. Bengio, 1995). Он показал, как можно использовать метод обратного распространения ошибки для обучения сетей, архитектура которых, как и у неокогнитрона, отдаленно напоминает строение коры мозга.

Сеть свертки для распознавания рукописного текста (Y. LeCun and Y. Bengio, 1995)

Персептрон

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

В 1958 году Фрэнк Розенблатт описал конструкцию, названную им персептроном (Rosenblatt, 1958), которая способна к обучению с учителем.

Персептрон, настроенный на определение цвета

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

Обучение персептрона осуществляется за счет изменения весов нейронов третьего реагирующего слоя. Цель обучения – заставить персептрон правильно классифицировать подаваемые образы.

Нейроны третьего слоя работают как пороговые сумматоры. Соответственно, веса каждого из них определяют параметры некой гиперплоскости. Если есть линейно-разделимые входные сигналы, то выходные нейроны как раз и могут выступать как их классификаторы.

Если \(Y\) – это вектор реального выхода персептрона а, \(D\) – вектор, который мы ожидаем получить, то о качестве работы нейронной сети говорит вектор ошибки:

\[E=D-Y\]

Если задаться целью, минимизировать среднеквадратическую ошибку, то можно вывести так называемое дельта-правило модификации весов:

\[\omega _{ij}(n+1)=\omega _{ij}(n)+\eta x_{j}(n)e_{i}(n)\]

При этом начальным приближением могут выступать нулевые веса.

Это правило является не чем иным, как правилом Хебба, примененным к случаю персептрона.

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

Многослойный персептрон с двумя скрытыми слоями (Хайкин, 2006)

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

Долгое время было непонятно, как можно обучать многослойный персептрон. Основной метод – метод обратного распространения ошибки был описан только в 1974 г. А.И. Галушкиным и независимо и одновременно Полом Дж. Вербосом. Затем он был переоткрыт и получил широкую известность в 1986 г. (David E. Rumelhart, Geoffrey E. Hinton, Ronald J. Williams, 1986).

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

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

Выделение набора факторов

Мы показали, как фильтр Хебба выделяет первую главную компоненту. Оказывается, с помощью нейронных сетей можно с легкостью получить не только первую, но и все остальные компоненты. Это можно сделать, например, следующим способом. Предположим, что у нас \(m\) входных признаков. Возьмем \(l\) линейных нейронов, где \(l\)<\(m\).

Обобщенный алгоритм Хебба (Хайкин, 2006)

 Будем обучать первый нейрон как фильтр Хебба, чтобы он выделил первую главную компоненту. А вот каждый последующий нейрон будем обучать на сигнале, из которого исключим влияние всех предыдущих компонент.

Активность нейронов на шаге n определяется как

\[y_{j}(n)=\sum_{i=1}^{m}\omega _{ji}(n)x_{i}(n)\]

А поправка к синоптическим весам как

\[\Delta \omega _{ji}(n)=\eta \left(y_{j}(n)x_{n}-y_{j}(n)\sum_{k=1}^{j}\omega _{ki}(n)y_{k}(n)\right )\]

где \(i\) от 1 до \(m\), а \(j\) от 1 до \(l\).

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

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

Представим, что у нас есть два слоя нейронов Z1 и Z2. Активность нейронов первого слоя образует некую картину, которая проецируется по аксонам на следующий слой.

Проекция одного слоя на другой

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

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

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

Функцию активности нейрона можно записать:

\[y_{j}=max(O,\sum_{i\in R_{j}}x_{i}\omega _{ji}+\sum_{k\in L_{j}}y_{k}a_{jk})\]

Где – \(y_{j}\) итоговая активность, – \(R_{j}\)множество аксонов, попадающих в рецептивную область выбранного нейрона, \(L_{j}\)– множество нейронов, в зону подавления которых попадает выбранный нейрон, \(a_{jk}\)– сила соответствующего латерального торможения, принимающая отрицательные значения.

Такая функция активности является рекурсивной, так как активность нейронов оказывается зависимой друг от друга. Это приводит к тому, что практический расчет производится итерационно.

Обучение синаптических весов делается аналогично фильтру Хебба:

\[\omega _{ji}(n+1)=\omega _{ji}(n)+\eta y_{j}(n)(x_{i}(n)-y_{j}(n)\omega _{ji}(n))\]

Латеральные веса обучаются по анти-Хеббовскому правилу, увеличивая торможение между «похожими» нейронами:

\[a_{ji}(n+1)=a_{ji}(n)-\eta y_{j}(n)(y_{i}(n)-y_{j}(n)a_{ji}(n))\]

Суть этой конструкции в том, что Хеббовское обучение должно привести к выделению на весах нейрона значений, соответствующих первому главному фактору, характерному для подаваемых данных. Но нейрон способен обучаться в сторону какого-либо фактора, только если он активен. Когда нейрон начинает выделять фактор и, соответственно, реагировать на него, он начинает блокировать активность нейронов, попадающих в его зону подавления. Если на активацию претендует несколько нейронов, то взаимная конкуренция приводит к тому, что побеждает сильнейший нейрон, угнетая при этом все остальные. Другим нейронам не остается ничего другого, кроме как обучаться в те моменты, когда рядом нет соседей с высокой активностью. Таким образом, происходит декорреляция, то есть каждый нейрон в пределах области, размер которой определяется размером зоны подавления, начинает выделять свой фактор, ортогональный всем остальным. Этот алгоритм называется алгоритмом адаптивного извлечения главных компонент (APEX) (Kung S. , Diamantaras K.I., 1990).

Идея латерального торможения близка по духу хорошо известному по разным моделям принципу «победитель забирает все», который также позволяет осуществить декорреляцию той области, в которой ищется победитель. Этот принцип используется, например, в неокогнитроне Фукушимы, самоорганизующихся картах Коханена, также этот принцип применяется в обучении широко известной иерархической темпоральной памяти Джеффа Хокинса.

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

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

Главные компоненты

Сама идея метода главных компонент проста и гениальна. Рассмотрим ее на бытовом уровне. Предположим, что у нас есть последовательность событий. Каждое из них мы описываем через его влияние на сенсоры, которыми мы воспринимаем мир. Допустим, что у нас \(m\) сенсоров, описывающих \(m\) признаков \(p_{1}\cdots p_{m}\). Все события для нас описываются векторами \(x\) размерности \(m\). Каждый компонент \(x_{i}\) такого вектора указывают на значение соответствующего \(i\)-го признака. Все вместе они образуют случайную величину X. Эти события мы можем изобразить в виде точек в \(m\)-мерном пространстве, где осями будут выступать наблюдаемые нами признаки.

Усреднение значений \(x\) дает математическое ожидание случайной величины X, обозначаемое, как E(X). Если мы отцентрируем данные так, чтобы E(X)=0, то облако точек будет сконцентрировано вокруг начала координат.

Это облако может оказаться вытянутым в каком-либо направлении. Перепробовав все возможные направления, мы можем найти такое, вдоль которого дисперсия данных будет максимальной.

Так вот, такое направление соответствует первой главной компоненте. Сама главная компонента определяется единичным вектором, выходящим из начала координат и совпадающим с этим направлением.

Далее мы можем найти другое направление, перпендикулярное первой компоненте, такое, чтобы вдоль него дисперсия также была максимальной среди всех перпендикулярных направлений. Найдя его, мы получим вторую компоненту. Затем мы можем продолжить поиск, задавшись условием, что искать надо среди направлений, перпендикулярных уже найденным компонентам. Если исходные координаты были линейно независимы, то так мы сможем поступить \(m\) раз, пока не закончится размерность пространства. Таким образом, мы получим \(m\)взаимоортогональных компонент \(q\), упорядоченных по тому, какой процент дисперсии данных они объясняют.

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

Предположим, что всего у нас n событий. Каждое событие описывается вектором \(x_{i}\). Компоненты этого вектора:

\[x_{i}=(x_{i1}\cdots x_{im})^{T}\]

Для каждого признака \(p_{k}\) можно записать, как он проявлял себя в каждом из событий:

\[p_{k}=(x_{1k}\cdots x_{nk})^{T}\]

Для любых двух признаков, на которых строится описание, можно посчитать величину, показывающую степень их совместного проявления. Эта величина называется ковариацией:

\[cov(p_{i},p_{j})=\frac{1}{n}\sum_{k=1}^{n}(x_{ki}-\bar{p}_{i})(x_{kj}-\bar{p}_{j})\]

Она показывает, насколько отклонения от среднего значения одного из признаков совпадают по проявлению с аналогичными отклонениями другого признака. Если средние значения признаков равны нулю, то ковариация принимает вид:

\[cov(p_{i},p_{j})=\frac{1}{n}\sum_{k=1}^{n}x_{ki}x_{kj}\]

Если скорректировать ковариацию на среднеквадратические отклонения, свойственные признакам, то мы получим линейный коэффициент корреляции, называемый еще коэффициентом корреляции Пирсона:

\[r(p_{i},p_{j})=\frac{cov(p_{i},p_{j})}{\sigma (p_{i})\sigma (p_{j})}\]

Коэффициент корреляции обладает замечательным свойством. Он принимает значения от -1 до 1. Причем 1 означает прямую пропорциональность двух величин, а -1 говорит об их обратной линейной зависимости.

Из всех попарных ковариаций признаков можно составить ковариационную матрицу \(R\), которая, как несложно убедиться, есть математическое ожидание произведения \(XX^{T}\):
\[R=E(XX^{T})\]

Будем далее полагать, что наши данные отнормированы, то есть имеют единичную дисперсию. В этом случае корреляционная матрица совпадает с ковариационной матрицей.

Так вот оказывается, что для главных компонент \(q\) справедливо:

\[Rq=\lambda q\]

То есть главные компоненты, или, как еще их называют, факторы являются собственными векторами корреляционной матрицы \(R\). Им соответствуют собственные числа \(\lambda\). При этом, чем больше собственное число, тем больший процент дисперсии объясняет это фактор.

Зная все главные компоненты \(q\), для каждого события \(x\), являющегося реализацией X, можно записать его проекции на главные компоненты:

\[a_{j}=q_{j}^{T}x\]

Таким образом, можно представить все исходные события в новых координатах, координатах главных компонент:

\[x=Qa=\sum_{j=1}^{m}a_{j}q_{j}\]

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

За достаточно простой процедурой факторного анализа кроется очень глубокий смысл. Дело в том, что если пространство исходных признаков – это наблюдаемое пространство, то факторы – это признаки, которые хотя и описывают свойства окружающего мира, но в общем случае (если не совпадают с наблюдаемыми признаками) являются сущностями скрытыми. То есть формальная процедура факторного анализа позволяет от явлений наблюдаемых перейти к обнаружению явлений, хотя непосредственно и невидимых, но, тем не менее, существующих в окружающем мире.

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

Немного поясню суть факторов на бытовом уровне. Предположим, вы менеджер по персоналу. К вам приходит множество людей, и относительно каждого вы заполняете определенную форму, куда записываете разные наблюдаемые данные о посетителе. Просмотрев потом свои записи, вы можете обнаружить, что некоторые графы имеют определенную взаимосвязь. Например, стрижка у мужчин будет в среднем короче, чем у женщин. Лысых людей вы, скорее всего, встретите только среди мужчин, а красить губы будут только женщины. Если к анкетным данным применить факторный анализ, то именно пол и окажется одним из факторов, объясняющим сразу несколько закономерностей. Но факторный анализ позволяет найти все факторы, которые объясняют корреляционные зависимости в наборе данных. Это значит, что кроме фактора пола, который мы можем наблюдать, выделятся и другие, в том числе и неявные, ненаблюдаемые факторы. И если пол явным образом будет фигурировать в анкете, то другой важный фактор останется между строк. Оценивая способность людей связано излагать свои мысли, оценивая их карьерную успешность, анализируя их оценки в дипломе и тому подобные признаки, вы придете к выводу, что есть общая оценка интеллекта человека, которая явным образом в анкете не записана, но которая объясняет многие ее пункты. Оценка интеллекта – это и есть скрытый фактор, главная компонента с высоким объясняющим эффектом. Явно мы эту компоненту не наблюдаем, но мы фиксируем признаки, которые с ней коррелированы. Имея жизненный опыт, мы можем подсознательно по отдельным признакам формировать представление об интеллекте собеседника. Та процедура, которой при этом пользуется наш мозг, и есть, по сути, факторный анализ. Наблюдая за тем, как те или иные явления проявляются совместно, мозг, используя формальную процедуру, выделяет факторы, как отражение устойчивых статистических закономерностей, свойственных окружающему нас миру.

Фильтр Хебба

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

В основе многих нейросетевых моделей лежит хорошо известное правило обучения Хебба. Оно было предложено физиологом Дональдом Хеббом в 1949 году (Hebb, 1949). В немного вольной трактовке оно имеет очень простой смысл: связи нейронов, активирующихся совместно, должны усиливаться, связи нейронов, срабатывающих независимо, должны ослабевать.

Состояние выхода линейного сумматора можно записать:

\[y=\sum_{i=1}^{m}\omega_{i}x_{i}\]

Если мы инициируем начальные значения весов малыми величинами и будем подавать на вход различные образы, то ничто не мешает нам попробовать обучать этот нейрон по правилу Хебба:

\[\omega_{i}(n+1)=\omega_{i}(n)+\eta y(n)x_{i}(n)\]

Где n – дискретный шаг по времени, – \(\eta\) параметр скорости обучения.

Такой процедурой мы увеличиваем веса тех входов, на которые подается сигнал \(x_{i}(n)\), но делаем это тем сильнее, чем активнее реакция самого обучаемого нейрона \(y(n)\) . Если нет реакции, то не происходит и обучение.

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

\[\omega_{i}(n+1)=\frac{\omega_{i}(n)+\eta y(n)x_{i}(n)}{\sqrt{\sum_{i=1}^{m}(\omega_{i}(n)+\eta y(n)x_{i}(n))^{2}}}\]

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

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

Малость параметра скорости обучения позволяет переписать предыдущую формулу в виде ряда по \(\eta\):

\[\omega_{i}(n+1)=\omega_{i}(n)+\eta y(n)(x_{i}(n)-y(n)\omega_{i}(n))+O(\eta^{2})\]

Если отбросить слагаемые второго порядка и выше, то получится правило обучения Ойа (Oja, 1982):

\[\omega_{i}(n+1)=\omega_{i}(n)+\eta y(n)(x_{i}(n)-y(n)\omega_{i}(n))\]

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

Так вот, такое крайне простое обучение обладает удивительным свойством. Если мы будем постепенно уменьшать скорость обучения, то веса синапсов обучаемого нейрона сойдутся к таким значениям, что его выход начинает соответствовать первой главной компоненте, которая получилась бы, если бы мы применили к подаваемым данным соответствующие процедуры анализа главных компонент. Такая конструкция называется фильтром Хебба.

Например, подадим на вход нейрона пиксельную картинку, то есть сопоставим каждому синапсу нейрона одну точку изображения. Будем подавать на вход нейрона всего два образа – изображения вертикальных и горизонтальных линий, проходящих через центр. Один шаг обучения – одно изображение, одна линия, либо горизонтальная, либо вертикальная. Если эти изображения усреднить, то получится крест. Но результат обучения не будет похож на усреднение. Это будет одна из линий. Та, которая будет чаще встречаться в подаваемых изображениях. Нейрон выделит не усреднение или пересечение, а те точки, что чаще всего встречаются совместно. Если образы будут более сложными, то результат может быть не столь нагляден. Но это всегда будет именно главная компонента.

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

Нейрон

Основа мозга – нейрон. Естественно, что моделирование мозга с помощью нейронных сетей начинается с ответа на вопрос, как можно его смоделировать.

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

Схема нейрона (Mariana Ruiz Villarreal)

 

Поверхность нейрона покрыта ветвящимися отростками – дендритами. К дендритам примыкают аксонные окончания других нейронов. Места их соединений называются синапсами. Посредством синаптического взаимодействия нейрон способен реагировать на поступающие сигналы и при определенных обстоятельствах генерировать собственный импульс, называемый спайком.

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

Химический синапс

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

В определенных обстоятельствах синапсы могут менять свою чувствительность, что называется синаптической пластичностью. Это приводит к тому, что синапсы одного нейрона приобретают различную между собой восприимчивость к внешним сигналам.

Одновременно на синапсы нейрона поступает множество сигналов. Тормозящие синапсы тянут потенциал мембраны в сторону накопления заряда внутри клети. Активирующие синапсы, наоборот, стараются разрядить нейрон (рисунок ниже).

Возбуждение (A) и торможение (B) ганглиозной клетки сетчатки (Николлс Дж., Мартин Р., Валлас Б., Фукс П., 2003)

Когда суммарная активность превышает порог инициации, возникает разряд, называемый потенциалом действия или спайком. Спайк – это резкая деполяризация мембраны нейрона, которая и порождает электрический импульс. Весь процесс генерации импульса длится порядка 1 миллисекунды. При этом ни продолжительность, ни амплитуда импульса не зависят от того, насколько были сильны вызвавшие его причины (рисунок ниже).

Регистрация потенциала действия ганглиозной клетки (Николлс Дж., Мартин Р., Валлас Б., Фукс П., 2003)

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

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

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

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

В 1952 году Аланом Ллойдом Ходжкином и Эндрю Хаксли были сделаны описания электрических механизмов, которые определяют генерацию и передачу нервного сигнала в гигантском аксоне кальмара (Hodgkin, 1952). Что было оценено Нобелевской премией в области физиологии и медицины в 1963 году. Модель Ходжкина – Хаксли описывает поведение нейрона системой обыкновенных дифференциальных уравнений. Эти уравнения соответствуют автоволновому процессу в активной среде. Они учитывают множество компонент, каждая из которых имеет свой биофизический аналог в реальной клетке (рисунок ниже). Ионные насосы соответствуют источнику тока Ip. Внутренний липидный слой клеточной мембраны образует конденсатор с емкостью Cm. Ионные каналы синаптических рецепторов обеспечивают электрическую проводимость gn, которая зависит от подаваемых сигналов, меняющихся со временем t, и общей величины мембранного потенциала V. Ток утечки мембранных пор создает проводник gL. Движение ионов по ионным каналам происходит под действием электрохимических градиентов, которым соответствуют источники напряжения с электродвижущей силой En и EL.

Основные компоненты модели Ходжкина — Хаксли

 

Естественно, что при создании нейронных сетей возникает желание упростить модель нейрона, оставив в ней только самые существенные свойства. Наиболее известная и популярная упрощенная модель – это искусственный нейрон Маккалока — Питтса, разработанный в начале 1940-х годов (Маккалох Дж., Питтс У., 1956).

Формальный нейрон Маккалока — Питтса

На входы такого нейрона подаются сигналы. Эти сигналы взвешенно суммируются. Далее к этой линейной комбинации применяется некая нелинейная функция активации, например, сигмоидальная. Часто как сигмоидальную используют логистическую функцию:

\[\sigma(x)=\frac{1}{1 + e^{-x}}\]


Логистическая функция

В этом случае активность формального нейрона записывается как

\[y=\sigma\left ( \sum_{i}\omega _{i}x_{i} \right )\]

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

Реальные нейроны действительно неким образом похожи на нейроны Маккалока — Питтса. Амплитуды их спайков не зависит от того, какие сигналы на синапсах их вызвали. Спайк, либо есть, либо его нет. Но реальные нейроны реагируют на стимул не единичным импульсом, а импульсной последовательностью. При этом частота импульсов тем выше, чем точнее узнан характерный для нейрона образ. Это означает, что если мы построим нейронную сеть из таких пороговых сумматоров, то она при статичном входном сигнале хотя и даст какой-то выходной результат, но этот результат будет далек от воспроизведения того, как работают реальные нейроны. Для того чтобы приблизить нейронную сеть к биологическому прототипу, нам понадобиться моделировать работу в динамике, учитывая временные параметры и воспроизводя частотные свойства сигналов.

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


Линейный сумматор

Сигналы выхода и, соответственно, входа для таких нейронов уже не являются дихатомичными (0 или 1), а выражаются некой скалярной величиной. Функция активации тогда записывается как

\[y=\sum_{i}\omega _{i}x_{i}\]

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

Общее представление о мозге

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

Спинной мозг собирает сигналы от большинства рецепторов тела и передает их в головной мозг. Через структуры таламуса они распределяются и проецируются на кору больших полушарий головного мозга.


Проекция информации на кору

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

Зрение, слух и обоняние обеспечивают мозг потоком информации о внешнем мире. Каждая из составляющих этого потока, пройдя по своему тракту, также проецируется на кору. Кора – это слой серого вещества толщиной от 1.3 до 4.5 мм, составляющий наружную поверхность мозга. За счет извилин, образованных складками, кора упакована так, что занимает в три раза меньшую площадь, чем в расправленном виде. Общая площадь коры одного полушария – приблизительно 7000 кв. см.

В итоге все сигналы проецируются на кору. Проекция осуществляется пучками нервных волокон, которые распределяются по ограниченным областям коры. Участок, на который проецируется либо внешняя информация, либо информация с других участков мозга образует зону коры. В зависимости от того, какие сигналы на такую зону поступают, она имеет свою специализацию. Различают моторную зону коры, сенсорную зону, зоны Брока, Вернике, зрительные зоны, затылочную долю, всего около сотни различных зон.

 Зоны коры

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


Слои коры

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

  • ассоциативные волокна, которые связывают отдельные участки коры одного полушария;
  • комиссуральные волокна, которые соединяют кору двух полушарий;
  • проекционные волокна, которые соединяют кору с ядрами низших отделов центральной нервной системы.

     

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

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

Существенный объем мозга – это белое вещество. Оно образовано аксонами нейронов, создающими те самые проекционные пути. На рисунке ниже белое вещество можно увидеть как светлое заполнение между корой и внутренними структурам мозга.

Распределение белого вещества на фронтальном срезе мозга

Используя диффузную спектральную МРТ, удалось отследить направление отдельных волокон и построить трехмерную модель связанности зон коры (проект Connectomics (Коннектом)).

Представление о структуре связей хорошо дают рисунки ниже (Van J. Wedeen, Douglas L. Rosene, Ruopeng Wang, Guangping Dai, Farzad Mortazavi, Patric Hagmann, Jon H. Kaas, Wen-Yih I. Tseng, 2012).

Вид со стороны левого полушария

Вид сзади

Вид справа

Кстати, на виде сзади отчетливо видна асимметрия проекционных путей левого и правого полушария. Эта асимметрия во многом и определяет различия в тех функциях, которые приобретают полушария по мере их обучения.

Вступление

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

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

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

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

  • Как мозг оперирует информацией?
  • Что такое смысл?
  • Как устроена память?
  • Что такое эмоции?
  • Каковы принципы мышления?
  • Как формируется поведение?

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

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

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

Итак, как же все-таки мы мыслим?