Организация и обучение искусственных нейронных сетей

advertisement
БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
ФАКУЛЬТЕТ РАДИОФИЗИКИ И ЭЛЕКТРОНИКИ
Кафедра интеллектуальных систем
ОРГАНИЗАЦИЯ И ОБУЧЕНИЕ
ИСКУССТВЕННЫХ
НЕЙРОННЫХ СЕТЕЙ
УЧЕБНОЕ ПОСОБИЕ ДЛЯ СТУДЕНТОВ
СПЕЦИАЛЬНОСТЕЙ Н.02.02 - «Радиофизика»,
Н.02.03 - «Физическая электроника»
МИНСК 2002
Авторы - составители:
Л. В. Калацкая, канд. тех. наук,
В. А. Новиков, канд. тех. наук,
В. С. Садов, канд. тех. наук
Р е ц е н з е н т ы: кафедра интеллектуальных информационных
технологий
Белорусского
государственного
университета
информатики и радиоэлектроники, доцент кафедры радиофизики
Белорусского государственного университета, канд. тех. наук.
Семенчик В. Г.
Утверждено
Ученым Советом факультета радиофизики и электроники,
протокол № 14 от 27 июня 2002 года
Организация и обучение искусственных нейронных сетей
Учебное пособие для студентов специальностей Н.02.02 «радиофизика», Н.02.03 - «физическая электроника» / Авт. сост.
Л. В. Калацкая, В. А. Новиков, В. С. Садов. – Мн.: БГУ, 2002. – 76с.
Нейронные искусственные сети, успешно применяемые для решения задач
классификации, прогнозирования и управления, обеспечивают предельное
распараллеливание алгоритмов, соответствующих нейросетевой технологии
обработки данных.
Учебное пособие предназначено для студентов и аспирантов факультета
радиофизики и электроники, включает принципы организации и алгоритмы
обучения систем с массовым параллелизмом, обучающихся на примерах и
обобщающих предшествующий опыт, а также задания специального
лабораторного практикума, связанного с решением задач распознавания образов,
аппроксимации функций и прогнозирования с использованием нейроимитаторов.
2
ВВЕДЕНИЕ
Нейрокомпьютеры как новый класс устройств вычислительной
техники являются модельным отображением особенностей, присущих
процессам переработки информации в живых организмах, таким как
самоорганизация, обучение, адаптация, и позволяют, рассматривая
искусственную нейронную сеть как математическую модель
параллельных вычислений, представлять и использовать знания при
создании систем искусственного интеллекта [1, 2]. Возможности
нейронных сетей, недоступные для традиционной математики,
позволяют создавать системы для решения задач управления,
распознавания образов, диагностики заболеваний, автоматического
анализа документов и многих других приложений.
Первые шаги в области искусственных нейронных сетей были
сделаны В. Мак-Калахом и В. Питсом, которые показали в 1943 г.,
что с помощью пороговых нейронных элементов можно реализовать
исчисление логических функций для распознавания образов.
В 1949 г. Дональдом Хеббом было предложено правило обучения,
ставшее основой для обучения ряда сетей, а в начале шестидесятых
годов Ф. Розенблатт исследовал модель нейронной сети, названной им
персептроном. Анализ однослойных персептронов, проведенный
М. Минским и С. Пайпертом в 1969 г., показал присущие им
ограничения,
связанные
с
невозможностью
представления
«исключающего или» такими сетями, что сыграло негативную роль для
дальнейшего развития исследований в области нейронных сетей [5].
В восьмидесятые годы возрождается интерес к искусственным
нейронным сетям в связи с разработкой методов обучения
многослойных сетей. Джон Хопфилд исследовал устойчивость сетей с
обратными связями и в 1982 г. предложил их использовать для решения
задач оптимизации. В это же время Тео Кохонен предложил и
исследовал
самоорганизующиеся
сети,
а
метод
обратного
распространения ошибки стал мощным средством обучения нейронных
сетей.
В настоящее время исследования в области искусственных
нейронных сетей ориентированы в основном на создание
специализированных систем для решения задач прогнозирования,
управления, в том числе, и в робототехнических системах, диагностики
в медицине и технике, распознавания образов и др. [2, 3, 4].
3
Основой реализации искусственных нейронных сетей служат
вычислительные архитектуры с высокой степенью параллелизма,
состоящие из большого числа процессорных элементов, связанных
между собой и отличающихся возможностью адаптации к внешней
среде. Примером физической реализации цифровых нейрочипов
является одна из последних разработок российских специалистов НТЦ
«Модуль» – нейронный модуль NM6403 [9]. Основными
вычислительными узлами нейронного модуля являются управляющее
ядро и векторный сопроцессор. Векторный сопроцессор обладает
уникальной архитектурой, позволяющей работать с операндами
произвольной длины в диапазоне 1–64бит. Возможность динамично
изменять разрядность операндов в процессе вычислений позволяет
повысить производительность процессора в тех случаях, когда
обычные процессоры работают с избыточной точностью.
В качестве инструмента для расчета и проектирования
нейронных сетей при решении задач лабораторного практикума
выбран пакет прикладных программ фирмы MathWorks Neural
Network Toolbox (NNT), функционирующий под управлением ядра
системы MATLAB[11]. Пакет NNT отличается возможностью
демонстрации,
создания
и
использования
многослойных
персептронов,
линейных
и
радиальных
базисных
сетей,
самоорганизующихся и рекуррентных сетей, а также проектирования
систем управления динамическими процессами. Встроенные функции
этого пакета в пособии отмечаются в связи с их возможным
дальнейшим применением.
Особенностью 6-й версии системы MATLAB является включение
в ее состав различных инструментальных средств организации
диалога с пользователем, в частности, для NNT – это графический
интерфейс NNTool, обеспечивающий работу только с простейшими
однослойными и двухслойными нейронными сетями. Он позволяет,
не обращаясь к командному окну системы MATLAB, создавать,
обучать, моделировать, импортировать и экспортировать нейронные
сети. Этот инструмент эффективен лишь на начальной стадии работы
с пакетом, поскольку накладывает определенные ограничения на
создаваемые модели. Прикладные
же задачи отличаются
многомерными векторами входов, необходимостью использования
многослойных сетей, поэтому практикум пособия ориентирован на
создание и использование нейронных сетей без встроенного в пакет
NNT графического интерфейса NNTool.
4
1. ИСКУССТВЕННЫЕ НЕЙРОННЫЕ СЕТИ
Нейросетевые технологии обработки информации позволяют
создавать адаптивные системы, обработка данных в которых
осуществляется посредством параллельных операций ассоциирования.
Правила ассоциирования генерирует сама система, обучаясь на
примерах и корректируя свое функционирование по результатам
деятельности. Основным элементом искусственной нейронной сети
является
нейронный
элемент
или
формальный
нейрон,
осуществляющий операцию нелинейного преобразования суммы
произведений входных сигналов на весовые коэффициенты.
1.1. НЕЙРОННЫЙ ЭЛЕМЕНТ
Нейронный элемент,
искусственных нейронных
приведенной на рис. 1.
используемый
сетей, можно
при моделировании
представить схемой,
Р и с . 1. Нейронный элемент
Каждая компонента вектора входного сигнала X=(x1,x2,…,xn),
представляющая собой выходные сигналы других нейронных элементов
или вход сети, умножается на соответствующий вес связи весового
вектора W=(w1,w2,…,wn) и поступает на суммирующий блок . Вес
связи является скалярной величиной, положительной для усиливающих
и отрицательной величиной для тормозящих связей. Уровень
5
возбуждения нейронного элемента равен
n
S   wi  xi
или в
i 1
векторном виде S=XW. Взвешенная сумма S представляет собой
скалярное произведение вектора весов на входной вектор:
n
S   wi  xi   w  x  cos  ,
i 1
где |w|, |x| – длины векторов W и X соответственно, а α – угол между
этими векторами. Длины векторов определяются через их координаты:
W  w12  w22  ...  wn2 ,
X  x12  x 22  ...  x n2 .
Если входные векторы являются нормированными и |X|=const, то
величина взвешенной суммы будет зависеть только от угла между
векторами X и W. При различных входных сигналах взвешенная
сумма будет изменяться по косинусоидальному закону. Она достигает
максимального значения при коллинеарности входного и весового
векторов. Выходной сигнал Y определяется преобразованием суммы S
нелинейной функцией активации F:
n
Y=F(  wixi).
i 1
Абсолютные значения весов wi, i=1,2,…,n, как правило,
принадлежат отрезку [0;1], что позволяет избежать больших входных
значений для других нейронных элементов.
Нейронная сеть, получающая на входе некоторый сигнал,
способна после прохода его по нейронам выдавать на выходе
результат, зависящий от весовых коэффициентов всех нейронов. Если
S0 – смещение (порог) нейронного элемента, характеризующее
смещение функции активации по оси абсцисс, тогда взвешенная
сумма
n
S   wi  xi -S0.
i 1
Обучение нейронной сети есть не что иное, как «настраивание»
весовых коэффициентов на то, чтобы определенному входному
сигналу соответствовал определенный выходной сигнал. Обучающая
выборка для нейронных сетей представляет собой набор, состоящий
из строк с обучающими примерами.
6
1.2. ФУНКЦИИ АКТИВАЦИИ НЕЙРОННЫХ ЭЛЕМЕНТОВ
Наиболее распространенными функциями активации, нелинейными
усилительными
характеристиками
нейронного
элемента
или
передаточными функциями являются следующие: пороговая, сигнум,
логистическая, гиперболический тангенс, линейная, линейная
ограниченная, радиальная базисная и др.
1. Пороговая бинарная функция – это функция, для которой
нейронный элемент остается неактивным до достижения входом
порогового значения S0 (рис. 2).
0, S  S 0
Y ( s)  
1, S  S 0
Если S0=0 , то бинарная пороговая функция называется
единичной функцией активации с жестким ограничением (hardlim(S)).
Р и с . 2. Бинарная пороговая функция
2. Сигнум, или модифицированная пороговая функция, для
которой значение S0=0 (рис. 3), задается уравнением
 1, S  S 0

Y ( s )   0, S  0
 1, S  S
0

7
Р и с . 3. Функция сигнум
3. Сигмоидная логистическая функция (S-образная, имеющая две
горизонтальные асимптоты и одну точку перегиба) является
возрастающей сжимающей функцией, значения которой принадлежат
интервалу (0; 1) (рис. 4):
1
,
Y ( s) 
1  exp(c  s)
где с>0 – коэффициент, характеризующий крутизну логистической
функции, усиливающей слабые сигналы (logsig(S)).
Р и с . 4. Логистическая функция
8
В общем случае логистическая функция определяется уравнением:
Y ( s) 
1
,
1  exp(c  ( s  s 0 ))
где S0 – значение смещения. Если значение коэффициента с велико, то
график общей логистической функции приближается к пороговой
функции (рис. 5).
Р и с . 5. Общая логистическая функция
Биполярная сигмоидная функция (рис. 6), уравнение которой
Y ( s) 
2
 1,
1  exp(c  s)
принимает значения в диапазоне (-1; 1).
9
Р и с . 6. Биполярная логистическая функция
4. Гиперболический тангенс (рис. 7) аналогичен биполярной
логистической функции без смещения и является симметричной
exp(c  s)  exp(c  s)
функцией (tansig(S)): Y ( s) 
.
exp(c  s)  exp(c  s)
Р и с . 7. Гиперболический тангенс
10
5. Линейная функция активации, уравнение которой Y(s)=k  s,
где k – угловой коэффициент наклона прямой, представлена на рис. 8
(purellin(S)).
Р и с . 8. Линейная функция
6. Линейная, ограниченная на отрезке [-a; a] функция активации
(рис. 9) определяется по формуле:
 p, s  a

Y ( s )    p, s   a
 s,  a  s  a

где p, как правило, равно единице (satlin(S)):
Р и с . 9. Линейная ограниченная функция
11
7.
Радиально-базисная
функция
активации
(radbas(S))
характеризуется функцией Гаусса для нормального закона
распределения, в соответствии с которой:
  s2 
 ,
Y ( s)  exp
2 
2




где  – cреднеквадратичное отклонение, характеризующее крутизну
радиально-базисной функции (рис.10). Величина s определяется в
соответствии с евклидовым расстоянием между входным и весовым
векторами:
n

S2 =|X-W|2 =   ( xi  wi ) 2  .
 i 1

Наряду с перечисленными функциями могут использоваться и
другие функции активации, например, логарифмическая функция [2].
Р и с . 10. Радиально-базисная функция
Многомерные радиальные распределения позволяют производить
многомерный анализ путем сведения его к анализу одномерных
симметричных распределений, таких как многомерное нормальное
распределение или равномерное в шаре с центром в начале координат [6].
12
1.3. ОДНОСЛОЙНЫЕ НЕЙРОННЫЕ СЕТИ
Нейронная сеть представляет собой совокупность формальных
нейронов, связанных определенным образом друг с другом и с
внешней средой. Вектор входного сигнала, кодирующий входное
воздействие или образ внешней среды, подается на сеть при
активации входных нейронных элементов. Веса связей нейронных
элементов представляют в виде матрицы W, для которой wij – вес
связи j-го нейрона с i-ым. В процессе функционирования сети входной
вектор
преобразуется
в
выходной.
Вид
преобразования
обуславливается не только характеристиками нейронных элементов,
но и особенностями организации и правилами обучения сети, т. е.
топологией связей, наличием или отсутствием конкуренции,
направлением информационных потоков и другими. Обучающие
правила определяют изменения связей и весов в ответ на входное
воздействие.
Слоем нейронной сети называется множество нейронных
элементов, на которые в каждый такт времени параллельно поступает
информация от других нейронных элементов сети. Однослойные сети
включают один слой элементов, осуществляющий обработку входной
информации, рис. 11.
Р и с . 11. Топология однослойной сети
13
Каждый нейрон распределительного слоя имеет синаптические
связи со всеми нейронами обрабатывающего слоя. Выходное значение
j-го нейрона обрабатывающего слоя сети можно представить как:
n

Y j  F ( s j )  F   wij xi  S 0 j  ,
 i 1

где S0 j – смещение j-го нейронного элемента выходного слоя, wij –
сила связи между j-ым нейроном распределительного слоя и i-ым
нейроном обрабатывающего слоя. Вектор-столбец взвешенной суммы
в матричном виде определяется так:
S=WTX- S 0 ,
где W – матрица размерности np, S 0 – вектор-столбец смещений
элементов обрабатывающего слоя.
Пример 1.1. Построить нейросетевые модели логических операций.
Логические операции определяются сетью с двумя нейронами на
входе и одним нейроном выходного слоя (рис. 12)
Взвешенная сумма в этом случае равна:
S  w11  x1  w21  x 2  S 0 ,
а выходное значение нейронной сети
0, S  0
.
Y 
1
,
S

0

Рис. 12. Сеть с одним выходным нейроном
14
Такая сеть линейно разделяет входное пространство сигналов на
два класса и может быть использована для решения задач
классификации образов. Уравнение разделяющей линии имеет вид
w11  x1  w21  x 2  S 0  0
или
x2 
S0
w
 11  x1 .
w21
w21
Множество решений логических операций ИЛИ,
«исключающее ИЛИ» соответственно представлено на рис. 13.
И,
Рис. 13. Графическая интерпретация логических операций
Множество решений сети нельзя разделить на два класса для
операции «исключающее ИЛИ».
Если размерность входного сигнала n=3, то разделяющей
поверхностью является плоскость, при n>3 разделяющей
поверхностью является гиперплоскость. Обучение сети можно
производить путем настройки весовых коэффициентов и смещений,
если порог или смещение нейрона изобразить как синаптическую
связь с весовым коэффициентом, равным значению S 0 (рис. 14).
Так как входное значение, подаваемое на дополнительный
нейрон, равно – 1, то взвешенная сумма определяется как
S  w11  x1  w21  x 2  S 0 .
После такого преобразования и биполярной кодировки двоичных
сигналов разделяющими прямыми будут линии:
x1 + x 2 = + 1
для «логического И»,
x1 + x 2 = – 1
для «логического ИЛИ» (рис. 15).
15
Р и с . 14. Представление смещения в виде синаптической связи
Р и с . 15. Решение задач «логического И» и «логического ИЛИ»
Правило обучения Хебба, использованное при этом и
направленное на усиление связи между одновременно активными
нейронами, будет рассмотрено далее.
Однослойный персептрон – сеть, состоящая из S, A и R нейронных
элементов (рис. 16), предложенная Ф. Розенблаттом в 1959 г., относится
к однослойным сетям.
16
Р и с . 16. Структура персептрона
Нейроны слоя S называются сенсорными и предназначены для
формирования входных сигналов в результате внешних воздействий.
Нейроны слоя A предназначены для непосредственной обработки
входной информации и называются ассоциативными. Нейроны слоя R
называются эффекторными и введены для передачи сигналов
возбуждения к соответствующему объекту. В качестве функции
активации ассоциативного слоя A используется бинарная пороговая
функция. Обучение персептрона осуществляется путем настройки
весовых коэффициентов W между слоями S и A. Элементы слоя S
выполняют чисто распределительные функции. Правило обучения
Розенблатта, являющееся модификацией правила Хебба, можно
представить в следующем виде:
wij (t  1)  wij (t )    xi  t j ,
где tj – эталонное или целевое значение j-го выхода нейронной сети,
 – скорость обучения сети, 0<<=1. Обучение производится с
подкреплением, то есть весовые коэффициенты сети изменяются
только в том случае, если выходное значение не совпадает с целевым
значением tj. Идея персептрона была использована для распознавания
символьной информации в простейшем нейрокомпьютере. Число
решающих элементов слоя A персептрона совпадает с числом
распознаваемых классов.
17
1.4. КЛАССИФИКАЦИЯ НЕЙРОННЫХ СЕТЕЙ
В зависимости от различных характеристик нейронные сети
можно классифицировать по-разному [2]:
1. По типу входной информации различают:
а) аналоговые нейронные сети, использующие в качестве
исходных данных действительные числа;
б) дискретные сети, оперирующие с данными, представленными
в двоичной системе счисления.
2. По характеру обучения различают сети:
а) с учителем, когда известно выходное пространство решений
нейронной сети;
б) без учителя, когда сеть формирует выходное пространство
решений только на основе векторов входа. Такие сети называются
самоорганизующимися.
3. По характеру настройки связей различают:
а) сети с фиксированными связями, когда весовые коэффициенты
сети выбираются сразу из условия задачи;
б) сети с динамическими связями, для которых настройка связей
осуществляется в процессе обучения.
4. По направлению информационных потоков различают:
а) сети прямой передачи сигнала (feed-forward), в которых
информация распространяется от слоя к слою (рис. 17):
Р и с . 17. Схема сети прямой передачи сигнала,
W – матрица весов, F – оператор нелинейного преобразования сети
б) сети с обратным распространением информации (feed-back),
характеризующиеся как прямым, так и обратным распространением
данных между слоями сети. К таким сетям относятся релаксационные
и многослойные сети, в которых процесс релаксации отсутствует.
18
Релаксационные сети – это сети, в которых обработка данных
осуществляется до тех пор, пока не перестанут изменяться выходные
значения сети (при заданной точности), это состояние называют
состоянием равновесия. К таким сетям относятся сети Хопфилда,
двунаправленная
ассоциативная
память.
Сеть
Хопфилда
характеризуется единичной обратной связью (рис. 18).
Р и с . 18. Схема сети Хопфилда
Двунаправленная
ассоциативная
память
представляется
структурой с неединичной обратной связью (рис. 19).
Р и с . 19. Схема двунаправленной ассоциативной памяти
Нерелаксационные
многослойные
сети
базируются
на
многослойных персептронах, а в основе их обучения лежит метод
обратного распространения ошибки. Они делятся на рекуррентные
(рис. 20) и рециркуляционные сети (рис. 21).
К рециркуляционным сетям относятся сети Елмана, применяемые
для обработки временных рядов.
19
Р и с . 20. Схема рекуррентной сети
Р и с . 21. Схема рециркуляционной нейронной сети
В рекуррентных нейронных сетях выходные значения
определяются в зависимости как от входных, так и предшествующих
выходных значений сети. Рециркуляционные нейронные сети
характеризуются как прямым, так и обратным преобразованием
информации, а обучение осуществляется без учителя (сети,
самоорганизующиеся в процессе работы). К самоорганизующимся в
процессе работы сетям относятся также сети встречного
распространения.
5. По методам обучения различают:
а) сети, обучающиеся по методу обратного распространения ошибки;
б) сети с конкурентным обучением;
в) сети, самоорганизующиеся в процессе работы.
Рассмотрим алгоритмы обучения, а также особенности
организации и функционирования многослойных нейронных сетей.
20
2. АЛГОРИТМЫ ОБУЧЕНИЯ
НЕЙРОННЫХ СЕТЕЙ
Адаптация и самоорганизация искусственных нейронных сетей
достигается в процессе их обучения. Целью обучения нейронных
сетей является такая подстройка их весов, которая обеспечивала бы
для некоторого множества входов требуемое множество выходов.
При решении прикладных задач с помощью нейронных сетей
необходимо собрать представительный объем данных, для того чтобы
обучить нейронную сеть решению таких задач. Обучающий набор
данных – это набор наблюдений, содержащих признаки изучаемого
объекта. Первоначальный выбор признаков осуществляется на основе
имеющегося опыта, с учетом мнения экспертов. Вопрос о том, сколько
необходимо иметь наблюдений для обучения сети, часто оказывается
непростым. Известен ряд эвристических правил, которые устанавливают
связь между количеством используемых для обучения наблюдений и
размерами сети. Простейшее из них гласит, что количество наблюдений
должно быть в 10 раз больше числа связей в сети. Процесс обучения –
это процесс определения параметров модели процесса или явления,
реализуемого нейронной сетью. Ошибка обучения для конкретной
конфигурации сети определяется после прогона через сеть всех
имеющихся наблюдений и сравнения выходных значений с целевыми
значениями в случае обучения с учителем. Соответствующие разности
позволяют сформировать так называемую функцию ошибок. Если
ошибка сети, выходной слой которой имеет n нейронов, ei  y i  t i есть
разность между реальным и желаемым сигналами на выходе i-го
нейрона, то в качестве функций ошибок могут быть использованы
следующие функции:
 сумма квадратов ошибок
n
sse =  ei2 ,
i 1
1 n 2
 средняя квадратичная ошибка
mse =
 ei ,
n i 1
 регулируемая или комбинированная ошибка
21
 n 2 1  n 2
 ei 
 ei , где  - параметр регуляции,
n i 1
n i 1
1 n
 средняя абсолютная ошибка mae =  ei .
n i 1
При моделировании нейронных сетей с линейными функциями
активации нейронов можно построить алгоритм, гарантирующий
достижение абсолютного минимума ошибки обучения. Для нейронных
сетей с нелинейными функциями активации в общем случае нельзя
гарантировать достижение глобального минимума функции ошибки.
Поверхность функции ошибок определяется как совокупность точекзначений ошибок в N+1-мерном пространстве всевозможных сочетаний
весов и смещений с общим числом N. Цель обучения при
геометрическом анализе или изучении поверхности ошибок состоит в
том, чтобы найти на ней глобальный минимум. В случае линейной
модели сети и минимизации суммы квадратов ошибок поверхность
ошибок представляет собой параболоид, имеющий единственную точку
минимума. В случае нелинейной модели поверхность ошибок имеет
более сложное строение и может иметь локальные минимумы, плоские
участки, седловые точки и длинные узкие овраги. Как правило, при
обучении такой сети вычисляется градиент функции ошибок в случайно
выбранной точке поверхности, а затем эта информация используется для
продвижения вниз по склону. Алгоритм продвижения завершается в
точке минимума, локального или глобального. По существу алгоритмы
обучения нейронных сетей аналогичны алгоритмам поиска глобального
экстремума функции многих переменных.
Сети с большим количеством весов позволяют воспроизводить
сложные функции, но в этом случае возможно так называемое
«переобучение» сети, когда ошибки обучения малы, но полученная
модель имеет слабое отношение к истинной зависимости. Нейронная сеть
же с небольшим количеством весов может оказаться недостаточно
гибкой, чтобы смоделировать имеющуюся зависимость. Для преодоления
эффекта переобучения используется механизм контрольной проверки.
Часть обучающих наблюдений резервируется как контрольные
наблюдения и не используется при обучении сети. Если контрольная
ошибка перестает убывать или начинает расти, то это означает, что сеть
слишком близко следует исходным данным и обучение следует
остановить. В этом случае следует уменьшить количество нейронов или
слоев, так как сеть является слишком мощной для решаемой задачи. Если
22
msereg =
же сеть имеет недостаточную мощность для воспроизведения имеющейся
зависимости, явление переобучения, скорее всего, наблюдаться не будет
и обе ошибки, обучения и проверки, не достигнут достаточно малого
значения.
Способность сети, обученной на некотором множестве данных
выдавать правильные результаты для достаточно широкого класса
новых данных, в том числе и не представленных при обучении,
называется свойством обобщения нейронной сети.
Для настройки параметров нейронных сетей широко используется
также процедура адаптации, когда подбираются веса и смещения с
использованием произвольных функций их настройки, обеспечивающие
соответствие между входами и желаемыми значениями на выходе.
Методы определения экстремума функции нескольких переменных
делятся на три категории – методы нулевого, первого и второго порядка:
 методы нулевого порядка, в которых для нахождения
экстремума используется только информация о значениях
функции в заданных точках;
 методы первого порядка, где для нахождения экстремума
используется
градиент
функционала
ошибки
по
настраиваемым параметрам;
 методы второго порядка, вычисляющие матрицу вторых
производных функционала ошибки (матрицу Гессе).
Кроме перечисленных методов можно выделить также
стохастические алгоритмы оптимизации и алгоритмы глобальной
оптимизации, перебирающие значения аргументов функции ошибки.
В пакете NNT системы MATLAB реализованы два способа
адаптации и обучения, последовательный и групповой, в зависимости
от того, применяется ли последовательное или групповое
представление входов и целевого вектора (массив ячеек cell и массив
формата double соответственно).
Названия процедур обучения и адаптации нейроимитатора NNT
системы
MATLAB
приводятся
по
мере
рассмотрения
соответствующих правил обучения нейронных сетей.
2.1. ПРАВИЛА ОБУЧЕНИЯ ХЕББА
Правила обучения Хебба относятся к ассоциативным обучающим
правилам. Согласно правилу Хебба обучение сети происходит в
23
результате усиления силы связи между одновременно активными
элементами, его можно определить так:
wij (t  1)  wij (t )  xi  y j ,
где t – время, xi, yj – соответственно выходные значения i-го и j-го
нейронов. В начальный момент предполагается, что wij(0)=0 для всех
i и j. Правило Хебба можно использовать как при обучении с
учителем, так и без него. Если в качестве выходных значений сети
используются целевые значения, тогда реализуется обучение с
учителем. При использовании в качестве Y реальных значений,
которые получаются при подаче входных образов на вход сети,
правило Хебба соответствует обучению без учителя. В этом случае
коэффициенты сети в начальный момент времени инициализируются
случайным образом. Обучение заканчивается после подачи всех
имеющихся входных образов на нейронную сеть. В общем случае это
правило не гарантирует сходимости процедуры обучения сети.
Пример 2.1. Требуется реализовать обучение нейронной сети по
правилу Хебба с учителем для операции «логическое И», используя
биполярную кодировку двоичных сигналов.
Общее количество входных образов, подаваемых на нейронную
сеть, L=4. Правило Хебба в случае сети с тремя нейронами на входе и
одним на выходе реализуется по формулам:
w11 (t  1)  w11 (t )  x1  y,
w21 (t  1)  w21 (t )  x2  y,
S0 (t  1)  S0 (t )  y.
Обучение с учителем для «логического И» соответствует
данным, приведенным в табл. 1.
Таблица 1
Результаты обучения сети по правилу Хебба
X1
-1
1
-1
1
( 0)
w11
X2
-1
-1
1
1
X3=S0
-1
-1
-1
-1
Y
-1
-1
-1
1
W11
1
0
1
2
W21
1
2
1
2
S0
1
2
3
2
Эта таблица формируется по строкам. Считая S0 (0)=0, начальные
( 0)
 0 , w21
 0 , для четырех входных образов получаем
24
последовательно следующие значения для первого образа
(1)
( 0)
w11
 w11
 x1  y  0  (1)  (1)  1,
(1)
( 0)
w21
 w21
 x2  y  0  (1)  (1)  1,
S0 (1)  S0 (0)  y  0  (1)  1;
для второго
( 2)
(1)
w11
 w11
 x1  y  1  1  (1)  0,
( 2)
(1)
w21
 w21
 x 2  y  1  (1)  ( 1)  2,
S 0 (2)  S 0 (1)  y  1  (1)  2;
для третьего
( 3)
( 2)
w11
 w11
 x1  y  0  (1)  ( 1)  1,
( 3)
( 2)
w21
 w21
 x 2  y  2  1  (1)  1,
S 0 (3)  S 0 (2)  y  2  (1)  3;
и для четвертого образа
( 4)
( 3)
w11
 w11
 x1  y  1  1  1  2,
( 4)
( 3)
w21
 w21
 x 2  y  1  1  1  2,
S 0 ( 4)  S 0 (3)  y  3  1  2.
Таким образом, в результате обучения получается уравнение
разделяющей линии для операции «логическое И», представленной
ранее на рис. 15:
2  x1  2  x 2  2  0 , или x2=1-x1 .
Правило обучения по Хеббу в общем случае задается формулой:
i=1,2,…,L,
j=1,2,…,p,
wij (t  1)  wij (t )    xi  y j ,
где  – коэффициент обучения или темп обучения, в нейроимитаторе
NNT это правило реализует процедура настройки learnh. Правило
Хебба с модификацией весов определяется по формуле:
wij (t  1)  wij (t )    xi  y j    wij (t ),
где  – коэффициент убывания или возрастания веса.
25
Для решения задачи «исключающего ИЛИ» можно использовать
сеть второго порядка, включающую произведение переменных, тогда
взвешенная сумма S  2  x1  2  x 2  4  x1  x 2  1 .
2.2. ПРАВИЛА ОБУЧЕНИЯ ПЕРСЕПТРОНА
Персептрон – нейронная сеть прямой передачи сигнала с
бинарными входами и бинарной пороговой функцией активации.
Правило обучения Розенблатта в общем случае является
вариантом правил обучения Хебба, формирующих симметричную
матрицу связей, и в тех же обозначениях имеет вид:
wij (t  1)  wij (t )    (t i  y j )  xi ,
где  – коэффициент обучения, 0<<1, tj – эталонные или целевые
значения. Правило обучения персептрона с нормализацией
используется тогда, когда имеется большой разброс в значениях
компонент входного вектора. Тогда каждая компонента делится на
длину вектора:
xi
i=1,2,…,n.
x'i 
,
2
2
2
x1  x2    xn
В нейроимитаторе NNT обучающие процедуры настройки
персептрона, обычная и с нормализацией, соответственно, learnp и
learnpn.
Алгоритм обучения Розенблатта включает такие шаги:
1. Весовые коэффициенты сети инициализируются случайным
образом или устанавливаются нулевыми.
2. На вход сети поочередно подаются входные образы из обучающей
выборки, которые затем преобразуются в выходные сигналы Y.
3. Если реакция нейронной сети yj совпадает с эталонным значением
tj, то весовой коэффициент wij не изменяется.
4. Если выходное значение не совпадает с эталонным значением, то
есть yj не равно tj, то производится модификация весовых
коэффициентов wij по соответствующей формуле.
5. Алгоритм повторяется до тех пор, пока для всех входных образов
не будет достигнуто совпадение с целевыми значениями или не
перестанут изменяться весовые коэффициенты.
26
Линейная разделяющая поверхность, формируемая персептроном,
позволяет решать ограниченный круг задач.
2.3. ПРАВИЛО ОБУЧЕНИЯ ВИДРОУ – ХОФФА
Правило Видроу – Хоффа используется для обучения сети,
состоящей из слоя распределительных нейронов и одного выходного
нейрона с линейной функцией активации. Такая сеть называется
адаптивным нейронным элементом (Adaptive Linear Element) или
«ADALINE». Выходное значение такой сети определяется по формуле
n
y   wi1  xi  S 0 ,
i 1
где n – число нейронов распределительного слоя, S0 – смещение.
Правило обучения Видроу – Хоффа известно под названием
дельта-правила (delta-rule). Оно предполагает минимизацию
среднеквадратичной ошибки нейронной сети, которая для L входных
образов определяется следующим образом:

1 L
E    y (k )  t (k )
2 k 1
,
2
где y(k) и t(k) – выходное и целевое значения сети соответственно для k-го
образа. Правило Видроу – Хоффа базируется на методе градиентного
спуска в пространстве весовых коэффициентов и смещений нейронной
сети. По этому методу веса и смещения изменяются с течением времени
следующим образом:
E (k )
E (k )
, S 0 (t  1)  S 0 (t )   
, i=1,2,…,n,
wi1 (t  1)  wi1 (t )-α 
wi1 (t )
S 0 (t )
где  – скорость обучения, 0<<1.
Вычислим частные производные:
E (k ) E (k ) y ( k )
 (k ) 
 ( y ( k )  t ( k ) )  xi( k ) ,
wi1 (t ) y
wi1 (t )
E (k ) E (k ) y ( k )
 (k ) 
 ( y ( k )  t ( k ) ) ,
(t ) y
S 0 (t )
где xi(k ) – i-я компонента k-го образа. По дельта-правилу
27
wi1 (t  1)  wi1 (t )    ( y ( k )  t ( k ) )  xi( k ) ,
S 0 (t  1)  S 0 (t )    ( y ( k )  t ( k ) ),
i  1,2,..., n.
Выражение для пересчета весов сети эквивалентно правилу
обучения Розенблатта, если на выходе линейного адаптивного
элемента использовать пороговый элемент. Видроу и Хофф доказали,
что минимизация среднеквадратичной ошибки сети производится
независимо от начальных значений весовых коэффициентов.
Суммарная среднеквадратичная ошибка сети E должна достигнуть
заданного минимального значения Emin. Для алгоритма Видроу –
Хоффа рекомендуется выбирать значение скорости обучения  по
1
следующему правилу:  (l )  , где l – номер итерации в алгоритме
l
обучения. Адаптивный шаг обучения для линейной нейронной сети
позволяет повысить скорость обучения и определяется по формуле [2]:
1
 (t ) 
.
n
1   xi2 (t )
i 1
В пакете NNT процедура настройки для обучения по правилу
Видроу – Хоффа – learnwh.
2.4. МЕТОД ОБРАТНОГО РАСПРОСТРАНЕНИЯ ОШИБКИ
Метод обратного распространения ошибки предложен несколькими
авторами независимо в 1986 г. для многослойных сетей с прямой
передачей сигнала. Многослойная нейронная сеть способна осуществлять
любое отображение входных векторов в выходные (рис. 22)
Р и с . 22. Многослойная сеть со скрытым слоем из n нейронов
28
Входной слой нейронной сети выполняет распределительные
функции. Выходной слой нейронов служит для обработки
информации от предыдущих слоев и выдачи результатов. Слои
нейронных элементов, расположенные между входным и выходным
слоями, называются скрытыми (hidden). Как и выходной слой,
скрытые слои являются обрабатывающими. Выход каждого нейрона
предыдущего слоя сети соединен синаптическими связями со всеми
входами нейронных элементов следующего слоя. В качестве функций
активации в многослойных сетях чаще других используются
логистическая функция и гиперболический тангенс. Метод обратного
распространения ошибки минимизирует среднеквадратичную ошибку
нейронной сети, при этом используется метод градиентного спуска в
пространстве весовых коэффициентов и смещений нейронных сетей.
Согласно методу градиентного спуска по поверхности ошибок
изменение весовых коэффициентов и смещений сети осуществляется
по формулам:
E (k )
,
wij (t  1)  wij (t )   
wij (t )
S0 j (t  1)  S0 j (t )   
E (k )
,
S0 j (t )
i=1,2,…,n; j=1,2,…,p,
где E – среднеквадратичная ошибка сети для одного из k образов,
определяемая по формуле
1 p
E   ( y j  t j )2 ,
2 j 1
здесь tj – желаемое или целевое выходное значение j-го нейрона.
Ошибка j-го нейрона выходного слоя равна:  j = yj – tj.
Для любого скрытого слоя ошибка i-го нейронного элемента
определяется рекурсивно через ошибки нейронов следующего слоя j:
m
 i    j  F ' ( S j )  wij ,
j 1
где m – количество нейронов следующего слоя по отношению к слою
i, wij – вес или синаптическая связь между i-ым и j-ым нейронами
разных слоев, Sj – взвешенная сумма j-го нейрона.
29
Весовые коэффициенты и смещения нейронных элементов с
течением времени изменяются следующим образом:
wij (t  1)  wij (t )     j  F ' ( S j )  yi ,
S 0 j (t  1)  S 0 j (t )     j  F ' ( S j ),
i=1,2,…,n, j=1,2,…,p,
где  – скорость обучения. Это правило называется обобщенным
дельта-правилом. Для логистической функции активации:
wij (t  1)  wij (t )     j  y j (1  y j )  yi
S0 j (t  1)  S0 j (t )     j  y j (1  y j ) , i=1,2,…,n, j=1,2,…,p,
ошибка j-го нейрона выходного слоя определяется как
 j = y j – t j,
а j-го нейрона скрытого слоя
m
 j    j  yi  (1  yi )  wij , где
i 1
m – количество нейронов следующего слоя по отношению к слою j.
К недостаткам метода обратного распространения ошибки
относят следующие:
 медленную сходимость градиентного метода при постоянном шаге
обучения;
 возможное смешение точек локального и глобального минимумов;
 влияние случайной инициализации весовых коэффициентов на
скорость поиска минимума.
Для их преодоления предложено несколько модификаций
алгоритма обратного распространения ошибки:
1) с импульсом, позволяющим учесть текущий и предыдущий
градиенты (метод тяжелого шарика), изменение веса тогда:
wij (t  1)     j  F ' ( S j )  y i    wij (t ) ,
где  – коэффициент скорости обучения,  – импульс или момент,
обычно 0<<1, 0,9;
2) с адаптивным шагом обучения, изменяющимся по формуле
1
 (t ) 
;
1   x i2 (t )
30
3) с модификацией по Розенбергу, предложенной им для решения
задачи преобразования английского печатного текста в качественную
речь:
wij (t  1)  (1   ) j  F ' ( S j )  y i    wij (t ) ,
wij (t  1)  wij (t )    wij (t  1) .
Использование производных второго порядка для коррекции весов
алгоритма обратного распространения ошибки, как показала практика,
не дало значительного улучшения решений прикладных задач.
Процедуры, обеспечивающие настройку и обучение методом
обратного распространения ошибки с импульсом и адаптивным шагом
обучения, в пакете NNT названы соответственно learngdx и traingdx.
Для многослойных сетей прямой передачи сигнала с
логистической функцией активации рекомендуется случайные
начальные значения весов инициализировать по правилу (Р. Палмер)
1
,
wij 
n(i)
где n(i) – количество нейронных элементов в слое i.
По мнению других авторов [2], начальные весовые
коэффициенты следует выбирать в диапазоне [-0.05;0.05]
или
[-0.1;0.1]. При этом смещение S0 принимает единичные значения в
начальный момент времени. Кроме этого, количество нейронных
элементов скрытых слоев должно быть меньше тренировочных
образов. Для обеспечения требуемой обобщающей способности сети
можно использовать сеть с несколькими скрытыми слоями,
размерность которых меньше, чем для сети с одним скрытым слоем.
Однако нейронные сети, имеющие несколько скрытых слоев,
обучаются значительно медленнее.
2.5. МНОГОСЛОЙНЫЕ СЕТИ С ОБРАТНЫМ
РАСПРОСТРАНЕНИЕМ ИНФОРМАЦИИ
К
этому
классу
сетей
относятся
рекуррентные
и
рециркуляционные нейронные сети. В рециркуляционных сетях
распространение информации осуществляется по двунаправленным
связям, имеющим разные весовые коэффициенты в различных
направлениях. Обучение рециркуляционных сетей осуществляется без
учителя. В отличие от них рекуррентные нейронные сети
31
характеризуются обучением с учителем и обратными связями, по
которым передаются результаты обработки сетью данных на
предыдущем этапе. Обучение таких сетей базируется на алгоритме
обратного распространения ошибки, поэтому их относят к одному классу.
Рекуррентные нейронные сети применяются для решения задач
прогнозирования и управления. В 1986 г. Джорданом предложена
архитектура рекуррентной сети, в которой выходы элементов
последнего слоя соединены с нейронами промежуточного слоя с
помощью специальных входных нейронов, называемых контекстными.
Количество контекстных нейронов равно числу выходных элементов
рекуррентной сети. Функцией активации выходного слоя является
линейная функция. Взвешенная сумма i-го элемента промежуточного
слоя тогда
n
p
j 1
k 1
S i (t )   wij  x j (t )   wki  y k (t  1)  S 0i,
где wji – весовой коэффициент между j-ым нейроном входного слоя и
i-ым нейроном промежуточного слоя, wki – вес между k-ым
контекстным нейроном и i-ым нейроном промежуточного слоя, S0i –
смещение i-го нейрона промежуточного слоя, n – размерность
входного слоя, p – количество нейронов выходного слоя. Выходное
значение i-го нейрона скрытого слоя определяется тогда так:
yi(t)=F(Si(t)).
Нелинейное преобразование в сети осуществляют, как правило,
логистическая функция или гиперболический тангенс.
Другой вариант рекуррентной сети предложен Элманом в 1990 г.
Выходы нейронных элементов промежуточного слоя такой сети
соединяются с контекстными нейронами входного слоя. Количество
контекстных нейронных элементов равно числу нейронов
промежуточного слоя. Применяются также рекуррентные сети с
совмещением этих двух подходов. Алгоритм обучения рекуррентной
сети включает следующие шаги:
1. Все контекстные нейроны устанавливаются в нулевое состояние
при t=0.
2. Входной образ подается на сеть и осуществляется прямое
распространение сигнала.
32
3. Модифицируются весовые коэффициенты и смещения в
соответствии с алгоритмом обратного распространения ошибки.
4. t увеличивается на единицу, и если среднеквадратичная ошибка
сети E>Emin, то осуществляется возврат к шагу 2.
Рециркуляционные нейронные сети характеризуются тем, что в
процессе обучения нейронной сети, как правило, для каждого
входного образа производятся три цикла распространения
информации: прямое, обратное и прямое. Пусть x i (0) – входной
вектор, поступающий на вход сети в начальный момент времени.
Тогда выходной вектор в момент времени t=1 определяется в
результате прямого преобразования информации:
n
y j (1)   wij xi (0),
j  1, n1 .
i 1
Вектор, который получается
преобразования вектора Y(1):
n1
x i (2)   w 'ji y j (1),
в
результате
обратного
j  1, n .
j 1
На третьем этапе распространения информации определяется
вектор Y (3):
n
y j (3)   wij x i (2),
i 1
j  1, n1 .
Такое преобразование информации можно представить в виде
цепочки, изображенной на рис. 23.
Р и с . 23. Последовательное преобразование информации
Тогда ошибка восстановления информации в первом слое
нейронной сети определяется как
1
E   ( x i (2)  xi (0)) 2 .
2 i
33
Ошибка воспроизведения информации во втором слое нейронной
сети определяется следующим образом:
E' 
1
 ( y j (3)  y j (1)) 2 .
2 j
Обучение нейронной сети производится как с целью
минимизации ошибки E, так и E΄ . При этом значение y j (1) в
выражении принимается как эталонное. Тогда в соответствии с
методом градиентного спуска в пространстве весовых коэффициентов
wij (t  1)  wij (t )   
w 'ji (t  1)  w 'ji (t )   
E '
,
wij (t )
E
w 'ji (t )
.
Определим производные для линейной нейронной сети. Тогда:
E '
 ( y j (3)  y j (1)) x i (2),
wij (t )
E
w 'ji (t )
 ( x i (2)  xi (0)) y j (1).
В результате выражения для настройки весовых коэффициентов
нейронной сети примут следующий вид:
wij (t  1)  wij (t )    x i (2)  ( y j (3)  y j (1)),
w 'ji (t  1)  w 'ji (t )    y j (1)  ( x i (2)  xi (0)).
Для получения ортонормированных весовых векторов wk для
каждого нейрона необходимо ввести нормированное правило
обучения. Пусть W k =(w 1 k ,w 2 k ,…,w n k ) – весовой вектор k-го
нейронного элемента. Тогда его длина в момент времени t+1 равна
2
Wk (t  1)  w12k (t  1)  w22k (t  1)    wnk
(t  1) .
В соответствии с этим нормированное правило обучения для
весовых коэффициентов k-го нейрона можно представить следующим
34
образом:
wik (t  1) 
wik (t )    x i (2)  ( y k (3)  y k (1))
Wk (t  1)
.
Аналогично
производится
формирование
весовых
коэффициентов W′. Обучение осуществляется до тех пор, пока
суммарная среднеквадратичная ошибка сети не станет меньше
заданной.
Для кумулятивного дельта-правила непростым является выбор
подходящего шага обучения , обеспечивающего быстрое достижение
минимальной среднеквадратичной ошибки. Для ускорения процесса
обучения можно использовать адаптивный шаг обучения. Тогда при
настройке весовых коэффициентов сети прямой передачи сигнала
величина скорости обучения может определяться как в [2]:
 ( w) 
1
n
 (w' ) 
,
 x i (2)
2
1
n1
.
 y j (1)
i 1
2
j 1
Приведенный алгоритм характеризуется неустойчивостью
процесса обучения, и для преодоления этого недостатка можно
использовать алгоритм послойной модификации весов, который
адекватнее отражает решение рассматриваемой задачи [2].
2.6. ОБОБЩЕННОЕ ПРАВИЛО ОБУЧЕНИЯ ХЕББА
При нормировании весовых коэффициентов в процессе обучения
нейронной сети можно получить нормированное или обобщенное
правило Хебба. В этом случае веса определяются по формуле
wij (t )   xi (t ) y j (t )
wij (t  1) 
.
W j (t  1)
Данное правило может быть аппроксимировано путем
разложения в ряд Тейлора следующим выражением:
wij (t  1)  wij (t )   y j (t )( xi (t )  y j (t ) wij (t )).
Первый терм в предыдущей формуле y j (t) x i (t) представляет
собой стандартное правило Хебба, а второй терм y j (t)y j (t)w i j (t)
предназначен для нормализации весовых коэффициентов. При
использовании нормализованного правила Хебба или иначе
35
обобщенного правила Хебба можно получить собственные векторы
ковариационной матрицы входных данных.
2.7. РАДИАЛЬНЫЕ БАЗИСНЫЕ СЕТИ И ИХ ОБУЧЕНИЕ
Регрессионный анализ связан с отысканием оценки значения
непрерывной числовой выходной переменной по значениям входных
переменных. Задачи аппроксимации экспериментальных данных
можно решать также с помощью искусственных нейронных сетей
следующих типов: многослойного персептрона, радиальных базисных
сетей, обобщенно-регрессионных сетей, вероятностных сетей [8].
Искусственные нейронные сети выходные значения представляют,
как правило, в определенном диапазоне или масштабируют.
Простейшей из масштабирующих функций является минимаксная
функция, выполняющая линейное преобразование после определения
минимального и максимального значений функции так, чтобы
получаемые значения находились в нужном диапазоне. Задача
аппроксимации функции для нейронной сети формируется как задача
контролируемого обучения (обучения с учителем).
Суть задачи состоит в следующем. Имеются значения функции в
отдельных точках (узлах), система базисных функций и векторов
регулируемых весовых коэффициентов. Необходимо обучить сеть, т. е.,
выбрать весовые коэффициенты при базисных функциях так, чтобы их
комбинация давала аналогичную зависимость, которая наилучшим
образом аппроксимирует множество значений функции отклика.
Радиальные функции, изменяющиеся монотонно, в зависимости
от расстояния до центральной точки имеют вид:
 S2 
;
Гаусса – F ( S )  exp 
 2 2 


мультиквадратичная –
F (S )  S 2   2 ;
обратная мультиквадратичная – F ( S ) 
1
.
S 
Параметр  определяет радиус влияния каждой базисной функции и
быстроту стремления к нулю при удалении от центра. Эти функции
применимы для аппроксимации данных в многомерном пространстве.
Системы линейных уравнений, к которым они приводят, имеют
единственное решение. Центральная точка, шкала расстояния и форма
36
2
2
радиальной функции являются параметрами модели и полностью
фиксированы, если модель линейная. Радиальная базисная сеть (РБФсеть) будет нелинейной, если базисная функция может смещаться или
изменять размер, или если она содержит более одного скрытого слоя.
Обычно РБФ-сеть включает входной слой, скрытый слой, состоящий из
радиальных элементов, и линейный выходной слой.
Обобщенно-регрессионные и вероятностные сети также имеют
радиальные базисные слои с числом нейронов, равным числу
элементов или менее обучающего множества, но в отличие от
обычной РБФ-сети включают еще соответственно линейный и
конкурирующий слои. Для обобщенно-регрессионной сети в качестве
начального приближения матрицы весов второго линейного слоя
выбирается целевой массив, на выходе формируется вектор,
соответствующий среднему нескольких целевых векторов, связанных
с входными векторами, близкими к данному вектору входа.
Вероятностные сети, как правило, используются для решения задач
классификации. В конкурирующем слое таких сетей сопоставляются
вероятности принадлежности входного вектора к тому или иному
классу и, в конечном счете, определяется вектор класса, вероятность
принадлежности к которому выше.
Нейронные модели сетей, включая РБФ-сети, являются
непараметрическими моделями и их веса (и другие параметры) не
имеют определенного смысла по отношению к задаче, в которой они
применяются. Вход функции активации определяется как модуль
разности вектора весов (W) и вектора входа (P), который умножается
на смещение (S0). Радиальная базисная функция, используемая в
пакете NNT, имеет вид:
radbas(S)=exp(-(W-P)S0)2).
Эта функция имеет максимум, равный единице, когда вход равен 0.
Когда расстояние между векторами W и P уменьшается, выход
радиальной базисной функции увеличивается. Таким образом,
радиальный
базисный
нейрон
действует
как
индикатор,
формирующий значение 1, когда вход P идентичен вектору весов W.
Смещение S0 позволяет корректировать чувствительность радиального
базисного нейрона.
После задания вектора входа каждый нейрон скрытого слоя
находит значение выхода в соответствии с тем, как близок вектор
входа к вектору весов каждого нейрона. Радиальные базисные
37
нейроны с векторами весов, значительно отличающимися от вектора
входа P, будут иметь выходы, близкие к 0, и их влияние на выходы
линейных нейронов будет незначительно.
Величина влияния или протяжения (spread) или коэффициент
сглаживания радиальной базисной функции определяет ширину
«колпаков» гауссовых функций с центром в каждом обучающем
наблюдении. Малая величина протяжения приводит к функции с
резкими пиками и малой ошибкой аппроксимации, но такая сеть не
способна к обобщению и может
плохо аппроксимировать
наблюдения контрольного множества.
Процесс обучения радиальных базисных сетей включает две
стадии: процесс настройки центров базисных функций и обучение
нейронов в скрытом слое, поэтому РБФ-сети обучаются достаточно
быстро. Первоначально настраиваются центры базисных функций,
затем с фиксированными параметрами РБФ-нейронов обучается
выходной слой. Альтернативная методика состоит в получении
большого числа входных образов, выборе на их основе возможных
значений центров и затем использовании обычных методов обучения
для настройки центров и весов.
38
3. ПАКЕТ NNT СИСТЕМЫ MATLAB И РЕШЕНИЕ
ПРИКЛАДНЫХ ЗАДАЧ С ПРИМЕНЕНИЕМ
НЕЙРОННЫХ СЕТЕЙ
Пакет прикладных программ NNT (The Neural Network Toolbox)
расширяет возможности системы MATLAB [7,11], первоначально
разработанной фирмой Mathworks для решения некоторых задач
управления спутниками НАТО, и обеспечивает требуемую интенсивных
матричных вычислений поддержку проектирования, расчета и анализа
различных нейронных сетей. Он легко комбинируется с другими
библиотеками пакета и программой нелинейного динамического
моделирования SIMULINK и применяется в разных областях науки,
инженерии и бизнеса. Название MATLAB связано со словами Matrix
Laboratory (матричная лаборатория).
3.1. ХАРАКТЕРИСТИКА ПАКЕТА NNT
Авторами нейроимитатора NNT являются профессор Г. Демус,
читающий курс по нейросетевым технологиям в университете Айдахо, и
М. Билл, проектирующий аппаратные реализации искусственных
нейронных сетей. Система MATLAB является и операционной средой и
языком программирования, на котором могут быть написаны
программы для многократного использования. Язык программирования
MATLAB является интерпретатором, т. е. каждая инструкция
программы распознается и сразу же исполняется.
Основным способом получения информации о синтаксисе и
правилах использования любой встроенной функции системы является
вызов команды help <имя функции>. Команда demo или опция
Examples and demos меню обеспечивает доступ к набору примеров
системы MATLAB. Команда tour вызывает ознакомительную систему
MATLAB, которая интегрирована с системой демонстрационных
примеров и со справочной системой.
После запуска MATLAB 6 открывается рабочий стол системы. Он
содержит элементы графического интерфейса пользователя, которые
предназначены для работы с файлами, переменными и приложениями,
39
связанными с MATLAB. Как правило, на рабочем столе открываются
три окна: командное окно Command Window, в котором расположена
командная строка, панель запуска приложений Launch Pad с кнопками
развертки/свертки и окно предыстории вызовов Command History.
Сеанс работы с MATLAB называют сессией. Сессия, по существу,
является текущим документом, отражающим работу пользователя с этой
системой. Строка ввода в командном окне отмечается приглашающим
символом ». В строке вывода символ » отсутствует. Строка сообщений
об ошибках начинается тремя знаками вопроса ?. Также имеются
информационное окно текущего каталога на инструментальной панели
рабочего стола и кнопки вызова подсказки, закрытия и отделения
командного окна от рабочего стола (например, для перехода в режим
предшествующих версий системы MATLAB). Изменить состав и
размещение рабочих окон можно, создавая новые, закрывая имеющиеся,
а также изменяя их размеры с помощью вертикальных и горизонтальных
разделителей. Кроме этого, окна от рабочего стола можно отделять и
помещать их на рабочий стол, используя меню View инструментальной
панели.
В отличие от предыдущих версий в среде системы MATLAB6 все
операторы M-языка и команды системы могут быть активизированы с
помощью правой кнопки мыши как в зоне просмотра командного окна,
так и в командной строке. Для блокировки вывода интерпретатором
результатов вычислений некоторого выражения его следует закончить
знаком ;(точка с запятой).
Любой нейрон в пакете NNT характеризуется векторами весов,
смещений и функцией активации. Нейроны, принимающие одинаковые
входы и использующие одинаковые функции преобразования,
группируются в слои.
Возможные нейросетевые парадигмы имитатора, определяемые
выбранной структурой сети и используемым алгоритмом обучения,
можно разделить на наблюдаемые и ненаблюдаемые. Наблюдаемые сети
обучаются производить требуемые выходы на входы примеров. Они
могут моделировать и исследовать динамические системы,
классифицировать зашумленные данные и решать многие другие задачи.
Возможные обучающие правила и методы проектирования сетей
прямого распространения: персептроны, линейные сети (Adaline), сети с
обратным распространением ошибки по Левенбергу – Марквардту,
радиальные базисные сети. Алгоритм обучения Левенберга –
Марквардта относится к нелинейным методам оптимизации, является
40
самым быстрым из алгоритмов обратного распространения ошибки и
связан с использованием доверительных областей. При продвижении к
минимуму среднеквадратичной функции ошибок в этом алгоритме
анализируются промежуточные точки, которые получились бы по
обычному методу градиентного спуска, и в случае улучшения модели
осуществляется переход в эти точки, а в противном случае уменьшается
шаг продвижения и переход не осуществляется. Этот алгоритм требует
памяти порядка l2, если l – количеcтво весовых коэффициентов сети [8].
Рекуррентные сети используют обратное распространение ошибки
для пространственных и временных образов и включают сети Элмана и
Хопфилда. Сети Элмана характеризуются наличием линии задержки во
входном слое и обратной связью выходного слоя со скрытым.
Обучаемый вектор квантования (LVQ) – наиболее мощный метод для
классификации линейно неотделимых векторов, позволяющий точно
определить границы классов и зернистость классификации.
Ненаблюдаемые нейронные сети могут определять схемы
классификации, адаптивные к изменениям входных данных.
Поддерживаются
обучающие ассоциативные правила Хебба,
Кохонена, правила входящей звезды (instar) и исходящей звезды
(outstar). Самоорганизующиеся сети могут обучаться определению
регулярности и корреляции входных данных и адаптировать их
будущие образы этим входам. Самоорганизующиеся нейронные сети
включают сети встречного распространения, самоорганизующиеся
сети и разделяющие карты.
Встроенные функции активации, такие как гиперболический
тангенс (tansig), симметричная линейная (satlins), радиальная базисная
(radbas), логистическая (logsig), конкурирующая (compet) функции и
другие, могут быть дополнены самим пользователем.
Другие встроенные функции пакета NNT системы MATLAB
позволяют осуществлять нормализацию данных, визуализацию весовых
коэффициентов и смещений и представлять результаты анализа ошибок
на диаграммах.
3.2. ВЫЧИСЛИТЕЛЬНАЯ МОДЕЛЬ НЕЙРОННОЙ СЕТИ
Пакет NNT использует специальный класс объектов
network.object. Эти объекты представлены в пакете в виде массива
записей, поля которых определяют их свойства, характеристики и
параметры. Массивы записей позволяют задать вычислительную
41
модель нейронной сети, для которой используется стандартное имя
net, являющееся также и именем массива записей.
Архитектура нейронной сети характеризуется количеством
входов, слоев, выходов, целей, смещений, а также топологией их
соединения. Описание полей массива сети net приведено в табл. 2.
Таблица 2
net
.numInputs
.numLayers
.biasConnect
.inputConnect
.layerConnect
.outputConnect
.targetConnect
.numOutputs
.numTargets
.numInputDelays
.numLayerDelays
Имя поля
Количество входов
Количество слоев
Матрица связности для
смещений
Матрица связности для
входов
Матрица связности для
слоев
Матрица связности для
выходов
Матрица связности для
целей
Количество выходов
Количество целей
Максимальное значение
задержки для входов
Максимальное значение
задержки для слоев
Размер
Тип
1×1
integer
1×1
integer
numLayers×1 Boolean
array
numLayers×
Boolean
numInputs
array
numLayers×
Boolean
numLayers
array
1×numLayers
Boolean
array
1×numLayers
Boolean
array
1×1
integer
1×1
integer
1×1
integer
1×1
integer
Количество векторов входа сети numInputs следует отличать от
числа элементов вектора входа. Количество входов задается целым
положительным числом и указывает, как много векторов входа
подано на сеть. В свою очередь количество элементов каждого
входного вектора задается свойством inputs{i}.size. Любое изменение
поля numInputs будет влиять на размеры матрицы связности
inputConnect и массивов ячеек inputs{i}.
Количество слоев numLayers задается целым положительным
числом. Любое его изменение будет влиять на размеры матриц
связности biasConnect, inputConnect, layerConnect, outputConnect,
targetConnect, а также размеры массивов весов и смещений IW, LW, b.
Одномерная матрица связности для смещений biasConnect
является булевой матрицей размера Nl×1, где Nl – количество слоев,
определяемых свойством numLayers. Наличие или отсутствие
смещений в слое i отмечается в элементе вектора biasConnect(i) как 1
42
или 0 соответственно. Наличие смещения означает, что в массивах
ячеек biases{i} и b{i} будут созданы структуры, задающие все
характеристики смещения.
Матрица связности для входов inputConnect является булевой
матрицей размера Nl×Ni, где Nl – количество слоев, определяемых
свойством numLayers, и Ni – количество входов, определяемых
свойством numInputs. Наличие или отсутствие веса при связывании
слоя i со слоем j отмечается в элементе матрицы inputConnect(i,j) как
1 или 0, соответсвенно. Наличие веса означает, что в массивах ячеек
inputWeights{i} и IW{i} будут созданы структуры, задающие
характеристики весов входа.
Матрица связности для слоев layerConnect является булевой
матрицей размера Nl×Nl, где Nl – количество слоев, определяемых
свойством numLayers. Наличие или отсутствие веса в слое i по входу j
отмечается в элементе матрицы
layerConnect(i,j) как 1 или 0
соответственно. Наличие веса означает, что в массивах ячеек
layerWeights{i} и LW{i} будут созданы структуры, задающие
характеристики весов слоя.
Матрица связности для выходов outputConnect – одномерная
булева матрица размера 1×Nl, где Nl – количество слоев,
определяемых свойством numLayers. Наличие или отсутствие выхода
в слое i отмечается в элементе вектора outputConnect(i) как 1 или 0
соответственно. Наличие выхода изменяет значение свойства
numOutputs и означает, что в массиве ячеек outputs{i} будет
сформирована структура, задающая характеристики выхода.
Матрица связностей для целей targetConnect – одномерная булева
матрица размера 1×Nl, где Nl – количество слоев, определяемых
свойством numLayers. Наличие или отсутствие целевого выхода в слое i
отмечается в элементе вектора targetConnect(i) как 1 или 0
соответственно. Наличие цели изменяет значение свойства numTargets и
означает, что в массиве ячеек targets{i} будет сформирована структура,
задающая характеристики целевого выхода.
Число выходов numOutputs, определенное только для чтения,
задается количеством единиц в матрице связности для выходов.
Число целей numTargets, определенное только для чтения,
задается количеством единиц в матрице связности для целей.
Максимальное значение задержки для входов numInputDelays
(только для чтения) определяет максимальное значение задержки для
входных последовательностей.
43
Максимальное значение задержки для слоев numLayerDelays
определяет максимальное значение задержки для всех слоев сети.
Перечень функций, используемых для инициализации,
адаптации и обучения нейронной сети net, приводится в табл. 3.
Таблица 3
net
.initFcn
Имя поля
Функции инициализации
.initParam
.adaptFcn
.adaptParam
.trainFcn
.trainParam
.performFcn
.performParam
Состав
initcon |initiay
initnw | initnwb |
initzero
char
Тип
Параметры функции
инициализации
Функции адаптации
Параметры функции
адаптации
Функции обучения
adaptwb | trains
char
Параметры функции
обучения
Функции оценки качества
обучения
Параметры функции
оценки качества обучения
mae | mse | sse | char
msereg
trainbr | trainc | char
traincgb | traincgf|
traingda | traingdm|
traingdx | trainlm|
trainoss | trainr |
trainrp
| trainscg
Параметры всех функций этой таблицы определяют набор
параметров для используемой функции. Узнать набор таких
параметров можно, применив оператор help, например:
Help(net.trainFcn).
Функции инициализации initFcn определяют, какая из функций
инициализации будет использована для задания начальных матриц весов
и векторов смещений при вызове метода init для всей сети. При
изменении этого свойства параметры функции инициализации initParam
будут использовать значения, соответствующие новой функции.
Функции адаптации adaptFcn определяют, какая из функций
адаптации будет использована при вызове метода adapt.
Функции обучения trainFcn определяют, какая из функций
обучения будет использована при вызове метода train.
44
Функции оценки качества обучения performFcn определяют,
какая из функций оценки качества обучения будет использована при
вызове метода train.
Пользователь может дополнить список используемых функций
инициализации, адаптации, обучения и оценки качества обучения.
Элементы сети задаются с помощью массивов ячеек, которые
включают структуры для описания входов, слоев, выходов, целей,
смещений и весов входа. Все эти структуры определяются однотипно,
поэтому в пособии рассмотрим только описание слоев.
Описание полей структуры, используемой для определения
каждого слоя нейронной сети net.layers{i}, приводится в табл. 4.
Таблица 4
Тип
Cell array
Double array
Размер, состав
numLayers×1
1×numdim
Char
boxdist | dist |
linkdist | mandist
.distances
.initFcn
.netInputFcn
.positions
.size
.topologyFcn
Имя поля
Описатель i-го слоя сети
Распределение нейронов по
размерностям слоя
Функции вычисления
расстояния между нейронами
Расстояния между нейронами
Функции инициализации
Функции накопления
Положения нейронов
Количество нейронов
Функции топологии
.transferFcn
Функции активации
Char
.userdata
.note
Информация пользователя
текст
Struct
Char
net
.layers{i}
.dimensions
.distanceFcn
Double array
Char
Char
Array
Integer
Char
initw | initwb
netprod| netsum
1×1
gridtop | hextop |
randtop
compet| logsig |
poslin |purelin |
radbas | satlin |
satlins | tansig |
tribas | hardlims
1×1
1×var
Описатель слоев нейронной сети layers{i} является массивом
ячеек размера Nl×1, где Nl – число слоев сети, равное numLayers,
состоящим из ячеек layers{i}, каждая из которых является массивом
записей для описания i-го слоя сети.
Вектор распределения по размерностям слоя dimensions
позволяет описывать многомерные слои нейронов реальных
геометрических размерностей: одномерные, двумерные, трехмерные.
Многомерный слой размерности numdim может быть задан вектор45
строкой, элементы которой указывают число нейронов по каждой
размерности, тогда их произведение будет определять общее
количество нейронов в многомерном слое layers{i}.size. Это свойство
позволяет определить положение нейронов layers{i}.positions, если
известна функция топологии слоя layers{i}.topologyFcn. При
изменении этого вектора
будут автоматически изменяться
layers{i}.size, положение нейронов layers{i}.positions и расстояния
между ними layers{i}.distances.
Функция оценки расстояния между нейронами distanceFcn
задает функцию, используемую для вычисления расстояния между
нейронами в слое i. При замене функции будут автоматически
пересчитаны значения расстояний между нейронами слоя layers{i}.
distances. Список применяемых функций оценки расстояния может
быть расширен самим пользователем.
Расстояние между нейронами в i-ом слое определяет свойство
layers{i}.distances.
Функция инициализации слоя initFcn определяет, какая функция
инициализации используется для слоя i.
Функция накопления netInputFcn определяет, какая функция
накопления применяется для слоя i.
Для построения графика расположения нейронов в многомерном
слое для слоя i можно использовать функцию plotsom с аргументом
net.layers{i}.positions.
Функция активации слоя transferFcn определяет
функцию
активации, используемую для задания нейрона в слое i.
Поле для записи информации пользователя для слоя i
предусмотрено в массиве записей userdata. По умолчанию поле
inputs{i}.userdata.note, предусмотренное для записи текста, содержит
строку «Put your custom input information here», что означает –
«Информацию разместите здесь».
Матрицы весов и векторы смещений описываются функциями,
представленными в табл. 5.
Таблица 5
net
.IW
Имя поля
Массив ячеек для матриц весов входа
.LW Массив ячеек для матриц весов слоя
.b
Массив ячеек для векторов смещений
46
Тип
Cell array
Cell array
Cell array
Размер
numLayers×
numInputs
numLayers×
numLayers
numLayers×1
Массив ячеек IW имеет размеры Nl×Ni, где Nl – число слоев
numLayers и Ni – число входов numInputs сети net, каждый элемент
которого является матрицей весов, связывающе слой i со входом j
сети. Структура этого массива согласована с матрицей связности
inputConnect(i,j). Каждая матрица весов должна иметь число строк,
равное параметру layers{i}.size, а число столбцов соответствовать
параметру inputWeights{i,j}.size.
Массив ячеек LW имеет размеры Nl×Nl, где Nl – число слоев
numLayers сети net, каждый элемент которого является матрицей
весов, связывающий слой i со слоем j сети. Структура этого массива
согласована с матрицей связности layerConnect(i,j). Каждая матрица
весов должна иметь число строк, равное параметру layers{i}.size , а
число столбцов соответствовать параметру layerWeights{i,j}.size.
Вектор смещений b является массивом ячеек размера Nl×1, где
Nl – число слоев numLayers объекта net, каждый элемент которого
является вектором смещений для слоя i сети. Структура этого вектора
согласована с вектором связности biasConnect(i,j). Длина вектора
смещений для слоя i должна соответствовать параметру biases{i}.size.
Следует отметить, что для получения информации о структуре полей
инициированного объекта network можно использовать функцию
fieldnames(<имя_сети>), которая отражает текущее состояние
нейронной сети.
3.3. ЛАБОРАТОРНАЯ РАБОТА № 1.
РАСПОЗНАВАНИЕ СИМВОЛОВ
Цель работы: анализ работы многослойной нейронной сети по
распознаванию букв методом обратного распространения ошибки (с
импульсом и адаптацией).
Демонстрационная программа пакета NNT appcr1 иллюстрирует,
как распознавание символов может быть выполнено в сети с
обратным распространением ошибки. Для распознавания 26 символов
латинского алфавита, получаемых, например, с помощью системы
распознавания, выполняющей оцифровку каждого символа в ее поле
зрения, используется сеть из двух слоев, не считая входного, с n (10)
нейронами в скрытом слое и p (26) нейронами в выходном (по одному
на букву). Каждый символ представляется шаблоном размера 75,
соответствующим пиксельной градации букв. Входной вектор
соответствует набору признаков, выходной – классу образов, а
скрытый слой используется для представления области знаний.
47
Система считывания символов обычно работает не идеально и
отдельные элементы символов могут оказаться искаженными.
Проектируемая нейронная сеть должна точно распознать идеальные
векторы входа и с максимальной точностью воспроизводить
зашумленные векторы. Функция prprob формирует 26 векторов
входа, каждый из которых содержит 35 элементов, называемых
алфавитом. Она создает выходные переменные alphabet и targets,
которые определяют массивы алфавита и целевых векторов. Массив
targets задается как единичная матрица функцией eye(26). Для
восстановления шаблона i-й буквы алфавита необходимо выполнить
следующие операторы M-языка:
[alphabet,targets]= prprob;
ti= alphabet(:, i); letter{i}=reshape(ti, 5, 7)’;
letter{i}
Например, для определения шаблона буквы A, являющейся
первым элементом алфавита, можно выполнить операторы:
[alphabet,targets]= prprob;
i=1;
ti= alphabet(:, i);
letter{i}=reshape(ti, 5, 7)’;
letter{i}
В результате будет выведено:
0
0
1
0
0
0
1
0
1
0
0
1
0
1
0
1
0
0
0
1
1
1
1
1
1
1
0
0
0
1
1
0
0
0
1
На вход сети поступает вектор входа с 35 элементами, вектор
выхода содержит 26 элементов, только один из которых равен
единице, а остальные – нулю. Правильно функционирующая сеть
отвечает вектором со значением 1 для элемента, соответствующего
номеру символа в алфавите. Кроме того, сеть должна распознавать
48
символы в условиях действия шума. Предполагается, что шум –
аддитивная помеха, нормально распределенная случайная величина с
математическим ожиданием, равным нулю, и среднеквадратичным
отклонением, меньшим или равным 0.2. Первый слой нейронов сети
используется как распределительный, суммирование в нем не
производится. В качестве функций активации скрытого и выходного
слоев выбрана логистическая функция. Выбор такой функции
активации связан с тем, что диапазон значений этой функции
определен от нуля до единицы и позволяет сформировать значения
выходного вектора.
При обучении искусственной нейронной сети используется
процедура обратного распространения ошибки или процедура
убывания градиента. Если при обучении сети возникают затруднения,
то можно увеличивать количество нейронов скрытого слоя. Наличие
шумов может привести к тому, что сеть не будет формировать вектор
выхода, состоящий точно из нулей и единиц. Поэтому по завершении
этапа обучения выходной сигнал обрабатывается функцией compet,
которая присваивает значение 1 единственному элементу вектора
выхода, а всем остальным – значение 0.
Функция prprob, как отмечалось, формирует массив векторов
входа alphabet размера 35×26 с шаблонами символов алфавита и
массив целевых векторов targets:
[alphabet,targets]= prprob;
[R, Q]=size(alphabet);
[s2, Q]= size(targets);
Двухслойная нейронная сеть создается с помощью команды
newff, предназначенной для описания многослойных нейронных сетей
прямой передачи сигнала с заданными функциями обучения и
настройки на основе метода обратного распространения ошибки, и
имеющей формат:
net=newff(PR, [S1 S2 …SN],{TF1 TF2 …TFN},btf,blf,pf),
где PR – массив размера R×2 минимальных и максимальных значений
для R векторов входа;
Si – количество нейронов в слое i;
Tfi – функция активации слоя i, по умолчанию tansig;
49
btf – обучающая функция, реализующая
распространения ошибки, по умолчанию trainlm;
метод
обратного
blf – функция настройки, реализующая
распространения, по умолчанию learngdm;
метод
обратного
pf – критерий качества обучения, по умолчанию средняя квадратичная
ошибка mse.
Выходной аргумент net является объектом класса network.object
многослойной нейронной сети.
В качестве метода обучения в пакете NNT применяется функция
train, позволяющая установить процедуры обучения сети и настройки
ее параметров и имеющая формат
[net, TR]=train(net, P, T, Pi, Ai), где входные аргументы:
net – имя нейронной сети,
P – массив входов,
T – вектор целей, по умолчанию нулевой вектор,
Pi – начальные условия на линиях задержки входов, по умолчанию
нулевые,
Ai – начальные условия на линиях задержки слоев, по умолчанию
нулевые; а выходные:
net – объект класса network.object после обучения;.
TR – характеристики процедуры обучения: TR.timesteps – длина
последней выборки; TR.perf – значение функции качества на
последнем цикле обучения. Следует отметить, что вектор целей T
используется только при наличии целевых выходов, а Pi и Ai
указываются только в случае динамических сетей, имеющих линии
задержки на входах или в слоях.
Моделирование нейронных сетей в пакете NNT обеспечивает
функция sim, имеющая формат
[Y, Pf, Af, E, perf]= sim(net, P, Pi, Ai, T),
где входные аргументы:
net – имя нейронной сети,
P – массив входов,
50
Pi – начальные условия на линиях задержки входов, по умолчанию
нулевой вектор,
Ai – начальные условия на линиях задержки слоев, по умолчанию
нулевой вектор,
T – вектор целей, по умолчанию нулевой вектор;
выходные аргументы:
Y – массив выходов,
Pf – состояния на линиях задержки входов после моделирования,
Af – состояния на линиях задержки слоев после моделирования,
E – массив ошибок,
perf – значение функционала качества.
При создании сети для распознавания букв латинского алфавита
используются операторы:
s1=10;
net=newff(minmax(alphabet), [s1 s2],(‘logsig’ ‘logsig’),’traingdx’);
net.LW(2,1)=net.LW(2,1)*0.01;
net.b(2)=net.b(2)*0.01
Элементы матрицы начальных весов и смещений скрытого слоя
после создания сети умножаются на 0.01 для избежания дальнейших
действий с их большими значениями.
Чтобы создать нейронную сеть, которая может обрабатывать
зашумленные векторы входа, следует выполнить обучение сети как на
идеальных, так и на зашумленных векторах. Сначала сеть обучается
на идеальных векторах, пока не будет обеспечена минимальная сумма
квадратов погрешностей. Затем сеть обучается на 10 наборах
идеальных и зашумленных векторов. Две копии свободного от шума
алфавита используются для того, чтобы сохранить способность сети
классифицировать идеальные векторы входа. Оказывается, что после
того как описанная сеть обучилась классифицировать сильно
зашумленные векторы, она потеряла способность правильно
классифицировать некоторые векторы, свободные от шума. Обучение
выполняется с помощью функции traingdx, которая реализует метод
обратного распространения ошибки с импульсом и адаптацией к
темпу обучения. Сеть первоначально обучается в отсутствие шума с
51
максимальным числом циклов или эпох обучения 5000 либо до
достижения допустимой средней квадратичной погрешности, равной
0.1. При обучении с шумом максимальное число циклов обучения
сокращается до 300, а допустимая погрешность увеличивается до 0.6.
netn=net;
netn.trainParam.goal=0.6;
netn.trainParam.epochs=300;
T=[targets targets targets targets];
for pass=1:10
P=[alphabet, alphabet, (alphabet+randn(R,Q)*0.1),…
(alphabet+randn(R,Q)*0.2)];
[netn, tr]=train(netn,P,T);
end
Алгоритм обучения включает следующие шаги:
1. Выбрать очередной входной образ из обучающего множества и
подать входной вектор на вход сети.
2. Вычислить выход сети.
3. Вычислить разность между выходом сети и требуемым выходом
(целевым вектором входного образа).
4. Откорректировать веса сети так, чтобы минимизировать ошибку.
5. Повторить шаги с 1 по 4 для каждого вектора обучающего
множества до тех пор, пока ошибка на всем множестве не
достигнет приемлемого уровня.
Изменение весов осуществляется с использованием модифицированного дельта-правила. Целевые значения для скрытых слоев не
вводятся, а только для выходных.
Каждая итерация процедуры обучения включает два «прохода»:
«проход» вперед, на котором получают множество выходов (шаги 1, 2) и
«проход» назад, на котором сигнал ошибки распространяется обратно
по сети и используется для изменения весов (шаги 3, 4).
Полученный выходной вектор сравнивается с целевым. Если они
совпадают, обучение не происходит. В противном случае вес
корректируется на величину:
 p Wij     jp yip ,
52
где изменение в силе связи для p-й обучающей пары пропорционально
произведению сигнала ошибки jp j-го нейронного элемента в выходном
слое и выходного сигнала нейрона скрытого слоя i, посылающего сигнал
по этой связи. Определение ошибки является рекурсивным процессом,
который начинается с выходных слоев:
 jp  y 'j  (T jp  y jp ) ,
где y 'j – производная функции преобразования, для логистической
функции y 'j  y j  (1  y j ) , T jp , y jp – желаемое и действительное
значения выходного сигнала j-го нейронного элемента;
 – коэффициент скорости обучения (обычно от 0.01 до 1).
Сигнал ошибки для скрытого слоя определяется через сигнал
ошибки нейронов, с которыми соединен его выход:


 jp  y 'j     qp  Wqj  .
q

Производная логистической функции принимает значение 0 при
y j  0 или y j  1 и достигает максимального значения при y 'j  0.5 .
Кроме этого, при различных весах выходные сигналы нейронных
элементов не могут достичь значений 0 или 1, поэтому за ноль обычно
принимают значения y j  0.1 , а за 1 – значения y j  0.9 .
Обобщенное дельта-правило достаточно хорошо обеспечивает
минимизацию общей ошибки сети методом градиентного спуска в
пространстве весов. Общая ошибка функционирования сети
D
1
2
  (T jp  y jp ) .
2 p j
Обучение продолжается до тех пор, пока в процессе обучения она
не уменьшится до требуемого значения. Для учета изменения веса на
предыдущем шаге в правило обучения вводится экспоненциально
затухающий множитель  (импульс):
 Wij (t  1)     j  yi     Wij (t ) .
В методе убывания градиента с импульсом, как правило,
первоначально =0.9. После создания двух сетей, первая из которых
обучена на идеальных векторах входа, а вторая – на зашумленных,
осуществляется тестирование сети на 100 зашумленных векторах
53
входа. Шум с нулевым средним значением и изменяющимся от 0 до
0.5 с шагом 0.05 среднеквадратичным отклонением нормально
распределенной случайной величины добавляется к идеальным
векторам входа. Выходной сигнал обрабатывается функцией compet
для того, чтобы выбрать только один из 26 элементов вектора выхода.
Сети имеют малые погрешности, если среднеквадратичное
значение шума находится в пределах от 0 до 0.05. Когда к векторам
добавляется шум со среднеквадратичным отклонением 0.2, то в обеих
сетях появились заметные ошибки. При этом погрешности нейронной
сети, обученной на зашумленных векторах, на 3 – 4 % ниже, чем для
сети, обученной на идеальных входных последовательностях.
Если необходима более высокая точность распознавания, сеть
может быть обучена с использованием большего количества нейронов
в скрытом слое. Можно также увеличить размер векторов, чтобы
пользоваться шаблоном с более мелкой сеткой, например, 14×10 точек
вместо 7×5. Для вывода распознанного символа после моделирования
сети с массивом выходов A можно использовать операторы:
answer=find(compet(A)==1);
plotchar(alphabet(:,answer)) %Вывод распознанного символа.
Порядок выполнения работы:
1. Изучить prprob, appcr1MATLAB\toolbox\nnet\nndemos, newff,
traingdx, learngdm, MATLAB\toolbox\nnet\nnet.
2. Построить нейронную сеть для распознавания букв латинского
алфавита, используя функцию newff – инициализации сети прямой
передачи сигнала.
3. Обучить сеть, используя функцию traingdx.
4. Распознать несколько букв, зашумленных символов (функция sim).
Форма отчета:
1. Описание исходной задачи.
2. Описание архитектуры сети с указанием параметров.
3. Листинг программы с комментариями.
4. Результаты обучения.
5. Обоснование правильности определения параметров сети.
54
3.4. ЛАБОРАТОРНАЯ РАБОТА № 2.
ПРОГНОЗИРОВАНИЕ РЕЗУЛЬТАТОВ ВЫБОРОВ
(ЗАДАЧА КЛАССИФИКАЦИИ)
Прогнозирование результатов выборов президента США является
классической задачей для демонстрации работы нейросетевого
классификатора, значения обучающих параметров которой представляются в форме «да – нет» и являются реальными данными за 100 лет. В
табл. 6 приведена история президентских выборов в США.
Для решения этой задачи может быть использована сеть прямой
передачи сигнала с заданными функциями обучения и настройки
параметров сети, использующими метод обратного распространения
ошибки, которая обучается и функционирует аналогично сети,
применяемой для распознавания букв.
Цель обучения сети – научиться предсказывать, какая партия
победит на выборах президента США, правящая или оппозиционная,
и классификация, таким образом, является бинарной. В качестве
обучающих параметров выбраны ответы на 12 вопросов
социологической анкеты:
1. Правящая партия была у власти более одного года?
2. Правящая партия получила более 50 % на прошлых выборах?
3. В год выборов была активная третья партия?
4. Была серьезная конкуренция при выдвижении от правящей партии?
5. Кандидат от правящей партии был президентом в год выборов?
6. Был ли год выборов временем спада или депрессии?
7. Был ли рост среднего национального валового продукта на душу
населения >2,1 %?
8. Произвел ли правящий президент существенные изменения в
политике?
9. Во время правления были существенные социальные волнения?
10. Администрация правящей партии виновна в серьезной ошибке
или скандале?
11. Кандидат правящей партии – национальный герой?
12. Кандидат оппозиционной партии – национальный герой?
Обучающая выборка включает 31 пример, каждый из которых
представляет ситуацию выборов в США, начиная с 1864 г. Первый
класс означает, что был избран кандидат правящей партии, второй –
кандидат оппозиционной партии. После обучения нейросеть способна
предсказать исход реальных выборов (в 1993 г. 94 % – прогноз победы
Клинтона, 6 % – Буша).
55
Таблица 6
Результаты опроса по президентским выборам в США
Выборы
№
Год
1
2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
1864
1864
1872
1880
1888
1990
1904
1908
1916
1924
1928
1936
1940
1944
1948
1956
1964
1972
n
y
y
y
n
n
y
y
n
n
y
n
y
y
y
n
n
n
n
y
y
n
n
y
y
y
n
y
y
y
y
y
y
y
n
n
1
2
3
4
5
6
7
8
9
10
11
12
13
1860
1876
1884
1892
1896
1912
1920
1932
1952
1960
1968
1976
1980
y
y
y
n
n
y
y
y
y
y
y
y
n
n
y
n
n
n
y
n
y
n
y
y
y
n
Ответы на вопросы (y –да, n– нет)
3
4
5
6
7
8
9
Победа правящей партии
n
n
y
n
n
y
y
n
n
n
n
y
y
y
n
n
y
n
y
n
n
n
y
n
n
y
y
n
n
n
y
n
n
n
n
n
n
y
n
y
n
n
n
n
y
n
n
n
n
n
n
n
n
n
y
n
n
n
y
n
n
y
n
y
n
y
n
y
y
n
n
n
n
n
y
n
n
n
n
y
y
y
y
n
n
n
y
y
y
y
n
n
n
y
n
y
y
n
y
n
y
n
n
y
n
n
n
y
n
n
n
n
n
n
y
n
y
n
n
n
n
y
n
y
y
y
Победа оппозиционной партии
y
y
n
n
y
n
y
n
y
n
y
n
n
n
n
y
n
n
y
n
y
y
n
y
n
n
y
y
n
y
n
y
n
y
y
y
y
y
n
y
n
n
n
y
n
n
n
y
y
n
n
y
y
n
n
y
n
y
n
n
y
n
n
n
n
n
y
n
n
n
y
y
n
n
y
y
y
n
y
y
n
n
n
n
y
y
y
y
n
n
n
56
10
11
12
n
n
n
n
n
n
n
n
n
y
n
n
n
n
n
n
n
n
n
y
y
n
n
n
y
n
n
n
n
y
y
y
n
y
n
n
n
n
n
n
n
y
n
y
n
n
n
n
n
n
n
n
n
n
n
y
n
n
n
n
n
n
y
n
n
y
y
n
n
y
n
y
n
n
n
n
n
n
n
n
n
n
n
y
n
n
n
y
y
y
n
n
y
В процессе обучения сеть способна оценить влияние каждого из
обучающих параметров на принятие решения или оценить
информативность каждого параметра по сравнению с остальными.
Изучение информативности параметров позволило выделить самые
значимые вопросы анкеты. Анализ же процесса обучения показал, что
возможна коррекция классификационной модели, например, можно
увеличить число классов, уменьшить число параметров [3].
Порядок выполнения работы:
1. Сформировать m – файл исходных данных, используя
бинарную кодировку, для ответов «да» – 1, для «нет» – 0. Путь к
этому файлу указать в маршрутах системы MATLAB.
2. Использовать двухслойную сеть прямого распространения для
решения задачи прогнозирования (12 нейронов на входе, 2 или 31 –
на выходе и приблизительно их полусумма – в скрытом слое).
3. Обучить нейронную сеть, используя функцию traingdx –
процедуру обратного распространения ошибки с импульсом и
адаптивной скоростью обучения.
4. Проанализировать результаты классификации для 3 – 4 вариантов
ответов на вопросы анкеты (функция sim).
Форма отчета:
1. Описание исходной задачи.
2. Описание архитектуры сети с указанием параметров.
3. Листинг программы с комментариями.
4. Результаты обучения.
5. Обоснование правильности определения параметров сети.
3.5. ЛАБОРАТОРНАЯ РАБОТА № 3.
АППРОКСИМАЦИЯ ЭКСПЕРИМЕНТАЛЬНЫХ ДАННЫХ
С ИСПОЛЬЗОВАНИЕМ РБФ-СЕТИ
Цель работы: построение, обучение и использование нейронной
РБФ-сети для описания свойств транзисторов интегральных схем.
Радиальные базисные нейронные сети эффективны тогда, когда
имеется большое количество обучающих векторов.
Для создания сетей, используемых при аппроксимации
экспериментальных данных, в пакете NNT имеются функции:
net=newrbe(P,T,SPREAD) – для радиальной базисной сети с
нулевой ошибкой, число нейронов радиального слоя которой совпадает
с числом образов входа. Входными аргументами являются массивы
входных векторов P и целей T, а также параметр влияния SPREAD,
57
значение которого устанавливается тем большее, чем больший диапазон
входных значений должен быть принят во внимание;
net=newrb(P,T,GOAL,SPREAD) – для радиальной базисной сети
с аналогичными входными аргументами и параметром GOAL,
допустимой среднеквадратичной ошибкой сети;
net=newgrnn(P,T) – для обобщенно-регрессионной сети;
net=newpnn(P,T) – для вероятностной сети.
Количество нейронов скрытого слоя после задания входных
аргументов можно вывести на экран, если использовать операторы:
net=newrb(P,T,GOAL,SPREAD);
disp(net.layers{1}.size)
Число входов нейронной сети определяется числом независимых
переменных. Выходом сети, как правило, является скалярная величина –
значение функции. В общем случае входные и выходные величины
могут быть векторными. Если мерой отклонения служит среднеквадратичная ошибка, то полученная аналитическая зависимость
называется линией регрессии.
Рассмотрим пример программы с комментариями, обеспечивающей
создание, обучение и моделирование радиальной базисной сети для
данных, аналогичных вариантам заданий, приведенным далее.
spread_constant = 50;
error_goal = 0.02;
P = [-100 -100 -100 -100 -100 -80 -80 -80 -80 -80 -60 -60 -60 -60 -60
-40 -40 -40 -40 -40 -20 -20 -20 -20 -20, 20 50 100 150 200 20 50 100 150
200 20 50 100 150 200 20 50 100 150 200 20 50 100 150 200];
T = [20.857 42.286 65.71 80.285 90.428 23.428 48.285 74.428 90.857
102.714 26 53.429 82.714 101.142 114 28.571 58.714 90.857 111.286
125.571 25.281 63.714 98.714 120.571 136.142];
net = newrb(P,T,error_goal,spread_constant);
disp(net.LW{2}); disp(net.b{2}); %Коэффициенты и смещение
temper= -100:5:-20; ibaza = 20:10:200;
for i =1:length(temper)
for j = 1:length(ibaza)
X = [temper(i) ibaza(j)]';
Y(i,j) = sim(net,X);
end;
end;
mesh(ibaza,temper,Y); %Вывод на экран поверхности
58
Варианты заданий [10].
Дано m измерений тока коллектора Iк транзистора интегральной
схемы при n фиксированных температурах в зависимости от изменения
тока базы Iб в заданных пределах. Построить математическую модель
I
коэффициента передачи транзистора интегральной схемы   к ,
Iб
определяющего его усилительные свойства, найдя зависимость Iк= f (Iб, Т).
m
Iб, мка
1
Iк, мка
2
Вариант 1, n = 5, m = 8
3
4
5
6
Т = -100 С
30
20
26
27
72
53
65
66
133
104
122
121
181
14 9
168
165
219
188
206
200
Т = -80С
20
67
24
32
22
29
30
50
110
59
79
58
71
72
100
166
112
145
113
134
132
150
210
155
198
160
183
179
200
246
191
240
201
226
217
Т = -60 С
20
72
27
36
24
32
31
50
119
67
87
62
78
77
100
182
127
159
120
146
141
150
231
176
216
170
202
192
200
271
216
262
214
247
233
Т = -40 С
20
76
31
38
26
34
34
50
128
76
93
67
84
82
100
198
142
170
129
156
149
150
253
196
230
183
216
203
200
297
241
279
228
264
246
Т = -20 С
20
80
34
41
28
37
36
50
135
83
98
72
89
87
100
210
154
179
138
166
159
150
269
213
243
194
229
215
200
317
261
294
243
280
261
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 20 мка,
Iб+ = 200 мка.
20
50
100
150
200
61
98
147
187
214
20
50
95
131
161
59
7
8
35
83
151
206
250
27
67
126
173
212
38
90
164
223
270
30
75
136
187
229
41
98
178
242
293
32
79
147
202
247
44
105
191
258
312
35
85
157
216
263
48
112
202
274
330
37
90
166
228
278
Вариант 2, n = 5, m = 7
m
Iб, мка
1
Iк, мка
2
3
20
50
100
150
200
17
34
52
63
71
17
35
53
66
74
20
50
100
150
200
20
41
63
77
87
20
42
65
80
91
20
50
100
150
200
23
47
73
90
101
23
48
74
91
104
20
50
100
150
200
26
54
84
103
116
26
54
84
104
118
20
50
100
150
200
29
60
93
113
128
29
60
93
115
130
4
Т = -100 С
24
17
49
35
74
64
90
80
101
92
Т = -80 С
27
19
55
42
84
69
102
87
115
100
Т = -60 С
29
26
60
53
93
81
113
98
127
110
Т = -40 С
32
23
65
50
100
81
122
102
137
116
Т = -20 С
34
25
70
54
107
87
131
109
148
125
5
6
21
43
65
79
88
22
44
66
80
90
28
56
86
104
117
23
48
73
88
99
24
48
72
87
98
31
62
95
115
129
21
46
75
94
107
26
52
79
96
107
34
68
104
126
142
28
58
89
108
121
28
56
85
103
116
37
74
113
137
155
30
62
95
116
130
30
60
91
111
124
40
80
122
149
168
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 20 мка,
Iб+ = 200 мка.
60
7
Вариант 3, n = 5, m = 8
m
Iб, мка
1
Iк, мка
2
30
50
100
150
200
173
297
471
514
533
114
205
353
410
435
30
50
100
150
200
199
344
508
550
570
125
221
365
422
448
30
50
100
150
200
223
380
530
571
591
136
237
380
435
460
30
50
100
150
200
254
409
547
587
608
142
246
378
441
466
30
50
100
150
200
273
426
557
597
617
148
154
394
447
473
3
4
Т = -100 С
216
190
364
320
542
457
587
485
610
498
Т = -80 С
218
208
380
343
554
467
601
498
624
512
Т = -60 С
248
223
402
359
559
478
604
508
626
523
Т = -40 С
261
235
419
372
569
485
614
516
636
530
Т = -20 С
273
246
432
382
576
490
620
521
643
536
5
6
7
8
214
362
509
549
567
185
315
453
487
503
211
351
474
503
516
210
348
469
500
515
239
388
524
563
582
201
338
467
501
517
236
375
488
517
529
226
366
479
511
526
253
409
536
573
592
217
358
479
512
528
255
393
498
527
540
243
381
489
521
538
278
427
547
585
604
231
371
488
621
537
268
404
504
533
546
256
393
496
528
544
294
439
554
592
611
243
381
494
527
544
281
413
510
538
552
268
402
502
534
550
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 30 мка,
Iб+ = 200 мка.
61
Вариант 4, n = 5, m = 9
m
Iб, мка
1
Iк, мка
2
3
4
30
50
100
150
200
23
35
57
72
82
10
17
33
46
56
15
26
49
65
77
30
50
100
150
200
27
43
70
87
100
11
20
41
57
70
16
29
56
74
86
30
50
100
150
200
32
49
80
101
116
14
24
49
69
84
19
34
64
84
99
30
50
100
150
200
36
56
92
115
133
16
28
57
80
96
21
37
69
92
107
30
50
100
150
200
40
62
102
128
147
18
33
66
91
110
23
40
75
99
116
5
Т = -100 С
24
10
40
18
72
37
94
52
110
63
Т = -80 С
27
13
44
24
79
49
103
68
120
83
Т = -60 С
29
12
48
21
86
42
112
60
130
73
Т = -40 С
31
15
53
27
93
55
121
77
141
94
Т = -20 С
34
16
57
30
100
62
130
86
151
105
6
7
9
33
49
77
92
107
4
10
30
49
65
12
21
42
59
72
33
50
79
99
114
35
53
83
103
116
5
12
34
55
72
14
24
49
68
83
35
54
86
108
124
39
59
92
113
128
6
14
39
61
78
15
27
55
77
93
39
59
95
119
136
41
62
98
121
137
6
15
43
68
88
17
31
63
88
106
41
63
102
128
146
45
67
106
131
148
34
56
95
121
139
19
34
69
96
116
44
68
110
137
158
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 30 мка,
Iб+ = 200 мка.
62
8
Вариант 5, n = 5, m = 7
m
Iб, мка
1
Iк, мка
2
3
10
50
100
150
200
10
35
80
144
195
10
29
55
107
177
10
50
100
150
200
12
40
90
163
228
9
38
110
178
242
10
50
100
150
200
10
41
98
159
239
11
38
72
182
264
10
50
100
150
200
14
44
106
197
277
11
49
94
200
294
10
50
100
150
200
16
54
140
236
304
13
49
155
203
324
4
Т = -100 С
12
13
50
67
132
122
200
181
261
236
Т = -80 С
13
15
61
80
144
151
214
215
280
275
Т = -60 С
16
14
84
87
169
168
242
239
309
305
Т = -40 С
19
18
96
99
189
187
268
264
341
335
Т = -20 С
14
21
95
72
183
191
283
287
365
371
5
6
7
33
119
197
267
8
42
113
177
229
6
23
52
127
191
10
37
104
155
249
8
48
123
191
256
8
25
65
149
222
14
50
146
234
314
13
63
146
217
280
11
33
110
186
254
15
67
129
244
343
13
63
146
227
300
13
41
122
210
287
16
53
102
242
372
12
63
78
175
323
14
41
141
234
315
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 10 мка,
Iб+ = 200 мка.
63
7
Вариант 6, n = 2, m = 10
m
1
Iб, мка Iк, мка
2
3
30
50
100
150
200
311
453
570
611
633
351
484
583
619
639
274
403
509
543
560
30
50
100
150
200
332
448
549
592
617
313
392
468
500
519
265
363
458
496
518
4
5
Т = 25 С
306
274
456
400
585
500
630
532
654
549
Т =125 С
317
283
438
389
551
485
597
522
623
542
6
7
8
9
10
328
462
566
604
625
283
409
509
543
560
302
423
514
545
561
303
423
514
544
559
293
420
522
556
575
345
456
555
496
621
298
404
501
539
560
317
421
512
547
568
304
402
490
524
543
306
413
509
548
571
Для построения математической модели выбрать уровни:
Т- = 25 С,
Т+ = 125 С;
Iб- = 30 мка,
Iб+ = 200 мка.
Вариант 7, n = 2, m = 8
M
Iб, мка
30
50
100
150
200
30
50
100
150
200
1
Iк, мка
173
297
471
514
533
273
426
557
597
617
2
3
4
5
6
7
8
114
205
353
410
435
Т = -100 С
216
190
364
320
542
457
587
485
610
498
214
362
509
549
567
185
315
453
487
503
211
351
474
503
516
210
348
469
500
515
148
254
394
447
473
Т = -20 С
273
246
432
382
576
490
620
521
643
536
294
439
554
592
611
243
381
494
527
544
281
413
510
536
552
268
402
502
534
550
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 30 мка,
Iб+ = 200 мка.
64
Вариант 8, n = 2, m = 9
m
1
Iб, мка Iк, мка
2
3
4
30
50
100
150
200
49
76
126
159
183
26
45
88
121
145
46
75
130
168
194
30
50
100
150
200
71
109
177
222
254
44
75
137
182
214
69
109
181
230
264
5
Т = 25 С
22
51
41
79
85
129
116
163
138
188
Т =125 С
45
70
77
107
142
174
186
219
219
252
6
7
8
9
55
82
129
160
182
53
80
127
158
179
27
49
96
132
157
54
82
132
166
190
73
109
172
213
241
70
105
167
207
235
53
91
163
213
247
73
113
182
227
260
8
9
Для построения математической модели выбрать уровни:
Т- = 25С,
Т+ = 125С;
Iб- = 30 мка,
Iб+ = 200 мка.
Вариант 9, n = 2, m = 9
m
1
Iб, мка Iк, мка
2
3
4
30
50
100
150
200
23
35
57
72
82
10
17
33
46
56
15
26
49
65
77
30
50
100
150
200
40
62
102
128
147
18
33
66
91
110
23
40
75
99
116
5
Т =- 100 С
24
10
40
18
72
37
94
52
110
63
Т =-20 С
34
16
57
30
100
62
130
86
151
105
6
7
33
49
77
94
107
4
10
30
49
65
12
21
42
59
72
33
50
79
99
114
45
67
106
131
148
34
56
95
121
139
19
34
69
96
116
44
68
110
137
158
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 30 мка,
Iб+ = 200 мка.
65
Вариант 10, n = 2, m = 7
m
Iб, мка
1
Iк, мка
2
3
10
50
100
150
200
11
41
75
200
381
15
75
207
314
397
10
50
100
150
200
20
143
315
425
261
21
158
319
411
439
4
5
Т = 25 С
24
21
138
60
262
226
365
362
416
451
Т = 125 С
41
23
210
148
364
364
418
458
437
484
6
7
23
96
251
366
423
20
97
207
309
390
16
49
166
299
391
27
168
365
427
448
25
137
315
419
451
27
127
322
407
431
Для построения математической модели выбрать уровни:
Т- = 25 С,
Т+ = 125 С;
Iб- = 10 мка,
Iб+ = 200 мка.
Вариант 11, n = 2, m = 7
m
Iб, мка
1
Iк, мка
2
3
10
50
100
150
200
10
35
80
144
195
10
29
55
107
177
10
50
100
150
200
16
54
140
236
304
13
49
155
203
324
4
Т = -100 С
12
13
50
67
132
122
200
181
261
236
Т = -20 С
14
21
95
72
183
191
283
287
365
371
5
6
7
33
119
197
267
8
42
113
177
229
6
23
52
127
191
16
53
102
242
372
12
63
78
175
323
14
41
141
234
315
Для построения математической модели выбрать уровни:
Т- = -100 С,
Т+ = -20 С;
Iб- = 10 мка,
Iб+ = 200 мка.
66
7
Порядок выполнения работы:
1. Изучить с помощью help функции newrb, newgrnn, newpnn, sim;
2. Ознакомиться с demorb1, demorb3, demorb4 в MATLAB\
toolbox\nnet\nndemos или MATLAB\toolbox\nnet\nnet.
3. Построить и сравнить нейронные сети, аппроксимирующие
функцию двух переменных, значения которой в обучающих
наборах вычисляются как средние значения по параллельным
измерениям, используя встроенные в NNT функции newrb,
newgrnn, newpnn.
4. Проанализировать работу сетей на контрольном множестве при
различной величине параметра влияния spread и средней
квадратичной погрешности goal.
1.
2.
3.
4.
Форма отчета:
Описание архитектуры сетей с указанием параметров.
Листинги программ с комментариями.
Результаты
аппроксимации
и
обоснование
правильности
определения параметров сети.
Графики поверхностей коэффициента передачи транзистора
интегральной схемы.
3.6. ЛАБОРАТОРНАЯ РАБОТА № 4.
УПРАВЛЕНИЕ ДВИЖЕНИЕМ РОБОТА
ПО ЗАДАННОЙ ТРАЕКТОРИИ
Цель работы: создание, обучение и использование нейронных
сетей для определения траекторий движения при управлении
автономными мобильными объектами.
Одной из областей, где нейронные сети нашли широкое
применение, являются робототехнические системы. С их помощью
может быть сжата и обработана информация от внешних сенсоров
робототехнической системы, получена общая карта местности и
определен оптимальный путь для перемещения в заданное место при
перевозке грузов или патрулировании заданной зоны. Информация,
полученная от видеокамеры, не уступает по своей полноте данным
сенсорных датчиков, что позволяет решать и более сложные задачи,
как, например, исследование окружающей местности или определение
оптимального
маршрута
движения
транспортного
средства.
Видеоинформация представляется
бинарной матрицей заданной
размерности. Процесс преобразования изображения отражен на рис. 24.
67
а
б
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
в
Р и с . 24. Этапы преобразования изображения траектории от видеокамеры:
а – исходное видеоизображение траектории, б – проекция изображения на
матрицу размерностью 9×9, в – бинарный массив.
В общем случае блок определения направления движения
представляет собой многослойную нейронную сеть, задача которой
состоит в обеспечении устойчивого управления роботом на
всевозможных траекториях движения. Объект должен правильно
проходить и те участки траектории, с формой которых он не был
знаком на этапе обучения. Для формирования направления движения
робота используется двухслойная нейронная сеть с прямыми связями.
Входной слой сети содержит количество нейронов, равное
количеству элементов бинарной матрицы. Каждому нейрону выходного
слоя можно поставить в соответствие определенное направление
движения из интервала [60 , 60 ] при шаге дискретизации 5 (тогда их
общее количество равно 25 ). Считается, что поле зрения человека
характеризуется углом в 120 , поэтому интервал [60 , 60 ] является
наилучшим приближением к реальным возможностям человека.
Диапазон обозрения зависит от технических характеристик системы и от
предъявляемых к ней требований. Так в работе[12], например,
использован угол зрения в интервале [45 , 45 ] с шагом
дискретизации 5 . Все нейроны выходного слоя, как правило, имеют
логистические функции активации, поэтому для каждого момента
времени на выходе сети лишь один нейрон имеет значение, близкое к 1,
а остальные – 0. Тот нейрон, выход которого максимальный, и
определяет текущее направление движения объекта.
Промежуточный слой нейронной сети состоит из 17 нейронных
элементов. Такое количество нейронов скрытого слоя получено в
68
результате анализа работы сети с различным количеством нейронов
скрытого слоя студентом кафедры интеллектуальных систем Д. М.
Медведевым. Данный слой является важным для нейросетевой модели
блока управления роботом, поэтому даже незначительное
варьирование количества его элементов отражаются на работе всей
сети. Для обучения нейронной сети составлен набор тренировочных
пар из 120 матриц входных данных размерностью 9  9 и 120
соответствующих им векторов выхода размерностью 1  25 . Данное
обучающее множество включает в себя наиболее типичные участки
траекторий и рекомендуемые направления робота. Все используемые
обучающие наборы можно разделить на два класса. Первый класс
представляет собой фрагменты прямых линий, наблюдаемых под
различными углами и при различном положении геометрического
центра робота относительно траектории. Ко второму классу относятся
криволинейные участки траекторий. Количество тренировочных
наборов для каждого класса составляет соответственно 70 образов для
первого и 50 – для второго.
Нейронная сеть обучается с помощью процедур-функций,
встроенных в пакет NNT системы MATLAB. При этом рациональнее
всего использовать групповое представление данных с числом шагов
по времени, равным единице (статическая сеть). Последовательное
представление данных cell array позволяет рассматривать каждую
строку массива ячеек как временную последовательность.
Групповое представление данных можно использовать только
при адаптации статических сетей. При переходе от последовательного
представления данных cell array к формату группового представления
double array массив ячеек, содержащий, например, Ni числовых
массивов размера Ri×Q преобразуется в единственный числовой
Ni
массив размера  Ri  Q .
i 1
Непосредственное обучение можно производить с помощью
функции train, которая модифицирует параметры сети только после
того, как использовано все обучающее множество, и градиенты,
рассчитанные для каждого элемента множества, суммируются при
определении приращения настраиваемых параметров. Минимального
значения функционала ошибки можно достичь с помощью двух
модифицированных методов обратного распространения ошибки:
алгоритма градиентного спуска с выбором параметра скорости
69
настройки (функция обучения ‘traingda’) и алгоритма градиентного
спуска с возмущением и адаптивной скоростью обучения (функция
обучения ‘traingdx’).
Критерием окончания процедуры обучения сети является
достижение определенного значения суммарной среднеквадратичной
ошибки (sse) сети. Окончание обучения может произойти также при
достижении заданного количества циклов (эпох) обучения. Алгоритм
traingdx обеспечивает более быструю сходимость, т. к. в нем
используются два параметра: возмущение и скорость обучения. Если
значение параметра возмущения равно 0, то изменение весов
определяется только градиентом, если значение этого параметра равно
1, то текущее приращение совпадает с предшествующим как по
величине, так и по направлению. Параметры возмущение и скорость
обучения независимы, поэтому существует определенная трудность в
подборе их оптимальных значений для обучения сети. В процедурефункции traingda регулирование скорости сходимости осуществляется
только за счет изменения параметра скорости обучения, что
обуславливает ее меньшую гибкость.
Созданная сеть после обучения на представленных ей примерах
приобретает способность к обобщению. Так, при предъявлении
тестовых наборов на выходе сети можно наблюдать результат,
отличающийся от желаемого выхода на ±5º, что является допустимой
погрешностью. Бинарные матрицы, представляющие входную
информацию, могут отражать лишь небольшой участок траектории,
поэтому такой подход всегда является вероятностным. Кроме этого
следует отметить такое свойство созданной нейронной сети, как
возможность
прогнозирования
продолжения
траектории,
определяющего дальнейшее направление движения объекта.
Структура, алгоритмы обучения или адаптации созданной нейронной
сети могут быть перенесены на различные системы, которые должны
определять оптимальное направление движения мобильных объектов.
Пример программы, обеспечивающей создание, обучение,
тестирование
и моделирование нейронной
сети
прямого
распространения сигнала для управления мобильным объектом в
системе MATLAB может иметь вид:
70
% Создание массивов line_trajectories и curve_trajectories входных параметров
% для наборов, содержащих соответственно фрагменты прямых и кривых
% траекторий. line_targets и curve_targets – массивы целей.
[line_trajectories,line_targets] = lineset;
[curve_trajectories,curve_targets] = curveset;
% Определение вспомогательных параметров и количества
%нейронов в выходном слое.
[R,Q] = size(line_trajectories);
[OutputNeurons,Q] = size(line_targets);
% Определение количества нейронов в скрытом слое.
HiddenNeurons = 17;
% Выбор максимальных и минимальных значений среди всех
% тренировочных наборов
for mm1=1:size(line_trajectories)
mm{mm1,1}=min(line_trajectories(:,1));
mm{mm1,2}=max(line_trajectories(:,1));
end;
mmm= [ [mm{:,1}]; [mm{:,2}] ]';
% Проектирование двухслойной нейронной сети с логистическими
% функциями активации и процедурой обучения traingdx.
net = newff(mmm,[HiddenNeurons OutputNeurons],{'logsig' 'logsig'},'traingdx');
clear mm;
% Задание начальных весов и смещений для скрытого слоя.
net.LW{2,1} = net.LW{2,1}*0.01; net.b{2} = net.b{2}*0.01;
% Применение суммарной среднеквадратичной ошибки в качестве оценки
% качества обучения.
net.performFcn = 'sse';
% Критерий прекращения процедуры обучения
net.trainParam.goal = 1e-2;
% Частота вывода на экран результатов обучения.
71
net.trainParam.show = 50;
% Максимальное количество циклов обучения.
net.trainParam.epochs = 50000;
% Значение импульса или параметра возмущения.
net.trainParam.mc = 0.95;
% Значение параметра скорости обучения.
net.trainParam.lr = 0. 02;
% Отсутствие минимальной границы у градиента функционала ошибки.
net.trainParam.min_grad = NaN;
% Объединение всех имеющихся тренировочных наборов (формирование
% обучающей выборки).
P = [line_trajectories curve_trajectories ];
T = [line_targets curve_targets ];
% Запуск процедуры обучения сети
[net,tr] = train(net,P,T);
% Запуск процедуры, выполняющей проверку работоспособности сети
% на примерах, не входящих в обучающую выборку.
Y = sim(net,P);
% Определение ошибки между выходами сети и целевыми векторами.
EE=T-Y;
% Подсчет среднего арифметического полученных ранее ошибок.
perf=mse(EE);
% Файлы lineset.m и curveset.m должны быть доступны системе MATLAB
72
Порядок выполнения работы:
1. Изучить M – программу создания, обучения и моделирования
нейронной сети для управления мобильным объектом,
движущимся по некоторой траектории. Используя систему
CaptureTV и встроенную функцию bmpread (‘name’) системы
MATLAB (name – имя файла) получить несколько модельных
фрагментов траекторий, изображений размером 9×9.
2. Построить нейронную сеть прямой передачи сигнала для
распознавания изображений, фрагментов траекторий движения
автономного мобильного объекта и определения угла его поворота
на следующем шаге перемещения.
3. Обучить сеть, используя файлы lineset.m и curveset.m. Проверить
работу сети на контрольном множестве и полученных фрагментах
траекторий.
Форма отчета:
1.
2.
3.
4.
Описание исходной задачи.
Описание архитектуры сети с указанием параметров.
Листинг программы с комментариями.
Результаты обучения и обоснование правильности
параметров сети и полученных направлений движения.
73
выбора
ЛИТЕРАТУРА
Корнеев В. В. Параллельные вычислительные системы. М.:
Нолидж, 1999.
2. Головко В. А. Нейроинтеллект: теория и применение. Кн. 1, 2.
Брест, 1999.
3. Горбань А. Н., Россиев Д. А. Нейронные сети на персональном
компьютере. Новосибирск: Наука, 1996.
4. Нейрокомпьютеры и интеллектуальные роботы / Под ред.
Н. М. Амосова Киев: Наукова думка, 1991.
5. Уоссермен Ф. Нейрокомпьютерная техника. Теория и практика.
М.: Мир, 1992.
6. Прикладная статистика. Классификация и снижение размерности /
Под ред. С. А. Айвазяна М.: Финансы и статистика, 1989. С. 536 –
553.
7. Потемкин В. Г. MATLAB. Справочное пособие. М.: ДиалогМИФИ, 1997.
8. Нейронные сети Statistica Neural Networks. М.: Телеком, 2000.
9. Шахнович И. Отечественный процессор цифровой обработки
сигналов NM6403 – чудо свершилось. Электроника: Наука,
технология, бизнес. № 2. 1999. С. 30 – 33.
10. Калацкая Л. В., Евдасева Г. Ф. Методические указания и задания
по спецкурсу «Специальное программное обеспечение
автоматизированных систем научных исследований». Мн.,
ротапринт БГУ. 1983. С. 64 – 76.
11. Медведев В. С., Потемкин В. Г. Нейронные сети. MATLAB 6. М.:
Диалог-МИФИ, 2002. 496 с.
12. Головко В. А., Игнатюк О. Н. Использование НС технологий для
автономного управления мобильным роботом // Вестн. Брестского
ГТУ. 2000. № 4. С. 64 – 68.
1.
74
СОДЕРЖАНИЕ
ВВЕДЕНИЕ
3
1. ИСКУСТВЕННЫЕ НЕЙРОННЫЕ СЕТИ
5
1.1. Нейронный элемент
1.2. Функции активации нейронных элементов
1.3. Однослойные нейронные сети
1.4. Классификация нейронных сетей
5
7
13
18
2. АЛГОРИТМЫ ОБУЧЕНИЯ НЕЙРОННЫХ СЕТЕЙ
21
2.1. Правила обучения Хебба
2.2. Правила обучения персептрона
2.3. Правило обучения Видроу – Хоффа
2.4. Метод обратного распространения ошибки
2.5. Многослойные сети с обратным
распространением информации
2.6. Обобщенное правило обучения Хебба
2.7. Радиальные базисные сети и их обучение
23
26
27
28
3. ПАКЕТ NNT СИСТЕМЫ MATLAB
И РЕШЕНИЕ ПРИКЛАДНЫХ ЗАДАЧ
С ПРИМЕНЕНИЕМ НЕЙРОННЫХ СЕТЕЙ
3.1. Характеристика пакета NNT
3.2. Вычислительная модель нейронной сети
3.3. Лабораторная работа № 1.
Распознавание символов
3.4. Лабораторная работа № 2.
Прогнозирование результатов выборов
(Задача классификации)
3.5. Лабораторная работа № 3.
Аппроксимация экспериментальных данных
с использованием РБФ-сети
3.6. Лабораторная работа № 4.
Управление движением робота
по заданной траектории
ЛИТЕРАТУРА
75
31
35
36
39
39
41
47
55
57
67
74
Download