ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 07.05.2024
Просмотров: 46
Скачиваний: 0
Лабораторна робота №11 Тема: Нейронні мережі: графічний інтерфейс користувача
Мета: навчитися будувати нейронні мережі за допомогою середовища MATLAB, познайомитися з елементами графічного інтерфейсу.
Теоретичні відомості
Нейронні мережі (NN| - Neural| Networks|) широко використовуються для вирішення різноманітних завдань. Серед областей застосування NN|, що розвиваються, - обробка аналогових і цифрових сигналів, синтез і ідентифікація електронних ланцюгів і систем. Основи теорії і технології застосування NN| широко представлені в пакеті MATLAB|. В зв'язку з цим особливо слід зазначити останню версію пакету - MATLAB| 6.0, де вперше представлений GUI| (Graphical| User| Interface| - графічний інтерфейс користувача) для NN| - NNTool|.
Прикладами застосування технології нейронних мереж для цифрової обробки сигналів є: фільтрація, оцінка параметрів, детектування, ідентифікація систем, розпізнавання образів, реконструкція сигналів, аналіз тимчасових рядів і стиснення. Згадані види обробки застосовні до різноманітних видів сигналів: звуковим, відео, мовним, зображення, передачі повідомлень, геофизичним, локаційним, медичних вимірювань (кардіограми, енцефалограми|, пульс) і іншим.
У даній статті даний опис NNTool| і показана техніка його застосування у ряді завдань синтезу ланцюгів і цифрової обробки сигналів.
Обробка сигналів в технологіях NN| виконується з допомогою або NN| без пам'яті, або NN| з пам'яттю. І в тому і іншому випадках ключовим елементом є NN| без пам'яті. Подібна роль визначається тією обставиною, що при використанні нейронів з певними функціями активації (передавальними характеристиками) NN| є універсальною апроксимацією. Останнє означає, що в заданому діапазоні зміни вхідних змінних NN| може із заданою точністю відтворювати (моделювати) довільну безперервну функцію цих змінних.
Нижче обговорюються питання, що відносяться до так званих NN| прямого розповсюдження, тобто без зворотних зв'язків. Чудовою властивістю таких NN| є їх стійкість.
Після того, як структура NN| вибрана, повинні бути встановлені її параметри. Вибір структури NN| і типів нейронів - самостійний і вельми непростий питання, яке тут ми обговорювати не будемо. Що ж до значень параметрів, то, як правило, вони визначаються в процесі рішення деякої оптимізаційної задачі. Ця процедура в теорії NN| називається навчанням.
Графічний інтерфейс користувача NNTool| дозволяє вибирати структури NN| з обширного переліку і надає безліч алгоритмів навчання для кожного типу мережі.
У статті розглянуті наступні питання, що відносяться до роботи з NNTool|:
-
призначення графічних елементів, що управляють;
-
підготовка даних;
-
створення нейронної мережі;
-
навчання мережі;
-
прогін мережі.
Всі етапи роботи з мережами проілюстровані прикладами вирішення простих завдань. Як і в попередніх статтях проекту "MATLAB| для DSP|", передбачається, що читач знайомий з основами теорії NN| і її термінологією.
Елементи 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 зображена персептронная| мережа з вихідним блоком, що реалізовує передавальну функцію з жорстким обмеженням. Кількість нейронів в шарі рівна одному, що символічно відображається розмірністю вектора-стовпця на виході шаруючи і указується числом безпосередньо під блоком передавальної функції. Дана мережа має два входи, оскільки розмірність вхідного вектора-стовпця рівна двом.