Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

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

.pdf
Скачиваний:
26
Добавлен:
30.05.2020
Размер:
1.85 Mб
Скачать

Лабораторна робота №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

Панель має три закладки:

Training Info (Інформація про повчальні послідовності);

Training Parameters (Параметри навчання);

Optional Info (Додаткова інформація).

Застосовуючи ці закладки, можна встановити імена послідовностей входу і мети (на вкладці Training Info — в лівій її частині необхідно вказати х і у), а також значення параметрів процедури навчання (на вкладці Training Parameters; в умовах прикладу збережемо значення з умовчанням).

На вкладці Optional Info слід вказати змінні x і у як Validation Data і Test Data.

Тепер натиснення кнопкиTrain Network викликає навчання мережі. Якість навчання мережі на вибраній повчальній послідовності відображається графіком. Видно, що до кінця процесу навчання помилка стає дуже малою(вид даного малюнка при повторі обчислень може відрізнятися від приведеного).

Результати навчання можна проглянути у вікніNetwork/Data Manager, активізуючи імена послідовностей виходів network1_outputs або помилок network1_errors, і використовуючи кнопку View.

Слід зазначити, що в даному випадку точність апроксимації заданої функції вийшла не дуже високою — максимальна абсолютна похибка складає 0.055, відносна — 5.5%, в чому можна переконатися, проглянувши значення помилок (networkl_errors) або виходів (net-work1_outputs) мережі.

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

6

2.3. Робота із створеною мережею

Для проглядання структурної схеми мережі необхідно, вибравши ім'я мережі(network1), скористатися кнопкою View.

При

необхідності можна експортувати створену нейронну мережу в

робочу обла

системи MATLAB (натиснувши кнопку Export і далі, у вікні Export or Save from Network/Data

Manager, що відкрилося, — кнопки Select All (Вибрати все) і Export) і отримати

інформацію

про ваги і зсуви безпосередньо в робочому вікні системи, виконавши команду:

 

>>

network1.IW{1,1},network1.b{1}

 

ans

=

 

1.9568

 

1.9603

 

ans

=

 

-3.0678

 

3.2779

 

і команду:

 

 

>>

network1.IW{2,1},network1.b{2}

 

ans =

[] ans =

23.4859

Тепер можна побудувати модель НС в середовищі Simulink і відобразити її схему, використовуючи команду:

>> gensim(network1)

7

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

3. Моделювання нейронних мереж за допомогою Simulink

3.1. Засоби Simulink для роботи з нейронними мережами

Пакет Neural Network Toolbox містить ряд блоків, які можуть бути або безпосередньо використані для побудови нейронних мереж в середовищі Simulink, або застосовуватися разом з розглянутою вище функцією gensim.

Для виклику цього набору блоків в командному рядку необхідно набрати команду neural, після виконання який з'являється вікно нейромережі(цього ж результату можна добитися за допомогою кнопки Simulink меню MATLAB і далі — кнопки Neural Network Blockset).

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

Подвійне клацання на блоціTransfer Functions приводить до появи бібліотеки блоків функцій активації. Кожен з блоків даної бібліотеки перетворить вектор, що подається на нього, у відповідний вектор тієї ж розмірності.

Блок Net Input Functions включає блоки, реалізують функції перетворення входів мережі.

Блок Weight Functions містить бібліотеку блоків, що реалізовують деякі функції вагів і

зсувів.

Відзначимо, що в процесі роботи зі всіма приведеними блоками при завданні конкретних числових значень зважаючи на особливості Simulink вектори необхідно представляти як стовпці, а не як рядки.

Блоки, об'єднані в бібліотеку Control Systems реалізують нейро-мережеві регулятори трьох різних структур, — регулятор з прогнозом, регулятор, заснований на використанні моделі нелінійної авторегресії з ковзаючим середнім(Nonlinear Autoregressive-Moving Average — NAR- MA-L2), і регулятор на основі еталонної моделі, які зручні при побудові і дослідженні моделей систем автоматичного управління, а також блок проглядання результатів.

8

3.2. Виконання моделювання

 

Основною функцією для формування нейромережних моделейSimulinkв

є функція

gensim, записувана у формі

 

gensim(net,st)

 

де net — ім'я створеної НС, st — інтервал дискретизації (якщо НС не має затримок, що асоціюються з її входами або шарами, значення даного аргументу встановлюється рівним -1).

Як приклад використання засобів Simulink розглянемо наступне завдання.

Хай вхідний і цільовий вектори мають вигляд

>> р = [1 2 3 4 5] ;

>> t = [ 1 3 5 7 9];

Створимо лінійну НС і протестуємо її за даними повчальної вибірки:

>> р = [1 2 3 4 5] ;

>> t = [1 3 5 7 9] ;

>> net = newlind(р,t);

>> Y = sim(net,p)

Y =

1.0000 3.0000 5.0000 7.0000 9.0000

Потім запустимо Simulink командою

>> gensim(net-1)

Це приведе до відкриття вікна з нейромережною моделлю.

Для проведення тестування моделі клацнемо двічі на лівому значку(з написом Input 1 — Вхід 1), що приведе до відкриття діалогового вікна параметрів блоку. В даному випадку блок Input 1 є стандартним блоком завдання константи (Constant). Змінимо значення за умовчанням на 2 і натиснемо кнопку ОК.

Потім натиснемо кнопкуStart в панелі інструментів вікна моделі. Розрахунок нового значення мережею проводиться практично миттєво. Для його виводу необхідно двічі клацнути на правому значку (на блоці у(1)).

9

Результат обчислень рівний 3 і виводиться у вигляді графіка. Для виведення результату в числовому вигляді до виходу моделі слід підключити блок «дисплей».

Відзначимо, що двічі клацаючи на блоціNeural Network, а потім на блоці Layer 1, можна отримати детальну графічну інформацію про структуру мережі.

Із створеною мережею можна проводити різні експерименти, можливі в середовищі Simulink; взагалі, за допомогою командиgensim здійснюється інтеграція створених нейромереж в блокдіаграми цього пакету з використанням інструментів моделювання різних систем, що є при цьому (наприклад, можливе вбудовування нейромережного регулятора в систему управління моделювання останньої і т. п.).

10