Материал: Лабораторна робота №7

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Лабораторна робота №7

Тема: Моделювання нейронної мережі в пакеті MATLAB

Мета роботи: Знайомство із засобами і методамиMATLAB і пакету Simulink для моделювання і дослідження нейронних мереж. Застосування нейронних мереж для апроксимації функцій.

ЗАГАЛЬНІ ВІДОМОСТІ

Типовий приклад мережі з прямою передачею сигналу показаний на малюнку. Нейрони регулярним чином організовані в шари. Вхідний шар служить просто для введення значень вхідних змінних. Кожен з прихованих і вихідних нейронів сполучений зі всіма елементам попереднього шару. Можна було б розглядати мережі, в яких нейрони пов'язані тільки з деякими з нейронів попереднього шару; проте, для більшості додатків мережі з повною системою зв'язків переважно.

При роботі (використанні) мережі у вхідні елементи подаються значення вхідних змінних, потім сигнали послідовно відпрацьовують нейрони проміжних і вихідного шарів. Кожен з них обчислює своє значення активації, беручи зважену суму виходів елементів попереднього шару і віднімаючи з неї порогове значення. Потім значення активації перетворяться за допомогою функції активації, і в результаті виходить вихід нейрона. Після того, як вся мережа відпрацює, вихідні значення елементів вихідного шару беруться за вихід всієї мережі в цілому.

Спочатку мережа настроюється. Процес настройки мережі отримав назву«Навчання мережі». Перед початком навчання зв'язкам привласнюються невеликі випадкові значення. Кожна ітерація процедури складається з двох фаз. Під час першої фази на мережу подається вхідний

вектор шляхом

установки в

потрібний стан вхідних . елементівПотім

вхідні

сигнали

розповсюджуються

по мережі, породжує деякий вихідний вектор. Для роботи

алгоритму

потрібний, щоб характеристика вхід-вихід нейроподібних елементів була

неубутною і мал

обмежену похідну. Зазвичай для цього використовують сигмоїдальну нелінійність.

 

 

Відомі типи мереж:

*Одношаровий перцептрон;

*Багатошаровий перцептрон;

*Мережа Хеммінга;

*Мережа Ворда;

*Мережа Хопфілда;

*Мережа Кохонена;

*Когнітрон;

*Неокогнітрон.

1

ВИКОНАННЯ РОБОТИ

1. Робота з нейронною мережею в командному режимі

Виконаємо дослідження нейронної мережі для апроксимації вибраної, використовуючи функції пакету Neural Networks Toolbox . До складу пакету входить більше 160 різних функцій, що дають можливість створювати, навчати і досліджувати нейронні мережі.

Для виконання роботи необхідно запустити MATLAB і перейти в командне вікно.

Створимо узагальнено-регресійну НС(мережа типу GRNN) з ім'ям а, що реалізує функціональну залежність між входом і виходом вигляду у= х2 на відрізку [-1, 1], використовуючи наступні експериментальні дані:

х = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1],

у = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1].

Перевірку якості відновлення приведеної залежності здійснимо, використовуючи дані контрольної вибірки x1=[-0.9 -0.7 -0.3 0.4 0.8], яким відповідають значення y1 = [0.81 0.49 0.09

0.16 0.64].

Процедура створення і використання даної НС описується таким чином:

>>

x =

[-1 -0.8 -0.5 -0.2 0

0.1 0.3 0.6 0.9 1];

 

>>

% Завдання вхідних

значень

 

 

 

>>

у =

[1 0.64

0.25

0.04

0 0.01 0.09 0.36 0.81 1];

 

>>

% Завдання цільових

значень

 

 

>> a=newgrnn(х,у,0.01);

 

 

% Створення НС з відхиленням 0.01

>>

Y1

= sim(а,[-0.9

-0.7 -0.3 0.4

0.8])

% Опитування

НС

Y1

=

 

 

 

 

 

 

 

 

 

0.8200

0.6400

0.0400

0.0900

0.8100

 

 

Як видно, точність апроксимації в даному випадку вийшла не дуже високою — максимальна

відносна похибка апроксимації складає 30,61 %.

 

 

Можна

спробувати

 

поліпшити

якість

апроксимації

за рахунок підбору вел

відхилення, але в умовах прикладу прийнятний результат легко досягається при використанні мережі з радіальними базисними елементами типу newrbe:

>> a=newrbe(х,у);

>>Yl = sim(а,[-0.9 -0.7 -0.3 0.4 0.8]) % Опитування НС

Y1 =

0.8100 0.4900 0.0900 0.1600 0.6400

Неважко бачити, що застосування мережі типуnewrb приводить тут не просто до інтерполяції заданих повчальною вибіркою значень, а дійсно до точного відновлення заданої залежності — принаймні, для використаних точок контрольної послідовності.

Створену мережу можна зберегти для подальшого використання набором в командному рядку команди save ('а'); при цьому буде створений файл.mat, тобто файл з ім'ям НС і розширенням mat. У подальших сеансах роботи цю мережу можна завантажити, використовуючи функцію load (' а'). Природно, допустимі всі інші форми запису операторів save і load.

Розглянемо тепер завдання відновлення деякої невідомої залежності за наяв експериментальними даними з використанням лінійної НС.

Нехай експериментальна інформація задана значеннями

х = [1.0 1.5 3.0 -1.2], у = [0.5 1.1 3.0 -1.0].

2

Створимо вектори входу і цілей:

>> х = [1.0 1.5 3.0 -1.2]; >> у = [0.5 1.1 3.0 -1.0];

Тепер створимо лінійну нейронну мережу:

>> b=newlind(х,у);

% Створення лінійної НС з ім'ям b

Проведемо опитування

мережі для значення , входурівного 3.0 (цьому, згідно з

експериментальними даними, відповідає цільове значення 3.0):

>> y1 = sim(b, 3.0) % Опитування мережі

y1 =

2.7003

Похибка відновлення за даними повчальної вибірки в даному випадку10%. Відзначимо, що в умовах як першого, так і другого прикладу дати яку-небудь оцінку граничній величині похибки апроксимації неможливо, особливо для значень входів, що виходять за межі діапазону

входів повчальної послідовності. На жаль, це є характерною особливістю нейромережних моделей. Для переважного числа завдань, що вирішуються за допомогою апарату нейронних мереж (не тільки для завдань класифікації або прогнозу) яких-небудь імовірнісних оцінок точності отримуваних рішень отримати не вдається.

2. Використання GUI-інтерфейса пакету нейронних мереж

2.1. Створення нейронної мережі

Створимо, використовуючи графічний інтерфейс користувача, нейронну мережу для виконання операції у = х2 при завданні векторів входу

х = [-1 -0.8 -0.5 -0.2 0 0.1 0.3 0.6 0.9 1]

і цілі

у = [1 0.64 0.25 0.04 0 0.01 0.09 0.36 0.81 1].

Для

відкриття основного вікна

інтерфейсу необхідно в командному вікні MATLAB

ввести команду

>> nntool

Виконання команди приведе до відкриття вікна створення нейронної мережі Network/Data Manager.

Сформуємо послідовність входів і цілей в робочій області GUI-інтерфейса, використовуючи вікно Create New Data.

3

З цією метою спочатку натиснемо кнопку New Data далі в полі Name вікна Create New Data введемо спочатку ім'я змінної х, потім в області значень Value вектор значень [-1 - 0.8 - 0.5 - 0.2 0 0.1 0.3 0.6 0.9 1] і, використовуючи радіокнопку Inputs (у правій частині вікна), вкажемо тип змінних (Inputs — Входи).

Введення завершимо натисненням радіокнопки Create (Створити).

Аналогічну операцію виконаємо для векторау, з вказівкою (за допомогою радіокнопки Targets), що це — вектор цільових даних.

Створимо нову нейронну мережу.

Для цього у вікні Network/Data Manager натиснемо кнопку New Network. У вікні Create New Network, що відкрилося, виберемо нейронну мережу типу feed-forward backprop з прямою передачею сигналу і із зворотним розповсюдженням помилки.

При створенні мережі збережемо їй ім'я, що дається за умовчанням (network1).

Діапазон входів визначимо(у вікні Create New Network) за допомогою опціїGet from

input.

Кількість нейронів (Number of neurons) першого шару (Layer 1) встановимо рівним двом.

Решту установок при створенні мережі залишимо за умовчанням.

Створення мережі завершимо натисненням кнопки Create.

Після цього у вікні Network/Data Manager, в області Networks з'явиться ім'я нової створеної мережі — network1. Виберемо це ім'я за допомогою мишки, що приведе до активізації всіх кнопок вказаного вікна.

Виконаємо ініціалізацію мережі, для чого за допомогою кнопкиInitialize... виберемо закладку Initialize. Це приведе до відкриття діалогової панелі Network: network1.

4

Для введення в панеліNetwork: network1 встановлених діапазонів і ініціалізації вагів скористаємося кнопками Set Ranges (Встановити діапазони) і Initialize Weights (Ініціалізувати ваги). Якщо потрібно повернутися до колишніх діапазонів, то слід вибрати кнопки Revert Ranges (Повернути діапазони) і Revert Weights (Повернути ваги), але в умовах прикладу це не потрібно.

2.2. Навчання нейронної мережі

Для навчання створеної мережі, вибирається закладка Train в панелі Network: network1 і відкривається нова діалогова панель.

5