Естественные модели параллельных вычислений Лекция 6 :: Искусственные нейронные сети Ершов Н.М. [email protected]Проект комиссии Президента РФ по модернизации и техническому развитию экономики России Создание системы подготовки высококвалифицированных кадров в области суперкомпьютерных технологий и специализированного программного обеспечения Ершов Н.М. (ВМК МГУ) Лекция 6 :: Нейронные сети ЕМПВ :: 2011 1 / 61
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Под искусственной нейронной сетью понимается математическаямодель (а также ее программная или аппаратная реализация),построенная по принципу организации и функционированиябиологических нейронных сетей — сетей нервных клеток живогоорганизма.Понятие нейронной сети возникло при изучении процессов,протекающих в мозге, и при попытке смоделировать эти процессы.Первой такой попыткой были нейронные сети Маккалока иПиттса (1943 г.).Впоследствии, после разработки алгоритмов обучения, моделинейронных сетей стали использовать и в практических целях: взадачах прогнозирования, распознавания образов,управления и т. д.
Биологическим прототипом искусственных нейронных сетейявляется нервная система живых организмов.Нервная система представляет собой набор большого числаспециализированных клеток, называемых нейронами.Каждый нейрон обладает многими качествами, общими с другимитипами клеток, но его уникальной способностью является прием,обработка и передача электрохимических сигналов по нервнымпутям, которые образуют коммуникационную систему мозга.Например, нервная система человека состоит из порядка 1011
нейронов, участвующих в примерно 1015 передающих связях,имеющих длину метр и более.
Нейрон — это структурно-функциональная единица нервнойсистемы. Эта клетка имеет сложное строение, высокоспециализирована и по структуре содержит ядро, тело клетки иотростки. Выделяют два вида отростков: дендриты и аксоны.Аксон — обычно, длинный отросток, приспособленный дляпроведения возбуждения от тела нейрона.Дендриты — как правило, короткие и сильно разветвлённыеотростки, служащие главным местом образования влияющих нанейрон возбуждающих и тормозных синапсов (разные нейроныимеют различное соотношение длины аксона и дендритов).Нейрон может иметь несколько дендритов и обычно только одинаксон.Один нейрон может иметь связи со многими (до 20-и тысяч)другими нейронами.
Синапсом называется место контакта между двумя нейронамиили между нейроном и получающей сигнал эффекторной клеткой.Синапсы служат для передачи нервных импульсов междуразличными клетками.Передача импульсов осуществляется химическим путём спомощью медиаторов или электрическим путём посредствомпрохождения ионов из одной клетки в другую.Одни синапсы вызывают деполяризацию нейрона, другие —гиперполяризацию; первые являются возбуждающими, вторые —тормозящими.Обычно для возбуждения нейрона необходимо одновременноераздражение от нескольких возбуждающих синапсов.
Искусственный нейрон имитирует в первом приближении свойствабиологического нейрона.На его вход поступают несколько сигналов, каждый из которыхявляется выходом другого нейрона (или входным сигналом всейсети).Каждый вход xi умножается на некоторый вес wi , аналогичныйсинаптической силе, все произведения суммируются, определяяуровень N активации нейрона.Полученное значение далее преобразуется активационнойфункцией нейрона f , которая и дает выход нейрона y = f (N).Таким образом, выходной сигнал y нейрона, имеющего n входовx1, . . . , xn, определяется формулой
Стандартное ограничение, накладываемое на активационнуюфункцию, заключается в том, что для низкого уровня активацииона должна выдавать значение близкое к нулю (нейрон невозбуждается), для высокого — значение близкое к единице(нейрон переходит в возбужденное состояние).Обычно используется несколько типов активационных функций,удовлетворяющих данному свойству.
Искусственная нейронная сеть представляют собой системувзаимосвязанных искусственных нейронов, обрабатывающихсигналы от других нейронов или из внешней среды.С математической точки зрения, искусственная нейронная сетьпредставляет собой ориентированный граф, вершинами которогоявляются отдельные нейроны. Каждая дуга такого графасоответствует отдельному синапсу и помечена силой этогосинапса.Обычно, в нейронной сети выделяют три типа нейронов —входные, внутренние и выходные:
I входные нейроны являются аналогами рецепторов и служат дляввода информации в нейронную сеть, активационная функциятаких нейронов f (x) = x ;
I внутренние нейроны служат для нелинейного преобразованиясвоих входных сигналов в выходные;
I выходные нейроны сети — это нейроны, служащие для выводаинформации.
Если граф нейронной сети является ациклическим, то такая сетьназывается сетью прямого распространения.Т. к. выход любого нейрона однозачно определяется его входами,то и выход всей сети с ациклической топологией связей такжеоднозначно определяется ее входами.Это значит, что нейронная сеть прямого распространения можеттрактоваться, как параметризованная функция многихпеременных. Роль параметров этой функции играютсинаптические веса.
Если граф нейронной сети содержит в себе циклы, то такая сетьназывается рекуррентной.В рекуррентных сетях данные, подаваемые на вход, порождаютпроцесс (потенциально бесконечный) распространения сигналов.Если этот процесс сходится к некоторому стационарномусостоянию, то значения выходных нейронов в этом состоянии ипринимаются за отклик нейронной сети на входной сигнал.В рекуррентных сетях входные и выходные нейроны используютсяи в качестве внутренних нейронов, т. е. выполняют функциюобработки информации, а не только ее ввода/вывода.
В большинстве приложений набор нейронов и структурасинаптических связей формируются один раз при разработке сетии не меняются в процессе ее эксплуатации.Настраиваемыми элементами сети являются веса еесинаптических связей.Процесс настройки синаптических весов, в силу большойаналогии с биологическими нервными сетями, принято называтьобучением нейронной сети.В зависимости от цели обучения различают несколько его типов:
I обучение с учителем;I обучение без учителя;I обучение с подкреплением.
При обучении с учителем (англ. supervised learning)предполагается, что имеется набор обучающих примеров.Каждый пример представляет собой пару
вход → желаемый выход.
В идеале, после своего обучения нейронная сеть должна припоступлении на вход любого сигнала из обучающего наборавыдавать соответствующий желаемый выходной сигнал.Поэтому, с математической точки зрения обучение с учителеманалогично задаче интерполяции или аппроксимации табличнозаданной функции.
При обучении без учителя (англ. unsupervised learning) наборобучающих примеров состоит только из входных сигналов.Такое обучение сводится к самоорганизации сети с цельюсоздания некоторой внутренней модели внешнего мира,представленного в виде набора входных сигналов.Например, такого рода сети используются в задачахклассификации (кластеризации) данных, когда заранее неизвестнани структура, ни количество классов (самоорганизующиеся картыКохонена — SOM).
При обучении с подкреплением (англ. reinforcement learning)обучающие примеры также состоят только из входных сигналов ине содержат желаемых откликов на эти сигналы.Однако, имеется некоторая обратная связь — каждый выходнейронной сети оценивается как плохой (неправильный) илихороший (правильный).Такой тип обучения применяется в тех случаях, когда нейроннаясеть служит моделью объектов, существующих в некоторой среде.Среда воздействует на объекты посредством входных сигналов.Выходные сигналы меняют тем или иным образом состояниеобъекта (например, его положение в пространстве). Каждоедействие объекта оценивается в соответствии с некоторымкритерием по шкале «плохо–хорошо». Целью обучения являетсягенерация «хороших» выходных сигналов.
Перцептрон (англ. perceptron) представляет собой простейшийспособ организации нейронной сети прямого распространения.Все нейроны перцептрона разбиты по слоям, причем связаннымиявляются только нейроны соседних уровней: каждый нейрон k-гоуровня преобразует свои входные сигналы и подает выходнойсигнал на все нейроны (k + 1)-го уровня.Первый уровень, как правило, образуют входные нейроны, работакоторых заключается в рассылке входных сигналов нейронамвторого уровня.Выход нейронов последнего уровня является выходомперцептрона.
Перцептрон Розенблатта был по сути первоймоделью искусственной нейронной сети.Эта модель была разработана в конце 1950-хгодов американским Фрэнком Розенблаттом,который предложил схему устройства,моделирующего процесс человеческоговосприятия, и назвал его «перцептроном»В 1957 году было завершено компьютерноемоделирование работы перцептрона, а двагода спустя был продемонстрирован ипервый нейрокомпьютер — «Марк-1»,который был способен распознаватьнекоторые из букв английского алфавита.
Перцептрон Розенблатта представляет собой трехслойнуюнейронную сеть.Первый слой образован из входных нейронов, называемыхS-элементами (сенсорные элементы).Второй слой состоит из нейронов, называемых A-элементами(ассоциативные элементы).В третьем слое в простейшем случае располагается всего одиннейрон, называемый R-элементом (решающий элемент).
Работа сенсорных элементов заключается в чтении входногобинарного сигнала и передаче его нейронам второго слоя.Работа A-элемента выполняется по описанной выше схеме: всесигналы от входных нейронов суммируются с весами измножества {−1, 0, 1} и эта сумма преобразуется активационнойфункцией вида
fθ(x) ={
1, если x > θ,0, если x ≤ θ.
Величина θ называется порогом возбуждения.Решающий элемент функционирует аналогично: все входы отA-элементов суммируются с некоторыми целочисленными весамии преобразуются стандартной пороговой функцией с нулевымпорогом возбуждения, другими словами, его выход равенединице, если взвешенная входная сумма положительна, и нулю впротивном случае.
Формально перцептрон Розенблатта определяется двумячисловыми параметрами: n — число входов, m — числоассоциативных элементов, матрицей G = (gij ∈ {−1, 0, 1}) весовсвязей между входными и ассоциативными элементами, ивектором W = (wj ∈ Z ) весов между ассоциативнымиэлементами и выходным нейроном.Пусть на вход перцептрона подается сигнал X = (xi ∈ {0, 1}).Тогда выход ассоциативного слоя вычисляется по формуле
zj = fθ
(n∑
i=1
gijxi
),
а выход решающего элемента (т. е. выход перцептрона) равен
Особенностью перцептрона Розенблатта является то, что весасвязей G между первым и вторым слоями нейронов выбираютсяслучайным образом один раз и фиксируются. Т. е. эти веса неподлежат обучению.Могут обучаться только веса W , связывающие ассоциативныеэлементы с решающим элементом.
Пусть имеется обучающий набор, содержащий множество входныхсигналов (объектов) с указанием номера класса (0 или 1),которому принадлежит каждый объект.Для обучения перцептрона применяется следующий алгоритм(метод коррекции ошибки).1) Значения wj полагаем равными нулю (инициализация).2) Перебираем в некотором порядке все объекты из обучающего
набора, подавая их на вход перцептрона:F если объект принадлежит классу 1, то все веса, ведущие от
возбужденных ассоциативных элементов, увеличиваются на 1;F если объект принадлежит классу 0, то все веса, ведущие от
возбужденных ассоциативных элементов, уменьшаются на 1.
3) Повторяем шаг 2 до тех пор, пока не будут правильноклассифицированы все объекты из обучающего набора.
Розенблаттом была доказана следующая теорема сходимости:если существует перцептрон, решающий данную задачуклассфикации, то выполнение описанного алгоритма, независимоот начального состояния весовых коэффициентов ипоследовательности предъявления объектов, всегда приводит кдостижению решения за конечный промежуток времени.Вместе с тем, несмотря на некоторые обнадеживающиерезультаты, дальнейшие исследования и эксперименты показали,что возможности перцептрона по распознаванию образов (вчастности, букв) являются достаточно ограниченными.Эти ограничения были явным образом сформулированы в книгеМинского и Пайперта, которая послужила причинойзначительного (более, чем двадцатилетнего) спада интереса кнейронным сетям.
В перцептроне Розенблатта обучаемым являлся только один слойсинаптических связей. Это было обусловлено том, что в то времяне были известны алгоритмы обучения так называемых скрытыхслоев, т. е. связей, ведущих не в выходные нейроны.Проблема заключается в том, что каждая такая связь влияет нена один выходной нейрон, а сразу на все, поэтому задачаобучения скрытых связей является намного более сложной.Алгоритм обучения всех синаптических связей был разработан в1980-х годах сразу несколькими учеными. Для этого пришлосьотказаться от дискретности перцептрона Розенблатта и считать,что входы и выходы всех нейронов, а также веса всехсинаптических связей, представляются действительными числами.Наиболее часто используемыми являются перцептроны с двумяили тремя обучаемыми слоями связей.
Двуслойный перцептрон состоит их трех слоев нейронов и двухслоев синаптических связей.Первый слой нейронов образован входными нейронами, ихфункция заключается в рассылке входных сигналов всемнейронам второго слоя.Нейроны второго слоя называются скрытыми. Каждый скрытыйнейрон принимает входные сигналы от входных нейронов,суммирует их с весами соответствующих синаптических связей ипреобразует полученную сумму активационной функцией.Полученное значение он пересылает всем выходным нейронам,образующим третий слой перцептрона.Выходные нейроны работают по той же схеме, что и скрытые, ноих сигнал является выходом всего перцептрона.
Формально, двухслойный перцептрон характеризуется тремячислами n, m и k , и двумя матрицами W и V :
I N — число входных нейронов, другими словами, размерностьвходного сигнала;
I M — число скрытых нейронов;I K — число выходных нейронов, размерность выходного сигнала;I W = {wij ∈ R, i = 1 . . .N, j = 1 . . .M} — матрица синаптических
весов, связывающих входные и скрытые нейроны;I V = {vjk ∈ R, j = 1 . . .M, k = 1 . . .K} — матрица синаптических
В качестве активационной функции скрытых и выходных нейроновобычно используется некоторая одинаковая сигмоидальнаядифференцируемая функция, например, функция вида
f (x) =1
1+ e−x .
Эта функция интересна тем, что ее производная вычисляетсялегко через значение самой функции:
f ′(x) = f (x)(1− f (x)),
что является полезным с точки зрения некоторых алгоритмовобучения.
Исторически первый алгоритм обучения многослойныхперцептронов получил название Error Backpropagation(возвратное распространение ошибки).Этот метод в некотором смысле является обобщением алгоритмакоррекции ошибки и представляет собой специализированныйвариант итерационного метода нискорейшего спуска.Основная идея метода заключается в том, что на каждойитерации вычисляется градиент функции ошибки относительносинаптических весов и выполняется шаг в сторону антиградиента.Рассмотрим, как работает этот алгоритм на примере двухслойногоперцептрона.
Пусть обучающий набор состоит из пар (x , t), где x — некоторыйсигнал, t — желаемый отклик сети на сигнал x . Будем подавать внекотором порядке сигналы из обучающего набора на входперцептрона. На каждый из них сеть выдает некоторый отклик y ,разность e = y − t — это вектор ошибки (для одного примера).Образуем скалярную функцию ошибки, зависящую от весов W иV , и равную среднеквадратичному всех компонент вектора e:
E (W ,V ) =12
K∑k=1
(yk − tk)2.
В этой формуле yk является функцией входов xi и весов W и V .Несложно найти частные производные функции E относительнопеременных всех имеющихся переменных (основная формула —производная сложной функции).
После того как вычислены частные производные функции ошибкиотносительно синаптических весов V и W , т. е. градиент функцииошибки, можно выполнить обновление этих весов в направленииантиградиента (антиградиент — это вектор, противоположнонаправленный градиенту).Для этого используются следующие простые формулы:
wij ← wij − η∂E∂wij
и vjk ← vjk − η∂E∂vjk
,
где η — параметр, регулирующий скорость изменения весов.
Если проанализировать выписанные выше формулы вычислениячастных производных и сравнить их с формулами, по которымперцептроном обрабатывается входной сигнал, то станеточевидным, что при вычислении произодных происходитраспространение ошибки e от выходных нейронов ко входным.Характер этого распространения полностью аналогичен прямомураспространению сигнала: ошибка вычисляется выходныминейронами, откуда она передается скрытым нейронам, в которыхпроисходит суммирование (с соответствующими синаптическимивесами) и последующее нелинейное преобразование.Т. е. вычисление антиградиента может выполняться сиспользованием той же топологии связей, что и при обработкевходного сигнала. И это справедливо не только для многослойныхперцептронов, но и для любых сетей прямого распространения.
Несмотря на такую естественность метода Error Backpropagation,он имеет и существенные недостатки, свойственные любомуметоду наискорейшего спуска — проблема попадания в локальныеминимумы, сильная зависимость от начального приближения,низкая скорость сходимости в условиях малого градиента и т. д.По этим причинам впоследствие было разработано много другихболее эффективных алгоритмов обучения многослойныхперцептронов.Некоторые из них могут рассматриваться как улучшенияалгоритма Backpropagation, другие же являются вариациямиразличных универсальных оптимизационных методов. Например,для обучения нейронных сетей часто применяются генетическиеалгоритмы.
Любая нейронная сеть прямого распространения можетрассматриваться как некоторая детерминированная функция,преобразующая свои входы в выходы.Благодаря наличию обратных связей поведение рекуррентныхсетей является намного более сложным по сравнению с сетямипрямого распространения.Обрабатывать входную информацию такими сетями можно двумяспособами:
1) подавать на вход некоторый сигнал и дожидаться стабилизациивыходного сигнала сети;
2) подавать на вход последовательность сигналов, по одному накаждом такте работы сети, и получать на выходепоследовательность выходных сигналов (обратные связи в данномслучае будут выполнять функции памяти).
Из имеющегося в настоящее время большого разнообразия такоготипа сетей, мы рассмотрим рекуррентные перцептроны и вариантполносвязной нейронной сети — сеть Хопфилда.Рекуррентный перцептрон можно рассматривать, как обычныймногослойный перцептрон, в который добавлены обратные связи,ведущие от нейронов некоторого уровня к нейронам предыдущихили текущего уровней.Стандартными вариантами такого расширения являются сетиДжордана и Элмана.
Сеть Джордана — многослойный перцептрон, содержащий такназываемые контекстные нейроны, число которых совпадает счислом выходных нейронов.Каждый выходной нейрон связан ровно с одним соответствующимконтекстным нейроном.Сами контекстные нейроны по сути расширяют входной слой сети,т. е. их выходной сигнал используется вторым слоем нейроновнаравне со входным сигналом.Очевидно, что контекстные нейроны представляют собойнекоторую простую систему памяти, способную запоминать (всегона один временной шаг) выходное состояние всей сети.
Сеть Элмана расширяет многослойный перцептрон немногодругим образом.Каждый слой нейронов (не считая входных нейронов)дублируется слоем контекстных нейронов.Выходной сигнал любого нейрона в обрабатывающем слоепередается на соответствуюший контекстный нейрон, а оттуда(без обработки) рассылается всем нейронам того же самого слоя.Этот прием позволяет сети запомнить в течение одноговременного шага не только свой выход, но и все свое внутреннеесостояние.
Возросшая сложность поведения рекуррентных сетейоборачивается значительными проблемами при их обучении.В настоящее время имеется несколько подходов к обучению такихсетей. Например, в методе unfolding-in-time происходитразворачивание перцептрона в последовательность несколькихслоев так, что новая сеть оказывается сетью прямогораспространения. Далее к ней применяется какой-нибудьстандартный алгоритм обучения, но с тем важной оговоркой, чторазличные слои этого развернутого перцептрона управляютсяодними и теми же синаптическими весами.Также можно отметить, что популярным в последнее время сталэволюционный подход к обучению нейронных сетейрассматриваемого типа, например, с использованием аппаратагенетических алгоритмов, т. к. в этом случае практически неимеется ограничений, накладываемых на нейронную сеть.
Сеть Хопфилда является примером полносвязной нейронной сети,в которой каждый нейрон связан синаптическими связями совсеми другими нейронами.В сети Хопфилда каждый нейрон является одновременно ивходным и выходным.
Процесс обработки сигнала происходит по следующей схеме:I входной сигнал подается на все нейроны сети (т. е. размерность
входного сигнала совпадает с размером сети);I далее в течение некоторого количества временных шагов
происходит асинхронная обработка сигнала (каждый нейрон внекотром случайном порядке обрабатывает свои входы, генерируетвыход и рассылает его всем другим нейроном);
I после того, как процесс стабилизируется (выходы нейроновперестают изменяться), работа сети по обработке входного сигналазавершается и значения выходов всех нейронов объявляютсявыходным сигналом сети (т. е. размерность выходного сигналасовпадает со входной размерностью).
Каждый нейрон в сети Хопфилда может находится в двухсостояниях, обозначаемых +1 и −1.Матрица W синаптических весов является симметричной снулевой диагональю и целочисленными коэффициентами.Активационная функция нейронов имеет вид
f (x) ={
+1, если x ≥ 0,−1, если x < 0.
Таким образом, сеть Хопфилда является еще одним примеромдискретной нейронной сети (как и перцептрон Розенблатта).
Обучение сети Хопфилда на множестве обучающих примеров Pсводится к установлению синаптических весов согласно формуле
wij =∑p∈P
pipj .
Другими словами, примеры просматриваются по очереди, если втекущем примера два сигнала pi и pj равны, то вес, соединяющийсоответствующие нейроны увеличивается на единицу, иначе —уменьшается на единицу.Т. е. процесс обучения завершается строго за |P| шагов, в отличиеот рассматривавшихся выше алгоритмов обучения перцептронов.
Несмотря на то, что в обучающих примерах нет явного указанияжелаемого отклика сети на заданный входной сигнал,предполагается, что выход для примеров из обучающего примерадолжен быть равен входу. Т. е. обучение сети Хопфилда являетсявсе-таки обучением с учителем.Цель обучения — при предъявлении сети некоторого сигнала xсеть должна за конечное число шагов сойтись к некоторомуустойчивому состоянию — наиболее близкому к x сигналу из P .Таким образом, сеть Хопфилда выполняет функциюассоциативной памяти. Ёмкость такой памяти примерно равнавеличине 0.14n, где n — число нейронов сети. Причем, в случае«запоминания» близких сигналов, возможно образование ложныхассоциаций, когда сеть на сигнал x ∈ P выдает не x , а другойсигнал y ∈ P .
Искусственные нейронные сети в настоящее время широкоприменяются практически во всех областях связанных собработкой информации.Далеко не полный список приложений нейросетей выглядитследующим образом:
I приближение функций: регрессионный анализ, предсказаниевременных рядов (финансовые приложения);
I распознавание образов: радары, распознование лиц, почерка, речи,медицинская диагностика и т. д.;
I обработка данных: классификация, кластеризация, фильтрация,сжатие данных;
I управление: технологические процессы и системы, транспортныесредства, манипуляторы, робототехника;
I системы принятия решений: игры, экспертные системы.
Легко показать, что дискретные нейронные сети являютсяалгоритмически универсальными моделями.В частности, используя нейроны с пороговой функцией активациии целочисленные синаптические веса, можно построить сети,которые моделируют различные логические функции.Следовательно, с помощью сетей прямого распространенияможно смоделировать работу любой логической комбинационнойсхемы, а с помощью рекуррентных сетей — работу любойлогической схемы с памятью.
Искусственные нейронные сети несомненно обладают высокойстепенью параллелизма. Например, в многослойных перцептронахвсе нейроны одного слоя могут обрабатывать информациюодновременно.Серьезным препятствием к эффективному использованию этогопараллелизма является сильная связность нейронов. Практическив любой архитектуре нейронных сетей (включая естественныесети — нервные системы) количество синаптических связей напорядки больше числа нейронов. Следовательно, наиболееважным вопросом при распараллеливании нейронных сетейявляется реализация эффективной системы коммуникации.Естественно, что наиболее просто этот вопрос решается всистемах с общей памятью.
Особенностью искусственных нейронных сетей является то, что ихструктура как правило является регулярной и хорошо описываетсяс помощью матрично-векторной нотации.Например, работа многослойного перцептрона сводится кпоследовательности умножений матриц (синаптических весов) навектора входных сигналов и поэлементному применениюактивационной функции к полученным векторам.Как следствие, распараллеливание нейронной сети можнопроводить на уровне выполнения таких стандартныхматрично-векторных операций.Такой прием должен хорошо работать и при реализациинейронных сетей на GPU.
Известно, что чаще всего процесс обучения нейронной сетитребует намного больших временных затрат, чем ее последующаяэксплуатация.Поэтому весьма актуальной является задача распараллеливанияименно стадии обучения сети.Если обучающая выборка содержит большое число примеров, тооказывается возможным производить распараллеливание науровне такой выборки.Например, для метода Backpropagation возможно параллельноевычисление градиентов ошибки сразу для всех обучающихпримеров с последующей их сверткой (суммированием).При необходимости можно проводить дополнительноераспараллеливания и на уровне вычисления градиента ошибки,которое также обычно сводится к применениюматрично-векторных операций.