Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


РЕШЕНИЕ ЗАДАЧ АППРОКСИМАЦИИ СРЕДСТВАМИ



НЕЙРОСЕТЕВЫХ ТЕХНОЛОГИЙ

Цель работы – ознакомление с пакетом Neural Networks Toolbox системы (MATLAB); рассмотрение способов формирования и обучения сетей прямого распространения и RBF-сетей; исследование эффективности нейросетевого подхода для формирования заданных функций.

Основные сведения

Группы искусственных нейронов в сети образуют слои. Однослойные сети позволяют моделировать ряд функций, например, логические функции " и", " или", " не". Нереализуемые однослойной сетью функции (например, " исключающее или" ) называются линейно неразделимыми. Для моделирования подобных функций используют многослойные сети.

На рис. 5.1 многослойная сеть прямого распространения состоит из входного, промежуточного (скрытого) и выходного слоев. Обозначено: W 1, W 2 – матрицы весовых коэффициентов скрытого и выходного слоев соответственно, – выход i-го ИН j-го слоя.ИН входного слоя служат для распределения сигналов между ИН скрытого слоя и не осуществляют преобразование входных сигналов. ИН каждого слоя не связаны между собой, выходы ИН l-го слоя поступают только на входы ИН l +1-го слоя. Функция активации принимается одинаковой для всех ИН скрытых слоев сети. Выходной слой, как правило, состоит из ИН типа адалина и называется в этом случае мадалина. Радиальная базисная сеть состоит из двух слоев: скрытый слой из радиальных базисных нейронов (описание дано в лабораторной работе № 4), выходной слой – мадалина.

Теоретические основы доказательства аппроксимирующихсвойств нейронных сетей заложены в работах А. Н. Колмогорова, В. И. Арнольда, Funahashi, R. Hecht-Nielsen [1]. Теорема А. Н. Колмогорова (1958): любая непрерывная функция n переменных на замкнутом ограниченном множестве представима с помощью операций сложения, умножения и суперпозиции непрерывных функций одной переменной. Теорема Funahashi (1989): бесконечно большая сеть с единственным скрытым слоем способна аппроксимировать любую непрерывную функцию. Теорема R. Hecht-Nielsen (1990): реализация функции n переменных возможна с использованием сети прямого распространения с n искусственными нейронами в первом скрытом слое, и 2n +1 – во втором скрытом слое.

Описание функции создания многослойной нейронной сети прямого распространения newff:

имя = newff (PR, [S1 S2… SN ], {TF1 TF2… TFN}, BTF, BLF, PF)

 

 


Рис. 5.1

 

Аргументы функции: PR – R× 2 – матрица минимальных и максимальных значений для R входных элементов; Si– число нейронов i-го слоя; TFi – функция активации i-го слоя, по умолчанию " tansig" (гиперболический тангенс); BTF – функция обучения, по умолчанию " traingd" (алгоритм обучения обратного распространения ошибки), BLF – функция настройки весов и смещений, по умолчанию " learngdm" (градиентный алгоритм оптимизации с инерционной составляющей), PF – функция ошибки, по умолчанию «mse» (среднеквадратичная ошибка).

Описание функции создания RBF-сети:

имя = newrb (P, T, goal, spread)

Аргументы функции: P – матрица входных векторов; T – матрица целевых векторов; goal – заданная среднеквадратичная ошибка; spread – разброс функции, по умолчанию 1.0.

 

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

1. Формирование заданной функции с точностью до 0.1 % с помощью сети прямого распространения, изменяя: а) число данных обучающей выборки; б) число слоев сети; в) число ИН в скрытом слое; г) тип функции активации скрытого слоя: tansig (гиперболический тангенс); hardlim (пороговая); logsig (сигмоидальная); hardlims (знаковая); satlin (полулинейная с насыщением); tribas (треугольная); purelin (линейная); д) число циклов обучения (net.trainParam.epochs); е) алгоритм обучения: traingd (алгоритм обучения обратного распространения ошибки); trainbr (байесовская регуляризация, алгоритм Левенберга–Марквардта); trainlm (алгоритм оптимизации Левенберга–Марквардта).

Листинг программы

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

% humps(x) = 1./((x– 0.3)*0.2+0.01)+1./((x-0.9)*0.2+0.04) – 6

x = –1:.05: 2; % задание входного вектора;

y = humps(x); % задание выходного вектора;

P = x; T = y;

% Создание и тестирование нейронной сети

net = newff([-1 2], [20, 1], {'tansig', 'purelin'}, 'trainlm');

% newff – сеть прямого распространения(feedforward);

% [–1 2] – матрица минимальных и максимальных значений входных элементов;

% [5, 1] – матрица, указывающая на число ИН в слоях: 5 – число ИН в первом скрытом слое, 1– число ИН в выходном слое;

%{'tansig', 'purelin'}

% 'tansig'– функция активации скрытого слоя (гиперболический тангенс).

% Варианты: tansig; hardlim; logsig; hardlims; satlin; tribas;

%'purelin'– линейная функция активации выходного слоя;

%'traingd'– алгоритм обучения обратного распространения ошибки;

% Варианты: 'trainbr'; 'trainlm';

net.trainParam.show = 400; % результаты выводить через 400 итераций;

net.trainParam.lr = 0.05; % скорость обучения;

net.trainParam.epochs = 1000; % количество циклов обучения;

net.trainParam.goal = 1e-3; % заданная ошибка обучения;

% Обучение сети

net1 = train(net, P, T);

% Тестирование сети

a = sim(net1, P);

% Создание графиков исходного и аппроксимированного сигнала

plot(P, a, 'k-'); grid; hold;

xlabel('time(s)'); ylabel('output'); title('humps function')

plot(P, T, 'k*')

gensim(net1)

2. Реализация логических функции «и», «или», «исключающее или» с помощью RBF-сети.

Листинг программы

% Реализация логических функций функции

P1 = [0 0 1 1; 0 1 0 1]; T1 = [0 1 1 0];

% Создание и тестирование нейронной сети с радиальными базисными элементами;

goal = 0; % среднеквадратичная ошибка;

spread = 0.5; % разброс параметров;

net = newrb(P1, T1, goal, spread);

% Тестирование сети;

a = sim(net, P1)

gensim(net) % формирование нейросетевой модели в Toolbox Simulink;

3. Формирование заданной функции с помощью RBF-сети, изменяя: число данных обучающей выборки, величину ошибки, разброс параметров.

Листинг программы

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

x = –3:.05: 3; % задание входного вектора;

y = humps(x); % задание выходного вектора;

P = x; T = y;

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

goal = 0.02; % среднеквадратичная ошибка;

spread = 0.1; % разброс параметров;

net = newrb(P, T, goal, spread);

% Тестирование сети

a = sim(net, P);

% Создание графиков исходного и аппроксимированного сигнала

plot(P, a, 'k-'); grid; hold;

plot(P, T, 'k*'); xlabel('Time(s)'); ylabel('Output of network and error');

title ('Humps function approximation – radial basis function')

gensim(net) % создание модели сети в Toolbox Simulink

% SSE Sum squared error performance function (суммарная квадратичная ошибка).

Содержание отчета

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

5.4. Контрольные вопросы

1. Отличия сетей прямого распространения и нейронечетких сетей?

2. Почему для аппроксимации функций с помощью RBF-сети достаточно двух слоев?

Лабораторная работа № 6


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-05-03; Просмотров: 821; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.022 с.)
Главная | Случайная страница | Обратная связь