Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Клюкин_Николаенков.doc
Скачиваний:
137
Добавлен:
18.11.2019
Размер:
1.11 Mб
Скачать

Лабораторная работа № 7 Сглаживание функций с помощью нс и эффект переобучения

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

Задание

Сформировать последовательность значений функции, моделирующую измерение с известной погрешностью r. Для этого значения предложенной функции y(x) с помощью функции генерации случайной матрицы rand преобразуйте в значения t = y  r%, которые будут служить целевым вектором для НС.

Для функции newff с обучением по методу обратного распространения ошибки подберите такое количество нейронов в скрытом слое, чтобы получить аппроксимирующую НС, способную убрать ошибки измерения значения функции y(x), т.е. НС должна генерировать значения функции y(x) (как можно более точно), а не функции t(x), по которым мы ее обучаем. Чтобы предотвратить эффект переобучения сети – когда аппроксимация становится чересчур точной – количество нейронов в скрытом слое НС должно быть минимальным. Кроме подбора числа нейронов и функций активации для лучшего сглаживания возможно потребуется подобрать функцию обучения НС (приложение 1).

Аналогичную задачу решить с помощью создания НС с радиальными базисными элементами (newrbe). Для такой сети коэффициентом сглаживания выходных значений служит отклонение (spread).

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

Пример

Создадим нейронные сети двух разных топологий для сглаживания значений квадратичной функции, полученных с погрешностью 10%.

% Аппроксимация и сглаживание функции у=х^2

% с помощью нейронной сети

% выводит также график ошибки

clear

p = 1:0.2:10;

Q = length(p);

t = p.^2;

r = 10; %Погрешность при измерении значений t

t1=t+(rand(1,Q).*t*r/50-t*r/100);

plot(p,t,p,t1,'r-');

legend('первоначальная функция', 'с погрешностями', 2);

title('Исходные функции');

% Использование сети с обучением по методу обратного

% распространения ошибки

net=newff(minmax(p),[3 1], {'tansig','purelin'});

net=train(net,p,t1);

yf=sim(net,p);

figure;

plot(1:Q,yf,'k',1:Q,t1,'r',1:Q,t,'g');

legend('сглаженная функция', 'с погрешностями', ...

'первоначальная функция', 2);

title('Сглаживание функции с помощью НС newff');

% Использование сети с радиальными базисными элементами

net1 = newrbe(p,t1,100);

yr=sim(net1,p);

figure;

plot(1:Q,yr,'k',1:Q,t1,'r',1:Q,t,'g');

legend('сглаженная функция', 'с погрешностями', ...

'первоначальная функция', 2);

title('Сглаживание функции с помощью НС newrbe');

% Тестирование нейронных сетей

pt = 1:0.1:10;

Qt = length(pt);

tt = pt.^2;

yft=sim(net,pt);

yrt=sim(net1,pt);

plot(1:Qt,yft,'b',1:Qt,yrt,'y',1:Qt,tt,'g');

legend('сглаженная функция newff',...

'сглаженная функция newrbe', 'первоначальная функция', 2);

title('Тестирование сглаживания функции с помощью НС');

% Вывод графиков ошибок

figure

e = yft-tt;

e1 = yrt-tt;

plot(pt,e,'b',pt,e1,'m');

legend('ошибка сети newff','ошибка сети newrbe', 2);

title('Абсолютные ошибки при сглаживании');

Порядок выполнения работы:

1) Создать обучающую и тестирующую выборки для НС.

Для этого в MATLAB задать функцию в табличном виде, где вектор – строка X=[X1, X2, ..., Xn] – аргументы функции, а строка Y=[Y1, Y2, ..., Yn] – значения функции. Из вектора Y сформировать целевой вектор для обучения НС путем изменения каждого значения на n%. В качестве тестовой выборки для проверки сглаживания разбить функцию на большее число значений (уменьшив шаг разбиения).

2) Подобрать архитектуру (число слоёв, число нейронов в слое, тип активационной функции, скорость обучения и др.) нейронной сети таким образом, чтобы после обучения нейронная сеть при подаче на вход значений Х выдавала на выходе значения, отличающиеся не более чем на 3% от элементов вектора Y.

3) Применить процедуру обучения, если она требуется, для выбранной НС.

4) Протестировать работу сети на контрольной выборке.

Все пункты сопровождать графическими представлениями.

Варианты заданий

Для всех вариантов погрешность измерения равна 10%.

1. –1х1

2.

3. –2х2

4. –10х10

5. –2х3

6.

7.

8.

9.

10.