Порядок виконання роботи

1. Необхідно створити нейронну мережу та виконати апроксимацію
функції з урахуванням впливу шуму.

2. Створіть пустий m-файл та збережіть його в робочому каталозі. Задайте вхідний вектор р і вихідний – t.

3. З урахуванням розрахованих параметрів, наведених вище, сформуйте модельовану мережу за допомогою команди:

net = newff (minmax(p), [30, 1], {‘tansig’, ‘purelin’}, ‘trainbfg’);

4. Для реалізації нейронної мережі згенеруйте нейромережевий блок Simulink, задавши в m-файл наступну функцію:

gensim (net);

У результаті повинна відкритися структурна схема мережі, зображена на рис. 4.1.

Рисунок 4.1 – Структурна схема мережі

Перегляньте всі елементи мережі, двічі клацнувши на них. Переконайтеся, що мережа складена правильно: має один вхід з вхідним вектором р {1} і один вихід з вихідним вектором у {1}, складається з двох шарів.

5. Перегляньте архітектуру шарів. Так прихований перший шар повинен мати такий вигляд (рис. 4.2):

Рисунок 4.2 – Структурна схема мережі. Перший прихований
шар мережі

На рис. 4.2 показано, що вхідний вектор p{1} подається на блок TDL – лінія затримки з ім’ям Delays1, яка забезпечує затримку вхідних сигналів на один такт. Лінію затримки додають до мережі для збільшення можливостей моделі. Сигнали після лінії затримки подаються на блок weight з ім’ям IW{1, 1} – масив комірок з матрицями ваг входів: матриці для шару 1 (прихованого) від вхідного вектора 1. До прихованого шару нейронів доданий блок зсуву з ім'ям b {1} – блок ваг зсувів, який призводить до прискорення процесу навчання. У модель включений блок netsum – блок підсумовування компонент для кожного нейрона першого шару: компонент від вектора входу вхідного шару з урахуванням затримки і зміщення. Вихідний сигнал суматора надходить в нелінійний перетворювач, позначений спеціальним графічним символом, де перетворюється функцією активації tansig, і результат подається на вихід першого шару мережі a{1}.

6. Перегляньте структуру другого шару. Вихідний сигнал суматора другого шару перетворюється лінійною функцією активації purelin, і результат подається на вихід другого шару a{2}. Значення виходу другого шару подається на вихід мережі y1.

7. Необхідно навчити нейронну мережу за відсутності шуму. Параметри необхідно поставити такі:

net.trainParam.epochs=500; - задану кількість циклів навчання;

net.trainParam.show=50; - кількість циклів для показу проміжних результатів;

net.trainParam.goal=1e-5; - цільова помилка навчання;

p = [-1:0.05:1]; - вхідний вектор мережі;

t = sin(2*pi*p); - вихідний вектор мережі;

[net, tr] = train(net, p, t); - навчання мережі за відсутності шуму.

Процес навчання ілюструється графіком залежності помилки навчання від кількості циклів навчання (рис. 4.3).

Рисунок 4.3 – Крива навчання нейронної мережі за відсутності шуму

8. Для створення нейронної мережі, не чутливої до впливу шуму, навчіть її із застосуванням одного ідеального і одного зашумленого векторів входу. Викривлений вектор має шум із середнім значенням 0,02, розподіленим за нормальним законом. Цільовий вектор складається з двох векторів. Такий спосіб навчання нейронної мережі дозволить правильно апроксимувати як зашумленную функцію, так і ідеальну:

– вхідний вектор, що складається з ідеального та зашумленого векторів;

– цільової вектор, що складається з двох
векторів.

9. Для реалізації нейронної мережі задайте в m-файлі наступні
функції:

netn = net; % ініціалізація мережі;

netn.trainParam.epochs = 500; % задану кількість циклів навчання;

netn.trainParam.show = 50; % кількість циклів для показу проміжних результатів;

netn.trainParam.goal = 1e-3; % цільова помилка навчання;

t1 = [sin(2*pi*p) sin(2*pi*p)]; % вихідний вектор мережі;

p1 = [p, (p + randn (size(p))*0.02)]; % вхідний вектор мережі з шумом;

[netn, tr] = train (netn, p1, t1); % навчання мережі за наявності шуму.

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

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

netn.trainParam.goal = 1e-5; % цільова помилка навчання;

[netn, tr] = train (netn, p, t); % повторне навчання мережі за відсутності шуму.

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

11. Після навчання нейронних мереж, перевірте ефективність їх
функціонування.

12. Перевірка функціонування системи здійснюється наступним чином. Шум з діапазоном значень від 0 до 0,1 з кроком 0,01, розподіленим за нормальним законом, додається до вектора входу кожної мережі. Для кожного рівня шуму формується 20 зашумлених послідовностей (розмірність вхідного вектора дорівнює , а test = 20), потім обчислюється вихід мережі. Після цього визначається кількість помилкових класифікацій і обчислюється відсоток помилки. Наступний набір команд ілюструє описану процедуру:

tic % встановлює таймер

noise=0:0.01:0.1; % різні рівні шуму

test=20; % кількість ітерацій

network1=[];

network2=[];

t=sin(2*pi*p); % вихідний вектор

for noiselevel = noise % організуємо цикл

errors1=0; % початкове значення сумарної помилки мережі net

errors2=0; % початкове значення сумарної помилки мережі netn

for i=1:test

P = p + randn (size (p)) * noiselevel; % вхідний вектор

A = sim (net, P); % використання мережі net

errors1 = errors1+sum(sum(abs(A-t)))/2; % сумарна помилка
мережі net

An=sim(netn,P); % використання мережі netn

errors2 = errors2 + sum(sum(abs(An-t)))/2; % сумарна помилка
мережі netn

echo off % вмикає повторення команд

end

network1 = [network1 errors1/41/20];

network2 = [network2 errors2/41/20];

end

network1

network2

toc

figure(1)

plot (noise,network1*100,'--b', noise, network2*100, ':r', 'LineWidth', 1.5);

% графіки залежностей відсотка помилки від рівня шуму

legend('відсоток помилки мережі net', 'відсоток помилки мережі netn');

% легенда

xlabel('Рівень шуму','FontSize',12);

ylabel('Відсоток помилки','FontSize',12);

title ('Залежність відсотка помилки від рівня вхідного шуму', 'FontSize', 12, 'FontWeight', 'bold');

grid on

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

Рисунок 4.4 – Залежність відсотка помилки від рівня вхідного шуму

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

14. Застосуйте створену нейронну мережу для апроксимації даної функції. Для цього необхідно сформувати викривлений вектор входу із середнім значенням шуму рівними 0,03, розподіленими за нормальним законом. При використанні мережі задайте рівень зашумлення вхідного вектора більше, ніж при навчанні:

.

15. Для того щоб застосувати навчену мережу для обробки даних, необхідно скористатися функцією sim.

an = sim (net, p); % використання нейронної мережі

16. Пропишіть наступний набір команд у файл програми:

p2=randn(size(p))*0.03+p; % вхідний вектор із шумом

[an, E]=sim(net, p2); % використання нейронної мережі

figure(2);

plot (p2, t, '+', p2, an, '-', p, t, ':', 'LineWidth', 1.5) % графіки

legend('вход','выход','sin(2*\pi*t)'); % легенда

title ('Апроксимація функції y=sin(2*\pi*t) двошаровою нейронною мережею', 'FontSize', 11.5, 'FontWeight', 'bold'); % заголовок

grid on % координатна сітка

E = mse (an-t) % середньоквадратична помилка використання нейронної мережі

17. У результаті ви маєте отримати графік апроксимації функції, що наведений на рис. 4.5.

Рисунок 4.5 – Апроксимація функції
двошаровою нейронною мережею

18. Проаналізуйте отримані графіки та зробіть висновки щодо роботи навченої нейронної мережі.

Зміст звіту

1. Тема й мета роботи.

2. Навести структурну схему розробленої мережі.

3. Навести отримані криві при навчанні нейронної мережі без шуму та за наявності шуму.

4. Зобразити графік залежності відсотка помилки від рівня вхідного
шуму.

5. Висновки про здатність різних нейронних мереж апроксимувати
функції.

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

1. Від чого залежить архітектура нейронної мережі?

2. Які етапи виділяють при моделюванні нейронної мережі?

3. Як задається вихідний вектор для мережі?

4. Які види передавальних функцій можуть обчислювати вихідний сигнал нейрона?

5. Поясніть алгоритм зворотного поширення помилки.

6. Назвіть критерії зупинки навчання нейронної мережі.

Література: [2, 6–9, 11–12].



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: