GUI-интерфейс для ППП NNT
Отличительной особенностью 12-го выпуска программных продуктов фирмы MathWorks является включение в их состав различных инструментальных средств организации диалога с пользователем. Как правило, это GUI-интерфейсы. Не является исключением и пакет по нейронным сетям ППП NNT, в состав которого входит инструментальное средство NNTool. Этот графический интерфейс позволяет, не обращаясь к командному окну системы MATLAB, выполнять создание, обучение, моделирование, а также импорт и экспорт нейронных сетей и данных, используя только инструментальные возможности GUI-интерфейса. Конечно, такие инструменты наиболее эффективны лишь на начальной стадии работы с пакетом, поскольку имеют определенные ограничения. В частности, интерфейс NNTool допускает работу только с простейшими однослойными и двухслойными нейронными сетями, но при этом пользователь выигрывает во времени и эффективности освоения новых объектов.
Вызов GUI-интерфейса NNTool возможен либо командой nntool из командной строки, либо из окна запуска приложений Launch Pad с помощью опции NNTool из раздела Neural Network Toolbox. После вызова на экране терминала появляется окно Network/Data Manager(Управление сетью/данными) (рис. 1.13)
Рис. 1.13
Здесь:
Help – кнопка вызова окна подсказки Network/Data Manager Help(рис. 1.14);
New Data… – кнопка вызова окна формирования данных Create New Data(рис. 1.15);
New Network… – кнопка вызова окна создания новой нейронной сети Create New Network(рис. 1.16);
Import…– кнопка вызова окна для импорта или загрузки данных Import or Load to Network/Data Manager(рис. 1.17);
Export… – кнопка вызова окна для экспорта или записи данных в файл Export or Save from Network/Data Manager(рис. 1.18).
Кнопки View, Deleteстановятся активными только после создания и активизации данных, относящихся к последовательностям входа, цели, выхода или ошибок сети. Кнопка View позволяет просмотреть, а кнопка Delete удалить активизированные данные.
Кнопки View, Delete, Initialize…, Simulate…, Train…, Adapt… становятся активными после создания и активизации самой нейронной сети. Они позволяют просмотреть, удалить, инициализировать, промоделировать, обучить или адаптировать нейронную сеть и будут описаны ниже.
Прежде всего рассмотрим назначение и способы работы с перечисленными выше окнами.
Окно Network/Data Manager Help.Это окно подсказки показано на рис. 1.14 и описывает правила работы с диспетчером Network/Data Managerпри создании нейронной сети.
Рис. 1.14
Чтобы создать нейронную сеть, необходимо выполнить следующие операции:
· Сформировать последовательности входов и целей (кнопка New Data), либо загрузить их из рабочей области системы MATLAB или из файла (кнопка Import).
· Создать новую нейронную сеть (кнопка New Network), либо загрузить ее из рабочей области системы MATLAB или из файла (кнопка Import).
· Выбрать тип нейронной сети и нажать кнопку Train…, чтобы открыть окно для задания параметров процедуры обучения.
· Открыть окно Network для просмотра, инициализации, моделирования, обучения и адаптации сети.
Окно Create New Data.Это окно показано на рис. 1.15 и включает 2 области редактирования текста для записи имени вводимых данных (область Name) и ввода самих данных (область Value), а также 6 кнопок для указания типа вводимых данных.
Рис. 1.15
Различают следующие типы данных:
Inputs (Входы) – последовательность значений входов;
Targets (Цели) – последовательность значений цели;
Input Delay States (Состояния ЛЗ входа) – начальные условия линии задержки на входе;
Layer Delay States (Состояния ЛЗ слоя) – начальные условия линии задержки в слое;
Outputs (Выходы) – последовательность значений выхода сети;
Errors (Ошибки) – разность значений целей и выходов.
Как правило, пользователь задает только последовательности входа и цели, т. е. типы данных Inputsи Targets. При этом следует помнить, что при адаптации нейронной сети данные должны быть представлены в виде массива ячеек.
Окно Create New Network.Это окно показано на рис. 1.16 и включает поля для задания параметров создаваемой сети. В зависимости от типа сети количество полей и их названия изменяются.
Рис. 1.16
Обратимся к описанию полей.
Network Name (Имя сети) – стандартное имя сети, присваиваемое GUI-интерфейсом NNTool; в процессе создания новых сетей порядковый номер будет изменяться автоматически.
Network Type (Тип сети) – список сетей, доступных для работы с интерфейсом NNTool. Для удобства этот список повторен в нижеследующей таблице. Интерфейс NNTool позволяет создавать нейронные сети только с одним или двумя слоями.
№ п/п
| Тип сети
| Название сети
| Число слоев
| Обучаемые параметры
|
| Competitive
| Конкурирующая сеть
|
| IW{1, 1}, b{1}
|
| Cascade-forward backprop
| Каскадная сеть с прямым распространением сигнала и обратным распространением ошибки
|
| IW{1, 1}, b{1}, LW{2, 1}, IW{2, 1}, b{2}
|
| Elman backprop
| Сеть Элмана с обратным распространением ошибки
|
| IW{1, 1}, b{1}, LW{2, 1}, b{2}, LW{1, 1}
|
| Feed-forward backprop
| Сеть с прямым распространением сигнала и обратным распространением ошибки
|
| IW{1, 1}, b{1}, LW{2, 1}, b{2}
|
| Time delay backprop
| Сеть с запаздыванием и обратным распространением ошибки
|
| IW{1, 1}, b{1}, LW{2, 1}, b{2}
|
| Generalized regression
| Обобщенная регрессионная сеть
|
| IW{1, 1}, b{1}, LW{2, 1}
|
| Hopfield
| Сеть Хопфилда
|
| LW{1, 1}, b{1}
|
| Linear layer (design)
| Линейный слой (создание)
|
| IW{1, 1}, b{1}
|
| Linear layer (train)
| Линейный слой (обучение)
|
| IW{1, 1}, b{1}
|
| LVQ
| Сеть для классификации входных векторов
|
| IW{1, 1}, LW{2, 1}
|
| Perceptron
| Персептрон
|
| IW{1, 1}, b{1}
|
| Probabalistic
| Вероятностная сеть
|
| IW{1, 1}, b{1}, LW{2, 1}
|
| Radial basis (exact fit)
| Радиальная базисная сеть с нулевой ошибкой
|
| IW{1, 1}, b{1}, LW{2, 1}
|
| Radial basis (fewer neurons)
| Радиальная базисная сеть с минимальным числом нейронов
|
| IW{1, 1}, b{1}, LW{2, 1}, b{2}
|
| Self-organizing map
| Самоорганизующаяся карта Кохонена
|
| IW{1, 1}
| Примечания:
· Для сетей 2, 3, 7 в данной версии интерфейса NNTool не обеспечивается просмотр структурных схем.
· Сети 5, 9 допускают введение линий задержек на входе.
· Сети 3 допускают введение линий задержек в слое.
· Сети с двумя слоями имеют последовательную структуру, когда выход первого слоя служит входом второго слоя. Исключение составляют сети 3, которые допускают наличие обратной связи в первом слое и передачу входного сигнала на входы обоих слоев.
Продолжим описание полей.
Input ranges (Диапазоны входа) – допустимые границы входов, которые либо назначаются пользователем, либо определяются автоматически по имени входной последовательности, выбираемой из списка Get from Inp….
Training function (Функция обучения) – список обучающих функций.
Adaption learning function(Функции настройки для режима адаптации) – список функций настроек.
Performance function(Функция качества обучения) – список функций оценки качества обучения.
Number of layers(Количество слоев) – количество слоев нейронной сети.
Properties for (Свойства) – список слоев: Layer 1 (Слой 1), Layer 2 (Слой 2).
Number of neurons (Количество нейронов) – количество нейронов в слое.
Transfer function (Функция активации) – функция активации слоя.
Окно Import or Load to Network/Data Manager.Это окно показано на рис. 1.17 и включает 3 поля.
Рис. 1.17
Source(Источник) – поле для выбора источника данных. Это либо рабочая область системы MATLAB (кнопка выбора Import from MATLAB Workspace), либо файл (кнопка выбора Load from disk file).
Если выбрана первая кнопка, то в поле Select a Variableвы можете видеть все переменные рабочей области и, выбрав одну из них, например Р1, можете определить ее в поле Destination(Назначение) как последовательность входа Inputs (Входы).
Если выбирается кнопка Load from disk file, то активизируется поле MAT-file Name и кнопка Browse, что позволяет начать поиск и загрузку файла из файловой системы.
Окно Export or Save from Network/Data Manager.Это окно показано на рис. 1.18 и позволяет передать данные из рабочей области GUI-интерфейса NNTool в рабочую область системы MATLAB или записать их в виде файла на диске.
Рис. 1.18
В данном случае нами выбрана переменная network1, которая принадлежит к классу network object и описывает нейронную сеть. После того как эта переменная экспортирована в рабочую область, можно, например, построить модель нейронной сети в системе Simulink с помощью оператора gensim.
Диалоговая панель Network показана на рис. 1.19.
Рис. 1.19
Она открывается только в том случае, когда в окне Network/Data Manager выделена созданная сеть и становятся активными кнопки View, Initialize, Simulate, Train, Adapt.
Панель имеет 6 закладок:
View(Просмотреть)– структура сети;
Initialize (Инициализация) – задание начальных весов и смещений;
Simulate (Моделирование) – моделирование сети;
Train(Обучение) – обучение сети;
Adapt (Адаптация) – адаптация и настройка параметров сети;
Weights (Веса) – просмотр установленных весов и смещений.
Особенности работы с соответствующими окнами будут рассмотрены на приведенных ниже примерах создания конкретных нейронных сетей.
Пример. Нейронная сеть с прямой передачей сигнала.
Создать и обучить нейронную сеть выполнению операции y = x12 + x2, если заданы последовательности входа P = [1 0.5 0 1; –2 0 0.5 1] и цели T = [–1 0.25 0.5 2].
Сформируем последовательности входов и целей в рабочей области GUI-интерфейса NNTool, используя окно Create New Data.
Выберем нейронную сеть типа feed-forward backprop с прямой передачей сигнала и с обратным распространением ошибки. Схема этой сети показана на рис. 1.19.
Выполним инициализацию сети, для чего выберем закладку Initialize, откроется диалоговая панель, показанная на рис. 1.20. Диапазоны значений исходных данных выберем по входам из ниспадающего меню Get from input. Для ввода установленных диапазонов и инициализации весов надо воспользоваться кнопками Set Ranges (Установить диапазоны) и Initialize Weights (Инициализировать веса). Если требуется вернуться к прежним диапазонам, то следует выбрать кнопки Revert Ranges (Вернуть диапазоны) и Revert Weights (Вернуть веса).
Рис. 1.20
Затем выполняется обучение сети, для чего выбирается закладка Trainи открывается диалоговая панель, показанная на рис. 1.21.
Рис. 1.21
Панель имеет три закладки:
Training Info (Информация об обучающих последовательностях) (рис. 1.21);
Training Parametrs (Параметры обучения) (рис. 1.22);
Optional Info(Дополнительная информация) (рис. 1.23).
Рис. 1.22
Последняя закладка применяется, когда в процессе обучения используются контрольные и тестовые последовательности.
Рис. 1.23
Применяя эти закладки, можно установить имена последовательностей входа и цели, а также параметров процедуры обучения.
Теперь можно приступить к обучению сети (кнопка Train Network).
Рис. 1.24
Качество обучения сети с прямой передачей сигнала на выбранной обучающей последовательности поясняется на рис. 1.24. Практически нулевая точность достигается за 13 циклов обучения.
Соответствующие веса и смещения можно увидеть, если выбрать закладку Weights(рис. 1.25).
Рис. 1.25
Для удобства работы можно экспортировать созданную нейронную сеть в рабочую область системы MATLAB и получить информацию о весах и смещениях непосредственно в рабочем окне системы:
network1.IW{1, 1}, network1.b{1}
ans = –1.9390 –2.2747
ans = 1.1389
network1.LW{2, 1}, network1.b{2}
ans = –1.5040
ans = 0.5024
Результаты обучения можно просмотреть в окне Network/Data Manager, выбрав кнопку Manager (рис. 1.25). Появляется окно (рис. 1.26); теперь, активизируя имена последовательностей выхода или ошибок network1_outputs и network1_errors, можно просмотреть результаты, используя кнопку View. Получаем выходные данные, практически равные целям, и ошибки порядка 10-14.
Рис. 1.26
Пример. Классификация входных векторов.
Создать нейронную сеть в виде персептрона, который разделяет векторы входа на два класса. Обозначим эти классы как 0 и 1. Обучающую последовательность сформируем в виде двух массивов ячеек: массива входов Р= {[2; 2] [1; 2] [–2; 2] [–1; 1] [1; –2]} и массива целей Т= {0 0 1 1 1}, который задает принадлежность каждого вектора входа к определенному классу. Выполним эту операцию в рабочей области системы MATLAB, а затем импортируем их в рабочую область интерфейса NNTool.
Зададим персептрон с одним нейроном, функцией активации HARDLIM и правилом настройки LEARNP. Для этого из списка нейронных сетей выберем тип сети Perceptron (рис. 1.27) и зададим требуемые параметры.
Рис. 1.27
Чтобы увидеть структурную схему сети, воспользуемся кнопкой View (рис. 1.28).
Рис. 1.28
Теперь выполним инициализацию сети, используя закладку Initialize, а затем адаптацию и настройку параметров сети, используя закладку Adapt окна Network. Для этого следует указать имена входа и цели, а также задать количество циклов адаптации (в данном случае достаточно трех циклов) и нажать кнопку Adapt Network.
В результате настройки будут установлены следующие значения весов и смещений, которые можно увидеть, выбрав закладку Weights. Для данной сети вектор весов равен IW{1, 1} = [–3 –2], а смещение b{1} = 1. Таким образом, линия переключения, разделяющая плоскость на 2 области, описывается следующим образом:
L: –3p1 – 2p2 + 1 = 0.
Перейдя в окно Network/Data Manager, можно просмотреть значения сигналов на выходе и ошибку сети (рис. 1.29, а и б соответственно). Нетрудно убедиться, что на обучающей последовательности сеть обучена точно классифицировать входные векторы.
а
|
б
| Рис. 1.29
Пример динамической линейной сети:
Спроектировать динамическую линейную нейронную сеть для предсказания синусоидальной функции по четырем предшествующим значениям.
Архитектура сети: линейная нейронная сеть с линией задержки по входу на 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 позволяет сделать вывод, что это средство может быть весьма полезным на начальной стадии изучения и сравнительного анализа нейронных сетей.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|