close

Вход

Забыли?

вход по аккаунту

?

Laboratornaya rabota 7 SII

код для вставкиСкачать
Лабораторная работа №7
GUI-ИНТЕРФЕЙСЫ ДЛЯ ППП NNT
Цель: изучить основные возможности построения графических интерфейсов пользователей при решении прикладных задач на основе искусственных нейронных сетей.
Искусственные нейронные сети (ИНС) - математические модели, построенные по принципу организации и функционирования биологических нейронных сетей - сетей нервных клеток живого организма.
ИНС представляют собой систему соединённых и взаимодействующих между собой искусственных нейронов. Каждый нейрон подобной сети имеет дело только с сигналами, которые он периодически получает, и сигналами, которые он периодически посылает другим нейронам. При соединении в достаточно большую сеть с управляемым взаимодействием, такие локально простые нейроны вместе способны выполнять довольно сложные задачи.
Нейронные сети не программируются в привычном смысле этого слова, они обучаются. Возможность обучения - одно из главных преимуществ нейронных сетей перед традиционными алгоритмами. Технически обучение заключается в нахождении коэффициентов связей между нейронами. В процессе обучения нейронная сеть способна выявлять сложные зависимости между входными данными и выходными, а также выполнять обобщение. Это значит, что в случае успешного обучения сеть сможет вернуть верный результат на основании данных, которые отсутствовали в обучающей выборке, а также неполных и/или "зашумленных", частично искаженных данных.
Существуют два концептуальных подхода к обучению нейронных сетей: обучение с учителем и обучение без учителя. Обучение нейронной сети с учителем предполагает, что для каждого входного вектора из обучающего множества существует требуемое значение выходного вектора, называемого целевым. Эти вектора образуют обучающую пару. Веса сети изменяют до тех пор, пока для каждого входного вектора не будет получен приемлемый уровень отклонения выходного вектора от целевого. Обучение нейронной сети без учителя является намного более правдоподобной моделью обучения с точки зрения биологических корней искусственных нейронных сетей. Обучающее множество состоит лишь из входных векторов. Алгоритм обучения нейронной сети подстраивает веса сети так, чтобы получались согласованные выходные векторы, т.е. чтобы предъявление достаточно близких входных векторов давало одинаковые выходы.
Для создания, обучения, моделирования, импорта и экспорта нейронных сетей и данных, используется пакет по нейронным сетям, в состав которого входит инструментальное средство NNTool. Данный инструмент наиболее эффективен лишь на начальной стадии работы с пакетом, поскольку допускает работу только с простейшими однослойными и двухслойными нейронными сетями. Вызов GUI-интерфейса NNTool осуществляется командой nntool из командной строки. После вызова появляется окно Network/Data Manager (Управление сетью/данными) - см. рис. 1. В данном окне имеются следующие области и кнопки:
Input Data - последовательность входов;
Target Data - последовательность целей;
Input Daley States - начальные условия линии задержки входов;
Networks - список нейронных сетей;
Output Data - последовательность выходов;
Error Data - последовательности ошибок сети;
Layer Delay States -начальные условия линии задержки слоя;
Help - кнопка вызова окна подсказки (рис. 7.2); New - кнопка вызова окна создания новой нейронной сети;
Import...- кнопка вызова окна импорта или загрузки данных;
Export...- кнопка вызова окна экспорта или загрузки данных в файл;
Delete - кнопка для удаления активизированных данных.
Рис. 7.1. Окно управления сетью/данными
Для создания нейронной сети, необходимо выполнить следующие действия:
1) сформировать последовательность входов и целей (кнопка New окна Network/Data Manager) либо загрузить их из рабочей области системы MatLab или из файла (кнопка Import окна Network/Data Manager);
2) создать новую нейронную сеть (кнопка New окна Network/Data Manager) либо загрузить ее из рабочей области систем MatLab или из файла (кнопка Import окна Network/Data Manager);
3) выбрать тип нейронной сети и ее параметры; 4) провести инициализацию, моделирование, обучение и адаптацию сети.
Рис. 7.2. Окно подсказки
Для формирования последовательности входов и выходов нажмем кнопку New окна Network/Data Manager. Откроется окно Create Network or Data, перейдем на вкладку Data, на которой зададим векторы входа и цели (рис. 7.3), заполняя поля Name (имя переменной) и Value (значения переменной). Тип переменных указывается с помощью радиокнопок, расположенных в поле Data Type данного окна. Для указания типа вводимых данных имеется шесть кнопок:
* Inputs - последовательность значений входов;
* Targets - последовательность значений целей;
* Input Delay States - начальные условия лини задержки на входе;
* Layer Delay States - начальные условия лини задержки в слое;
* Outputs - последовательность значений выходов сети;
* Errors - разность значений целей и выходов.
Ввод завершается нажатием Create (Создать).
Рис. 7.3. Окно Create Network or Data, вкладка Data
Для создания нейронной сети необходимо в окне Network/Data Manager выбрать кнопку New. Откроется окно Create Network or Data, перейдем на вкладку Network, которая включает поля для задания параметров создаваемой сети. В зависимости от типа сети количество полей и их названия изменяются (рис. 7.4).
Рис. 7.4. Окно Create Network or Data, вкладка Network
Приведем описания полей.
Network Name (Имя сети) - стандартное имя сети, присваиваемое GUI-интерфейсом NNTool; в процессе создания новых сетей порядковый номер будет изменяться автоматически.
Network Type (Тип сети) - список сетей, доступных для работы с интерфейсом NNTool. Для удобства этот список повторен в таблице 7.1. Интерфейс NNTool позволяет создавать нейронные сети только с одной или двумя слоями.
Input data (Входные данные) - входные данные, которые либо назначаются пользователем, либо определяются автоматически по имени входной последовательности, выбираемой из списка Select an input.
Target data (Данные цели) - последовательность значений цели, которые либо назначаются пользователем, либо определяются автоматически по имени входной последовательности, выбираемой из списка Select a target.
Training function (Функция обучения) - список обучающих функций.
Performance function (Функция качества обучения) - список функций оценки качества обучения.
Namber of layers (Количество слоев) - количество слоев нейронной сети.
Properties for (Свойства) - список слоев.
Namber of neurons (Количество нейронов) - количество нейронов в слое.
Transfer function (Функция активации) - функции активации слоя.
Таблица 7.1. Типы сетей, доступных с интерфейсом NNTool
№ пп.Тип сетиНазвание сетиЧисло слоев1CompetitiveКонкурирующая сеть12Cascade-forward BackpropКаскадная сеть с прямым распространением сигнала и обратным распространением ошибки 23Elman backpropСеть Элмана с обратным распространением ошибки24Feed-forward BackpropСеть с прямым распространением сигнала и обратным аспространениием ошибки25Time delay backpropСеть с запаздыванием и обратным распространением ошибки26Generalized RegressionОбобщенная регрессионная сеть27HopfieldСеть Хопфилда18Linear layer (design)Линейный слой (создание)19Linear layer (train)Линейный слой (обучение)110LVQСеть для классификации входных векторов211PerceptronПерсептрон112ProbabilisticВероятностная сеть213Radial basis (exact fit)Радиально базисная сеть с нулевой ошибкой214Radial basis (fewer neurons)Радиально базисная сеть с минимальным числом нейронов215Self organizing mapСамоорганизующаяся карта Кохонена1 Примечание:
1) для сетей 2, 3, 7 в данной версии NNTool не обеспечивается просмотр структурных схем;
2) сети 5, 9 допускают введение линий задержек на входе;
3) сети 3 допускают введение линий задержек в слое;
4) сети с двумя слоями имеют последовательную структуру, когда выход первого слоя служит входом второго слоя. Исключение составляют сети 3, которые допускают наличие обратной связи в первом слое и передачу входного сигнала на входы обоих слоев.
Для просмотра, обучения, моделирования, адаптации нейронной сети необходимо выбрать нейронную сеть из списка Networks окна Network/Data Manager и нажать на кнопку Open. Откроется окно Network: имя_нейронной_сети, которое имеет шесть вкладок:
View - просмотр структуры сети (рис. 7.5);
Train - обучение сети;
Simulate - моделирование сети;
Adapt - адаптация и настройка параметров сети;
Reinitialize Weights - задание начальных весов и смещений;
View/Edit Weights - просмотр установленных весов и смещений.
Рис. 7.5. Вкладка View. Просмотр структуры сети
Пример 1. Нейронная сеть с прямой передачей сигнала
Создать и обучить нейронную сеть выполнению операции , если заданы последовательности входа и цели .
Откроем с помощью функции nntool основное окно интерфейса, затем сформируем последовательность входов и целей в рабочей области GUI-интерфейса, используя окно Network/Data Manager (рис. 7.1). С этой целью сначала нажмем кнопку New. Откроется окно Create Network or Data, перейдем на вкладку Data, на которой зададим векторы входа и цели (рис. 7.6). В поле Name- введем сначала имя переменной P, затем - в области значений Value - вектор значений и, используя радиокнопку Inputs (в правой части окна), укажем тип переменных (Inputs - Входы). Ввод завершим нажатием радиокнопки Create (Создать). Аналогичную операцию проделаем для вектора T,с указанием (с помощью радиокнопки Targets), что это - вектор целевых данных.
Выбор данных для обучения сети и их обработка является самым сложным этапом решения задачи. Исходные данные преобразуются к виду, в котором их можно подать на входы сети. Каждая запись в файле данных называется обучающей парой или обучающим вектором. Обучающий вектор содержит по одному значению на каждый вход сети и, в зависимости от типа обучения (с учителем или без), по одному значению для каждого выхода сети. Обучение сети на "сыром" наборе, как правило, не даёт качественных результатов. а)
б)
Рис. 7.6 - Окно Create Network or Data, вкладка Data: а) создание вектора входа; б) создание вектора цели
Создадим новую нейронную сеть. Для этого в открывшемся окне Create New Network перейдем на вкладку Network. Выберем нейронную сеть типа Feed-forward backprop с прямой передачей сигнала и обратным распространением ошибки - сеть, не имеющая обратных связей. Такие сети часто имеют один или более скрытых слоев нейронов с сигмоидальными функциями активации, в то время как выходной слой содержит нейроны с линейными функциями активации. Сети с такой архитектурой могут воспроизводить весьма сложные нелинейные зависимости между входом и выходом сети. Выбирать тип сети следует исходя из постановки задачи и имеющихся данных для обучения.
После выбора общей структуры нужно экспериментально подобрать параметры сети в зависимости от типа: число слоев, число блоков в скрытых слоях, наличие или отсутствие обходных соединений, передаточные функции нейронов. При выборе количества слоев и нейронов в них следует исходить из того, что способности сети к обобщению тем выше, чем больше суммарное число связей между нейронами. С другой стороны, число связей ограничено сверху количеством записей в обучающих данных.
Многослойная нейронная сеть может моделировать функцию практически любой степени сложности, причем число слоев и число элементов в каждом слое определяют сложность функции. Определение числа промежуточных слоев и числа элементов в них является важным вопросом при конструировании.
При создании сети сохраним ей имя, даваемое по умолчанию (network1), диапазон входов определим с помощью опций Select an input, Select a Target. Остальные установки при создании сети оставим по умолчанию (рис. 7.7). Создание сети завершим нажатием кнопки Create.
Рис. 7.7. Окно Create Network or Data, вкладка Network. Создание нейронной сети
После этого в окне Network/Data Manager, в области Networks появится имя новой созданной сети - network1. Выберем это имя с помощью мышки, что ведет к активации всех кнопок указанного окна. Нажмем на кнопку Open, которая открывает окно просмотра, обучения, моделирования, адаптации, настройки весов нейронной сети. Окно открывается на вкладке View, позволяющей просмотреть структуру сети (рис. 7.8). Из структуры сети видно, что она имеет два слоя.
Рис. 7.8. Вкладка View. Просмотр структуры сети
Далее выполняем инициализацию сети, для чего выберем вкладку Reinitialize Weights (рис. 7.9). Диапазоны значений исходных данных выбираем по входам из выпадающего меню Get From Input. Для ввода установленных диапазонов и инициализации весов воспользуемся кнопками Set Input Ranges (Установить диапазоны) и Initialize Weights (Инициализировать веса). Если требуется вернуться к прежним диапазонам, то следует выбрать кнопки Revert Input Ranges (Вернуть диапазоны) и Revert Weights (Вернуть веса), но в условиях примера это не нужно.
Рис. 7.9. Инициализация сети
Затем выполняется обучение сети, для чего выбирается вкладка Train, которая позволяет задать настройки для обучения нейронной сети и имеет две закладки (рис. 7.10):
а)закладка Training Info - содержит информацию об обучающих последовательностях; б)закладка Training Parameters - позволяет задать параметры обучения;
Применяя эти закладки, устанавливаем имена последовательностей входа и цели (на вкладке Training Info - в левой ее части необходимо указать P и T), а также значения параметров процедуры обучения (на вкладке Training Parameters; в условиях примера сохраняем значения по умолчанию). Затем нажимаем на кнопку Train Network.
Выбор параметров обучения нейронной сети является важным моментом при обучении. От правильного выбора параметров зависит не только то, насколько быстро ответы сети будут сходиться к правильным ответам. Значения параметров нужно выбирать экспериментально, руководствуясь при этом критерием завершения обучения.
В процессе обучения сеть в определенном порядке просматривает обучающую выборку. Порядок просмотра может быть последовательным, случайным и т. д. Один полный проход по выборке называется эпохой обучения. а)
б)
Рис. 7.10. Вкладка Train: а)закладка Training Info; б)закладка Training Parameters
В результате обучения получаем график изменения ошибки в процессе обучения (рис. 7.11). Из графика видно, что к концу процесса обучения ошибка становится очень малой (вид данного рисунка при повторе вычислений может отличаться от приведенного). Максимальная точность достигается за 27 циклов обучения.
Тестирование качества обучения нейросети необходимо проводить на примерах, которые не участвовали в ее обучении. При этом число тестовых примеров должно быть тем больше, чем выше качество обучения. Рис. 7.11. Изменение ошибки сети в процессе обучения.
Результаты обучения можно просмотреть в окне Network/Data Manager, активизируя имена последовательностей выходов network1_outputs или ошибок network1_errors (рис. 7.12). Рис. 7.12. Последовательность выходов и ошибок
Пример 2. Классификация входных векторов.
Создать нейронную сеть в виде перцептрона, который разделяет векторы входа на два класса. Обозначим эти классы как 0 и 1. Обучающую последовательность сформируем в виде двух массивов ячеек: массивв входов и массива целей , который задает принадлежность каждого вектора входа к определенному классу. Перцептрон - математическая и компьютерная модель восприятия информации мозгом. Перцептрон стал одной из первых моделей нейросетей. Несмотря на свою простоту, перцептрон способен обучаться и решать довольно сложные задачи. Основная математическая задача, с которой он справляется, - это линейное разделение любых нелинейных множеств.
Перцептрон состоит из трёх типов элементов, а именно: поступающие от сенсоров сигналы передаются ассоциативным элементам, а затем реагирующим элементам. Таким образом, перцептроны позволяют создать набор "ассоциаций" между входными стимулами и необходимой реакцией на выходе. +реализация примера
Пример 3. Динамическая линейная сеть
Спроектировать динамическую линейную нейронную сеть для предсказания синусоидальной функции по четырем предшествующим значениям.
Архитектура сети: линейная нейронная сеть с линией задержки по входу на 4 такта, с одним входом, значения которого заключены в диапазоне [-1 1], и одним выходом.
Обучающая последовательность: - входная последовательность:
time = 0:0.1:10;
P = sin(time); - последовательность целей:
T = P;
Поскольку предполагается адаптивная настройка параметров сети, то обучающая последовательность должна быть представлена в виде массива ячеек:
P = con2seq(P);
T = P;
Целесообразно сформировать эти последовательности в рабочей области системы MATLAB, а затем импортировать их в рабочую область интерфейса NNTool.
Затем выберем сеть типа Linear layer (train) с линией задержки по входу (рис. 1.30), инициализируем ее, установим начальные значения весов, выполним адаптацию сети, предварительно установив имена последовательностей входа и цели, а также указав количество циклов адаптации - 250.
Рис. 1.30
По окончании проектирования экспортируем нейронную сеть в рабочую область системы MATLAB.
Теперь можно построить модель нейронной сети в системе Simulink и построить ее схему (рис. 1.31):
gensim(network1)
Рис. 1.31
Эта схема в отличие от иллюстративных схем на рис. 1.19 и 1.29 является в полной мере функциональной схемой и может быть применена для моделирования нейронной сети.
Используя описание нейронной сети, можно просмотреть веса и смещение в рабочем окне системы MATLAB:
IW = network1.IW{1,1}
IW = 0.8135 0.4798 0.1716 -0.1143 -0.3858
b = network1.b{1}
b = 0.0024
Извлечем информацию об ошибке сети и построим соответствующий график (рис. 1.32). Обратите внимание на специальную форму применения оператора cat, которая позволяет преобразовать массив числовых ячеек в числовой массив.
E = cat(2,network1_errors{:});
plot(time(10:101), E(10:101))
Рис. 1.32
Из анализа рисунка следует, что погрешность обучения не превышает 0.01.
Знакомство с возможностями графического интерфейса NNTool позволяет сделать вывод, что это средство может быть весьма полезным на начальной стадии изучения и сравнительного анализа нейронных сетей.
Документ
Категория
Рефераты
Просмотров
200
Размер файла
662 Кб
Теги
sii, rabota, laboratornaya
1/--страниц
Пожаловаться на содержимое документа