Засоби MatLab, призначені для рішення завдань прогнозування. Прикладні програми

Для прогнозування на рівні лінійних моделей в MatLab використовують команди (функції) applin1 і applin2; функція Elman для виявлення амплітуди мережі, міститься в applin1, визначення характеристик (архітектури) мережі можливо при використанні функції appcr1. Допомога (підказка), яку можна одержати, набравши команду типу nndemos, дозволяє бачити всі демонстраційні приклади мережі.

Applin1: Лінійний Проект.

Постановка завдання. Відновлення сигналу T, тривалістю 5 секунд, виміри якого виконані на вибірці по нормі 40 зразків за секунду.

time = 0:0.025:5;

T = sin(time*4*pi);

Q = length(T);

У будь-якому заданому кроці часу мережа дає останні п'ять значень сигналів t, входи P визначаються затримкою сигналу T від одного кроку до п'яти кроків.

P = zeros(5,Q);

P(1,2:Q) = T(1,1:(Q-1));

P(2,3:Q) = T(1,1:(Q-2));

P(3,4:Q) = T(1,1:(Q-3));

P(4,5:Q) = T(1,1:(Q-4));

P(5,6:Q) = T(1,1:(Q-5));

Подання сигналу T наведене на рис.2.32.

Рис.2.32.Подання досліджуваного сигналу   Рис.2.33. Проект мережі

 

Проект Мережі. Оскільки відносини між минулими й буду-щими значеннями сигналу не змінюються, мережа може бути розроблена безпосередньо з наведених прикладів з використанням функції newlind. Завдання, як визначено вище, має п'ять входів (п'ять відстрочених величин сигналу), і один вихід (наступна величина сигналу). Таким чином, мережа повинна складатися з одного нейрона з п'ятьома входами (рис.2.33)

 

 

Рис.2.33. Проект мережі

Тут newlind знаходить ваги й зсуви, для нейрона, що мінімізують похибку суми квадратів.

net = newlind(P,T);

Створена мережа повинна бути тепер бути перевіреної.

Випробування Мережі. Щоб перевіряти мережа, на її виході вычис-ляют значення для п'яти відстрочених сигналів P і порівнюють із фактичним сигналом T (рис.2.34)

a = sim (net, P);

Рис.2.34. Відновлення сигналу Рис.2.35 Залежність помилки відновлення від кількості ітерацій

 

Вихід мережі й фактичний сигнал t збігаються практично точно. Мережа має деяку помилку для перших кроків у часі (рис.2.35). Це пояснюється тим, що мережа фактично на п'яти відстрочених сигналах лише навчалася. Однак, після того, як п'ята помилка стала незначною, лінійна мережа закінчила роботу. Керування модулем applin1 дозволяє бачити ці представлення (сигнал і помилка) у мережі.

Applin2: Адаптивне Прогнозування

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

Постановка завдання. Сигнал T, що потрібно передбачити, триває 6 секунд із нормою здійснення вибірки 20 раз у секунду. Однак, після 4 секунд частота сигналу раптово подвоююється. Маємо таку множину даних

time1 = 0:0.05:4;

time2 = 4.05:0.024:6;

time = [time1 time2];

T = [sin(time1*4*pi) sin(time2*8*pi)];

 

Тому що ми вчимо мережу зі збільшенням, ми змінюємо t на послідовність.

T = con2seq (T);

Відповідне подання сигналу показане на рис.2.36. Вхід мережі - той же самий сигнал, що становить мету роботи мережі (див. попередній приклад).

P = T;

Ініціалізація Мережі. Поставлене завдання вимагає, щоб Elman - мережа знайшла єдину величину (сигнал), і вихід - одну величину (амплітуда) на кожному кроці. Тому мережа повинна мати один елемент входу і один нейрон виходу.

R = 1; % 1 вхід елемент

S2= 1; % 1 шар 2 нейрони виходу

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

S1=10; % 10 поточних нейронів у першому шарі

Рис.2.36. Подання досліджуваного сигналу Рис.2.37. Процедура навчання мережі

Тепер функція newelm може використовуватися, щоб призначити початкові ваги матриці й вектори зсувів для мережі з одним входом, що може змінитися між -2 і +2. Ми використовуємо змінну, задаючи для цього приклада форму функції активації у вигляді traingdx.

net = newelm([-2 2],[S1 S2],{'tansig','purelin'},'traingdx');

Навчання Мережі

Тренування мережі.

[net,tr] = train(net,Pseq,Tseq);

Функція закінчує навчання протягом 500 епох, це показує наступне подання похибок (рис.2.37). Остаточна середньо-квадратична помилка не перевищує 1.8 e-2.

Випробування Мережі. Щоб перевіряти мережу, первісні входи і її вихід розраховані за допомогою newelm, представлені на рис.2.7, a = sim(net,Pseq);

Подання - рис.2.38 Рис.2.39. Результат випробувань мережі

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

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

p3 = sin(1:20)*1.6;

t3 = ones(1,20)*1.6;

p4 = sin(1:20)*1.2;

t4 = ones(1,20)*1.2;

pg = [p3 p4 p3 p4];

tg = [t3 t4 t3 t4];

pgseq = con2seq(pg);

Послідовність входу pg і цільова послідовність tg використовується, щоб перевірити здатність створеної мережі зробити висновок щодо нових амплітуд. Ще раз, функція sim використовується, щоб моделювати Elman-Мережа. Результати представлені на рис.2.40.

a = sim(net,pgseq);

Рис.2.40. Результати моделювання Рис.2.41. Зображення символу (букви) А як бінарної матриці

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

Варіанти завдань

Використовуючи стандартні засоби Neral Networks Toolbox MatLab, скласти программу для апроксимації функціональної залежності, порівняти отриманий результат з результатом апроксимації на підставі систем нечіткого висновку типу Мамдані (лаб. робота №2) та результатом апроксимації NNTOOL.

 

№ варіанту Тип функції Область визначення змінних Примітки
   
  y=F (x 1, x 2) = sin(x 1 + x 2) – x 1 x 1, x 2 [0, 2pi]  
  y= F (x 1, x 2)=exp(– x 1)+ sin(x 2/2) x 1, x 2 [0, 2pi]  
  y=F (x 1, x 2, x 3) = sin(x 1 + x 2 + x 3) x 1, x 2, x 3 [0, 2pi/3]  
  y=F (x 1, x 2, x 3) = cos(x 1 + x 2 + x 3) x 1, x 2, x 3 [0, 2pi/3]  
  y=F (x 1, x 2, x 3) = sin((x 1+ x 2 + x 3)/2) x 1, x 2, x 3 [0, 2pi/3]  
  y=F (x 1, x 2, x 3) = cos((x 1+ x 2 + x 3)/2) x 1, x 2, x 3 [0, 2pi/3]  
  y=F (x 1, x 2, x 3) = exp(– x 1) + exp(– x 2) + exp(x 3/2) x 1, x 2, x 3 [0, 2pi/3]  
  y=F (x 1, x 2, x 3) = sin(x 1 + x 2 + x 3) x 1, x 2, x 3 [0, 2pi/3]  

4.2.Використовуючи стандартні засоби Neral Networks Toolbox MatLab, скласти программу для прогнозування значення функції:

 

1. x(t)=sin(4pt)+0.1 rand(); 2. x(t)=sin(4pt)+ cos(5pt)-0.1 rand(); 3. x(t)=sin2(4pt)- cos(5pt)-0.1 rand(); 4. x(t)=sin(4pt)+ cos2(5pt)+0.1 rand(); 5. x(t)=sin2(4pt)+ cos2(5pt); 6. x(t)=4pt+0.1 rand(); 7. x(t)=4pt+ cos(5pt)+0.1 rand(); 8. x(t)=sin(4pt)+ 5pt-0.1 rand()

 

4.3.Використовуючи стандартні засоби Neral Networks Toolbox MatLab, скласти программу для визначення місця знаходження випадково обраної точки

 

1. 2
  3.

 


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



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