Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СППР_Часть1.doc
Скачиваний:
127
Добавлен:
11.11.2019
Размер:
2.14 Mб
Скачать

3.1.4 Задача аппроксимации

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

Нейросетевые алгоритмы аппроксимации экспериментальных данных считаются лучшими. Они основываются на теоретических исследованиях А.М.Колмогорова, где доказано, что любую функцию многих переменных можно смоделировать двухслойной нейронной сетью с прямыми связями с n нейронами входящего слоя, (2n+1) нейронами скрытого слоя, m нейронами выходного слоя с функциями активации f, которые должны быть непрерывными и дифференцируемыми в области определения. Этим требованиям отвечают сигмоидальные функции.

Математическая модель двухслойной сети имеет вид: ,

где ak, bkm, cmi – синаптические коэффициенты, f1, f2, f3 – передаточные функции слоев (функции активации).

Пример 3.3. Необходимо выполнить аппроксимацию функции , где , а n - число точек функции.

Заготовим целевые данные, введя в поле "Значение" (Value) окна создания новых данных выражение:

sin(5*pi*[1:100]/100+sin(7*pi*[1:100]/100)).

Эта кривая представляет собой отрезок периодического колебания с частотой 5π/N, модулированного по фазе гармоническим колебанием с частотой (рис. 3.10).

Теперь заготовим набор обучающих данных (1, 2, 3, …, 100), задав их следующим выражением: 1:100.

Выберем персептрон (Feed-Forward Back Propagation) c тринадцатью сигмоидными (TANSIG) нейронами скрытого слоя и одним линейным (PURELIN) нейроном выходного слоя. Обучение будем производить, используя алгоритм Левенберга-Маркардта (Levenberg-Marquardt), который реализует функция TRAINLM. Функция ошибки - MSE.

Теперь можно приступить к обучению. Для этого указываем какие наборы данных должны быть использованы в качестве обучающих и целевых, а затем проводим обучение.

Рисунок 3.9 - Архитектура сети для решения задачи аппроксимации

Рис. 3.10 иллюстрирует разницу между целевыми данными и полученной аппроксимирующей кривой. Из графика обучения сети видно, насколько уменьшилась ошибка аппроксимации за 100 эпох обучения. Форма кривой обучения на последних эпохах говорит также о том, что точность приближения может быть повышена.

Рисунок 3.10 – Данные и аппроксимирующая функция

3.2 Функции Matlab для работы с нейронными сетями

1) Линейная функция активации purelin.

Эта функция описывается соотношением

a = purelin(n) = n.

Построим график функции в диапазоне от -5 до + 5:

n=-5:0.1:5;

plot(n,purelin(n),'b+:');

2) Логистическая функция активации logsig.

Эта функция описывается соотношением

a = logsig(n) = 1/(1 + exp(-n)).

Она принадлежит к классу сигмоидальных функций, и ее аргумент может принимать любое значение в диапазоне от - до +, а выход изменяется в диапазоне от 0 до 1.

Построим график функции в диапазоне от -5 до + 5:

n=-5:0.1:5;

plot(n,logsig(n),'b+:');

3) Создание новой нейронной сети и ее обучение

Следующий оператор создает сеть с прямой передачей сигнала

net=newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF)

PR – матрица R x 2 – min и max значений для R входных элементов;

Si – количество нейронов на i-ом слое;

TFi – функции активации для i-го слоя, default = 'tansig' ;

BTF – функция обучения, default = 'traingdx';

BLF – функция для весов, default = 'learngdm';

PF – целевая функция, default = 'mse'.

Пример:

P = [0 1 2 3 4 5 6 7 8 9 10]; % Входные сигналы

T = [0 1 2 3 4 3 2 1 2 3 4]; % Выходные сигналы

net = newff([0 10],[5 1],{'tansig' 'purelin'});

net.trainParam.show=50; % показывать ошибку обучения через каждые 50 эпох

net.trainParam.epochs=300; % max кол-во эпох - 300

net.trainParam.goal=1e-5; % сеть обучается, пока ошибка не станет <=1e-5

[net,tr]=train(net,P,T); % обучение сети

t1=sim(net,P); %вычислить выходные сигналы по входящим

Эта сеть использует один вектор входа с одним элементом, имеющим допустимые границы значений [0 10];

- имеет 2 слоя с 5 нейронами в первом слое и 1 нейроном во втором слое;

- используемые функции активации: tansig - в первом слое, purelin – во втором слое;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]