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

 

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

Як приклад створимо узагальнено-реґресійну НМ з ім'ям netдля апроксимації функції виду y=х2 на відрізку [-1, 1], використовуючи наступні експериментальні дані:

 

x -1 -0.8 -0.5 -0.2 0.1 0.3 0.6 0.9
y 0.64 0.25 0.04 0.01 0.09 0.36 0.81

 

Процедура створення й використання даного типу НМ описується в такий спосіб:

» % Задання вхідних значень

» Р = [-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];

» net = newgrnn(P,T,0.01); % Створення мережі із відхиленням 0.01

» Y = sim(net,[-0.9 -0.7 -0.3 0.4 0.8]) % Опитування мережі

Y =

0.8200 0.6400 0.0400 0.0900 0.8100

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

» net = newrbe(P,T);

» Y = sim(net,[-0.9 -0.7 -0.3 0.4 0.8]) % Опитування НМ

Y =

0.8100 0.4900 0.0900 0.1600 0.6400

Процедура створення, навчання й використання «класичної» багатошарової мережі відбувається у командному рядку наступним чином:

» net = newff([-1 1],[5 1],{'tansig' 'purelin'},'trainbr'); % Створення нової НМ

» net.trainParam.epochs = 50; % Задання кількості циклів навчання

» [net tr] = train(net,P,T); % Навчання мережі

TRAINBR, Epoch 0/50, SSE 26.7652/0, SSW 369.188, Grad 2.57e+001/1.00e-010, #Par 1.60e+001/16

TRAINBR, Epoch 25/50, SSE 1.15198e-005/0, SSW 25.854, Grad 1.05e-003/1.00e-010, #Par 7.91e+000/16

TRAINBR, Epoch 50/50, SSE 2.36514e-007/0, SSW 29.4473, Grad 7.39e-005/1.00e-010, #Par 8.88e+000/16

TRAINBR, Maximum epoch reached.

» Y = sim(net,[-0.9 -0.7 -0.3 0.4 0.8]) % Використання мережі

Y =

0.8107 0.4895 0.0904 0.1604 0.6397

» Y = sim(net,P);

» plot(P,T,P,Y,'о') % Графічна ілюстрація роботи мережі

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

» net = newcf([-1 1],[5 1],{'tansig' 'purelin'});

» net.trainParam.epochs = 50;

» [net tr] = train(net,P,T);

TRAINLM. Epoch 0/50, MSE 7.77493/0. Gradient 138.282/le-010

TRAINLM. Epoch 25/50, MSE 4.01014e-010/0, Gradient 0.00028557/le-010

TRAINLM. Epoch 50/50. MSE 1.13636e-011/0, Gradient 1.76513e-006/le-010

TRAINLM, Maximum epoch reached, performance goal was not met.

» Y = sim(net,[-0.9 -0.7 -0.3 0.4 0.8])

Y =

0.7363 0.5898 0.0469 0.1478 0.6462

» Y = sim(net,P);

» plot(P,T,P,Y,'о');

Результати апроксимації з використанням різних НМ наведені на рис. 6.9.

Рисунок 6.9 - Результати апроксимації функції y=x2 різними видами НМ:

1 - аналітичний розв’язок; 2, 3, 4, 5 - результат апроксимації з використанням узагальнено-реґресійної, каскадної, «класичної» багатошарової мереж і мережі з радіальними базисними елементами відповідно

 

На рис. 6.10 і 6.11 наведені графіки помилки апроксимації при використанні вищевказаних видів НМ та графіки зміни параметрів якості навчання «класичної» багатошарової НМ відповідно.

Рисунок 6.10 - Помилка апроксимації функції y=x2 різними видами НМ:

1, 2, 3, 4 - результат навчання узагальнено-реґресійної, каскадної, «класичної» багатошарової мереж і мережі з радіальними базисними елементами відповідно

 

Рисунок 6.11 - Графіки зміни критеріїв якості «класичної» багатошарової мережі в процесі навчання

 

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

 

x 1.0 1.5 3.0 -1.2
y 1.5 3.0 1.0

 

Процес створення, навчання й використання лінійної НМ з ім'ям net ілюструється наведеним нижче лістингом і рис. 6.12, 6.13.

» Р = [1.0 1.5 3.0 -1.2];

» Т = [0.5 1.1 3.0 -1.0];

» % Визначення величини коефіцієнта навчання

» maxlr = maxlinlr(P,'bias');

» net = newlin([-2 2],1,[0],maxlr); % Створення лінійної мережі з ім'ям net

» net.tгаinParam.epochs = 15; % Задання кількості циклів навчання

» [net tr] = train(net,P,T) % Навчання мережі

TRAINWB. Epoch 0/15. MSE 2.865/0.

TRAINWB. Epoch 15/15. MSE 0.0730734/0.

TRAINWB. Maximum epoch reached.

» Y = sim(net, P) % Опитування мережі

Y =

0.8500 1.3114 2.6958 -1.1803

» Y= sim(net,P);

» plot(P,T,P,Y,'о'); % Графічна ілюстрація роботи мережі

Результати та помилка апроксимації лінійної НМ зображені на рис. 6.12, 6.13 відповідно.

Рисунок 6.12 - Результат апроксимації за допомогою лінійної НМ

 

Рисунок 6.13 - Зміна похибки лінійної НМ у процесі навчання








Дата добавления: 2015-10-13; просмотров: 1334;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.01 сек.