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

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

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

Лабораторна робота №11 Апроксимація функції з використанням нейронних мереж

Мета роботи: навчитися використовувати нейронні мережі для апроксимації функції.

Завдання: У

середовищі Matlab

необхідно

побудувати і навчити нейронну

мережу д

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

табличний

заданої

функції

i=1,20. Розробити

програму, яка

реалізує

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

 

1 Теоретичні відомості

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

Нейрон – базовий елемент нейронних мереж. Має входи, забезпечені вагами, зсув, що симулює елемент і вхідну активаційну функцію. Є аналогом біологічного нейрона. Нейрон виконує функцію адаптивного суматора з варійованими вхідними ваговими коефіцієнтами, сумарний вхід, сигнал якого піддається лінійній або нелінійній обробці, утворюючи підсумковий вхідний сигнал.

Нейрон є складовою частиною нейронної мережі. На мал. показаний варіант представлення його структури.

Він складається з елементів трьох : помножувачівтипів (синапсів), суматора і нелінійного перетворювача. Синапси здійснюють зв'язок між нейронами, умножають вхідний сигнал на число, що характеризує силу зв'язку (вага синапсу). Суматор виконує складання сигналів, що поступають по синаптичним зв'язкам від інших нейронів, і зовнішніх вхідних сигналів. Нелінійний перетворювач реалізує нелінійну функцію одного аргументу– виходу суматора. Ця функція називається функцією

активації або передавальною функцією нейрона. Нейрон в цілому реалізує скалярну функцію векторного аргументу.

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

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

Поняття «Повчальна множина».

Робота мережі протікає в два етапи. На першому з них відбувається її навчання. Для цього за допомогою експериментів або їх програмних імітаторів формується повчальна множина{Vin; Vout}, що представляє собою набір пар вхідного і відповідного вихідного векторів. Розмір повчальної

множини (кількість пар) залежить від складності аналізованого відображення і загального числа

шарів

і

нейронів

на.

Вхідніних

вектора

включають

безпосередньо

спостережув

величини(свідчення приладів або

їх комбінації), а вихідні – фізичні

характеристики

процесу, які

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

За допомогою нелінійного перетворення значеньuj кожного з нейронів вхідного шару і величинwji формуються значення ui

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

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

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

На ефективність роботи і збіжність процесу навчання НС великий вплив робить правильний вибір вхідних сигналів. Вони повинні бути такими, щоб в багатовимірному просторі – просторі ознак, що утворюється ними, області з різними значеннями вихідних векторів розділялися якнайкраще.

Другий етап є безпосередньою роботою навченої НС по аналізу фізичної інформації.

Алгоритм навчання «з вчителем»

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

Існує велика безліч різних алгоритмів навчання, які діляться на два великі класи: детерміністські і стохастичні. У першому з них підстроювання вагів є жорсткою послідовністю дій, в другому - вона проводиться на основі дій, що підкоряються деякому випадковому процесу.

Розглянемо алгоритм навчання з вчителем.

Серед різних структур нейронних мереж однієї з найбільш відомих є багатошарова структура, в якій кожен нейрон довільного шару пов'язаний зі всіма аксонами нейронів попереднього шару або, у разі першого шару, зі всіма входами НС. Такі НС називаються повнозв'язними. Коли в мережі тільки один шар, алгоритм її навчання з вчителем досить очевидний, оскільки правильні вихідні стани нейронів єдиного шару свідомо відомі, і підстроювання синаптичних зв'язків йде в напрямі, що мінімізує помилку на виході мережі. За цим принципом будується, наприклад, алгоритм навчання одношарового персептрона.

Розглянемо детальніше алгоритм навчання НС з вчителем для одношарової нейронної мережі, прикладом якої є одношаровий перебудуй.

1)Проїніциалізіровать елементи вагової матриці (зазвичай невеликими випадковими значеннями).

2)Подати на входи один з вхідних векторів, які мережа повинна навчитися розрізняти, і обчислити

їївихід.

3)Якщо вихід правильний, перейти на крок 4.

Інакше обчислити різницю між ідеальним у і отриманим у значеннями виходу:

Модифікувати ваги відповідно до формули

де t і t+1 - номери відповідно поточної і наступної ітерацій; з - коефіцієнт швидкості навчання, 0< з <1; i- номер входу; j - номер нейрона в шарі.

Очевидно, що, якщо уц > у, вагові коефіцієнти будуть збільшені і тим самим зменшать помилку. Інакше вони будуть зменшені, і у теж зменшиться, наближаючись до уц.

4) Цикл з кроку 2, поки мережа не перестане помилятися.

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

ав деяких випадках і гарантувати повний успіх.

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

звичайному режимі роботи. Цей алгоритм навчання НС отримав назву процедури зворотного розповсюдження.

Математична модель нейрона:

де S – результат підсумовування (sum); щ(i) – вага (weight) синапсу, i=1,n; x – компонент вхідного вектора (вхідний сигнал), i=1,n; b – значення зсуву (bias); n – число входів нейрона; у – вихідний сигнал нейрона; f – нелінійне перетворення (функція активації).

Узагальному випадку вхідний сигнал, вагові коефіцієнти і зсув можуть приймати дійсні значення,

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

Синаптічеськие зв'язки з позитивними вагами називаютьзбудливими, з негативними – гальмуючими. Описаний обчислювальний елемент можна вважати спрощеною математичною моделлю біологічних нейронів. Щоб підкреслити відмінність нейронів біологічних і штучних, других іноді називають нейроподібними елементами, або формальними нейронами.

На вхідний сигнал S нелінійний перетворювач відповідає вихідним сигналом f(S), який є виходом у нейрона.

Приклади активаційних функцій:

Приклади активаційних функцій:

а) функція одиничного стрибка; б) лінійний поріг (гістерезис); у) сигмоїд (логістична функція); г) сигмоїд (гіперболічний тангенс).

Одній з найбільш поширених є нелінійна функція активації, так звана логістична функція, або сигмоїд (функція S – образного вигляду):

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

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

Апроксимация функції.

Апроксимація полягає в тому, що використовуючи наявну інформацію по f(x) можна розглянути іншу функцію ?(x) близьку в деякому розумінні до f(x), що дозволяє виконати над нею відповідні операції і отримати оцінку погрішність такої заміни.

?(х)- апроксимуюча функція.

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

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

Функції в середовищі Маtlab,коториє використовуються для створення нейронної мережі.

Функції створення нової мережі.

* network - створення нейронної мережі користувача. Запис:

net=network

net==nehvork(numlnputs, nutnLayers, biasConncct, inputCormect, layerConnect, outputConnect, targetConnect)

Опис. Функція повертає створену нейронну мережу з ім'ям net і з наступними характеристиками (у дужках даны значення за умовчанням):

numlnputs – кількість входів (0) numLayers – кількість шарів (0)

biasConnect - булевий вектор з числом елементів, рівним кількості шарів (нулі)

inputConnect – булева матриця з числом рядків, рівним кількості шарів і числом рядків, рівним

кількості входів (нулі)

 

 

 

layerConnect – булева матриця з числом рядків і стовпців, рівним кількості шарів (нулі)

 

outputConnect – булевий вектор – рядок з числом елементів, рівним кількості шарів (нулі)

 

targetConnect – вектор – рядок, така ж як попередня.

 

 

 

* newc – створення конкурентного шару

 

 

 

net=newc(PR, S, KLR, CLR) функція створення шаруючи Кохонена.

 

 

Аргументи функції:

 

 

 

PR – R x 2 матриця мінімальних і максимальних значень для R вхідних елементів

 

 

S — число нейронів

 

 

 

KLR — коефіцієнт навчання Кохонена (за умовчанням 0.01)

 

 

 

CLR – коефіцієнт «справедливості» (за умовчанням 0.001).

 

 

 

* newcf- створення каскадної направленої мережі

 

 

 

net=newcf(PR, [SI S2...SNI], {TF1 TF2...TFNI}, BTF, BLF, PF) – функція створення

різновиду

багатошарової нейронної мережі із зворотним розповсюдженням

помилки– так

званій каскадній

нейронній мережі. Така мережа містить прихованих шарівNI,

використовує

вхідні

функції

типу dotprod і netsum, ініціалізація мережі здійснюється функцією initnw. Аргументи функції:

PR - R x 2 матриця мінімальних і максимальних значень для R вхідних елементів Si – розмір i – го прихованого шару, для N1 шарів

TFi – функція активації нейронів i – го шаруючи, за умовчанням 'tansig' BTF – функція навчання мережі, по умолчанию'trained'

BLF – функція настройки вагів і зсуву, за умовчанням 'learngdm' PF – функція помилки, за умовчанням 'mse'.

* newclm – створення мережі зворотного розповсюдження Елмана (Elman)

net=neweIm(PR, [SI S2...SNI], {TFI TF2...TFN1}, BTF, BLF, PF) – функція

створення мережі

Елмана. Аргументи такі ж, як і у попередньої функції.

 

 

* newff – створення однонаправленої мережі

 

 

net=newff(PR, [SI S2...SNI], {TFI TF2...TFNI}, BTF, BLF, PF) – функція

створення «класичної»

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

* newfftd – створення однонаправленої мережі з вхідними затримками

 

 

net=newfftd(PR, ID, [SI S2...SNI], {TFI TF2...TFNI}, BTF, BLF,PF) – те

ж ,

що і попередня

функція, але з наявністю затримок по входах. Додатковий аргумент ID – вектор вхідних затримок.

2 Методичні вказівки

Завдання. У середовищі Matlab необхідно побудувати і навчити нейронну мережу д апроксимації табличний заданої функції

yi=f(xi)=[2.09 2.05 2.19 2.18 2.17 2.27 2.58 2.73 2.82 3.04 3.03 3.45 3.62 3.85 4.19 4.45 489 5.06 5.63 5.91], i=1,20.

У математичному середовищі Matlab створюємо новий M-File, в якому записуємо код програми створення і навчання нейронної мережі з використанням вбудованих функцій пакету мережNeural Netwworks Toolbox.

Для вирішення скористаємося функцією newff(.) – створення «класичною» багатошаровою НС з

навчанням по методу зворотного розповсюдження помилки.

 

 

 

 

 

P = zeros(1,20);

 

 

 

 

 

 

 

 

 

 

for i = 1:20 %створення масиву

 

 

 

 

 

 

 

P(i)= i*0.1; %вхідні дані (аргумент)

 

 

 

 

 

 

end

 

 

 

 

 

 

 

 

 

 

 

 

T=[2.09

2.05

2.19

2.18

2.17

2.27

2.58

2.73

2.82

3.04

3.03

3.45

3.62

3.85 4.19 4.45 489 5.06 5.63 5.91]; %вхідні дані (значення функції)

 

net = newff([-1 2.09],[5 1],{'tansig'

'purelin'});

%створення

нейронній мережі

 

 

 

 

 

 

 

 

 

 

net.trainParam.epochs = 100; %задання числа епох навчання net=train(net,P,T); %навчання мережі

у = sim(net,P); %опитування навченої мережі figure (1);

hold on; xlabel ('P'); ylabel ('T');

plot(P,T,P,y,'o'),grid; %побудова графіка початкових даних і функції,

сформованою нейронною мережею

Результат роботи нейронної мережі:

Варіанти

Варіант

 

 

 

Таблично задана функція

 

 

 

1

1.1

1.2

1.3

1.4

1.5

1.6

1.7

1.8

1.9

2.0

2

4.51

5.04

5.59

6.16

6.75

7.36

7.99

8.64

9.31

10.00

3

4.62

4.82

5.02

5.22

2.42

5.62

5.82

6.02

6.22

6.42

4

8.08

9.23

10.48

11.83

13.28

14.83

16.48

18.23

20.08

22.03

5

1.56

1.73

1.91

2.10

2.82

3.02

3.22

3.42

3.62

3.82

6

0.1

0.2

0.3

0.4

0.5

0.6

0.7

0.8

0.9

1

7

0.31

0.64

0.69

1.36

1.75

2.16

2.59

3.04

3.51

4.00

8

2.62

2.82

3.02

3.22

3.42

3.62

3.82

4.02

4.22

4.42

9

2.08

2.23

2.48

2.83

3.28

3.83

4.48

5.23

6.08

7.03

10

1.00

0.22

0.34

0.47

0.61

0.75

0.90

1.06

0.22

1.39

11

4.51

5.04

5.59

6.16

6.75

7.36

7.99

8.64

9.31

10.00

12

0.6

0.8

1.0

1.2

1.4

1.8

2.0

2.2

2.4

2.6

13

8.08

9.23

10.48

11.83

13.28

14.83

16.48

18.23

20.08

22.03

14

2.08

2.23

2.48

2.83

3.28

3.83

4.48

5.23

6.08

7.03

15

2.1

2.2

2.3

2.4

2.5

2.6

2.7

2.8

2.9

3.0

16

1.56

1.73

1.91

2.10

2.82

3.02

3.22

3.42

3.62

3.82

3 Контрольні питання

1.Дайте визначення «нейрона».

2.Що Ви розумієте під навчанням нейронної мережі?

3.Що таке «повчальна множина»?

4.Поясните сенс алгоритму навчання з вчителем.

5.Що таке апроксимація функції?

6.Які функції в середовищі Маtlab використовуються для створення нейронної мережі?