Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
РЕШЕНИЕ ЗАДАЧ АППРОКСИМАЦИИ СРЕДСТВАМИ
НЕЙРОСЕТЕВЫХ ТЕХНОЛОГИЙ Цель работы – ознакомление с пакетом 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; Нарушение авторского права страницы