Приходит ветеринар к терапевту. Терапевт: — На что жалуетесь? Ветеринар: — Нет, ну так каждый может!
Искусственные нейронные сети способны обучаться. Воспринимая множество примеров, они могут самостоятельно находить в данных закономерности и выделять скрытые в них признаки. Искусственные нейронные сети во многих задачах показывают очень неплохие результаты. Закономерный вопрос — насколько нейронные сети похожи на реальный
Как это ни удивительно, но очень похоже, что реальный
Искусственные нейронные сети
Перед тем как описать механизмы обучения реальных нейронов перечислим основные принципы, на которых основываются искусственные нейронные сети. Этих принципов несколько. Все они очень тесно связаны между собой. Нарушение любого из них ломает всю концепцию работы искусственных нейронных сетей. После этого мы покажем, что в «настоящих нейронных сетях» не выполняется ни один из этих принципов.
Принцип 1. Каждый нейрон – это детектор некого свойства.
Реальный нейрон, если описывать его упрощенно, выглядит достаточно просто. На дендритах располагаются синапсы. Синапсы контактируют с другими нейронами. Сигналы от других нейронов через синапсы поступают в тело нейрона, где суммируются. Если сумма превышает определенный порог, то возникает собственный сигнал нейрона – спайк, он же потенциал действия. Спайк распространяется по аксону и поступает на другие нейроны. Синапсы могут менять свою чувствительность. Таким образом нейрон может настраиваться реагировать на определенные комбинации активности других нейронов.
Все это хотя и выглядит достаточно правдоподобно очень далеко от работы реальных нейронов. Но пока мы описываем классическую модель и будем следовать такой логике.
Упрощенная схема реального нейрона
Из описанного выше с неизбежностью следует формальная модель – искусственный нейрон Маккалока — Питтса, разработанный в начале 1940-х годов (Маккалох Дж., Питтс У., 1956).
Формальный нейрон Маккалока — Питтса
На входы такого нейрона подаются сигналы. Эти сигналы взвешенно суммируются. Далее к этой линейной комбинации применяется некая нелинейная функция активации, например, сигмоидальная. Часто как сигмоидальную используют логистическую функцию:
Логистическая функция
В этом случае активность формального нейрона записывается как
В итоге такой нейрон превращается в пороговый сумматор. При достаточно крутой пороговой функции сигнал выхода нейрона – либо 0, либо 1. Взвешенная сумма входного сигнала и весов нейрона – это сравнение двух образов: образа входного сигнала и образа, описываемого весами нейрона. Результат сравнения тем выше, чем точнее соответствие этих образов. То есть нейрон, по сути, определяет, насколько подаваемый сигнал похож на образ, записанный на его синапсах. Когда значение взвешенной суммы превышает определенный уровень, и пороговая функция переключается в единицу, это можно интерпретировать как решительное заявление нейрона о том, что он узнал предъявляемый образ.
В разных моделях возможны различные вариации того, как должен срабатывать искусственный нейрон. Если убрать пороговую функцию, то нейрон превратится в линейный сумматор. Можно вместо сравнения с шаблоном, который задает веса, проверять входной сигнал на соответствие многомерному нормальному распределению с определенными параметрами, это используется в сетях на основе радиально-базисных функций. Можно подавать сигналы, распределенные во времени, и вводить для синапсов временные параметры, настраивая таким образом нейрон на чувствительность к определенным последовательностям. Возможны и другие варианты. Общее между всеми ними – это соответствие нейрона знаменитой концепции «нейрона-бабушки».
Ключевой момент для всех нейронных сетей – это восприятие нейронов, как детекторов каких-либо свойств. Нечто появляется в описании – нейрон, который соответствует этому «нечто» реагирует на это своей активностью. Вариации нейронных сетей – это вариации методов детектирования и обучения этому детектированию.
Принцип 2. Информация в нейронной сети – это признаковое описание.
В классическом представлении каждый нейрон видит картину активности других нейронов, которые создают его входной сигнал. При этом каждый нейрон является детектором чего-то. Если собрать входной сигнал в вектор, то получится так называемое признаковое описание.
В признаковом описании, как следует из названия, каждый элемент вектора описания соответствует определенному признаку. При этом не принципиально, как задан элемент. Это может быть бинарное значение – присутствует признак или нет. Может быть количественное значение – насколько выражен признак в описании. Порядковое или номинальное значение – как реализовался в описании этот признак.
Например, возьмем бинарный 32-битный вектор. Будем кодировать буквы английского алфавита.
Первый вариант. Нулевой бит – буква «A», первый бит буква «B» и так далее. 26 бит будут советовать 26 буквам. Затем сделаем бит – заглавная буква или прописная. Бит – курсив или не курсив, бит на толщину, бит на подчеркивание и так далее. Если зараз кодировать одну букву, то можно закодировать одну из 26 букв в разных вариантах написания. Это типичное признаковое описание. Каждый бит – это определенный признак.
Второй вариант. Машинная кодировка, типа, юникод. Символы кодируются уникальными бинарными кодами. Но отдельные биты уже не являются признаками. В кодах разных несвязанных между собой букв могут быть общие единицы. Такое кодирование уже не является признаковым описанием, хотя внешне и там, и там 32 битный бинарный вектор.
Информация, с которой имеют дело нейронные сети – это всегда признаковое описание. И это следует из первого принципа, согласно которому нейроны – детекторы признаков.
Принцип 3. Нейронная сеть, как правило, – это преобразователь признаковых описаний.
Вход нейронной сети – это признаковое описание. Результат работы – также признаковое описание, но состоящее уже из других признаков. Например, если мы хотим сделать сеть, которая будет узнавать цифры по их изображению, то входными признаками могут быть значения яркости точек картинки, а выходными распознанные цифры.
Преобразуя одно признаковое описание в другое, может оказаться полезным использовать промежуточные признаки, которых нет ни во входном, ни в выходном описании. Можно сделать несколько слоев таких промежуточных признаков. Такие нейронные сети выглядят наподобие того, что показано на рисунке ниже.
Многослойный персептрон с двумя скрытыми слоями (Хайкин, 2006)
Типичный пример нейронной сети со скрытыми признаками — это слоистая сеть прямого распространения. Каждый слой такой сети, кроме входного, состоит из нейронов-детекторов. Эти нейроны настраиваются на узнавание определенных признаков. Каждый слой повторяет исходное описание, но уже в своих, характерных для этого слоя признаках.
Если выход сети снова подать на вход, то получится динамическая рекуррентная сеть. В сети прямого распространения состояние выхода определяется сразу после активации всех нейронов. В рекуррентной сети только со временем возникает устойчивое состояние, которое и является результатом ее работы.
Независимо от типа сети на каждом слое мы имеем дело с признаковым описанием, составленным из нейронов-детекторов.
Принцип 4. Количество нейронов в сети определяет число признаков, с которыми может работать эта сеть.
Количество нейронов на каком-либо слое сети определяет то, сколько максимально признаков доступно для выделения этому слою. Обычно количество нейронов в сети задается изначально перед началом обучения. Так как заранее неизвестно, сколько полезных признаков может выделиться, то оптимальное число нейронов в слоях подбирают итерационно.
В принципе, можно при необходимости «на лету» добавлять новые нейроны, но это требует особого подхода к обучению и связано с существенными сложностями.
Принцип 5. Обучение сети – это настройка весов соединяющих нейроны связей.
Детектором какого свойства является тот или иной искусственный нейрон определяется тем, какие значения принимают его веса. Обучение нейронной сети происходит за счет такого изменения весов нейронов, которое оптимизирует те требования, что мы к этой сети предъявляем.
Два основных вида обучения – это обучение без учителя и обучение с учителем.
Обучение без учителя
При обучении без учителя нейронная сеть наблюдает за входными данными, не имея заранее представления о том, какой выходной сигнал должен соответствовать тем или иным событиям. Но так как в данных могут содержаться определенные закономерности, то можно так настроить поведение сети, чтобы ее нейроны стали реагировать каждый на свою закономерность.
Например, можно взять однослойную сеть, состоящую из линейных сумматоров, и заставить ее выделять главные компоненты подаваемого набора данных. Для этого можно инициировать сеть случайными весами, при подаче сигнала определять победителя и затем сдвигать его веса в сторону поданного сигнала. В итоге нейроны сами «растащат» между собой основные факторы, содержащиеся во входной информации.
Можно сделать автокодировщик. Создать сеть из трех слоев с условием, что средний слой должен быть меньше по размеру чем входной слой, а выходной слой должен быть равен входному. Задача автокодировщика – как можно точнее воспроизводить на выходном слое картину входного слоя.
Автокодировщик
Так как по дороге от входа к выходу стоит слой с меньшей размерностью, то автокодировщику придется научиться сжимать данные, то есть выделять на нейронах среднего слоя наиболее значимые факторы. Средний слой в последствии и будет являться рабочим выходом сети.
Для обучения автокодировщика можно на каждом шаге считать ошибку между первым и третьим слоем и корректировать веса сети в сторону уменьшения этой ошибки. Это позволяет сделать, например, метод обратного распространения ошибки.
Могут быть и другие методы. Например, сеть радиальных базисных функций, основываясь на идеях EM алгоритма, может осуществлять решение задачи классификации. В такой сети нейроны скрытого слоя оценивают не соответствие подаваемого образа и образа, задаваемого весами нейрона, а вероятность соответствия входного сигнала нормальным распределениям, параметры которых хранятся в этих нейронах.
Обучение с учителем
При обучении с учителем мы заранее определяем какой выходной сигнал мы хотим получить от сети в каждом из обучающих примеров. Задача обучения – это так настроить веса, чтобы сеть наиболее точно угадывала ответы из обучающего набора. Тогда появляется надежда, что сеть уловила закономерности и сможет угадывать выходной сигнал и для данных, которых не было при обучении.
Для сети прямого распространения обучение выглядит следующим образом. Изначально сеть инициируется случайными весами. Подается обучающий пример и вычисляется активность сети. Формируется представление об ошибке, то есть разность между тем, что должно быть на выходном слое и что получилось у сети. Далее веса корректируются так, чтобы уменьшить эту ошибку.
Для однослойного персептрона можно воспользоваться дельта-правилом.
Дельта-правило очень похоже на правило Хебба, которое имеет очень простой смысл: связи нейронов, активирующихся совместно, должны усиливаться, а связи нейронов, срабатывающих независимо, должны ослабевать. Но правило Хебба изначально сформулировано для обучения без учителя и позволяет нейронам самим настраиваться на выделение факторов. При обучении с учителем совместную активность надо понимать несколько иначе. В этом случае правило Хебба приобретает вид:
- Первое правило — Если выходной сигнал персептрона неверен и равен нулю, то необходимо увеличить веса тех входов, на которые была подана единица.
- Второе правило — Если выходной сигнал персептрона неверен и равен единице, то необходимо уменьшить веса тех входов, на которые была подана единица.
Если Y – это вектор реального выхода персептрона, а D – вектор, который мы ожидаем получить, то вектор ошибки:
Дельта-правило для изменения связи между i и j нейронами:
По сути в однослойной сети мы пытаемся построить на нейронах выходного слоя портреты выходных признаков в терминах входных признаков. Весами связей мы задаем наиболее характерный, типовой портрет выходного признака.
Сложности начинаются, когда оказывается, что однозначного портрета может не существовать. Например, когда мы пытаемся узнавать буквы, то при обучении мы можем использовать и прописные и заглавные буквы. При это если мы не делаем между ними разницы, то выходной нейрон, отвечающий за букву «А» должен будет реагировать сразу на два образа – образ «А» и образ «а». Аналогично, написание букв может быть совершенно различным в разных почерках. Если пытаться совместить все эти портреты на одном нейроне, то ничего хорошего не получится. Образ будет столь размыт, что может оказаться практически бесполезен.
В таких случаях помогает многослойная сеть со скрытыми слоями. На нейронах скрытых слоев могут формироваться самостоятельные портреты различных реализаций выходных признаков. Кроме того, в скрытых слоях могут выделяться факторы, общие для разных выходных нейронов и при этом полезные для дифференциации одних выходных признаков от других.
Для обучения многослойной сети используется метод обратного распространения ошибки. Метод состоит из двух проходов: прямого и обратного. При прямом проходе подается обучающий сигнал и рассчитывается активность всех узлов сети, включая активность выходного слоя. Вычитанием полученной активности из того, что требовалось получить, определяется сигнал ошибки. При обратном проходе сигнал ошибки распространяется в обратном направлении, от выхода ко входу. При этом синаптические веса настраиваются с целью минимизации этой ошибки.
Принцип 6. Конечность обучения. Дилемма стабильности-пластичности.
При обучении нейронной сети каждый раз после подачи нового обучающего примера вычисляется некая поправка к весам связей. При этом вычисляются градиенты, которые указывают, в какую сторону стоит ту или иную связь изменить, усилить или ослабить.
В начале обучения можно вести себя достаточно смело и относительно сильно корректировать связи нейронов. Но по мере обучения оказывается, что резкие изменения уже недопустимы, так как они начинают переучивать сеть, подстраивая ее под новый опыт, затирая при этом опыт предыдущий. Выход достаточно очевиден. В алгоритмы вводится параметр скорости обучения. По мере обучения скорость уменьшается и новый опыт уже не радикально меняет веса, а только слегка их подправляет.
Недостаток такого подхода в том, что с определенного момента сеть «костенеет» и перестает изменяться. По этой причине традиционные сети трудно дообучать. Если появляется такая необходимость, то оказывается проще заново с нуля обучить сеть на расширенном наборе данных, включающем как старый так и новый опыт.
Вопрос дообучения упирается в то, что новый опыт начинает менять веса сети и тем самым изменяет старое обучение. Проблема разрушения старого опыта новой информацией называется дилеммой стабильности-пластичности.
Вариант решения предложен Стефаном Гроссбергом (Grossberg, 1987) как «теория адаптивного резонанса». Суть этой теории в том, что поступающая информация делится на классы. Каждый класс имеет свой прототип – образ, наиболее точно соответствующий этому классу. Для новой информации определяется, принадлежит ли она к одному из существующих классов, либо она является уникальной, непохожей ни на что предыдущее. Если информация не уникальна, то она используется для уточнения прототипа класса. Если же это что-то принципиально новое, то создается новый класс, прототипом которого ложится этот образ. Такой подход позволяет, с одной стороны, создавать новые детекторы, а с другой стороны, не разрушать уже созданные.
Но идеология адаптивного резонанса плохо совместима с остальными методами обучения, так как, по сути, требует добавления новых нейронов прямо в процессе обучения сети.
Модель обучения с активной памятью
Различают два подхода к обучению — адаптивный и пакетный. При адаптивном обучении новый опыт используется для некоторого изменения ранее достигнутого состояния весов сети с целью адаптировать их к этому новому опыту. При этом полагается, что веса сети уже учитывают в себе все, что связано с ранее полученным опытом. В пакетном подходе исходят из того, что при получении нового примера нам остается доступен весь предыдущий опыт и при обучении мы можем не адаптировать веса, а просто рассчитать их заново.
Хранение предыдущего опыта сильно упрощает вопрос стабильности-пластичности сети.
Рассмотрим задачу распознавание цифр, например, набора MNIST. На вход нейронной сети подаются изображения рукописных цифр, на выходе смотрят за реакцией нейронов, соответствующих цифрам от 0 до 9. Входные изображения имеют размер 28 на 28 пикселей, всего 784 точки.
Пример рукописных цифр набора MNIST
Обычно для решения такого рода задач используют сверточные сети и многоуровневую архитектуру. Подробнее работу таких сетей мы рассмотрим позже. В силу простоты и предварительной подготовленности набора MNIST (все цифры одного размера и отцентрованы) хорошие результаты получаются даже при применении простого однослойного или двуслойного персептрона.
На рисунке ниже приведена самая простая однослойная сеть. Вход этой сети – 784 точки изображения. Выход – нейроны, соответствующие цифрам.
Однослойная сеть для распознавания рукописных цифр
Обучать такую сеть можно, например, дельта-правилом. В результате обучения веса выходных нейронов настроятся на некие усреднено-схематичные образы цифр. Размытые настолько, чтобы максимально «покрывать» свои прототипы, но при этом не сильно «наползать» на другие цифры. Параметр скорости обучения здесь имеет вполне конкретную трактовку. Так как происходит своеобразное усреднение изображений одной цифры, то вклад каждого следующего примера в формирование усреднения должен быть обратно пропорционален количеству уже прошедших примеров.
В обучающем наборе одни и те же цифры есть в разном написании. Например, двойка «просто» и двойка с «петелькой» в основании (рисунок ниже). Простой сети ничего не остается кроме как построить гибридный портрет, что, конечно, не улучшает качества ее работы.
Варианты «двойки»
В многослойной сети появляется надежда, что в скрытых слоях варианты основания двойки выделяться отдельными признаками. Тогда выходной слой сможет увереннее узнавать двойку, ориентируясь на появление одного из этих признаков.
Создание усредненных размытых портретов позволяет успешно узнавать образы в большинстве случаев, но накладывает предел на достижимое качество узнавания. Размытие неизбежно ведет к потере информации.
При обучении нейронов выходного слоя создаются «хорошие» классификаторы для каждой из цифр. Их веса – это лучшее, что можно получить из идеологии «давайте сделаем портрет класса».
Когда компьютеры были слабыми или, вообще не дай бог, приходилось считать вручную, очень важно было использовать такие методы, которые позволяли бы минимальными вычислениями получать хорошие результаты. Многие идеи «хороших» алгоритмов исходят именно из такой экономии вычислений. Надо сделать некую дискриминантную функцию, которая позволит вычислить принадлежность объекта к классу. Или надо вычислить главные факторы и оперировать описанием в них вместо исходных данных.
Для любого «хорошего» базового алгоритма существует предел достижимой точности, который определяется тем, какой процент информации был им потерян в процессе построения факторов или создания дискриминантной функции.
Улучшить общий результат можно за счет применения сразу нескольких различных классификаторов. Из нескольких классификаторов можно создать комитет, который голосованием будет принимать решения об отнесении объекта к классу. Такой подход называется бустингом.
При бустинге не обязательно использовать «хорошие» классификаторы. Годятся любые неслучайные, то есть такие у которых вероятность правильного отнесения выше вероятности случайного выбора. Самое интересное, что во многих случаях, увеличивая количество «плохих», но неслучайных классификаторов, можно добиться сколь угодно точного результата. Справедливы такие рассуждения и для искусственных нейронных сетей.
Идеология нейронов-детекторов, обученных на размыто-усредненный образ, — это во многом дань «экономным» методам вычислений. Правда, само обучение далеко не всегда можно назвать экономным и быстрым, но зато результат – это сеть с относительно небольшим количеством нейронов.
Альтернативой концепции «хороших» нейронов-детекторов может выступать концепция «активной памяти». Каждый отдельный обучающий пример – это образ, который может самостоятельно выступать классификатором. То есть, на каждый обучающий пример можно создавать отдельный нейрон, веса которого будут копировать входной сигнал. Такой нейрон может работать, например, в режиме линейного сумматора, тогда его реакция будет тем сильнее, чем больше будет похож подаваемый сигнал на запомненный им образ. Из таких воспоминаний детекторов можно собрать сеть, показанную на рисунке ниже.
Нейронная сеть с воспоминаниями-детекторами. Связи воспоминаний и выходных нейронов несколько сложнее, чем просто суммирование
В приведенной на рисунке сети входной слой нейронов передает свой сигнал на элементы второго среднего слоя. Элементы второго слоя не будем называть нейронами, а назовем воспоминаниями. Каждый обучающий пример создает новое воспоминание. При подаче примера вновь созданное воспоминание отпечатывает на себе точный образ сигнала входного слоя. Выход элемента-воспоминания замыкается на нейроне выходного слоя, соответствующем тому, что предписывает правильный ответ.
Обучение такой сети с учителем сводится к запоминанию примеров и созданию связей типа «пример-ответ».
В режиме распознавания каждое воспоминание самостоятельно определяет степень своей похожести на текущий образ. Из совокупного срабатывания воспоминаний создается информация для выходного слоя, которая позволяет понять, какому нейрону стоит активироваться.
При внешней простоте сети с памятью ее работа не так проста, как может показаться. От элементов этой сети требуется значительно более сложная логика работы, чем от традиционных формальных нейронов.
Механизм сравнения
Механизм сравнения воспоминания и образа зависит от формы представления описания. Надо сказать, что признаковое описание – достаточно неудачная форма. Например, две соседние по картинке точки в признаковом описании дают нулевое совпадение, если для сравнения используется скалярное произведение соответствующих описаниям векторов. Именно по этой причине при кодировании картинки через вектор, описывающий яркость отдельных точек, «размытое» описание оказывается предпочтительнее «четкого». В размытых картинках вместо отдельной точки появляется «пятно». Соответственно, близкие точки начинают давать определенное совпадение при сравнении (рисунок ниже).
Единичное смещение приводит к полному отсутствию совпадения (слева). Аналогичная ситуация после размытия дает существенное совпадения (справа) (Fukushima K., 2013)
Идея с «размытием» подходит не только для изображений, но и для любых признаковых описаний. Для этого требуется задать матрицу близости признаков описания. Тогда для любого входного сигнала перед сравнением можно создавать его «размытие» и уже его использовать в скалярном произведении. Для картинок близость признаков определяется близостью точек на изображении. Для произвольных сигналов задать близость признаков несколько сложнее. Иногда в этом может помочь статистика их совместного проявления.
Если «размывание» используется для сравнения одного «четкого» сигнала с другим «четким» сигналом, то это не так страшно. Плохо, когда на нейронах-детекторах выделяется «размытый» образ, удобный для сравнения. В этом случае происходит необратимая потеря информации.
Выход воспоминания
В примерах MNIST цифры не имеют фона, свободны от шумов и приходятся по одной на картинку. В более сложных задачах кроме целевого объекта на изображении или в описании может содержаться дополнительная информация. За счет этого в сложных задачах проще говорить не о точном или высоком совпадении, а о том, является ли величина совпадения случайной или же в двух описаниях есть нечто, позволяющее говорить об их определенном сходстве.
При распознавании цифр надо оценить к какой цифре ближе текущий образ. Для этого можно вычислить среднее значение совпадения текущего образа с воспоминаниями, относящимися к каждой из цифр. Такая оценка усредненного совпадения хотя и будет нести определенный смысл, будет плоха для принятия решения. Например, класс двоек содержит как минимум два варианта написания – с «петелькой» внизу и без нее. Еще хуже ситуация, например, с написанием букв. К одному классу могут относится как заглавные так и строчные написания одной буквы.
В таких случаях разумно усреднять примеры раздельно для каждого из вариантов написания. То есть имеет смысл предварительно провести кластеризацию среди воспоминаний, относящихся к одному классу, и разбить их на соответствующие группы.
Кроме того, если нужный образ только часть воспоминания, то надо учитывать этот факт. Хотелось бы, чтобы выход воспоминания давал оценку именно «полезного» совпадения, а не того, какая часть воспоминания совпала. Например, отойдем от тепличного MNIST и предположим, что в обучающем примере было сразу две цифры, двойка и тройка, написанные рядом. Мы сдвинули изображение так, чтобы двойка совпала с другими запомненными двойками. Но в созданном воспоминании тройка останется, как находящийся рядом шум. Сравнивая потом это воспоминание с образом, где есть двойка, хотелось бы, чтобы шум не влиял на величину оценки совпадения.
Активация выходных нейронов
Каждый выходной нейрон получает информацию о том, какие есть воспоминания, в которых нашлось что-то общее с входным сигналом, и информацию об уровне этих совпадений. Из этой информации надо сделать вывод о том, какова вероятность, что перед нами тот образ, на который происходило обучение. Из сравнения вероятности для всех выходных нейронов надо принять решение, какой из них предпочтительнее и достаточен ли вообще уровень достигнутой вероятности для появления выходного сигнала.
Бинарное кодирование выхода сети
Допустим, что нам удалось разрешить все сложности и создать такие воспоминания и выходные нейроны, которые позволяют уверенно проводить обучение с учителем и последующее распознавание. Теперь зададимся вопросом – сколько нейронов должно быть в выходном слое? В классических нейронных сетях и в той сети, что мы описали выше, ответ очевиден – столько, сколько планируется выходных признаков.
Ранее мы говорили, что в реальном
Сто нейронов кодируют сто признаков, когда разговор идет о нейронах-детекторах и о признаковых описаниях. Но мы исходим из того, что нейроны не формируют признаковых описаний, а своей активностью создают сигналы бинарного кода, которыми кодируются те или иные понятия.
Несложно модифицировать нейронную сеть, чтобы ее выход кодировал не признаковое описание, а бинарный код признака. Для этого надо «соединить» воспоминания не с одним выходным нейроном, а с несколькими, образующими соответствующий код. Например, цифры от 0 до 9 можно закодировать пятибитным кодом так, чтобы в каждом коде было ровно две единицы (рисунок ниже). Тогда каждое воспоминание будет воздействовать не на один, а на два нейрона. Результатом работы такой сети будет не активность одного нейрона, соответствующего цифре, а нейронный бинарный код цифры. При таком кодировании нейроны перестают быть нейронами бабушки, так как их активность может проявляться в совершенно разных понятиях.
Кодирование выхода сети бинарным кодом
Если мы посмотрим на сеть, которая получилась в результате, то окажется, что она уже мало напоминает традиционные нейронные сети, хотя и полностью сохраняет всю их функциональность.
Посмотрим на получившуюся сеть в разрезе сформулированных ранее шести принципов классической нейронной сети:
Принцип 1. Каждый нейрон – это детектор некого свойства.
Не выполняется. Выходные нейроны не являются нейронами бабушки. Один и тот же нейрон срабатывают на разные признаки.
Принцип 2. Информация в нейронной сети – это признаковое описание.
Не выполняется. Выход сети – это код понятия, а не набор признаков. Вход сети также может работать с кодами, а не с векторами признаков.
Принцип 3. Нейронная сеть, как правило, – это преобразователь признаковых описаний.
Не выполняется.
Принцип 4. Количество нейронов в сети определяет число признаков, с которыми может работать эта сеть.
Не выполняется. Выходной слой, содержащий сто нейронов, при кодировании сигнала десятью активными нейронами может отобразить 1.7х1013 различных понятий.
Принцип 5. Обучение сети – это настройка весов соединяющих нейроны связей.
Не выполняется. Воспоминания имеют «привязку» к нейронам, но никакого адаптивного изменения весов не происходит.
Принцип 6. Конечность обучения. Дилемма стабильности-пластичности.
Не выполняется. Как бы не была обучена сеть ее можно всегда дообучить просто добавив новые воспоминания. При добавлении не требуется учитывать скорость обучения. Разрушения старой информации не происходит. Кроме того, новая сеть способна на «однострельное обучение». Единичный опыт в любой момент обучения создает способность узнавать соответствующее явление. В отличие от традиционных сетей не требуется многократного повторения, так как нет процедуры итерационной настройки весов нейронов-детекторов.
Миниколонки коры
Основные информационные процессы нашего
Нейроны одной миниколонки расположены друг под другом. Большая часть их связей сосредоточена в вертикальном направлении, то есть с нейронами своей же миниколонки.
Миниколонки первичной зрительной коры кошки (слева) и обезьяны (справа) (Peters and Yilmaze, 1993)
Ранее было сделано предположение, что каждая миниколонка коры соответствует отдельному контексту. Миниколонки какой-либо зоны коры позволяют рассмотреть одну и ту же входную информацию во всех возможных для этой зоны контекстах и определить, какой из них лучше подходит для трактовки поступившей информации.
Информация распространяется по всему пространству зоны коры, например, с помощью волн с самопродолжающимся внутренним узором или же тотальной проекцией, наподобие зрительной радиации. Каждая миниколонка получает одно и то же информационное описание. Описание состоит из последовательности понятий. Для миниколонки понятие выглядит как длинный разряженный бинарный код. Этот код возникает, предположительно, как активность дендритных сегментов.
Каждое поступающее в миниколонку понятие перекодируется в другое понятие. Эта перекодировка соответствует тому, какую трактовку входной сигнал приобретает в контексте миниколонки. Для получения итоговой трактовки перекодированные понятия складываются между собой, что соответствует логическому «или» их бинарных представлений.
В результате в каждой миниколонке возникает бинарный вектор, являющийся описанием того, как выглядит исходная информация в контексте миниколонки.
С этого момента то, что происходит в каждой миниколонке во многом напоминает поведение описанной только что сети с памятью.
Фиксация кода признака
Чтобы в миниколонке смог работать механизм сети с памятью, надо показать, как можно запомнить бинарный вектор описания и как при этом увязать это воспоминание с кодом соответствующего признака.
В нашей биологической модели память – это своеобразная фиксация «интерференции» двух узоров. Ранее было показано, как таким образом можно запоминать пары «идентификатор — описание». Сейчас нам требуется запомнить пару «код признака — описание». Код признака – это комбинация активности нейронов миниколонки. Описание – это активность дендритных сегментов внутри той же миниколонки. Зафиксировать интерференцию двух узоров – это запомнить на элементах первого узора картину второго узора.
Предположим, что каким-то образом удалось «пометить» нейроны, которые образуют код признака. Тогда для фиксации воспоминания типа «код признака – описание» надо на каждом из помеченных нейронов запомнить картину описания.
Биологическая основа памяти в нашей модели – это рецепторы, расположенные на дендритах нейронов. Связанные вместе несколько метаботропных рецепторов образуют рецептивный кластер. Каждый кластер чувствителен к определенному характерному для него сочетанию нейромедиаторов. Запоминание – это перевод кластера в чувствительное состояние. В чувствительном состоянии кластер способен реагировать на появление характерной для него картины нейромедиаторов.
Не будем пытаться в деталях угадать, как протекает процесс запоминания, опишем его идеологию. Сигнал описания вызывает выброс нейромедиаторов в определенных синапсах, относящихся к миниколонке. Возможно, что это происходит через создание хеша, который вызывает активность части нейронов. Возможно, что задействуются иные механизмы. Сейчас это не принципиально. Просто предположим, что картина активности дендритов привела к картине выброса нейромедиаторов. Причем картина выброса оказалась строго зависящей от информационной картины. Это значит, что разные информационные картины создают разные картины распределения выбросов нейромедиаторов. Разговор идет о нейромедиаторах и модуляторах, попадающих во внесинаптическое пространство.
Ранее было показано, что для любого объемного сигнала существуют специфические места, в которых пересекается выброс сразу нескольких типов нейромедиаторов. Одновременное сочетание специфического места и состава нейромедиаторов с высокой точностью указывает на информационный сигнал. То есть только именно такой сигнал или близкий к нему способны повторить именно в этом месте такую картину выброса нейромедиаторов.
Для любого сигнала таких мест в миниколонке будет много. Так с вероятностью, близкой к единице, хотя бы одно такое место найдется на каждом дендритном сегменте. Это значит, что на дендрите одного нейрона таких мест будет несколько десятков. Но каждое из мест будет чувствительно не ко всему сигналу, а только к его определенному фрагменту. Если представить информационный сигнал бинарным вектором, то одно избранное место – это место, реагирующее не на весь вектор, а на несколько определенных значимых бит этого вектора. На рисунке ниже приведен пример, когда каждое из избранных мест, выделенных красным, фиксирует четыре бита из девяти активных во входном сигнале.
Избранные по отношению к определенному сигналу места на поверхности дендрита одного нейрона
Чтобы зафиксировать воспоминание на выбранном нейроне, надо в местах, избранных по отношению к сигналу, взять кластеры рецепторов, чувствительные к возникшему там сочетанию медиаторов, и перевести их в «активное» состояние. Активное состояние подразумевает, что с этого момента если повторится картина выброса нейромедиаторов, то кластер рецепторов узнает это и откроет расположенный поблизости ионный канал, что приведет к возникновению в этом месте миниатюрного возбуждающего постсинаптического потенциала. Иначе говоря, повторение сигнала вызовет небольшой, порядка 1 мВ, сдвиг потенциала мембраны в сторону возбуждения. Этот сдвиг будет точечным и коснется только избранного места.
Каждое повторение обучающего опыта с указанием того же кода для обучения будет вызывать добавление новых рецепторов в тех же местах. Соответственно, с каждым разом, реакция в этих местах будет все сильнее и сильнее. Одновременное появление нескольких миниатюрных возбуждающих потенциалов в одном месте ведет к их сложению. Если уровень деполяризации дендрита превысит определенный порог в этом месте возникнет дендритный спайк, которой распространится по дендриту до тела нейрона.
Несложно описать гипотетический механизм, который по таким возбуждающим сигналам восстановит исходный код, который был задан в процессе обучения. Так как поступающая информация может содержать повод для появления разных кодов, то можно предусмотреть механизм выбора одного или сразу нескольких самых уместных.
Выбор возможного выходного кода может происходить по конкурентному принципу. Код должны создать нейроны, у которых произошло самое сильное возбуждение. Например, если мы хотим, чтобы результирующий код содержал не более 15 бит из 100, то мы должны взять первые 15 нейронов по степени возбуждения, если такие вообще есть. При этом в выходном коде может оказаться код более чем одного понятия, что не страшно и говорит о том, что в информации содержится несколько признаков.
Комбинаторная кластеризация
На рисунке выше изображен бинарный сигнал ABC, полученный сложением кодов трех понятий (рисунок ниже).
Бинарные кода трех понятий и суммарный бинарный код
Каждое из избранных мест фиксирует след не всего сигнала, а только его случайного фрагмента. Это значит, что среди избранных мест могут оказаться места, более чувствительные к сочетанию какой-либо части признаков исходного кода.
Теперь предположим, что мы подали сигнал, содержащий только два признака AB. Его код будет такой, как показано ниже.
Бинарные кода двух понятий и суммарный бинарный код
Для того же нейрона, что был в начале, новый сигнал даст только одно избранное место. На рисунке ниже оно выделено красным. Это место будет общим для сигналов AB и ABC. Создание там воспоминания о сигнале AB приведет к тому, что в этом месте реакция на любой сигнал, содержащий AB, будет сильнее чем в других избранных местах.
Уменьшение реакции избранных мест для частичного сигнала
В результате такого комбинаторного запоминания получается, что если в поступающих сигналах есть закономерности, то есть устойчивые сочетания признаков, то могут найтись места, в которые начнут попадать «частичные» воспоминания, связанные с этими сочетаниями. Такие места можно назвать резонансными точками.
Чем чаще в разных примерах с одним и тем же обучающим кодом встречается определенное сочетание признаков, тем больше воспоминаний окажется в соответствующей резонансной точке и тем активнее будет ее реакция. В резонансную точку, соответствующую сигналу AB, попадут воспоминания и от сигнала ABD, и от ABFG, и тому подобные.
Сигналы в резонансных точках будут значительно выше, чем в остальных избранных точках. В резонансных точках происходит «усиление» концентрации воспоминаний за счет закономерностей, свойственных входным сигналам, в то время как в остальных точках воспоминания распределяются случайно и равномерно.
По сути, такая процедура позволяет осуществить автоматическую кластеризацию сигналов, относящихся к одному коду. О такой кластеризации мы говорили, когда описывали примеры с двойками в различных написаниях. Это же можно воспринимать, как выделение факторов в информации, помеченной учителем общим кодом.
Если нейронам действительно свойственно такое поведение, то эволюция, безусловно, усложнила его и оптимизировала по сравнению с тем, что мы описали. Так можно предположить, что когда образуются резонансные точки и, соответственно, появляются моменты высокой активности в этих местах, то там же начинается рост и отмирание дендритных шипиков. Эксперименты с шипиками позволяют найти оптимальную для этого места комбинацию сигналов, наиболее точно удовлетворяющую обнаруженной закономерности.
Кроме того, возможно, что рецепторы, оказавшиеся в неактивных местах, могут по прошествии времени возвращаться в исходное состояние. Возможно, что это один из элементов консолидации памяти.
Совместная работа миниколонок
В процессе обучения с учителем на вход сети подаются входные образы и указывается, какой выходной сигнал мы хотим получить. По мере накопления опыта сеть может выделить закономерности во входных данных и сопоставить их с выходными признаками. Но это работает только в том случае, если входные описания удается «нормализовать». Перед тем как искать закономерности требуется привести все входные описания к «общему знаменателю». Если мы имеем дело с изображениями, то перед тем, как пытаться их сравнивать, необходимо преобразовать их к общему масштабу, повороту и найти смещение, при котором искомые картинки в разных примерах максимально совпадут между собой. В классическом подходе это решается с помощью сверточного слоя, мы это делаем с использованием пространства контекстов. То есть перед тем, как запомнить новую «двойку», сначала надо ее преобразовать так, чтобы она максимально совпадала с предыдущими «двойками».
Когда обнаруживается контекст, в котором новое описание согласуется с предыдущим опытом, мы говорим, что трактовка в этом контексте реализует смысл информации. Именно в этой трактовке и создается воспоминание об этом опыте. Это относится не только к зрительной, но и к любой другой информации. Такое воспоминание удобно тем, что при «наложении» его на предыдущие воспоминания проступает общее между ними.
Так как во всех контекстах должна хранится копия одной и той же памяти, то когда нужная трактовка находится в одном из контекстов, она же должна быть запомнена и во всех остальных. В реальной коре это означает, что в момент запоминания все контексты должны будут «отказаться» от собственных трактовок, воспроизвести выбранную трактовку и запомнить ее. Если идет обучение с учителем и известен требуемый код признака, то запомнить вместе с этим кодом.
Ранее мы говорили, что для организации пространства контекстов требуется, чтобы каждая миниколонка хранила правила преобразований не только для собственного, но и для всех остальных контекстов. Это позволяет перемещать миниколонки просто меняя указатель на то, какой контекст должен использоваться миниколонкой. Такая тотальная память на преобразования позволяет реализовать не только перемещения контекстов, но и синхронное запоминание.
Для запоминания достаточно, чтобы по зоне коры распространился код того контекста, в котором определился смысл информации и требуемый для обучения код признака. Тогда каждая миниколонка может самостоятельно воспроизвести нужную трактовку и выполнить запоминание.
В этой части мы рассмотрели возможный для коры механизм обучения с учителем. Этот механизм достаточно прост, как достаточно проста и сама постановка задачи — по примерам научиться правильно относить объекты к нужному классу. Гораздо интереснее и сложнее задача самообучения — есть данные, в них есть закономерности, требуется выделить эти закономерности. Сложность в том, что в краткой постановке задачи ничего не говорится о том, какие закономерности нас интересуют, сколько закономерностей надо выделить, интересуют ли нас частные редкие закономерности или же надо искать наиболее общие правила, хотим ли мы построить ортогональный базис или нас устроит описание в косоугольных факторах. В следующей части пойдет разговор о том какое универсальное решение может предложить
Алексей Редозубов
Логика сознания. Часть 1. Волны в клеточном автомате
Логика сознания. Часть 2. Дендритные волны
Логика сознания. Часть 3. Голографическая память в клеточном автомате
Логика сознания. Часть 4. Секрет памяти мозга
Логика сознания. Часть 5. Смысловой подход к анализу информации
Логика сознания. Часть 6. Кора мозга как пространство вычисления смыслов
Логика сознания. Часть 7. Самоорганизация пространства контекстов
Логика сознания. Пояснение «на пальцах»
Логика сознания. Часть 8. Пространственные карты коры мозга
Логика сознания. Часть 9. Искусственные нейронные сети и миниколонки реальной коры
Автор: AlexeyR