close

Вход

Забыли?

вход по аккаунту

?

Burakov1 0DCC7001A9

код для вставкиСкачать
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ
Федеральное государственное автономное
образовательное учреждение высшего образования
САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
АЭРОКОСМИЧЕСКОГО ПРИБОРОСТРОЕНИЯ
НЕЙРОСЕТИ В MATLAB
Методические указания
к выполнению лабораторных работ
Санкт-Петербург
2017
Составитель – М. В. Бураков
Рецензент – кандидат технических наук доцент М. А. Волохов
Рассмотрены примеры использования пакета Neural Network
toolbox MatLab для решения практических задач.
Учебное пособие предназначено для подготовки бакалавров по
направлению 27.03.04 «Управление в технических системах», а также студентов других специальностей, изучающих дисциплины «Системы с искусственным интеллектом» и «Нейронные сети инейроконтроллеры».
Публикуется в авторской редакции.
Компьютерная верстка С. Б. Мацапуры
Сдано в набор 25.12.17. Подписано к печати 29.12.17.
Формат 60×84 1/16. Усл. печ. л. 2,2. Уч.-изд. л. 2,4.
Тираж 50 экз. Заказ № 548.
Редакционно-издательский центр ГУАП
190000, Санкт-Петербург, Б. Морская ул., 67
© Санкт-Петербургский государственный
университет аэрокосмического
приборостроения, 2017
Введение
Искусственные нейронные сети (НС) в настоящее время широко используются в инженерной практике при решении задач, содержащих неопределенности. НС не требует описания алгоритма
решения задачи, но способна обучаться на примерах, вырабатывая
правильный отклик на любой сигнал, не входящий в обучающую
выборку.
Методические указания посвящены искусственным НС прямого
распространения, для обучения которых используется алгоритм обратного распространения ошибки. Этот алгоритм является локальным, однако позволяет решать большое количество прикладных задач, в том числе: распознавание образов, аппроксимация функций,
идентификация динамических объектов и т.д.
Методическое пособие содержит описание лабораторных работ в среде MatLab с использованием расширения Neural Network
toolbox. Каждая лабораторная работа предваряется краткими теоретическими сведениями и описанием примеров и заданий, выполнение которых позволяет получить навыки постановки задач, алгоритмизации и программирования НС.
Для углубленного изучения вопросов использования НС могут
быть рекомендованы работы [1–3].
3
Лабораторная работа № 1
Реализация логических функций
Цель работы: изучить графический интерфейс пользователя
NNtool MatLab и его возможности для нейросетевой реализации логических функций, а также освоить базовые команды MatLab для
создания и обучения НС.
Интерфейс NNTool позволяет легко формулировать и решать
разнообразные задачи с помощью искусственных нейронных сетей
(НС). Интерфейс позволяет выбирать топологию однослойной либо
двухслойной НС и предоставляет множество алгоритмов обучения
для каждого типа нейросети.
Решение задачи предполагает следующую последовательность
шагов:
– подготовка данных;
– создание нейронной НС;
– обучение НС;
– проверка работоспособности НС.
Обученная НС может быть экспортирована в рабочее пространство MatLab и визуализирована в виде блока Simulink.
Пример 1.1. Рассмотрим вариант использования НС и интерфейса NNTool для реализации логической функции «ИЛИ» (OR), которую описывает табл. 1.
Нейронная сеть должна иметь два входа и один выход.
Интерфейс запускается в командном окне MATLAB:
>> nntool
Главное окно NNTool показано на рис. 1.
После нажатия клавиши New открывается окно для ввода данных и создания НС. На рис. 2 и 3 показаны фрагменты окна ввода
входных данных (Input) и целевых данных (Target).
Введенные данные отображаются в главном окне NNtool.
После ввода обучающих данных следует перейти на вкладку
Network и выбрать параметры нейросети (рис. 4).
Таблица 1
4
X
Y
X OR Y
X AND Y
X XOR Y
0
0
1
1
0
1
0
1
0
1
1
1
0
0
0
1
0
1
1
0
Рис. 1. Главное окно интерфейса NNTool
Рис. 2. Ввод входных данных функции
Рис. 3. Ввод целевых данных функции
5
Рис. 4. Вкладка описания параметров нейронной сети
На этой вкладке выбрана НС прямого распространения (Feedforward backprop) c двумя слоями (Number of layers). Первый слой
содержит два нейрона с активационными функциями «гиперболический тангенс» (TANSIG). Существует возможность выбора обучающей функции (Training function) и функции адаптации (Adaption
learning function).
После нажатия кнопки Create создается НС с указанными параметрами и отображается ее название на панели Networks главного
меню. На этой панели может указываться одновременно несколько
названий НС. Выбрав нужное название, следует нажать на кнопку
Open, после чего возникает окно обучения НС (рис. 5), где показана
структура НС, отображающая количество слоев (Layer), количество
входов и выходов НС.
6
Вкладка Train окна обучения служит для указания обучающих
данных (рис. 6) и параметров обучения (рис. 7). Основным здесь является параметр epochs (максимальное количество циклов обучения).
После нажатия кнопки Train Network начинается процесс обучения, результаты которого иллюстрирует вкладка на рис. 8.
Как показывает рис. 8, для обучения потребовалось всего 8 эпох.
Проверить качество работы НС можно с помощью вкладки
Simulate окна обучения.
После обучения НС можно экспортировать ее в рабочее пространство MatLab (Workspace) нажатием кнопки Export главного меню.
Рис. 5. Окно обучения нейронной сети
Рис. 6. Обучающие данные
7
Рис. 7. Параметры обучения
После этого работу нейросети можно проверить командой (в
которой матрица входных данных имеет размер 2×4, т. е. каждый
столбец представляет собой комбинацию входных данных):
>> sim(network2,[0 0 1 1;0 1 0 1])
ans =
0.0001 0.9999 0.9993 1.0000
Выходы НС с высокой точностью соответствуют целевым данным.
Можно также проверить работу обученной НС в Simulink с помощью команды:
>> gensim(network2)
По этой команде открывается окно Simulink, содержащее НС в
виде блока (рис. 9).
Использование интерфейса nntool необходимо для первоначального ознакомления с возможностями пакета Neural Network. В общем случае удобнее использовать команды и составлять программы
для решения прикладных задач.
Пример 1.2. Классификация бинарных векторов длиной 4 бита.
Если вектор содержит нечетное число единичных битов, то на выходе сети должна быть 1, в противном случае – 0.
Входные векторы описываются матрицей
>> inp = [0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1;
0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1;
0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1;
0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1]
8
Рис. 8. Результат обучения нейросети
Constant
Input
NNET
Output
y1
x1
Custom Neural Network
Рис. 9. Нейронная сеть в Simulink
9
Выходной вектор:
>> out=[0 1 1 0 1 0 0 1 1 0 0 1 0 1 1 0]
Созданим 2-х слойную сеть прямого распространения с помощью
команды
>> network=newff([0 1;0 1; 0 1; 0 1],[6 1],{‘logsig’,’logsig’})
Здесь первая прямоугольная скобка содержит описания диапазона входного сигнала по каждому из 4-х входов. Вторая прямоугольная скобка содержит два числа, соответствующих количеству
нейронов в каждом слое. Фигурная скобка содержит описание активационных функций по каждому слою.
До начала обучения выполняется инициализация НС:
>> network=init(network);
Зададим число эпох, скорость и запустим обучение:
>> network.trainParam.epochs = 500;
>> network.trainParam.lr = 0.05;
>> network=train(network,inp,out);
Проверим работу сети:
>> y=sim(network,inp);
>> out-y
ans =
1.0e–004 *
–0.0191 0.0044 0.0204 –0.0237 0.0039 –0.0000 –0.0316
0.0041 0.0014 –0.0367 –0.0253 0.1118 –0.0299 0.0384
0.0000 –0.0000
Задание на лабораторную работу 1
1. Изучить интерфейс NNtool.
2. Выполнить нейросетевую реализацию логических функций
AND и XOR (см. табл. 1).
3. Обучить НС реализации логической функции для варианта,
указанного в табл. 2.
4. Разработать нейронную сеть, которая получает на входе всевозможные двоичные вектора длиной 4, а на выходе выдает сумму
битов вектора.
5. Разработать нейронную сеть, которая получает на входе два
двоичных вектора длиной 2, а на выходе выдает их двоичную сумму.
6. Разработать нейронную сеть, которая получает на входе два
двоичных вектора длиной 2, а на выходе выдает их двоичное произведение.
10
Таблица 2
Варианты логических функций трех переменных
Вход
Функции
x
y
z
F1
F2
F3
F4
F5
F6
F7
F8
F9
0
0
0
0
1
1
1
1
0
0
1
1
0
0
1
1
0
1
0
1
0
1
0
1
1
0
0
1
1
0
1
1
0
1
0
0
1
0
1
1
0
0
1
0
1
1
0
0
1
0
1
1
0
0
1
1
1
1
0
0
1
0
0
1
1
0
1
0
0
1
1
0
1
1
0
1
0
0
1
0
1
0
1
0
1
0
0
1
0
1
0
1
1
1
0
0
F10 F11 F12
0
0
1
1
1
0
1
0
1
0
1
1
0
0
0
1
1
1
0
1
1
0
0
0
7. Обучить нейронную сеть игре в крестики-нолики. Входным
вектором является девятимерный вектор, в котором в соответствующей позиции задается 0, если в ней находится 0, 1 – если крестик
и 0.5, если клетка пуста. На выходе нейросети получается новое положение после хода нейросети (нейросеть учится играть ноликами).
Начинают крестики.
11
Лабораторная работа № 2
Аппроксимация зависимостей
Цель работы: рассмотреть решение задач аппроксимации функций с помощью графического интерфейса пользователя NNtool
MatLab.
Искусственная НС является универсальным аппроксиматором,
т. е. по ограниченному набору обучающих данных она может построить непрерывную аппроксимацию неизвестной функции.
Пример 2.1.
Пусть имеется функция
=
y 3sin(x2 ) − cos(x3 ).
График этой функции может быть построен с помощью команд:
>> x=0:0.1:5;
>> y=2*sin(x).^2–cos(x).^3;
>> plot(x,y)
Массивы x и y состоят здесь из 50 точек.
Полагая функцию неизвестной, рассмотрим выборку точек из
исходных массивов с шагом 5:
for i=1:19
t(i)=i*5;
f(i)=x(t(i));
z(i)=y(t(i));
end
plot(f,z,’ko’,x,y)
xlabel(‘x’);
ylabel(‘y’);
На рис. 10 показана рассматриваемая функция и набор точек,
взятый для ее аппроксимации, который описывается массивами f
и z. Эти массивы находятся в рабочей памяти MatLab, и могут быть
импортированы через главное окно NNtool.
Будем использовать для аппроксимации двухслойную сеть прямого распространения с 5 нейронами 1-го слоя (с активационной
функцией tansig) и одним нейроном 2-го слоя (линейная активационная функция).
net = newff([0 10],[15 1],{‘tansig’, ‘purelin’});
net.trainParam.goal=0.01;
net.trainParam.epochs = 50;
12
net = train(net,f,z);
X = linspace(0,10);
Y = sim(net,X);
figure(1)
plot(f,z,’ko’,X,Y)
На рис. 11 показан результат моделирования выхода нейросети
при подаче входного сигнала из обучающей выборки.
y
1.5
1
0.5
0
–0.5
–1
0
1
2
3
4
5
6
7
8
9
x
Рис. 10. Аппроксимация функции по точкам
y
2
1.5
1
0.5
0
–0.5
–1
1
2
3
4
5
6
7
8
9
x
Рис. 11. Аппроксимация функции по точкам
13
Пример 2.2. Рассмотрим аппроксимацию функции двух переменных:
z=sin(x)cos(y).
C помощью стандартных функций MatLab получаем поверхность:
>> x = -2:0.25:2; y = -2:0.25:2;
>> z = cos(x)’*sin(y);
>> mesh(x,y,z)
Опишем обучающее множество для нейронной сети:
>> P = [x; y]; T = z;
При таком способе формирования обучающей выборки каждой
паре {x; y} соответствует столбец целевого множества. Поэтому нейронная сеть должна иметь два входа и 17 нейронов на выходе:
>> net=newff([-2 2; -2 2], [25 17], {‘tansig’ ‘purelin’},’trainlm’);
>> net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 300;
net.trainParam.goal = 0.001;
>> net1 = train(net, P, T);
Выполним проверку, построив поверхность (рис. 12):
>> A=sim(net1,P)
>> figure(1); mesh(x,y,A)
1
0.5
0
–0.5
–1
2
1
0
–1
–2 –2
–1
0
1
Рис. 12. Аппроксимация поверхности нейросетью
14
2
Задание на лабораторную работу 2
1. Выполнить нейросетевую аппроксимацию для заданного варианта функции одной переменной из табл. 3. Исследовать возможность использования персептрона и НС прямого распространения
с двумя или тремя слоями.
Таблица 3
Варианты функций одной переменной
№
1
Функция
0.1x
f (x) =
e
2
+ sin(x ) − cos(0.5x)
2=
f (x) x sin(3x) − 5− x
=
f (x) x sin(0.2x2 ) +
3
2
15
x3
Интервал
x ∈ [–4, 4]
x ∈ [–3, 9]
x ∈ [1, 10]
4=
f (x) 40x sin(x) − x2 cos(x)
x ∈ [2, 20]
f (x) tg(0.1x) − sin(5x)ln(0.1x)
5 =
x ∈ [0, 10]
6
7
f (x) =
x3 − 34 sin(2x)x2 + 500 cos(5x)
=
f (x) sin(x2 ) − cos(x3 )
x ∈ [0, 8]
x ∈ [0, 3]
8 =
f (x) 3 sin(x3 ) − 2 cos(x2 )
x ∈ [–2, 3]
9 =
f (x) 5 sin(x3 ) − 2 cos(x)
x ∈ [0, 3]
10
=
f (x) sin(2x)cos(x2 ) − 0.01x3
11 =
f (x) x cos(x) − (0.5x cos(0.6x2 ))
x ∈ [0, 6]
x ∈ [5, 13]
12
=
f (x) 3 cos((0.5x)2 ) + 0.01x3
x ∈ [0, 10]
13
f (x) = cos(ex )cos(2x)
x ∈ [1, 4]
14
f (x) = sin(ex )sin(x)
x ∈ [1, 4]
15
x + cos(x)
[–20, 20]
16
x + sin(x)
[–20, 20]
17
(x2 + x)cos(x)
[–10, 10]
15
Таблица 4
Варианты функций двух переменных
№
1
Функция
z(x, y)= x2 + y2,
=
z(x, y)
2
x ∈ [−4, 4], y ∈ [−4, 4]
x2 + y2
,
sin(x) + cos(x)
3
=
z(x, y) e− x
2
− y2
x ∈ [−2,2], y ∈ [−2,2]
,
4
=
z(x, y) sin(x)e−3y ,
x ∈ [0,2π], y ∈ [0,1]
5
=
z(x, y) sin2 (x)ln(y),
6
z(=
x, y) sin2 (x − y)e
=
z(x, y)
7
=
z(x, y)
8
9
x ∈ [−4, 4], y ∈ [−4, 4]
−y
sin(xy)
,
x
x ∈ [0, π], y ∈ [−1,1]
x ∈ [0, π], y ∈ [−1,1]
,
x ∈ [0.1,5], y ∈ [−π, π]
x2y2 + 2xy − 3
x2 + y2 + 1
x ∈ [−2,2], y ∈ [−1,1]
,
=
z(x, y) (sin(x2 ) + cos(y2 )) xy ,
x ∈ [−1,1], y ∈ [−1,1]
z(x, y) arctan(x + y)(arccos(x) + arcsin(y)),
10 =
11
z(x, y) =+
(1 xy)(3 − x)(4 − y),
12
z=
(x, y) e
13
z(x, y=
) (y2 − 3)sin
14
z(x, y)= x3 + y3,
−x
(x5 + y4 )sin(xy),
15 z(x, y) sin2 (x)e y ,
=
=
16 z(x, y)
16
x 3 + y3
x2 + y2
,
x
,
y +1
x ∈ [−1,1], y ∈ [−1,1]
x ∈ [0, 3], y ∈ [0, 4]
x ∈ [−2,2], y ∈ [−3, 3]
x ∈ [−2π,2π], y ∈ [−3, 3]
x ∈ [−4, 4], y ∈ [−4, 4]
x ∈ [0, π], y ∈ [−1,1]
x ∈ [−2,2], y ∈ [−2,2]
2. Показать влияние количества нейронов на качество аппроксимации.
3. Показать влияние размера обучающей выборки на качество
аппроксимации.
4. В отчете привести график исходной функции и варианты, полученные с помощью НС разной топологии.
5. Выполнить нейросетевую аппроксимацию для заданного варианта функции двух переменных из табл. 4.
17
Лабораторная работа № 3
Распознавание образов
Задача распознавания изображений является одной из наиболее
массовых задач, успешно решаемых с помощью ИНС. Здесь возможны самые разные постановки проблемы, одна из наиболее простых – распознавание фиксированного набора символов.
Рассмотрим задачу распознавание букв.
В системе MatLab предусмотрена специальная функция
>> [alphabet, targets] = prprob;
Эта функция возвращает две двоичные матрицы: в матрице
alphabet (размером 35×26) каждый столбец кодирует одну букву, а
матрица targets (размером 26×26) является диагональной и служит
для идентификации столбца.
Каждому столбцу alphabet соответствует матрица 7×5, представляющая собой двоичное изображение буквы.
Следующая функция отображает все столбцы alphabet в виде
букв (функцию требуется поместить в рабочий каталог MatLab):
function plotletters(alphabet)
fprintf(‘plotletters is plotting the first 25 letters\n’);
[m,n]=size(alphabet);
if m~=35
error(‘plotletters needs columns 35 numbers long’);
end
figure
MM=colormap(gray);
MM=MM(end:-1:1,:);
colormap(MM);
nn=min([n,25]);
for j=1:nn
subplot(5,5,j)
imagesc(reshape(alphabet(:,j),5,7)’);
axis equal
axis off
end
Результат выполнения функции приведен на рис. 12.
>> plotletters(alphabet);
Исходя из структуры матрицы targets нейронная сеть должна
иметь 26 выходных нейронов. Число нейронов скрытого слоя положим равным 10:
18
>> net = newff(minmax(alphabet),[10 26],{‘logsig’ ‘logsig’},’traingdx’);
>> P = alphabet; T = targets;
Зададим количество эпох и запустим процесс обучения:
>> net.trainParam.epochs = 1000;
>> [net,tr] = train(net,P,T);
Кривая обучения приведена на рис. 13.
Для проверки качества работы обученной сети рассмотрим зашумленные изображения букв (рис. 14):
>> noisyP = alphabet+randn(size(alphabet)) * 0.2;
>> plotletters(noisyP);
С помощью следующей команды выполняется запуск сети для
зашумленного входного множества:
>> A2 = sim(net,noisyP);
Матрица А2 здесь содержит различные числа в интервале [0, 1].
С помощью функции compet в каждом столбце можно выделить
максимальный элемент, затем присвоить ему значение «1», а остальные элементы столбца обнулить:
>> for j=1:26
A3 = compet(A2(:,j));
answer(j) = find(compet(A3) == 1);
end
Рис. 12. Двоичное кодирование алфавита
19
Рис. 13. Изменение ошибки в процессе обучения
Рис. 14. Изображения букв в присутствии шума
20
Рис. 15. Результат выполнения распознавания
нейронной сетью
Затем можно визуально оценить ответы сети для зашумленных
входных векторов с помощью команд
>> NetLetters=alphabet(:,answer);
>> plotletters(NetLetters);
На рис. 15 показан окончательный результат распознавания.
Очевидно, что некоторые буквы идентифицированы ошибочно.
Это может быть либо следствием плохой обученности сети, либо
слишком высокого уровня шума, либо неправильного выбора количества нейронов внутреннего слоя.
Задания на лабораторную работу 3
1. Проверить в MatLab рассмотренный пример распознавания
букв латиницы.
2. В соответствии с вариантом задания из табл. 4 выполнить обучение нейросети распознаванию символов.
21
Таблица 4
Вариант
Набор символов
1 
2 
3 
4 
5 
6 
7 
ΔΖΗΛΝΦΥΧΟ
αγημνπτχβ
+<>)/!*%&
acdhlmnsw
абвгдеикл
мрсуфхцчш
←↑→↔↕≈≠≤≥
8 
9 
10 
11 
12 
13 
22
●■▲►▼◄▄▀▬
♥♦♪♫♣♠Ω$*
Лабораторная работа № 4
Идентификация динамических объектов
Цель работы: Освоить методику идентификации динамических
объектов с помощью НС прямого распространения.
В процессе идентификации требуется по известным вход – выходным данным динамического объекта построить его описание,
которое можно использовать для предсказания выходного сигнала при произвольном входном воздействии или для синтеза регулятора.
Искусственная НС прямого распространения относится к классу
статических. Простой путь внесения динамики в поведение НС заключается в подаче на вход сети не только текущих, но и задержанных значений входа и выхода. Количество задержанных сигналов
и величина задержки должны примерно соответствовать порядку
объекта и его постоянным времени.
На рис. 16 приведен принцип использования НС в режиме идентификации. В этой схеме с помощью алгоритма обратного распространения должна минимизироваться ошибка между выходом объекта y(t) и выходом модели ym(t).
x(t)
∆
∆
x(t – ∆)
x(t – m ∆)
ym(t)
НС
∆
∆
y(t)
Объект
y(t – ∆)
e (t)
Алгоритм
обучения
y(t – n∆)
Нейросетевая модель
Рис. 16. Нейросетевая идентификация
23
Пример 4.1.
Идентификация неизвестного линейного динамического объекта. Для решения задачи здесь можно использовать тестовый сигнал
в виде ступенчатой функции. Схема накопления вход-выходных
данных для идентификации представлена на рис. 17.
После запуска схемы в рабочем пространстве появляются массивы simout и simout1.
Далее опишем двухслойную НС прямого распространения с тремя входами, зададим параметры и запустим процесс обучения:
>> net=newff([0 1; -3 3; -3 3], [3,1], {‘tansig’,’purelin’},’trainlm’);
>> P = simout’;
>> T = simout1’;
>> net.trainParam.show = 50;
>> net.trainParam.lr = 0.05;
>> net.trainParam.epochs = 1000;
>> net.trainParam.goal = 0.00001;
>> net1 = train(net, P, T);
Выполним проверку нейросетевой модели (схема на рис. 18).
С помощью следующей команды создается блок Neural Network в
Simulink – модели:
>> gensim(net1)
На рис. 18 приведено сравнение переходных процессов на выходе
объекта и его НС-модели.
Рассмотрим задачу идентификации нелинейного объекта. Принципы работы здесь не меняются, однако для получения тестовых
данных требуется использовать более сложный входной сигнал, поскольку не выполняется свойство суперпозиции.
simout
Step
1
s 2+0.5s+1
Transfer Fcn
To Workspace
Transport
Delay 0.5s
Transport
Delay1 0.5s
simout1
To Workspace1
Рис. 17. Подготовка данных для идентификации
24
1
s2 +0.5s+1
Step
Transfer Fcn3
Input
Transport
Delay4
Scope
NNET
Output
Custom Neural Network1
Transport
Delay3
Рис. 18. Проверка качества идентификации
y(t)
1
0.5
0
0
5
10
t
Рис. 19. Сравнение выходов объекта и модели
Пример 4.2.
Пусть нелинейный объект управления описывается уравнением
y =
−0.7y − 0.2y − 0.3y3 + u.
25
На рис. 20 показана блок-схема модели с массивами simout для
накопления обучающих данных.
На рис. 21 представлена реакция объекта на ступенчатый сигнал
переменной амплитуды.
Следующая программа обучает 3-х слойную нейронную сеть, используя данные моделирования, накопленные в массивах simout и
simout1:
net=newff([-3 3; -3 3; -3 3], [3,5,1], {‘purelin’,’tansig’,’purelin’},’train
lm’);
P = simout’;
T = simout1’;
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 1000;
net.trainParam.goal = 0.001;
net1 = train(net, P, T);
С помощью команды
>> gensim(net1,0.01)
Signal 1
Signal Builder
1
s
Integrator
1
s
Integrator1
Scope
simout
Transport
Delay
Add
To Workspace
Transport
Delay1
0.7
simout1
To Workspace1
Gain1
0.2
Gain2
0.3
Gain3
uv
3
Math
Function
Рис. 20. Схема формирования обучающих данных для идентификации
26
y(t)
2
1.5
1
0.5
0
–0.5
0
50
t, c
100
Рис. 21. Реакция объекта на тестовый входной сигнал
1
In1
Scope1
Signal 1
x{1}
Signal Builder1
y{1}
Neural Network
Transport
Delay3
Transport
Delay2
Рис. 22. Проверка качества обучения нейросети
Создадим нейросеть в Simulink, и выполним проверку в соответствии со схемой на рис. 22 (где In1 – выход объекта).
Результат проверки представлен на рис. 23.
Как показывает рис. 23, ошибка моделирования растет при больших скачках входного сигнала, следовательно, для повышения качества идентификации необходимо расширить обучающую выборку.
27
y(t)
2
1.5
1
0.5
0
–0.5
0
50
t, c
100
Рис. 23. Сравнение выхода объекта
и его нейросетевой модели
Задания на лабораторную работу 4
1. Выполнить нейросетевую идентификацию для заданного варианта линейного объекта из табл. 5. Показать, как меняется качество идентификации при изменении количества нейронов и линий
задержки. Привести в отчете схемы и графики экспериментов.
Таблица 5
Варианты линейных объектов
№
Передаточная функция
1
W (s) =
2
W (s) =
3
W (s) =
4
W (s) =
28
0.1s + 1
s3 + 0.01s2 + 0.01s + 1
s +1
s3 + 0.01s2 + 0.03s + 1
2s + 1
s3 + 0.8s2 + 0.5s + 1
0.5s + 1
3
2
s + 0.5s + 0.05s + 1
№
Передаточная функция
11 W (s) =
12 W (s) =
13 W (s) =
14 W (s) =
s +1
s3 + 0.05s2 + 0.01s + 1
s +1
s3 + 0.7s2 + 0.1s + 1
0.4s + 1
s3 + 0.07s2 + 0.08s + 1
0.5s + 1
3
s + 0.03s2 + 0.04s + 1
Окончание табл. 5
№
Передаточная функция
5
W (s) =
6
W (s) =
7
W (s) =
8
W (s) =
9
W (s) =
10 W (s) =
4s + 1
s3 + 7s2 + 0.3s + 1
0.7
3
2
s + 0.7s + 0.02s + 1
3s + 1
s3 + 4s2 + 2s + 1
5s + 1
3
2
s + 0.5s + 0.1s + 1
5s + 1
3
2
s + 0.5s + 0.3s + 1
4s + 1
s3 + 2.5s2 + s + 1
№
Передаточная функция
15 W (s) =
16 W (s) =
17 W (s) =
18 W (s) =
19 W (s) =
20 W (s) =
0.2s + 1
s3 + 0.2s2 + 0.04s + 1
0.3s + 1
3
s + 2s2 + 0.4s + 1
5s + 1
s3 + 0.05s2 + 0.01s + 1
5s + 1
3
s + 0.5s2 + 1s + 1
3
3
2
s + 1.5s + 0.2s + 1
0.1
s3 + 2s2 + 0.5s + 1
2. Выполнить нейросетевую идентификацию для заданного варианта нелинейного объекта из табл. 6. Показать, как меняется качество идентификации при изменении количества слоев ИНС, вида
активационных функций нейронов и размера обучающей выборки.
Привести в отчете схемы и графики экспериментов.
Таблица 6
Варианты нелинейных объектов управления
№
Вариант
1
 + x + x
y + 2y + y = 2x
 + 2x + x
11 3y + 4y + y = 7x
2
y + 6y + 8 y = 3x + x
 + 3x + x
12 y + 2y + y = 7x
3
 + 2x + 5x
3y + 4y + 5y =x
y 0.2x + x
13 0.1y + 3y +=
4
y + 0.3y +=
y 0.5x + x
 + 0.7x + x
y 0.1x
14 y + 0.6y +=
5
y + 2y + y =
10x
15 y + 9y + y = 2x + x
6
y + 16y + y= 10x + x
 + 2x + x
16 5y + 3y + y = 3x
7
 + 2x + x
6y + 3y + y = 4x
y 0.1x + x
17 0.5y + 0.1y +=
8
7y + 2y + y = 2x + x
6x
18 0.2y + 0.1y + y =
9
0.4y + 0.8 y + y =
4x
19 y + 6y + y = 5x + x
y 0.1x + x
10 0.1y + y +=
№
Вариант
 + 0.1y + y = 2x
 + x + x
20 0.15y
29
Лабораторная работа 5
Инверсное нейроуправление
Цель работы: рассмотреть методику проектирования нейрорегулятора как инверсной модели объекта управления.
Задача синтеза регулятора R в системе управления может быть
рассмотрена как задача построения обратной модели объекта F
(рис. 24, где g(t) – задающее воздействие).
Вариант включения обратной модели в составе замкнутой системы показан на рис. 25, здесь k – коэффициент усиления замкнутой
системы в установившемся режиме.
Например, если коэффициент усиления разомкнутой системы равен 1, то при замыкании единичной обратной связью получаем k = 0,5.
Поскольку НС является универсальным настраиваемым звеном,
она может быть использована для реализации обратной модели объекта (рис. 26). Для обучения может быть использован алгоритм обратного распространения ошибки.
При обучении инверсной модели описание объекта управления
полагается неизвестным, достаточно лишь иметь реакцию объекта
на тестовый входной сигнал.
Пример 5.1. Рассмотрим линейный объект управления, которому соответствует передаточная функция (ПФ)
W (s) =
1
.
0.1s + 0.7s + 1
На рис. 27 представлена схема накопления данных для обучения.
g(t)
R = F –1
u(t)
y(t) = g(t)
F
Рис. 24. Идеализированная разомкнутая
система управления
(t)
1/k
R = F –1
F
y(t)
Рис. 25. Замкнутая система управления
с инверсной моделью
30
g (t)
∆
∆
x(t – ∆)
x(t – m ∆)
gm(t)
НС
∆
y(t)
Объект
y(t – ∆)
e (t)
Алгоритм
обучения
y(t – n∆)
∆
Нейросетевая модель
Рис. 26. Общая схема обучения инверсной модели
Для обучения инверсной модели может быть использована следующая MatLab – программа:
net=newff([–2 2; –2 2;–2 2],[15 1], {‘tansig’,’purelin’},’trainlm’);
P = simout1’;
net.trainParam.show = 50;
net.trainParam.lr = 0.05;
net.trainParam.epochs = 500;
T = simout’;
net.trainParam.goal = 0.00001;
net1 = train(net, P, T);
На рис. 28 показана проверка качества работы инверсной модели.
Получившиеся сигналы практически совпадают.
На рис. 29 приведена блок-схема системы управления, а на
рис. 30 – переходные процессы в системе.
Как показывает рис. 30, время переходного процесса в системе
уменьшилось примерно в два раза.
В примере 5.1 объект управления имеет апериодический переходный процесс. Рассмотрим еще один пример, в котором переходный процесс имеет колебательный характер. В этом случае сигнал
31
Group 1
Signal 1
1
0.1s 2+0.7s+1
Signal Builder
Scope5
Transfer Fcn3
Transport
Delay1
Transport
Delay2
simout
simout1
To Workspace1
To Workspace
Рис. 27. Блок-схема подготовки данных для обучения
Group 1
1
Signal 1
0.1s2 +0.7s+1
Signal Builder
Transfer Fcn3
Transport
Delay1
Output
Scope1
Transport
Delay2
NNET Input
Custom Neural Network3
Рис. 28. Сравнение входного сигнала и выхода инверсной модели
1
Group 1
Signal 1
Signal Builder
0.1s2 +0.7s+1
Transfer Fcn5
2
Gain
Add1
Input
1
NNET
0.1s2 +0.7s+1
Output
Custom Neural Network2 Transfer Fcn1
Transport Transport
Delay4 Delay5
Рис. 29. Система управления с инверсной моделью
32
Scope4
y(t)
1
0,8
0,6
0,4
0,2
0
–0,2
5
0
10
15
t, c
20
Рис. 30. Переходный процесс в системе с инверсной моделью
y(t)
1
0,5
0
0
0,5
1
1,5
2
2,5
3
3,5
4
4,5
t, c
Рис. 31. Располагаемый и желаемый переходные процессы
g(t) должен представлять собой выход эталонной ПФ, которая может описываться с помощью апериодического звена 1-го порядка.
Пример 5.2. Пусть объекту управления соответствует передаточная функция
1
W1 (s) =
.
0.1s + 0.7s + 1
33
В качестве эталонной здесь может рассматривать ПФ вида
W2 (s) =
1
.
0.2s + 1
Сравнение переходных процессов для W1 и W2 приведено на
рис. 31.
На рис. 32 и 33 приведена схема для проверки качества нейроуправления.
Group 1
Signal 1
Signal Builder
2
Gain
1
0.01s 2+0.05s+1
Transfer Fcn3
1
0.2s+1
Scope2
Add1
Transfer Fcn2
Input
1
NNET
2+0.05s+1
0.01s
Output
Custom Neural Network Transfer Fcn1
Transport
Delay4
Transport
Delay5
Рис. 32. Нейросетевой регулятор с эталонной ПФ и инверсной моделью
y(t)
1,4
1,2
1
0,8
0,6
0,4
0,2
0
–0,2
0
1
2
3
4
5
6
7
8
9
Рис. 33. Сравнение выходов разомкнутой
и замкнутой системы
34
t, c
Задания на лабораторную работу 5
1. Выполнить синтез инверсного нейрорегулятора для для заданного варианта периодического звена 2-го порядка из табл. 5.1.
Показать, как меняется качество идентификации при изменении
количества нейронов и линий задержки. Привести в отчете схемы и
графики экспериментов.
Таблица 5.1
Варианты апериодических звеньев
№
Передаточная функция
1
W (s) =
2
W (s) =
3
W (s) =
2
0.1s2 + 0.5s + 1
3
0.5s2 + s + 1
4
0.1s2 + 0.5s + 1
4
W (s) =
5
W (s) =
6
W (s) =
7
W (s) =
8
W (s) =
9
W (s) =
10
W (s) =
№
11
W (s) =
12
W (s) =
13
W (s) =
14
5
2
0.17s + s + 1
15
2
2
0.1s + 2s + 1
3
16
2
0.25s + 1.5s + 1
1
17
2
0.05s + 0.5s + 1
3
18
2
0.1s + 0.75s + 1
4
19
2
0.1s + 0.75s + 1
5
2
0.1s + 0.75s + 1
Передаточная функция
20
2
0.01s2 + 0.5s + 1
3
0.15s2 + 0.75s + 1
4
0.01s2 + 0.5s + 1
W (s) =
W (s) =
W (s) =
W (s) =
W (s) =
W (s) =
W (s) =
5
2
0.1s + s + 1
2
0.1s2 + 1.5s + 1
3
2
0.15s + 1.35s + 1
1
0.5s2 + 1.75s + 1
3
2
0.5s + 0.75s + 1
4
0.5s2 + 0.75s + 1
5
2
0.5s + 0.75s + 1
35
2. Выполнить нейросетевую идентификацию для заданного варианта колебательного звена из табл. 5.2. Показать, как меняется
качество идентификации при изменении количества нейронов и линий задержки. Привести в отчете схемы и графики экспериментов.
Таблица 5.2
Варианты колебательных звеньев
№
Передаточная функция
1
W (s) =
2
W (s) =
3
W (s) =
4
W (s) =
5
W (s) =
6
W (s) =
2
2
s + 0.5s + 1
3
2
0.25s + 0.5s + 1
4
2
0.05s + 0.15s + 1
5
2
0.5s + 0.75s + 1
2
2
0.75s + 0.7s + 1
3
0.01s + 0.07s + 1
7
W (s) =
8
W (s) =
9
W (s) =
10
W (s) =
36
2
1
№
11
W (s) =
12
W (s) =
13
W (s) =
14
W (s) =
15
W (s) =
16
W (s) =
17
2
0.4s + 0.8s + 1
18
3
2
0.7s + 0.5s + 1
4
19
2
0.17s + 0.25s + 1
5
2
0.25s + 0.5s + 1
Передаточная функция
20
2
2
0.5s + 0.5s + 1
3
2
0.1s + 0.15s + 1
4
2
0.25s + 0.5s + 1
5
2
0.25s + 0.15s + 1
2
2
0.65s + 0.7s + 1
3
2
0.4s + 0.08s + 1
W (s) =
W (s) =
W (s) =
W (s) =
1
0.4s2 + 0.5s + 1
3
2
0.7s + 0.25s + 1
4
0.17s2 + 0.05s + 1
5
2
0.25s + 0.35s + 1
Список источников
1. Хайкин С. Нейронные сети. М: Вильямс, 2006. 1104 с.
2. Бураков М. В. Нейронные сети и нейроконтроллеры // СПб.:
ГУАП, 2013 г. 284 с.
3. Осовский С. Нейронные сети для обработки информации. М.:
Финансы и статистика. 2002. 344 с.
4. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные
сети, генетические алгоритмы и нечёткие системы. М.: Горячая линия – Телеком, 2006. 383 с.
5. Медведев В. С., Потемкин В. Г. Нейронные сети. Matlab 6. М.:
ДИАЛОГ-МИФИ, 2002. 496 с.
37
СОДЕРЖАНИЕ
Введение.................................................................................... Лабораторная работа № 1. Реализация логических функций............. Лабораторная работа № 2. Аппроксимация зависимостей................. Лабораторная работа № 3. Распознавание образов............................ Лабораторная работа № 4. Идентификация динамических объектов.. Лабораторная работа 5. Инверсное нейроуправление........................ Список источников...................................................................... 3
4
12
18
23
30
37
Документ
Категория
Без категории
Просмотров
2
Размер файла
1 776 Кб
Теги
0dcc7001a9, burakov1
1/--страниц
Пожаловаться на содержимое документа