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

[ виправити ] текст може містити помилки, будь ласка перевіряйте перш ніж використовувати.

скачати

Міністерство освіти і науки Російської Федерації Федеральне агентство з освіти

Амурський гуманітарно-педагогічний державний університет

Фізико-математичний факультет

ЛАБОРАТОРНА РОБОТА № 1

з дисципліни «Штучні нейронні мережі» на тему: "Апроксимація функції з використанням нейронних мереж»

2007

Зміст

Введення

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

  2. Методика виконання лабораторної роботи

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

Висновок

Список використаних джерел

Введення

Мета лабораторної роботи:

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

Завдання: У середовищі Matlab необхідно побудувати і навчити нейронну мережу для апроксимації таблично заданої функції , I = 1,20. Розробити програму, яка реалізує нейромережевої алгоритм апроксимації і виводить результати апроксимації у вигляді графіків.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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);% навчання мережі

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

figure (1);

hold on;

xlabel ('P');

ylabel ('T');

plot (P, T, P, y, 'o'), grid;% промальовування графіка вихідних даних і функції, сформованої нейронної мережею

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

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

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

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

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

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

3. Що таке «навчальна множина»? Робота мережі протікає в два етапи. На першому з них відбувається її навчання. Для цього за допомогою експериментів або їх программнихімітаторов формується навчальна множина {Vin; Vout} котороепредставляет собою набір пар вхідного та відповідного вихідного векторів. Розмір навчальної множини (кількість пар) залежить від складності аналізованого відображення і загального числа шарів і нейронів на них. Вхідні вектора включають безпосередньо спостережувані величини (показання приладів або їх комбінації), а вихідні - фізичні характеристики процесу, які потрібно визначити в результаті аналізу (типи частинок, їх заряди, швидкості і т.д.). На початку навчання значення w НС ініціюються невеликими випадковими значеннями і на її вхід по черзі подаються значення вхідних векторів з навчальної множини. Порядок проходження векторів визначається випадковим чином, щоб запобігти "звикання" мережі до їх фіксованої послідовності. За допомогою нелінійного перетворення значень uj кожного з нейронів вхідного шару і величин wji формуються значення ui

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6. Які функції в середовищі Ма 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 S 2 ... SNI], {TF 1 TF 2 ... TFNI}, BTF, BLF, PF) - функція створення різновиди багатошарової нейронної мережі зі зворотним поширенням помилки - так званої каскадної нейронної мережі. Така мережа містить прихованих NI шарів, використовує вхідні функції типу dotprod і netsum, ініціалізація мережі здійснюється функцією initnw.

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

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

Si - Розмір i - го прихованого шару, для N 1 шарів,

TFi - Функція активації нейронів i - го шару, за замовчуванням 'tansig',

BTF - Функція навчання мережі, типово 'trained',

BLF - Функція налаштування ваг і зсуву, за замовчуванням 'learngdm',

PF - Функція помилки, за замовчуванням 'mse'.

* Newclm - Створення мережі зворотного поширення Елмана (Elman)

net = neweIm (PR, [SI S 2 ... SNI], {TFI TF 2 ... TFN 1}, BTF, BLF, PF) - функція створення мережі Елмана. Аргументи такі ж, як і у попередньої функції.

* Newff - Створення односпрямованої мережі

net = newff (PR, [SI S 2 ... SNI], {TFI TF 2 ... TFNI}, BTF, BLF, PF) - функція створення «класичної» багатошарової нейронної мережі з навчанням за методом зворотного розповсюдження помилки.

* Newfftd - Створення односпрямованої мережі з вхідними затримками

net = newfftd (PR, ID, [SI S 2 ... SNI], {TFI TF 2 ... TFNI}, BTF, BLF, PF) - те ж, що і попередня функція, але з наявністю затримок по входах. Додатковий аргумент ID - вектор вхідних затримок.

Висновок

У ході виконання даної лабораторної роботи я побудувала і навчила нейронну мережу для апроксимації таблично заданої функції , I = 1,20 в середовищі Matlab. Розробила програму, яка реалізує нейромережевої алгоритм апроксимації і виводить результати апроксимації у вигляді графіків.

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

Список використаних джерел

  1. О.С. Амосов

  2. О.С. Амосов «Інтелектуальні інформаційні системи. Нейронні мережі та нечіткі системи »: Учеб. Посібник. - Комсомольськ-на-Амурі: ГОУВПО «КнАГТУ», 2004. -104 С.

Додати в блог або на сайт

Цей текст може містити помилки.

Програмування, комп'ютери, інформатика і кібернетика | Лабораторна робота
57.3кб. | скачати


Схожі роботи:
Моделі нейронних мереж
Властивості основних нейронних мереж
Кластеризація за допомогою нейронних мереж
Психологічна інтуїція штучних нейронних мереж
Конструювання алгоритмів керування на основі нечіткої логіки і нейронних мереж
Дослідження можливості застосування штучних нейронних мереж для автоматичного управління
Технологія вилучення знань з нейронних мереж апробація проектування ПЗ використання в психолінгвістиці
Апроксимація
Апроксимація функцій
© Усі права захищені
написати до нас