Навигация по странице:
-
A = sim(net, p) err = t – sim(net,P)
-
T = {10 20 30 40}; Выполним настройку параметров, используя процедуру адаптации adapt и 10 циклов обучения: net.adaptParam.passes = 10;
-
Y1 = cat(1,Y{:}); % Преобразование массива ячеек в массив double % Построение графиков plot(time,Y1,b:,time,p,r–), xlabel(Время, с), ylabel(Процессы)
|
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6. В. Г. Потемкин
|
Название |
В. Г. Потемкин
|
Анкор |
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc |
Дата |
26.04.2017 |
Размер |
14.83 Mb. |
Формат файла |
|
Имя файла |
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc |
Тип |
Книга
#3790
|
страница |
19 из 50 |
|
5.4. Применение линейных сетей
Задача классификации векторов
Покажем, как линейные сети могут быть применены для решения задач классификации. Если используется процедура обучения train, то параметры сети настраиваются
с учетом суммарного значения функции ошибки. Это отличается от процедуры адаптации adapt, для работы которой характерна настройка параметров с учетом ошибки при представлении каждого вектора входа. Затем обучение применяется к скорректированной
сети, вычисляются выходы, сравниваются с соответствующими целями и вновь вычисляется ошибка обучения. Если достигнута допустимая погрешность или превышено максимальное число циклов (эпох) обучения, то процедура настройки прекращается. Алгоритм обучения и настройки сходится, если задача классификации разрешима.
Проиллюстрируем решение задачи классификации, ранее решенной с помощью персептрона. Используем для этого простейшую линейную сеть, представленную на рис. 5.1. Обучающее множество представлено следующими четырьмя парами векторов входов
и целей:
(5.9)
Определим линейную сеть с начальными значениями веса и смещения, используемыми по умолчанию, т. е. нулевыми; зададим допустимую погрешность обучения, равную 0.1:
p = [2 1 –2 –1;2 –2 2 1];
t = [0 1 0 1];
net = newlin( [–2 2; –2 2],1);
% Инициализация линейной сети с двумя входами и одним выходом
net.trainParam.goal= 0.1;
[net, tr] = train(net,p,t);
TRAINWB, Epoch 0/100, MSE 0.5/0.1.
TRAINWB, Epoch 25/100, MSE 0.181122/0.1.
TRAINWB, Epoch 50/100, MSE 0.111233/0.1.
TRAINWB, Epoch 64/100, MSE 0.0999066/0.1.
TRAINWB, Performance goal met.
Пороговое значение функции качества достигается за 64 цикла обучения, а соответствующие параметры сети принимают значения
weights = net.iw{1,1}
bias = net.b(1)
weights = –0.061482 –0.21938
bias = [0.5899]
Выполним моделирование созданной сети с векторами входа из обучающего множества и вычислим ошибки сети:
A = sim(net, p)
err = t – sim(net,P)
A = 0.028173 0.96718 0.2741 0.432
err = –0.028173 0.03282 –0.2741 0.568
Заметим, что погрешности сети весьма значительны. Попытка задать большую точность в данном случае не приводит к цели, поскольку возможности линейной сети ограничены. Демонстрационный пример demolin4 иллюстрирует проблему линейной зависимости векторов, которая свойственна и этому случаю.
Обучение линейной нейронной сети иллюстрируется демонстрационной программой demolin2, которая возвращает значения весов и погрешность в процессе обучения. В связи с рассматриваемой проблемой классификации можно также обратиться к демонстрационной программе nnd10lc, в которой рассмотрена классическая задача классификации объектов при действии шумов.
Фильтрация сигнала
На рис. 5.7 представлена структурная схема цифрового фильтра, отличительной
особенностью которого является то, что он включает динамический компонент – линию задержки (ЛЗ) и 1 слой линейной нейронной сети.
Рис. 5.7
Последовательность значений входного сигнала {p(k)} поступает на ЛЗ, состоящую
из N–1 блока запаздывания; выход ЛЗ – N-мерный вектор pd, составленный из значений входа в моменты времени k, k–1, …, k–N–1.
Выход линейного нейронного слоя и фильтра в целом описывается следующим динамическим соотношением:
(5.10)
Рассмотрим конкретный пример цифрового фильтра, представленный на рис. 5.8.
Рис. 5.8
Предположим, что входной сигнал принимает значения в диапазоне от 0 до 10, и сформируем линейную сеть с одним входом и одним выходом, используя М-функцию newlin:
net = newlin([0,10],1);
Введем ЛЗ с двумя тактами запаздывания:
net.inputWeights{1,1}.delays = [0 1 2];
определим следующие начальные значения весов и смещения:
net.IW{1,1} = [7 8 9];
net.b{1} = [0];
зададим начальные условия для динамических блоков линии задержки:
pi ={1 2}
Последовательность их задания слева направо соответствует блокам запаздывания, расположенным на рисунке сверху вниз. Этим завершается формирование сети.
Теперь определим входной сигнал в виде следующей последовательности значений:
p = {3 4 5 6}
и промоделируем эту сеть:
[a,pf] = sim(net,p,pi);
a = [46] [70] [94] [118]
pf = [5] [6].
Для того чтобы получить желаемую последовательность сигналов на выходе, необходимо выполнить настройку сформированной сети. Предположим, что задана следующая желаемая последовательность для выхода фильтра:
T = {10 20 30 40};
Выполним настройку параметров, используя процедуру адаптации adapt и 10 циклов обучения:
net.adaptParam.passes = 10;
[net,y,E pf,af] = adapt(net,p,T,pi); % Процедура адаптации
Выведем полученные значения весов, смещения и выходного сигнала:
wts = net.IW{1,1}, bias = net.b{1}, y
wts = 0.5059 3.1053 5.7046
bias = 1.5993
y = [11.856] [20.774] [29.668] [39.004]
Если продолжить процедуру настройки, то можно еще точнее приблизить выходной сигнал к желаемому:
net.adaptParam.passes = 500;
[net,y,E,pf,af] = adapt(net,p,T,pi);
y
y = [10.004] [20.002] [29.999] [39.998]
Таким образом, линейные динамические нейронные сети могут быть адаптированы для решения задач фильтрации временных сигналов. Для сетей такого класса часто
используется название ADALINE (ADaptive LInear NEtwork) – адаптируемые линейные сети. Рассмотрим другие применения этих сетей.
Предсказание сигнала
Попробуем применить сеть ADALINE для предсказания значений детерминированного процесса p(t). Обратимся к рис. 5.9.
Рис. 5.9
Некоторый сигнал поступает на линию задержки так, что на ее выходе формируются 2 сигнала: p(t–1), p(t–2). Настройка сети реализуется с помощью М-функции adapt, которая изменяет параметры сети на каждом шаге с целью минимизировать погрешность
e(t) = a(t) – p(t). Если эта погрешность нулевая, то выход сети a(t) точно равен p(t) и сеть выполняет предсказание должным образом.
Ниже приведен сценарий, который предназначен для решения задачи предсказания сигнала на 1 шаг вперед. Входной детерминированный процесс получен в результате прохождения ступенчатого сигнала через колебательное звено.
Поскольку для формирования входа применено динамическое звено второго порядка, то в сети ADALINE будет использована ЛЗ с двумя блоками. Запишем следующий сценарий для решения задачи предсказания сигнала:
clear
sys = ss(tf(1,[1 1 1])); % Формирование колебательного звена
% Получение реакции на ступенчатое входное воздействие
time = 0:0.2:10;
[y,time] = step(sys,0:0.2:10);
% Формирование обучающего множества
p = y(1:length(time)–2)';
t = y(3:length(time))';
time = time(1:length(time)–2);
% Формирование нейронной сети
net = newlin([–1 1],1,[1 2]);
P = num2cell(p);
T = num2cell(t);
% Настройка нейронной сети
pi = {0 0};
net.adaptParam.passes = 5;
[net,Y,E,Pf,Af] = adapt(net,P,T,pi);
Y1 = cat(1,Y{:}); % Преобразование массива ячеек в массив double
% Построение графиков
plot(time,Y1,'b:',time,p,'r–'), xlabel('Время, с'), ylabel('Процессы')
title('Обучение нейронной сети')
% Моделирование нейронной сети
x = sim(net,P);
x1 = cat(1,x{:});
plot(time,x1,'b')
Найденные значения весов и смещения равны
net.IW{1,1}, net.b
ans = 0.33427 0.31816
ans = [0.35853]
Результаты обучения и моделирования результирующей нейронной сети, решающей задачу предсказания сигнала, представлены соответственно на рис. 5.10, а и б.
а
|
б
|
Рис. 5.10
Как видно из этих рисунков, приемлемое для данной постановки задачи количество циклов обучения равно пяти; результаты моделирования показывают, что при длительности процесса 10 с диапазон успешного предсказания находится в пределах 1.8–10 с.
Подавление шумов
Задача подавления шумов возникает в следующей ситуации. Когда пилот говорит
в микрофон, шум двигателя в кабине добавляется к голосовому сигналу и пассажиры слышат речь с искажениями. Требуется восстановить речь пилота, удалив из нее звуки шумов двигателя. Для решения этой задачи построим адаптивный фильтр, полагая, что
в нашем распоряжении имеются записи шумов двигателя (рис. 5.11).
Рис. 5.11
Используя адаптируемую нейронную сеть ADALINE, построим такой фильтр, который позволит удалить шум n из зашумленного сигнала m. Рассмотрим подробнее структурную схему, представленную на рис. 5.11. Голос пилота vсмешан с помехой от шумов двигателя, которая формируется фильтром шума по известным записям сигнала n.
Зашумленный сигнал m моделирует искаженную речь пилота. Задача состоит в том, чтобы с помощью адаптивного фильтра сформировать такую модель шума а, которая при вычитании из зашумленного сигнала позволила бы выделить речь пилота.
Адаптивный фильтр, построенный на базе линейной нейронной сети ADALINE, должен быть настроен так, чтобы убирать шум двигателя. Заметим, что такая адаптивная фильтрация предпочтительнее классического фильтра, в котором шум не вычитается,
а отфильтровывается от сигнала m.
Многомерные цифровые фильтры
Для проектирования многомерных фильтров следует применять сети ADALINE, в которых используется более одного нейрона. Это приведет к тому, что вместо вектора весов входа будет использоваться матрица весов W, а вместо единственного смещения – вектор смещений b. Структурная схема такого многомерного фильтра показана на рис. 5.12.
Рис. 5.12
Эта схема достаточно сложна для восприятия, и ее можно представить в укрупненном виде (рис. 5.13, а).
Если в линии задержки (ЛЗ) требуется показать больше деталей, то можно использовать следующий вариант структурной схемы (рис. 5.13, б).
a
|
б
|
Рис. 5.13
Здесь ЛЗ представлена в развернутом виде, указывая, что на вход весовой матрицы подается текущее значение и значения с запаздыванием на 1 и 2 периода дискретности. Можно использовать и большее число блоков задержки, но указывать их надо в порядке возрастания сверху вниз.
В заключение отметим основные преимущества и ограничения линейных сетей:
Однослойные линейные сети могут решать задачи линейной аппроксимации функций и распознавания образов.
Однослойные линейные сети могут быть либо рассчитаны непосредственно, либо обучены с использованием правила обучения WH. Кроме того, для их настройки могут применяться процедуры адаптации.
Архитектура однослойной линейной сети полностью определяется задачей, которая должна будет решена, причем число входов сети и число нейронов в слое определяется числом входов и выходов задачи.
Адаптируемые линейные сети ADALINE находят большое практическое применение при построении цифровых фильтров для обработки сигналов.
-
Линейные нейронные сети могут быть успешно обучены только в том случае, когда входы и выходы связаны линейно. Тем не менее даже в том случае, когда линейная сеть не может найти точного решения, она в состоянии построить наиболее близкое решение в смысле минимума среднеквадратичной ошибки при условии, что параметр обучения достаточно мал. Такая сеть найдет наиболее точное решение в рамках линейной структуры сети. Это обусловлено тем, что поверхность ошибки обучения является многомерным параболоидом, имеющим единственный минимум, и алгоритм градиентного спуска должен привести решение к этому минимуму.
-
При работе с моделями линейных сетей могут возникать ситуации, когда число настраиваемых параметров недостаточно, чтобы выполнить все условия; в этом случае говорят, что сеть переопределена. Однако может иметь место и обратная ситуация, когда число настраиваемых параметров слишком велико, и в этом случае говорят, что сеть недоопределена. Тем не менее в обоих случаях метод наименьших квадратов осуществляет настройку, стремясь минимизировать ошибку сети. Эти ситуации поясняются демонстрационными примерами demolin4 и demolin5.
Разрешимость линейной задачи с помощью линейной нейронной сети может быть установлена следующим образом. Если суммарное количество весов и смещений линейной сети S*R + S, где R – количество входов, S – количество слоев, равно количеству пар векторов входа и цели Q, то такая задача разрешима с помощью линейной нейронной сети. Это справедливо за исключением того случая, когда векторы входа являются линейно зависимыми и используется сеть без смещений. Демонстрационный пример demolin6 поясняет эту ситуацию.
|
|
|