Matlab для DSP. Нейронные сети: графический интерфейс пользователя

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

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 23.01.2014
Размер файла 2,1 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

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

Размещено на http://www.allbest.ru/

Статья

Matlab для DSP. Нейронные сети: графический интерфейс пользователя

Введение

Нейронные сети (NN - Neural Networks) широко используются для решения разнообразных задач. Среди развивающихся областей применения NN - обработка аналоговых и цифровых сигналов, синтез и идентификация электронных цепей и систем. Основы теории и технологии применения NN широко представлены в пакете MATLAB. В этой связи особо следует отметить последнюю версию пакета - MATLAB 6.0, где впервые представлен GUI (Graphical User Interface - графический интерфейс пользователя) для NN - NNTool.

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

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

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

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

После того как структура NN выбрана, должны быть установлены ее параметры. Выбор структуры NN и типов нейронов - самостоятельный и весьма непростой вопрос, который здесь мы обсуждать не будем. Что же касается значений параметров, то, как правило, они определяются в процессе решения некоторой оптимизационной задачи. Эта процедура в теории NN называется обучением.

Графический интерфейс пользователя NNTool позволяет выбирать структуры NN из обширного перечня и предоставляет множество алгоритмов обучения для каждого типа сети.

В статье рассмотрены следующие вопросы, относящиеся к работе с NNTool:

· назначение графических управляющих элементов;

· подготовка данных;

· создание нейронной сети;

· обучение сети;

· прогон сети.

Все этапы работы с сетями проиллюстрированы примерами решения простых задач. Как и в предыдущих статьях проекта "MATLAB для DSP", предполагается, что читатель знаком с основами теории NN и ее терминологией.

сеть нейронная элемент управляющий

1. Управляющие элементы NNTool

Чтобы запустить NNTool, необходимо выполнить одноименную команду в командном окне MATLAB:

>> nntool

после этого появится главное окно NNTool, именуемое "Окном управле-ния сетями и данными" (Network/Data Manager) (рис. 1).

Рисунок 1 Главное окно NNTool

Панель "Сети и данные" (Networks and Data) имеет функциональные клавиши со следующими назначениями:

· Помощь (Help)- краткое описание управляющих элементов данного окна;

· Новые данные (New Data-)- вызов окна, позволяющего создавать новые наборы данных;

· Новая сеть (New Network-)- вызов окна создания новой сети;

· Импорт (Import-)- импорт данных из рабочего пространства MATLAB в пространство переменных NNTool;

· Экспорт (Export-)- экспорт данных из пространства переменных NNTool в рабочее пространство MATLAB;

· Вид (View)- графическое отображение архитектуры выбранной сети;

· Удалить (Delete)- удаление выбранного объекта.

На панели "Только сети" (Networks only) расположены клавиши для работы исключительно с сетями. При выборе указателем мыши объекта любого другого типа, эти кнопки становятся неактивными.

При работе с NNTool важно помнить, что клавиши View, Delete, Initialize, Simulate, Train и Adapt (изображены на рис. 1 как неактивные) действуют применительно к тому объекту, который отмечен в данный момент выделением. Если такого объекта нет, либо над выделенным объектом невозможно произвести указанное действие, соответствующая клавиша неактивна.

Рассмотрим создание нейронной сети с помощью NNTool на примере.

Пример 1

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

Создание сети

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

Итак, перед созданием сети необходимо заготовить набор обучающих и целевых данных. Составим таблицу истинности для логической функции "И", где P1 и Р2 - входы, а А - желаемый выход (табл. 1).

Таблица 1 Таблица истинности логической функции "И"

P1

P2

A

0

0

0

0

1

0

1

0

0

1

1

1

Чтобы задать матрицу, состоящую из четырех векторов-строк, как входную, воспользуемся кнопкой New Data. В появившемся окне следует произвести изменения, показанные на рис. 2, и нажать клавишу "Создать" (Create).

Рисунок 2 Задание входных векторов

После этого в окне управления появится вектор data1 в разделе Inputs. Вектор целей задается схожим образом (рис. 3).

Рисунок 3 Задание целевого вектора

После нажатия на Create в разделе Targets появится вектор target1.

Данные в поле "Значение" (Value) могут быть представлены любым понятным MATLAB выражением. К примеру, предыдущее определение вектора целей можно эквивалентно заменить строкой вида

bitand([0 0 1 1], [0 1 0 1]).

Теперь следует приступить к созданию нейронной сети. Выбираем кнопку New Network и заполняем форму, как показано на рис. 4.

Рисунок 4 Окно "Создание сети"

При этом поля несут следующие смысловые нагрузки:

· Имя сети (Network Name) - это имя объекта создаваемой сети.

· Тип сети (Network Type)- определяет тип сети и в контексте выбранного типа представляет для ввода различные параметры в части окна, расположенной ниже этого пункта. Таким образом, для разных типов сетей окно изменяет свое содержание.

· Входные диапазоны (Input ranges)- матрица с числом строк, равным числу входов сети. Каждая строка представляет собой вектор с двумя элементами: первый - минимальное значение сигнала, которое будет подано на соответствующий вход сети при обучении, второй - максимальное. Для упрощения ввода этих значений предусмотрен выпадающий список "Получить из входа" (Get from input), позволяющий автоматически сформировать необходимые данные, указав имя входной переменной.

· Количество нейронов (Number of neurons)- число нейронов в слое.

· Передаточная функция (Transfer function)- в этом пункте выбирается передаточная функция (функция активации) нейронов.

· Функция обучения (Learning function)- функция, отвечающая за обновление весов и смещений сети в процессе обучения.

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

Рисунок 5 Предварительный просмотр создаваемой сети

Итак, структура сети соответствует нашему заданию. Теперь можно закрыть окно предварительного просмотра, нажав клавишу "Закрыть" (Close), и подтвердить намерение создать сеть, нажав "Создать" (Create) в окне создания сети.

В результате проделанных операций в разделе "Сети" (Networks) главного окна NNTool появится объект с именем network1.

Обучение

Наша цель - построить нейронную сеть, которая выполняет функцию логического "И". Очевидно, нельзя рассчитывать на то, что сразу после этапа создания сети последняя будет обеспечивать правильный результат (правильное соотношение "вход/выход"). Для достижения цели сеть необходимо должным образом обучить, то есть подобрать подходящие значения параметров. В MATLAB реализовано большинство известных алгоритмов обучения нейронных сетей, среди которых представлено два для персептронных сетей рассматриваемого вида. Создавая сеть, мы указали LEARNP в качестве функции, реализующей алгоритм обучения (рис. 4).

Вернемся в главное окно NNTool. На данном этапе интерес представляет нижняя панель "Только сети" (Networks only). Нажатие любой из клавиш на этой панели вызовет окно, на множестве вкладок которого представлены параметры сети, необходимые для ее обучения и прогона, а также отражающие текущее состояние сети. Отметив указателем мыши объект сети network1, вызовем окно управления сетью нажатием кнопки Train. Перед нами возникнет вкладка "Train" окна свойств сети, содержащая, в свою очередь, еще одну панель вкладок (рис. 6). Их главное назначение - управление процессом обучения. На вкладке "Информация обучения" (Training info) требуется указать набор обучающих данных в поле "Входы" (Inputs) и набор целевых данных в поле "Цели" (Targets). Поля "Выходы" (Outputs) и "Ошибки" (Errors) NNTool заполняет автоматически. При этом результаты обучения, к которым относятся выходы и ошибки, будут сохраняться в переменных с указанными именами.

Рисунок 6 Окно параметров сети, открытое на вкладке "обучение" (Train)

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

На вкладке "Параметры обучения" (Training parameters) для нашей сети (рис. 7) можно установить следующие поля:

· Количество эпох (epochs)- определяет число эпох (интервал времени), по прошествии которых обучение будет прекращено.

· Эпохойназывают однократное представление всех обучающих входных данных на входы сети.

· Достижение цели или попадание (goal)- здесь задается абсолютная величина функции ошибки, при которой цель будет считаться достигнутой.

· Период обновления (show)- период обновления графика кривой обучения, выраженный числом эпох.

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

Рисунок 7 Вкладка параметров обучения

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

Следующая вкладка "Необязательная информация" (Optional Info) показана на рис. 8.

Рисунок 8 Вкладка необязательной информации

Рассмотрим вкладку обучения (Train). Чтобы начать обучение, нужно нажать кнопку "Обучить сеть" (Train Network). После этого, если в текущий момент сеть не удовлетворяет ни одному из условий, указанных в разделе параметров обучения (Training Parameters), появится окно, иллюстрирующее динамику целевой функции - кривую обучения. В нашем случае график может выглядеть так, как показано на рис. 9. Кнопкой "Остановить обучение" (Stop Training) можно прекратить этот процесс. Из рисунка видно, что обучение было остановлено, когда функция цели достигла установленной величины (goal = 0).

Рисунок 9 Кривая обучения

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

Итак, алгоритм обучения нашел точное решение задачи. В методических целях убедимся в правильности решения задачи путем прогона обученной сети. Для этого необходимо открыть вкладку "Прогон" (Simulate) и выбрать в выпадающем списке "Входы" (Inputs) заготовленные данные. В данной задаче естественно использовать тот же набор данных, что и при обучении data1. При желании можно установить флажок "Задать цели" (Supply Targets). Тогда в результате прогона дополнительно будут рассчитаны значения ошибки. Нажатие кнопки "Прогон сети" (Simulate Network) запишет результаты прогона в переменную, имя которой указано в поле "Выходы" (Outputs). Теперь можно вернуться в основное окно NNTool и, выделив мышью выходную переменную network1, нажать кнопку "Просмотр" (View). Содержимое окна просмотра совпадает со значением вектора целей - сеть работает правильно.

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

Вернемся к вкладке "Необязательная информация" (Optional Info) (рис. 8). Чтобы понять, какой цели служат представленные здесь параметры, необходимо обсудить два понятия: переобучение и обобщение.

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

Для предупреждения переобучения применяется следующая техника. Данные делятся на два множества: обучающее (Training Data) и контрольное (Validation Data). Контрольное множество в обучении не используется. В начале работы ошибки сети на обучающем и контрольном множествах будут одинаковыми. По мере того, как сеть обучается, ошибка обучения убывает, и, пока обучение уменьшает действительную функцию ошибки, ошибка на контрольном множестве также будет убывать. Если же контрольная ошибка перестала убывать или даже стала расти, это указывает на то, что обучение следует закончить. Остановка на этом этапе называется ранней остановкой (Early stopping).

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

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

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

Обучение сети можно проводить в разных режимах. В связи с этим, в NNTool предусмотрено две вкладки, представляющие обучающие функции: рассмотренная ранее вкладка Train и "Адаптация" (Adapt). Adapt вмещает вкладку информация адаптации (Adap-tion Info), на которой содержатся поля, схожие по своему назначению с полями вкладки Training Info и выполняющие те же функции и вкладку параметры адаптации (Adaption Parameters). Последняя содержит единственное поле "Проходы" (passes). Значение, указанное в этом поле, определяет, сколько раз все входные векторы будут представлены сети в процессе обучения.

Параметры вкладок "Train" и "Adapt" в MATLAB используются функциями train и adapt, соответственно. Подробная справочная информация по этим функциям приведена в [1].

2. Разделение линейно-неотделимых множеств

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

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

Пример 2

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

Рассмотрим таблицу истинности этой функции (табл. 2).

Таблица 2 Таблица истинности логической функции "исключающее ИЛИ"

P1

P2

A

0

0

0

0

1

1

1

0

1

1

1

0

Что же подразумевается под "линейной неотделимостью" множеств? Чтобы ответить на этот вопрос, изобразим множество выходных значений в пространстве входов (рис. 10), следуя следующему правилу: сочетания входов P1 и P2, при которых выход A обращается в нуль, обозначаются кружком, а те, при которых A обращается в единицу - крестиком.

Рисунок 10 Состояния логического элемента "исключающее ИЛИ"

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

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

Выберем персептрон с двумя нейронами скрытого слоя, у которых функции активации сигмоидные, и одним выходным нейроном с линейной функцией активации (рис. 11). В качестве функции ошибки укажем MSE (Mean Square Error - средний квадрат ошибки). Напомним, что функция ошибки устанавливается в окне "Создание сети" после выбора типа сети.

Рисунок 11 Сеть для решения задачи "исключающего ИЛИ"

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

Рисунок 12 Кривая обучения в задаче "исключающего ИЛИ"

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

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

Задача синтеза элемента "исключающего ИЛИ" является также примером задачи классификации. Она отражает общий подход к решению подобного рода задач.

3. Задача аппроксимации

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

Пример 3.

Необходимо выполнить аппроксимацию функции следующего вида

где x € 1чN, а N - число точек функции.

Заготовим целевые данные, введя в поле "Значение" (Value) окна создания новых данных выражение:

sin(5*pi*[1:100]/100+sin(7*pi*[1:100]/100)).

Эта кривая представляет собой отрезок периодического колебания с частотой 5p/N, модулированного по фазе гармоническим колебанием с частотой 7N (рис. 15).

Теперь заготовим набор обучающих данных (1, 2, 3, -, 100), задав их следующим выражением: 1:100.

Выберем персептрон (Feed-Forward Back Propa-gation) c тринадцатью сигмоидными (TANSIG) нейронами скрытого слоя и одним линейным (PURELIN) нейроном выходного слоя. Обучение будем производить, используя алгоритм Левенберга-Маркардта (Levenberg-Mar-quardt), который реализует функция TRAINLM. Функция ошибки - MSE. Полученная сеть имеет вид, изображенный на рис. 13.

Рисунок 13 Архитектура сети для решения задачи аппроксимации

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

Рисунок 14 Кривая обучения в задаче аппроксимации

Рис. 15 иллюстрирует разницу между целевыми данными и полученной аппроксимирующей кривой.

Рисунок 15 Красная кривая - целевые данные, синяя кривая - аппроксимирующая функция

Из рис. 14 и 15 видно, насколько уменьшилась ошибка аппроксимации за 100 эпох обучения. Форма кривой обучения на последних эпохах говорит также о том, что точность приближения может быть повышена.

4. Распознавание образов

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

Пример 4.

Необходимо построить и обучить нейронную сеть для решения задачи распознавания цифр.

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

Система, которую предстоит синтезировать с помощью нейронной сети, будет обучена воспринимать символы, близкие к шаблонным (рис. 16).

Рисунок 16 Монохромное изображение исходных данных

Наборы исходных данных (не путать с целевыми данными) можно как загружать из файлов изображений, так и создавать непосредственно в MATLAB. Рис. 17 иллюстрирует содержимое массива исходных данных.

Рисунок 17 Графическое представление массива исходных данных

Получим обучающие данные, наложив шум на набор исходных данных (рис. 18).

Рисунок 18 Обучающие данные

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

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

Для решения этой задачи выбрана сеть Feed-forward backprop с пятью сигмоидными нейронами первого слоя и пятью линейными нейронами второго слоя. Алгоритм обучения - Левенберга-Маркардта. С такой конфигурацией сеть после восьми эпох обучения дала ошибку порядка 10-30.

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

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

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

5. Импорт-экспорт данных

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

Эти задачи решают средства импорта-экспорта и загрузки-сохранения данных. Доступ к ним осуществляется через главное окно NNTool (рис. 1) посредством кнопок Import и Export.

Импорт

Источником служит переменная в рабочем пространстве MATLAB, а пунктом назначения - переменная в рабочем пространстве NNTool. Нажав кнопку Import, попадаем в окно "Импорта-за-грузки данных" (Import or Load to Network/Data Manager). По умолчанию здесь установлена опция загрузки из рабочего пространства MATLAB, поэтому в центре окна появляется список принадлежащих ему переменных. Выбрав мышью нужную переменную в поле "Выбор переменной" (Select a Variable), - ей можно задать произвольное имя в поле "Имя" (Name), под которым она будет скопирована в NNTool. Когда переменная выделена, NNTool анализирует ее тип и делает доступными для выбора те "Категории данных" (Import As), которые поддерживаются. Указав одну из них, следует нажать кнопку "Импортировать" (Import), чтобы завершить копирование. После того, как все действия успешно проведены, имя импортируемой переменной появится в одном из списков главного окна NNTool.

Загрузка из файла

Здесь источник - файл. При этом важно, чтобы его формат поддерживался NNTool. В подходящем формате хранятся так называемые MAT-файлы. Они содержат бинарные данные и позволяют MATLAB сохранять переменные любых поддерживаемых типов и размерностей. Такие файлы могут создаваться, например, в процессе работы с NNTool. Чтобы загрузить переменные из MAT-файла в NNTool, необходимо открыть окно импорта, нажав кнопку "Import" главного окна NNTool. Затем следует отметить опцию "Загрузить из файла" (Load from disk file) и, нажав "Обзор" (Browse), открыть файл с данными, хранящимися в формате MAT-файлов. Чаще всего, это файлы с расширением MAT. В результате, список в окне импорта заполнится именами переменных, сохраненных в указанном MAT-файле. Дальнейшая последовательность действий полностью совпадает с описанной в пункте Импорт (рис. 19).

Рисунок 19 Окно импорта и загрузки данных из MAT-файла

Экспорт

Эта функция копирует заданные переменные из NNTool в рабочее пространство MATLAB. Она доступна по нажатию кнопки Export главного окна NNTool. В окне экспорта единым списком перечислены переменные всех категорий, представленных в NNTool. Здесь необходимо выделить те из них, которые подлежат экспорту, и нажать Export. Теперь выделенные переменные скопированы в рабочее пространство MATLAB.

Сохранение в файле

В целом, процедура схожа с экспортом, за одним исключением: отметив переменные, следует нажать кнопку "Сохранить" (Save). Тогда появится окно, в котором можно задать имя файла. Его можно указать без расширения - по умолчанию NNTool прикрепит расширение MAT. Это связано с тем, что NNTool сохраняет данные только в формате MAT-файлов (рис. 20).

Рисунок 20 Окно экспорта и сохранения данных в MAT-файле

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

6. Использование нейронных сетей

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

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

после чего ИНС посылает у в качестве своего выходного сигнала другим нейронам или устройствам. Функцию ѓ называют функцией активации. Очень часто ѓ является "сигмоидной" функцией вида

ѓ = 1/(1 + e-ax)

или

ѓ = tanh(ax)

В предельном случае а>?, ѓ становится пороговой функцией.

Выходом нейросети служат состояния нейронов (всех или некоторых) по окончании всех промежуточных расчетов. Таким образом, основные черты нейронной сети следующие:

· Это устройство для обработки информации, получающее на входе сигнал Х (как правило, вектор) и вырабатывающее выходной сигнал Y = F(Х) (Y тоже может быть вектором).

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

· НС способна обучаться. Обычно под обучением понимают процесс подборки весов ij для того, чтобы добиться желаемых свойств отображения F.

7. Решение систем обыкновенных дифференциальных уравнений в нейросетевом базисе

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

Пусть задана система n дифференциальных уравнений 1-го порядка

Y (x) = A Y(x),     (1)

где А - квадратная матрица постоянных коэффициентов размера nЧn; Y - n - мерный вектор искомой функции аргумента х.

Для метода Рунге-Кутты 1-го порядка (метод прямоугольников) решение системы (1) можно представить в виде:

Yt+1 = Yt + hAYt = (E + hA)Yt = Bt Yt,     (2)

где Е - единичная матрица размером nЧn.

Элементы матрицы В есть первые два члена разложения матричной экспоненты в степенной ряд.

Для системы двух уравнений выражение (2) принимает вид:

y1t+1 = b11y1t + b12y2t = (1 + ha11)y1t + ha12y2t,

y2t+1 = b21y1t + b22y2t = ha21y1t + (1 + ha22)y2t.

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

Рис. 1 Схема соединения нейронов, реализующая решение системы ОДУ в нейросетевом базисе методом Рунге-Кутты 1-го порядка

Здесь Ne1 и Ne2 - нейроны, участвующие в операции интегрирования. Выходом сети являются сигналы y1 и y2. Входные сигналы g10 и g20 вводят в нейроны начальное возбуждение, эквивалентное начальным условиям решения системы уравнений. Функция активации у обоих нейронов - симметричная линейная функция.

8. Пример разработки НС решения ОДУ в системе Simulink

Разработаем НС для решения системы уравнений

y'1 = y2,     (3)y'2 = -y1

при начальных условиях: y1(0) = -1, y2(0) = 0, t = 0…2р.

Блок-схема решения системы (3) в нейросетевом базисе, созданная в среде Simulink, показана на рис.2.

Рис. 2 Блок-схема решения системы (3) в нейросетевом базисе

При построении схемы используются блоки из меню Neural Network Blockset: netprod, netsum (Net Input Functions), purelin (Transfer Functions). Для визуализации результатов используется блок Scope (Sinks), для задания шага интегрирования - блок Constant (Sources), для установки начальных значений - блок Unit Delay (Discrete). Окно задания параметров блока Unit Delay показано на рис.3. Для показа двух графиков в блоке Scope использован блок Mux (Signals&Systems).

Окно браузера библиотеки Simulink показано на рис.4.

Рис. 3 Окно задания параметров блока Unit Delay

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

>> N=100;

>> h=2*pi/N;

>> sim('Koshi_neuro')

Рис. 4 Окно библиотеки блоков системы Simulink

После открытия блока Scope можно увидеть графики решения задачи (рис.5).

Рис. 5 Графики решения задачи в Simulink

Сравним полученные графики с аналогичными графиками решения задачи в MatLab. Для этого создадим М-файл, задающий систему уравнений

Function dy=Koshi5(x,y);

dy=zeros(3,1);

dy(1)=

После сохранения М-файла с именем Koshi_ex используем для решения рассматриваемой системы ОДУ функцию ode45, набрав в командном окне MatLab:

>> [T,Y] = ode45('Koshi_ex',[0 2*pi],[-1 0]);

>> plot(T,Y(:,1),'-',T,Y(:,2),'-.')

Получаем графики решения, идентичные графикам на рис.5 (рис.6).

Рис. 6 Графики решения задачи с помощью функции ode45

Задание

Разработать в среде Simulink ИНС для решения системы ОДУ:

при начальных условиях: y1(0) = 0, y2(0) = 0, y3(0) = 1, t = 0…15.

Function dy=Koshi5(x,y);

dy=zeros(3,1);

dy(1)=-y(2)+y(3);

dy(2)=y(1)-y(3);

dy(3)=-y(1)+y(2);

[T,Y] = ode45('Koshi5',[0 15],[0 0 1]);

plot(T,Y(:,1),'-', T,Y(:,2),'-',T,Y(:,3),'-.')

Цель работы: научиться составлять схемы решения систем обыкновенных дифференциальных уравнений (ОДУ) в среде Simulink пакета MatLab.

Решение ОДУ первого порядка

Основой для решения обыкновенных дифференциальных уравнений первого порядка является задача Коши:

с одной зависимой переменной y(x).

Пример

Дано дифференциальное уравнение

x'(t) + 2x(t) = sin(t),

x(0) = 0.

После запуска системы MatLab нажмем кнопку Simulink, а затем в открывшемся окне кнопку Create a new Model. В открывшемся файле создадим схему решения уравнения, перетаскивая при нажатой левой кнопки мыши необходимые блоки из окна Simulink Library Brouser.

Для построения схемы решения уравнения в Simulink используется блок Integrator (класс Continuos). На его вход подается производная, а на выходе получают величину x. Блоки Sum (Сумматор) и Gain (Усилитель) (класс Math) необходимы для формирования значения x' в соотствии с ОДУ. Для получения сигнала sin(t) используется блок Sine Wave (класс Sources), в котором необходимо провести установки, соответствующие задаче, открыв блок двойным щелчком мыши или выбрав опцию Block Parameters при нажатой правой кнопке мыши. Полученное значение x(t) подается на вход блока Scope. При открытии данного блока появляется график решения. Установить масштабы осей, соответствующие полученному решению можно, нажав кнопку Autoscale.

Для проверки найденного решения в окне Command Window создадим М - файл для решения задачи (File ==> New ==> M-file). В открывшемся окне создадим функцию решения задачи, которую сохраним в текущей директории под именем f.m (указанное имя система предлагает по умолчанию).

После этого в командном окне наберем текст:

>> t=(0:0.1:2);

>> y=f(t);

>> plot(t,y)

>> grid on

После выполнения команд открывается окно с графиком функции. Очевидно, что два полученных графика идентичны.

Решение систем ОДУ первого порядка

Рассмотрим решение системы ОДУ первого порядка.

Пример

Модифицированная задача Лотки - Вольтера.

С учетом самоограничения на рост популяции жертв

Зададим параметры задачи: б = 0.1; в = 0.05; г = 0.03; д = 0.2; е = 0.15.

Блок - схема решения задачи в системе Simulink:

Раскрыв блок интегратора, зададим начальные значения: y1 = 2, y2 = 0.01.

После окончания моделирования, раскрывая блоки Scope и XY-Graph, можно увидеть графики изменения численности и фазовый портрет решения системы:

Создадим также в MatLab М - файл для задания правой части системы ОДУ:

function dy=vlm(t,y)

dy=zeros(2,1);

dy(1)=y(1)*(0.1-0.05*y(2)-0.03*y(1));

dy(2)=-y(2)*(0.2-0.15*y(1));

Для конкретного набора начальных значений систему можно решить, используя метод Рунге - Кутты 4-го порядка (встроенная функция ode45):

> [T, Y] = ode45('vlm',[0 164],[2 0.01]);

Параметры функции ode45: имя М - файла, диапазон изменения независимой переменной, начальные значения.

Для построения фазового портрета можно использовать функцию plot:

> plot(Y(:,1),Y(:,2));

>axis[0 4 0 4]

Размещено на Allbest.ru


Подобные документы

  • Принципы и система распознавание образов. Программное средство и пользовательский интерфейс. Теория нейронных сетей. Тривиальный алгоритм распознавания. Нейронные сети высокого порядка. Подготовка и нормализация данных. Самоорганизующиеся сети Кохонена.

    курсовая работа [2,6 M], добавлен 29.04.2009

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

    презентация [387,5 K], добавлен 11.12.2015

  • Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.

    лабораторная работа [1,1 M], добавлен 05.10.2010

  • Математическая модель нейронной сети. Однослойный и многослойный персептрон, рекуррентные сети. Обучение нейронных сетей с учителем и без него. Алгоритм обратного распространения ошибки. Подготовка данных, схема системы сети с динамическим объектом.

    дипломная работа [2,6 M], добавлен 23.09.2013

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

    дипломная работа [3,1 M], добавлен 21.03.2011

  • Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.

    дипломная работа [2,7 M], добавлен 18.02.2017

  • Базовые архитектуры компьютеров: последовательная обработка символов по заданной программе и параллельное распознавание образов по обучающим примерам. Искусственные нейронные сети. Прототип для создания нейрона. Поведение искусственной нейронной сети.

    контрольная работа [229,5 K], добавлен 28.05.2010

  • Нейронные сети и оценка возможности их применения к распознаванию подвижных объектов. Обучение нейронной сети распознаванию вращающегося трехмерного объекта. Задача управления огнем самолета по самолету. Оценка экономической эффективности программы.

    дипломная работа [2,4 M], добавлен 07.02.2013

  • Математическая модель искусственной нейронной сети. Структура многослойного персептрона. Обучение без учителя, методом соревнования. Правило коррекции по ошибке. Метод Хэбба. Генетический алгоритм. Применение нейронных сетей для синтеза регуляторов.

    дипломная работа [1,5 M], добавлен 17.09.2013

  • Общие сведения о принципах построения нейронных сетей. Искусственные нейронные системы. Математическая модель нейрона. Классификация нейронных сетей. Правила обучения Хэбба, Розенблатта и Видроу-Хоффа. Алгоритм обратного распространения ошибки.

    дипломная работа [814,6 K], добавлен 29.09.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.