БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ФАКУЛЬТЕТ РАДИОФИЗИКИ И ЭЛЕКТРОНИКИ Кафедра интеллектуальных систем ОРГАНИЗАЦИЯ И ОБУЧЕНИЕ ИСКУССТВЕННЫХ НЕЙРОННЫХ СЕТЕЙ УЧЕБНОЕ ПОСОБИЕ ДЛЯ СТУДЕНТОВ СПЕЦИАЛЬНОСТЕЙ Н.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=XW. Взвешенная сумма 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( wixi). 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 – матрица размерности np, 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) нейронами в выходном (по одному на букву). Каждый символ представляется шаблоном размера 75, соответствующим пиксельной градации букв. Входной вектор соответствует набору признаков, выходной – классу образов, а скрытый слой используется для представления области знаний. 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, appcr1MATLAB\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