Часть I ТЕОРИЯ

Глава 1

ОСНОВНЫЕ ПОЛОЖЕНИЯ ТЕОРИИ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ

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

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

1.1. Биологический нейрон

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


Рис. 1.1. Взаимосвязь биологических нейронов

Нейрон (нервная клетка) является особой биологической клеткой, которая обрабатывает информацию (рис. 1.1). Он состоит из тела (cell body), или сомы (soma), и отростков нервных волокон двух типов - дендритов (dendrites), по которым принимаются им­пульсы, и единственного аксона (ахоn), по которому нейрон может передавать импульс. Тело нейрона включает ядро (nucleus), кото­рое содержит информацию о наследственных свойствах, и плазму, обладающую молекулярными средствами для производства необ­ходимых нейрону материалов. Нейрон получает сигналы (импуль­сы) от аксонов других нейронов через дендриты (приемники) и пе­редает сигналы, сгенерированные телом клетки, вдоль своего ак­сона (передатчика), который в конце разветвляется на волокна (strands). На окончаниях этих волокон находятся специальные об­разования - синапсы (synapses), которые влияют на величину им­пульсов.

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

Кора головного мозга человека содержит около 1011 нейро­нов и представляет собой протяженную поверхность толщиной от 2 до 3 мм с площадью около 2200 см2. Каждый нейрон связан с 103-104 другими нейронами. В целом мозг человека содержит при­близительно от 1014 до 1015 взаимосвязей.

Нейроны взаимодействуют короткими сериями импульсов продолжительностью, как правило, несколько миллисекунд. Сооб­щение передается посредством частотно-импульсной модуляции. Частота может изменяться от нескольких единиц до сотен герц, что в миллион раз медленнее, чем быстродействующие переклю­чательные электронные схемы. Тем не менее сложные задачи распознавания человек решает за несколько сотен миллисекунд. Эти решения контролируются сетью нейронов, которые имеют ско­рость выполнения операций всего несколько миллисекунд. Это означает, что вычисления требуют не более 100 последователь­ных стадий. Другими словами, для таких сложных задач мозг «за­пускает» параллельные программы, содержащие около 100 шагов. Рассуждая аналогичным образом, можно обнаружить, что количе­ство информации, посылаемое от одного нейрона другому, должно быть очень малым (несколько бит). Отсюда следует, что основная информация не передается непосредственно, а захватывается и распределяется в связях между нейронами.

1.2. Структура и свойства искусственного нейрона

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


где wi - вес(weight)синапса, i = 1...n;b - значение смещения (bias); s - результат суммирования (sum); хi - компонент входного вектора (входной сигнал), i = 1...n; у - выходной сигнал нейрона; n - число входов нейрона; f - нелинейное преобразование (функ­ция активации).

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

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

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

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


Рис. 1.2. Структура искусственного нейрона


Таблица 1.1

Функции активации нейронов

Одной из наиболее распространенных является нелинейная функция активации с насыщением, так называемая логистическая функция или сигмоид (функция S-образного вида):


При уменьшении а сигмоид становится более пологим, в пределе при а = 0 вырождаясь в горизонтальную линию на уровне 0,5, при увеличении а сигмоид приближается к виду функции единичного скачка с порогом θ. Из выражения для сигмоида очевидно, что выходное значение нейрона лежит в диапазоне (0, 1). Одно из ценных свойств сигмоидальнои функции - простое выражение для ее производной, применение которой будет рассмотрено в даль­нейшем:


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


Рис. 1.3. Примеры активационных функций:

а - функция единичного скачка; б - линейный порог (гистерезис); в - сигмоид (логистическая функция); г - сигмоид (гиперболический тангенс)

1.3. Классификация нейронных сетей и их свойства

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

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

•  выходные нейроны, выходные значения которых пред­ставляют выходы нейронной сети; преобразования в них осущест­вляются по выражениям (1.1) и (1.2);

•  промежуточные нейроны, составляющие основу нейрон­ных сетей, преобразования в которых выполняются также по вы­ражениям (1.1) и (1.2).

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

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

•  полносвязные (рис. 1.4, а);

•  многослойные или слоистые (рис. 1.4, б);

•  слабосвязные (с локальными связями) (рис. 1.4, в).

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

В многослойных нейронных сетях нейроны объединяются в слои. Слой содержит совокупность нейронов с едиными входными сигналами. Число нейронов в слое может быть любым и не зави­сит от количества нейронов в других слоях. В общем случае сеть состоит из Q слоев, пронумерованных слева направо. Внешние входные сигналы подаются на входы нейронов входного слоя (его часто нумеруют как нулевой), а выходами сети являются выходные сигналы последнего слоя. Кроме входного и выходного слоев в многослойной нейронной сети есть один или несколько скрытых слоев. Связи от выходов нейронов некоторого слоя q к входам нейронов следующего слоя (q+1) называются последовательными.

в)


Рис. 1.4. Архитектуры нейронных сетей:

а - полносвязная сеть, б - многослойная сеть с последовательными связями, в - слабосвязные сети

В свою очередь, среди многослойных нейронных сетей вы­деляют следующие типы.

1) Монотонные,

Это частный случай слоистых сетей с дополнительными ус­ловиями на связи и нейроны. Каждый слой кроме последнего (вы­ходного) разбит на два блока: возбуждающий и тормозящий. Связи между блоками тоже разделяются на тормозящие и возбуждаю­щие. Если от нейронов блока А к нейронам блока В ведут только возбуждающие связи, то это означает, что любой выходной сигнал блока является монотонной неубывающей функцией любого вы­ходного сигнала блока А. Если же эти связи только тормозящие, то любой выходной сигнал блока В является невозрастающей функ­цией любого выходного сигнала блока А. Для нейронов монотон­ных сетей необходима монотонная зависимость выходного сигна­ла нейрона от параметров входных сигналов.


Рис. 1.5. Многослойная (двухслойная) сеть прямого распространения

2) Сети без обратных связей. В таких сетях нейроны вход­ного слоя получают входные сигналы, преобразуют их и передают
нейронам первого скрытого слоя, и так далее вплоть до выходного,
который выдает сигналы для интерпретатора и пользователя. Ес­ли не оговорено противное, то каждый выходной сигнал q-гo слоя
подастся на вход всех нейронов (q+1)-го слоя; однако возможен
вариант соединения q-го слоя с произвольным (q+ p )-м слоем.

Среди многослойных сетей без обратных связей различают полносвязанные (выход каждого нейрона q-гo слоя связан с вхо­дом каждого нейрона (q+1)-го слоя) и частично полносвязанные. Классическим вариантом слоистых сетей являются полносвязанные сети прямого распространения (рис. 1.5).

3) Сети с обратными связями. В сетях с обратными связя­ми информация с последующих слоев передается на предыдущие.
Среди них, в свою очередь, выделяют следующие:

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

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

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

В качестве примера сетей с обратными связями на рис. 1.6 представлены частично-рекуррентные сети Элмана и Жордана.


Рис. 1.6. Частично-рекуррентные сети: а - Элмана, б - Жордана

В слабосвязных нейронных сетях нейроны располагаются в узлах прямоугольной или гексагональной решетки. Каждый нейрон связан с четырьмя {окрестность фон Неймана), шестью (окрест­ность Голея) или восемью (окрестность Мура) своими ближайшими соседями.

Известные нейронные сети можно разделить по типам струк­тур нейронов на гомогенные (однородные) и гетерогенные. Гомо­генные сети состоят из нейронов одного типа с единой функцией активации, а в гетерогенную сеть входят нейроны с различными функциями активации.

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

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

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

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

•  возможности сети возрастают с увеличением числа ней­ронов сети, плотности связей между ними и числом слоев;

•  введение обратных связей наряду с увеличением возможностей сети поднимает вопрос о динамической устойчивости сети;

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

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

Многие задачи распознавания образов (зрительных, рече­вых), выполнения функциональных преобразований при обработке сигналов, управления, прогнозирования, идентификации сложных систем, сводятся к следующей математической постановке. Необ­ходимо построить такое отображение X -> У, чтобы на каждый возможный входной сигнал X формировался правильный выход­ной сигнал Y. Отображение задается конечным набором пар (<вход>, <известный выход>). Число этих пар (обучающих приме­ров) существенно меньше общего числа возможных сочетаний значений входных и выходных сигналов. Совокупность всех обу­чающих примеров носит название обучающей выборки.

В задачах распознавания образов X - некоторое представ­ление образа (изображение, вектор), У - номер класса, к которому принадлежит входной образ.

В задачах управления X - набор контролируемых парамет­ров управляемого объекта, У - код, определяющий управляющее воздействие, соответствующее текущим значениям контролируе­мых параметров.

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

При идентификации X и У представляют входные и выход­ные сигналы системы соответственно.

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

В результате отображения X -> У необходимо обеспечить формирование правильных выходных сигналов в соответствии:

•  со всеми примерами обучающей выборки;

•  со всеми возможными входными сигналами, которые не
вошли в обучающую выборку.

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

1.3.1. Теорема Колмогорова-Арнольда

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

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

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

• теорема о представлении любой непрерывной функции трех переменных в виде суммы функций не более двух перемен­ных (1957 г.);

• теорема о представлении непрерывных функций несколь­ких переменных в виде суперпозиций непрерывных функций одного переменного и сложения (1957 г.).

1.3.2. Работа Хехт-Нильсена

Теорема о представлении непрерывных функций нескольких переменных в виде суперпозиций непрерывных функций одного переменного и сложения в 1987 году была переложена Хехт-Нильсеном для нейронных сетей.

Теорема Хехт-Нильсена доказывает представимость функ­ции многих переменных достаточно общего вида с помощью двух­слойной нейронной сети с прямыми полными связями с n нейро­нами входного слоя, (2n+1) нейронами скрытого слоя с заранее известными ограниченными функциями активации (например, сигмоидальными) и т нейронами выходного слоя с неизвестными функциями активации.

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

1.3.3. Следствия из теоремы Колмогорова-Арнольда - Хехт-Нильсена

Следствие 1. Из теоремы Хехт-Нильсена следует предста­вимость любой многомерной функции нескольких переменных с помощью нейронной сети фиксированной размерности. Неизвест­ными остаются следующие характеристики функций активации нейронов:

•  ограничения области значений (координаты асимптот) сигмоидальных функций активации нейронов скрытого слоя;

•  наклон сигмоидальных функций активации;

•  вид функций активации нейронов выходного слоя.

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

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

Следствие 2. Для любого множества пар (Xk, Vk) (где Уk - скаляр) существует двухслойная однородная (с одинаковыми функциями активации) нейронная сеть первого порядка с последо­вательными связями и с конечным числом нейронов, которая вы­полняет отображение X -> У, выдавая на каждый входной сигнал У правильный выходной сигнал Уk. Нейроны в такой двухслойной нейронной сети должны иметь сигмоидальные передаточные функции.

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

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

Утверждение. Для любого множества пар входных-выходных векторов произвольной размерности {(Xk, Yk ), k = 1...N} существует однородная двухслойная нейронная сеть с последова­тельными связями, с сигмоидальными передаточными функциями и с конечным числом нейронов, которая для каждого входного век­тора У формирует соответствующий ему выходной вектор Vk.

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

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


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

Оценив необходимое число весов, можно рассчитать число нейронов в скрытых слоях. Например, для двухслойной сети это число составит:


Известны и другие формулы для оценки, например:


Точно так же можно рассчитать число нейронов в сетях с большим числом слоев.

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

Аналогичная ситуация складывается и с многослойными нейронными сетями. В которых помимо последовательных связей используются и прямые (связи от слоя с номером q к слою с номером (q+p), где p>1). Нет строгой теории, которая показала бы возможность и целесообразность построения таких сетей.

Наибольшие проблемы возникают при использовании сетей циклического функционирования. К этой группе относятся много­слойные сети с обратными связями (от слоя с номером q к слою с номером (q+p), где р < 0), а также полносвязные сети. Для успеш­ного функционирования таких сетей необходимо соблюдение ус­ловий динамической устойчивости, иначе сеть может не сойтись к правильному решению, либо, достигнув на некоторой итерации правильного значения выходного сигнала, после нескольких ите­раций уйти от этого значения. Проблема динамической устойчиво­сти подробно исследована, пожалуй, лишь для одной модели из рассматриваемой группы - нейронной сети Хопфилда.

Отсутствие строгой теории для перечисленных моделей нейронных сетей не препятствует исследованию возможностей их применения.

Отметим, что отечественному читателю приведенные ре­зультаты известны в более фрагментарной форме - в виде так называемой теоремы о полноте.

Теорема о полноте.

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

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

1.4. Постановка и возможные пути решения задачи обучения нейронных сетей

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

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

В процессе функционирования нейронная сеть формирует выходной сигнал У в соответствии с входным сигналом X, реали­зуя некоторую функцию g: Y = g(Х). Если архитектура сети задана, то вид функции g определяется значениями синаптических весов и смещений сети. Обозначим через G множество всех возможных функций g, соответствующих заданной архитектуре сети.

Пусть решение некоторой задачи есть функция r. У = r(Х), заданная парами входных - выходных данных (X1, У1), ..., (Xk, Уk), для которых Уk= r(Xk), k= 1...N. Е-функция ошибки (функционал качества), показывающая для каждой из функций g степень близо­сти к r.

Решить поставленную задачу с помощью нейронной сети заданной архитектуры - это значит построить (синтезировать) функцию gG, подобрав параметры нейронов (синаптические веса и смещения) таким образом, чтобы функционал качества об­ращался в оптимум для всех пар (Xk, Yk).

Таким образом, задача обучения нейронной сети определя­ется совокупностью пяти компонентов:

<Х, У, r, G, Е>.

Обучение состоит в поиске (синтезе) функции g, оптималь­ной по Е. Оно требует длительных вычислений и представляет собой итерационную процедуру. Число итераций может составлять от 103 до 108. На каждой итерации происходит уменьшение функ­ции ошибки.

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

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

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

•  стохастической оптимизации;

•  глобальной оптимизации.

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

Ко второй группе относятся: метод Ньютона, методы опти­мизации с разреженными матрицами Гессе, квазиньютоновские методы, метод Гаусса-Ньютона, метод Левенберга-Маркардта.

Стохастическими методами являются: поиск в случайном направлении, имитация отжига, метод Монте-Карло (численный метод статистических испытаний).

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

Для сравнения методов обучения нейронных сетей необхо­димо использовать два критерия:

•  количество шагов алгоритма для получения решения;

•  количество дополнительных переменных для организа­ции вычислительного процесса.

Для иллюстрации термина «дополнительные переменные» приведем следующий пример. Пусть р1 и р2 - некоторые парамет­ры нейронной сети с заданными значениями. В процессе обучения сети на каждом шаге, по меньшей мере, два раза потребуется вы­полнить умножение p1p2. Дополнительная переменная требуется для сохранения значение произведения после первого умножения.

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

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

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

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

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

Рассмотрим один из самых распространенных алгоритмов обучения - алгоритм обратного распространения ошибки.

1.4.1. Обучение с учителем. Алгоритм обратного распространения ошибки

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

Один из вариантов решения этой проблемы - разработка наборов выходных сигналов, соответствующих входным, для каж­дого слоя нейронной сети, что, конечно, является очень трудоем­кой операцией и не всегда осуществимо. Второй вариант - дина­мическая подстройка весовых коэффициентов синапсов, в ходе которой выбираются, как правило, наиболее слабые связи и изме­няются на малую величину в ту или иную сторону, а сохраняются только те изменения, которые повлекли уменьшение ошибки на выходе всей сети. Очевидно, что данный метод, несмотря на кажущуюся простоту, требует громоздких рутинных вычислений. И, наконец, третий, более приемлемый вариант - распространение сигналов ошибки от выходов нейронной сети к ее входам, в на­правлении, обратном прямому распространению сигналов в обыч­ном режиме работы. Этот алгоритм обучения получил название процедуры обратного распространения ошибки (error back propa­gation). Именно он рассматривается ниже.

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


Согласно методу наименьших квадратов, минимизируемой целевой функцией ошибки нейронной сети является величина:

где yj, k(Q) - реальное выходное состояние нейрона j выходного слоя

нейронной сети при подаче на ее входы k-гo образа; dj,k - требуе­мое выходное состояние этого нейрона.


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

где Wij - весовой коэффициент синаптической связи, соединяющей i-й нейрон слоя (q -1) с j-м нейроном слоя q; η - коэффициент ско­рости обучения, 0 < η<1.


В соответствии с правилом дифференцирования сложной функции:

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


Третий множитель sj /∂Wij равен выходу нейрона предыдущего слоя уi(q-1).


Что касается первого множителя в (1.11), он легко расклады­вается следующим образом:

Здесь суммирование по r выполняется среди нейронов слоя (q+1). Введя новую переменную:



получим рекурсивную формулу для расчетов величин слоя q из величин δ i(q+1). более старшего слоя (q+1):


Для выходного слоя:


Теперь можно записать (1.10) в раскрытом виде:


Иногда для придания процессу коррекции весов некоторой инерционности, сглаживающей резкие скачки при перемещении по поверхности целевой функции, (1.17) дополняется значением из­менения веса на предыдущей итерации:

где µ- коэффициент инерционности; t - номер текущей итерации.

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

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


где L - число нейронов в слое (q -1) с учетом нейрона с постоян­ным выходным состоянием +1, задающего смещение; уi(q-1) wij(q) – i-й вход нейрона j слоя q,

уi(q) = f(sj(q) ), (1.20)

где f( ) - сигмоид,

уr(о) = хr, (1.21)

где хr - r-я компонента вектора входного образа.

ШАГ 2. Рассчитать δ(Q) для выходного слоя по формуле (1.16).

Рассчитать по формуле (1.17) или (1.18) изменения весов Δw(Q) слоя Q.

ШАГ 3. Рассчитать по формулам (1.15) и (1.17) (или (1.15) и (1.18)) соответственно δ(q) и Δw(Q) для всех остальных слоев, q = (Q-1)...1.

ШАГ 4. Скорректировать все веса в нейронной сети:

wij(q)(t)= wij(q)w(t-1) + ∆wij(q)w(t) (1.22)

ШАГ 5. Если ошибка сети существенна, перейти на шаг 1. В противном случае - конец.

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


Из выражения (1.17) следует, что когда выходное значение уi(q-1) стремится к нулю, эффективность обучения заметно снижа­ется. При двоичных входных векторах в среднем половина весо­вых коэффициентов не будет корректироваться, поэтому область возможных значений выходов нейронов (0, 1) желательно сдвинуть в пределы (-0,5, 0,5), что достигается простыми модификациями логистических функций. Например, сигмоид с экспонентой преоб­разуется к виду:


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

где Lw - число подстраиваемых весов, т - число нейронов в вы­ходном слое.

Данное выражение получено с учетом некоторых ограниче­ний. Во-первых, число входов n и нейронов в скрытом слое L должно удовлетворять неравенству (n+L) > т. Во-вторых, LwJm > 1000. Однако приведенная оценка выполнена для сетей с порого­выми активационными функциями нейронов, а емкость сетей с гладкими активационными функциями, например (1.23), обычно больше. Кроме того, термин детерминистский означает, что полу­ченная оценка емкости подходит для всех входных образов, кото­рые могут быть представлены n входами. В действительности рас­пределение входных образов, как правило, обладает некоторой регулярностью, что позволяет нейронной сети проводить обобще­ние и, таким образом, увеличивать реальную емкость. Так как рас­пределение образов, в общем случае, заранее не известно, можно говорить о реальной емкости только предположительно, но обычно она раза в два превышает детерминистскую емкость.

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

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

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

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

Дадим изложенному геометрическую интерпретацию.

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

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

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

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

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

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

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

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

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

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

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

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

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

1) Функции ошибки:

• интегральные функции ошибки по всей совокупности обучающих примеров;

• функции ошибки целых и дробных степеней.

2) Процедуры определения величины шага на каждой ите­рации:

•  дихотомия;

•  инерционные соотношения (см. выше);

•  отжиг.

3) Процедуры определения направления шага:

•  с использованием матрицы производных второго порядка
(метод Ньютона);

•  с использованием направлений на нескольких шагах
(партан метод).

1.4.2. Обучение без учителя

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

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

Сигнальный метод обучения Хебба заключается в измене­нии весов по следующему правилу:

wij(t) = wij(t-1) + α уi(q-1)уj(q) (1.25)

где уi(q-1) - выходное значение нейрона i слоя (q-1), уj(q) - выходное значение нейрона j слоя q; wij(t)и wij(t-1) - весовой коэффициент синапса, соединяющего эти нейроны, на итерациях t и (t-1) соот­ветственно; α - коэффициент скорости обучения. Здесь и далее, для общности, под q подразумевается произвольный слой сети.

При обучении по данному методу усиливаются связи между возбужденными нейронами.

Существует также и дифференциальный метод обучения Хебба, определяемый соотношением:

wij(t) = wij(t-1)+α( уi(q-1)(t)-yi(q-1)(t-1))·( уj(q)(t)-yj(q)(t-

Здесь уi(q-1)(t) и yi(q-1)(t-1) - выходное значение нейрона i слоя (q -1) соответственно на итерациях t и (t-1); уj(q)(t) и yj(q)(t-1) - то же самое для нейрона j слоя q. Как видно из формулы (1.26), более интенсивно обучаются синапсы, соединяющие нейроны, выходы которых наиболее динамично изменились в сторону увеличения.

Полный алгоритм обучения с применением вышеприведен­ных формул будет выглядеть следующим образом.

ШАГ 1. На стадии инициализации всем весовым коэффици­ентам присваиваются небольшие случайные значения.

ШАГ 2. На входы сети подается входной образ, и сигналы возбуждения распространяются по всем слоям согласно принци­пам классических сетей прямого распространения (feedforward). При этом для каждого нейрона рассчитывается взвешенная сумма его входов, к которой затем применяется активационная функция нейрона, в результате чего получается его выходное значение уi(q), i = 1... Lq, где Lq - число нейронов в слое q, q = 1...Q; Q - число слоев в сети.

ШАГ 3. На основании полученных выходных значений ней­ронов по формуле (1.25) или (1.26) проводится изменение весовых коэффициентов.

ШАГ 4. Цикл с шага 2, пока выходные значения сети не ста­билизируются с заданной точностью. Применение этого способа определения момента завершения обучения, отличного от исполь­зовавшегося для сети обратного распространения, обусловлено тем, что подстраиваемые значения синапсов фактически не ограничены. На шаге 2 цикла попеременно предъявляются все образы из входного набора.

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

Другой алгоритм обучения без учителя - алгоритм Кохоне на - предусматривает подстройку синапсов на основании их зна­чений на предыдущей итерации:

wij(t) = wij(t-1) + α( уi(q-1)-wi (t-1

Из выражения (1.27) видно, что обучение сводится к мини­мизации разницы между входными сигналами нейрона, поступаю­щими с выходов нейронов предыдущего слоя уi(q-1), и весовыми коэффициентами его синапсов.

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


Другой вариант состоит в расчете расстояния между этими векторами в R-мерном пространстве:

где R - размерность векторов; j - индекс нейрона в слое q; i - ин­декс суммирования по нейронам слоя (q -1); wij - вес синапса, со­единяющего нейроны; выходы нейронов слоя (q-1) являются входными значениями для слоя q.

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

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


где xi - i-й компонент вектора входного образа или вектора весо­вых коэффициентов, a n - его размерность.

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


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

После выбора из слоя q нейрона j с минимальным расстоя­нием di по формуле (1.28) производится обучение по формуле (1.27) не только этого нейрона, но и его соседей, расположенных в окрестности Ω. Величина Ω для первых итераций очень большая, так что обучаются все нейроны, но с течением времени она уменьшается до нуля. Таким образом, чем ближе окончание обу­чения, тем точнее определяется группа нейронов, отвечающих ка­ждому классу образов.

На основе рассмотренного выше метода строятся самоорга­низующиеся нейронные сети (self-organizing feature maps). Этот устоявшийся перевод с английского представляется не вполне удачным, так как речь идет не об изменении структуры сети, а только о подстройке синапсов нейронов.

1.5. Настройка числа нейронов в скрытых слоях

многослойных нейронных сетей

в процессе обучения

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

1.5.1. Алгоритмы сокращения

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

1) Метод штрафных функций.

В целевую функцию алгоритма обучения вводится штрафы за то, что значения синаптических весов отличны от нуля, напри­мер:


где wij - синаптический вес, i - номер нейрона, j - номер входа; L -число нейронов скрытого слоя, n - размерность входного сигнала.

2) Метод проекций.

Синаптический вес обнуляется, если его значение попало в заданный диапазон:


где ε - некоторая константа.

Алгоритмы сокращения имеют, по крайней мере, два недос­татка:

• нет методики определения числа нейронов скрытых сло­ев, которое является избыточным, поэтому перед началом работы алгоритма нужно угадать это число;

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

1.5.2. Конструктивные алгоритмы

Предшественником конструктивных алгоритмов можно счи­тать методику обучения многослойных нейронных сетей, вклю­чающую в себя следующие шаги:

ШАГ 1. Выбор начального числа нейронов в скрытых слоях.

ШАГ 2. Инициализация сети, заключающаяся в присваива­нии синаптическим весам и смещениям сети случайных значений из заданного диапазона.

ШАГ 3. Обучение сети по заданной выборке.

ШАГ 4. Завершение в случае успешного обучения. Если сеть обучить не удалось, то число нейронов увеличивается и повторя­ются шаги со второго по четвертый.

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

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

•  значения параметров являются случайными числами из
заданного диапазона;

•  значения синаптических весов нового нейрона определя­ются путем расщепления (splitting) одного из старых нейронов.

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

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


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

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

Алгоритм расщепления включает в себя:

•  построение ковариационной матрицы векторов изменений синаптических весов;

•  вычисление собственных векторов и собственных значе­ний полученной матрицы с помощью итерационного алгоритма Ойа (Oja), в соответствии с которым выполняется стохастический градиентный подъем и ортогонализация Грамма-Шмидта.

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

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


В упрощенном алгоритме для расщепления выбирается ней­рон с наибольшим значением функционала:

где δw - вектор изменений синаптических весов нейрона; i - номер нейрона; i = 1... L, L - число нейронов; k - номер обучающего при­мера; N - число примеров в обучающей выборке.

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

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

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

Дополнительная информация об алгоритмах обучения при­ведена в приложении.

1.6. Краткое обобщение материалов главы

1.6.1. Как построить нейронную сеть

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

Таблица 1.2

Задача распознавания рукописных букв в терминах нейронной сети

Задача распознавания рукописных букв

Дано: растровое черно-белое изобра­жение буквы размером 30x30 пикселов

Необходимо: распознать предъявлен­ную букву (в алфавите 33 буквы)

Формулировка задачи для нейронной сети

Дано: входной вектор из 900 двоич­ных символов (900 = 30x30)

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

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

Нейронная сеть строится в два этапа.

1)  Выбор типа (архитектуры) сети.

2)  Подбор весов (обучение) сети.

На первом этапе необходимо определить следующее:

•  какие нейроны использовать (число входов, функции ак­тивации);

•  каким образом следует соединить нейроны между собой;

•  что взять в качестве входов и выходов сети.

Нет необходимости придумывать нейронную сеть «с нуля», так как существуют несколько десятков различных нейросетевых архитектур, причем эффективность многих из них доказана мате­матически. Наиболее популярные и изученные из них - это много­слойный персептрон, нейронная сеть с общей регрессией, сети Кохонена и другие, которые будут рассмотрены ниже.

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

1.6.2. Обучение нейронной сети

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

Процесс обучения заключается в последовательном предъ­явлении букв (рис. 1.8).

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

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


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

Рис. 1.8. Процесс обучения нейронной сети

1.6.3. Применение обученной нейронной сети

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

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

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

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

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

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

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

Если нейронная сеть совместима с какой-либо системой об­работки электронных таблиц (например, Excel), то подготовка обу­чающей выборки состоит из следующих операций:

•  занести значения курса акций последовательно в столбец таблицы;

•  скопировать значения котировок в 4 соседних столбца;

• сдвинуть второй столбец на 1 ячейку вверх, третий стол­бец - на 2 и т. д. (рис.1.9).

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

Как видно из этого примера, объем обучающей выборки за­висит от выбранного количества входов. Если сделать 299 входов, то такая сеть потенциально могла бы строить лучший прогноз, чем сеть с 4 входами, однако в этом случае имеется всего один обу­чающий пример, и обучение бессмысленно. Это следует учиты­вать при выборе числа входов, выбирая разумный компромисс между глубиной предсказания (число входов) и качеством обуче­ния (объем обучающей выборки).

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


Рис. 1.9. Подготовка данных для нейронной сети в Excel