Применение нейронных сетей
В настоящее время многие задачи, имеющие важное практическое значение и которые не имели приемлемого решения в прошлом, могут быть решены с использованием нейронных сетей. Ниже рассматривается решение таких задач, связанных с аппроксимацией и фильтрацией сигналов, моделированием динамических систем, распознаванием образов и проектированием систем управления.
Аппроксимация и фильтрация сигналов
Предсказание стационарного сигнала
Постановка задачи
Задан гармонический сигнал с круговой частотой 4p 1/с (2 Гц) и длительностью 5 с. Дискретный сигнал T получен в результате квантования исходного сигнала по времени с частотой 40 Гц (такт дискретности 0.025 с):
time = 0:0.025:5;
T = sin(time*4*pi);
stairs(time,T);
axis([0 5 –1 1]), xlabel(‘time, с’), ylabel(‘T’)
На рис. 9.1 показан график дискретного сигнала Т.
Рис. 9.1
Требуется предсказать значение сигнала yk на выходе сети в момент времени tk, используя 5 последних значений сигнала Т в качестве входа, т. е.
(9.1)
где yk = sin(4ptk ) = sin(4pkh), tk = t0 : h: tf = 0 : 0.025 : 5.
В математическом смысле это задача экстраполяции сигнала на 1 шаг вперед. С позиции теории нейронных сетей это задача настройки параметров и обучения сети. Сформируем обучающее множество следующим образом. Входная последовательность Р1 определена на интервале от 0 до 1 c и имеет длину Q1, а каждый вектор входа состоит из пяти компонент, соответствующих запаздывающим значениям сигнала T; целевой вектор Т1 сформирован из значений сигнала Т, начиная с шестого; контрольное подмножество T2 формируется из значений сигнала Т на интервале от 3 до 5 с:
Q = length(T);
h = 0.025;
Q1 = 1/h;
P1 = zeros(5,Q1);
P1(1,1:Q1) = T(1,1:Q1);
P1(2,2:Q1) = T(1,1:(Q1–1));
P1(3,3:Q1) = T(1,1:(Q1–2));
P1(4,4:Q1) = T(1,1:(Q1–3));
P1(5,5:Q1) = T(1,1:(Q1–4));
T1 = T(1,6:(Q1+5));
T2 = T(1,3/h:Q);
Синтез сети
Поскольку сигнал стационарный и соотношения между прошлыми и будущими значениями остаются неизменными, можно воспользоваться линейной моделью нейронной сети, рассчитывая веса на основе прямого решения системы линейных уравнений. Такой подход реализует М-функция newlind. Она вычисляет веса и смещение, которые минимизируют среднеквадратичную ошибку предсказания, которые зависят от длины обучающей последовательности Q1. Сеть для решения этой задачи должна состоять из одного нейрона с пятью входами (рис. 9.2).
net = newlind(P1,T1);
Рис. 9.2
Графики зависимостей значений весовых коэффициентов wi и смещения b показаны на рис. 9.3, а и б соответственно.
а
|
б
| Рис. 9.3
Значения этих величин стабилизируются после 0.5 с, когда исчерпывается 1 период синусоиды.
На рис. 9.4 представлена зависимость среднеквадратичной ошибки, которая характеризует погрешность экстраполяции в зависимости от длины обучающей последовательности.
Рис. 9.4
Проверка сети
Выполним проверку сети, используя входную последовательность обучающего подмножества и сравнивая выход сети с фактическим значением сигнала T (рис. 9.5):
Q1 = 40;
a = sim(net,P1(:,1:Q1));
t1 = 6:Q1+5;
plot(time(t1),a,'*r', time(1:Q1+5),T(1,1:Q1+5))
xlabel('Time, c');
Рис. 9.5
Как следует из анализа этого рисунка, нейронная сеть достаточно точно отслеживает входной сигнал.
Теперь проверим работу сети, используя контрольное множество T2. Определим длину входной последовательности N1, равную 20, и построим график реакции сети (рис. 9.6):
N1 = 20;
Tt = T2(1,1:N1);
P2(1,:) = Tt(1,:);
P2(2,2:end) = Tt(1,1:end–1);
P2(3,3:end) = Tt(1,1:end–2);
P2(4,4:end) = Tt(1,1:end–3);
P2(5,5:end) = Tt(1,1:end–4);
a = sim(net,P2);
figure(3), clf
h1 = plot(time(1:size(P2, 2)–5), a(1:end–5), '*'); hold on
h2 = plot(time(1:size(P2, 2)–5), Tt(6:end), 'r');
Рис. 9.6
Вычислим погрешность сети, используя информацию из описания графических объектов Line с дескрипторами h1 и h2:
y1 = get(h1,'YData'); y2 = get(h2,'YData');
minlength = min(length(y1), length(y2));
e = y1(1:minlength) – y2(1:minlength);
nre = sqrt(mse(e));
График погрешности экстраполяции в функции от длины обучающего сигнала и в зависимости от количества точек экстраполяции в качестве параметра показан на рис. 9.7.
Рис. 9.7
Из анализа этого графика следует, что при малом числе экстраполируемых точек 6, 8 и длительности обучающей последовательности более 0.1 с погрешности малы. С ростом числа экстраполируемых точек 10, 20, 30 требуется большая длина обучающей последовательности, и при длине, превышающей 20 тактов (0.5 с), погрешность не зависит от числа точек экстраполяции и монотонно убывает с увеличением длины обучающего множества.
Читатель может обратиться к демонстрационному примеру applin1, где исследуется подобная задача.
Не нашли, что искали? Воспользуйтесь поиском по сайту:
©2015 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|