КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Clf, contour(w_range, b_range, ES, 20), hold on
Hold off Hold on Contour(w_range, b_range, ES, 20) Net.b ans = [0.7273] Выход сети соответствует целевому вектору. Зададим следующий диапазон весов и смещений, рассчитаем критерий качества обучения и построим его линии уровня (рис. 4): w_range = -1:0.1:0; b_range = 0.5:0.1:1; ES = errsurf(P, T, w_range, b_range, 'purelin'); plot(-2.273e-001, 7.273e-001, 'x') % Рис.4
Рис. 4
На графике знаком х отмечены оптимальные значения веса и смещения для данной сети. Демонстрационный пример demolin1 поясняет структуру линейной сети, построение поверхности ошибок и выбор оптимальных настроек. Для линейной нейронной сети используется рекуррентное обучающее правило наименьших квадратов (LMS), которое является намного более мощным, чем обучающее правило персептрона. Правило наименьших квадратов, или правило обучения WH (Уидроу-Хоффа), минимизирует среднее значение суммы квадратов ошибок обучения. Процесс обучения нейронной сети состоит в следующем. Авторы алгоритма предположили, что можно оценивать полную среднюю квадратичную погрешность, используя среднюю квадратичную погрешность на каждой итерации. Сформируем частную производную по весам и смещению от квадрата погрешности на k -й итерации:
Подставляя выражение для ошибки в форме
получим
Здесь p j(k) - j -й элемент вектора входа на k- йитерации. Эти соотношения лежат в основе обучающего алгоритма WH
Результат может быть обобщен на случай многих нейронов и представлен в следующей матричной форме:
Здесь ошибка е и смещение b - векторы и М-функция learnwh предназначена для настройки параметров линейной сети и реализует следующее обучающее правило:
где lr - параметр скорости обучения. Максимальное значение параметра скорости обучения, которое гарантирует устойчивость процедуры настройки, вычисляется с помощью М-функции maxlinlr. function lr = maxlinlr(p,b) %MAXLINLR Maximum learning rate for a linear layer. % % Syntax % % lr = maxlinlr(P) % lr = maxlinlr(P,'bias') % % Description % % MAXLINLR is used to calculate learning rates for NEWLIN. % % MAXLINLR(P) takes one argument, % P - RxQ matrix of input vectors. % and returns the maximum learning rate for a linear layer % without a bias that is to be trained only on the vectors in P. % % MAXLINLR(P,'bias') return the maximum learning rate for % a linear layer with a bias. % % Examples % % Here we define a batch of 4 2-element input vectors and % find the maximum learning rate for a linear layer with % a bias. % % P = [1 2 -4 7; 0.1 3 10 6]; % lr = maxlinlr(P,'bias') % if nargin < 1, error('Not enough input arguments.'); end
if nargin == 1 lr = 0.9999/max(eig(p*p')); else p2=[p; ones(1,size(p,2))]; lr = 0.9999/max(eig(p2*p2')); end С помощью демонстрационной программы demolin7 можно исследовать устойчивость процедуры настройки в зависимости от параметра скорости обучения.
Процедура обучения Для обучения линейной нейронной сети может быть применена типовая процедура обучения с помощью М-функции train. Эта функция для каждого вектора входа выполняет настройку весов и смещений, используя М-функцию learnp. В результате сеть будет настраиваться по сумме всех коррекций. Будем называть каждый пересчет для набора входных векторов эпохой. Это и отличает процедуру обучения от процедуры адаптации adapt, когда настройка параметров реализуется при представлении каждого отдельного вектора входа. Процедура train моделирует настроенную сеть для имеющегося набора векторов, сравнивает результаты с набором целевых векторов и вычисляет среднеквадратичную ошибку. Как только значение ошибки становится меньше заданного или исчерпано предельное число эпох, обучение прекращается. Обратимся к тому же примеру, который использовался при рассмотрении процедуры адаптации, и выполним процедуру обучения. Р = [1 -1.2];% Вектор входов Т = [0.5 1];% Вектор целей % Максимальное значение параметра обучения maxlr = 0.40*maxlinlr(P,'bias'); % Создание линейной сети net = newlin([-2,2],1,[0],maxlr); % Расчет функции качества w_range=-1:0.2:1; b_range=-1:0.2:1;% Диапазоны значений веса и смещения ES = errsurf(P,T,w_range,b_range,'purelin'); % Построение поверхности функции качества surfс(w_range, b_range, ES) % Рис. 5,а На рис. 5, а построена поверхность функции критерия качества в пространстве параметров сети. В процессе обучения траектория обучения будет перемещаться из начальной точки в точку минимума критерия качества. Выполним расчет и построим траекторию обучения линейной сети для заданных начальных значений веса и смещения. % Расчет траектории обучения x = zeros(1,50); у = zeros(1,50); net.IW{1}=1; net.b{l}=-1; % Начальные значения весов и смещения х(1) = net.IW{1}; у(1) = net.b{1}; net.trainParam.goal = 0.001; % Пороговое значение критерия качества net.trainParam.epochs = 1; % Число эпох % Цикл вычисления весов и смещения для одной эпохи for i = 2:50, [net, tr] = train(net,P,Т); x(i) = net.IW{1}; y(i) = net.b{1}; end % Построение линий уровня и траектории обучения plot(x, y,'-*'), hold off, % Рис. 5,б
Рис. 5
На рис. 5.5, б символом * отмечены значения веса и смещения на каждом шаге обучения; видно, что примерно за 10 шагов при заданной точности (пороговое значение критерия качества) 0.001 получим w = -0.22893, b = 0.70519. Это согласуется с решением, полученным с использованием процедуры адаптации. Если не строить траектории процесса обучения, то можно выполнить обучение, обратившись к М-функции train только 1 раз: net.IW{l}=l; net.b{l}= -1; % Начальные значения веса и смещения net.trainParam.epochs = 50; % Число эпох обучения net.trainParam.goal = 0.001; % Пороговое значение критерия качества [net, tr] = train(net,P,T); TRAINWB, Epoch 0/50, MSE 5.245/0.001. TRAINWB, Epoch-11750, MSE 0.000483544/0.001. TRAINWB, Performance goal met. net.IW, net.b ans = [-0.22893] ans = [0.70519]
На рис. 6 показано, как изменяется критерий качества на каждом цикле обучения.
Рис. 6
Если повысить точность обучения до значения 0.00001, то получим следующие результаты: net. trainParam. goal = 0.00001; [net, tr] = train(net,Р,Т); net.IW, net.b TRAINWB, Epoch 0/50, MSE 0. 000483544/le-005.. TRAINWB, Epoch 6/50, MSE 5.55043e-006/le-005. TRAINWB, Performance goal met., ans = [-0.22785] ans = [ 0.72495] Повышение точности на 2 порядка приводит к уточнению значений параметров во втором знаке.
Применение линейных сетей Задача классификации векторов Покажем, как линейные сети могут быть применены для решения задач классификации. Если используется процедура обучения train, то параметры сети настраиваются с учетом суммарного значения функции ошибки. Это отличается от процедуры адаптации adapt, для работы которой характерна настройка параметров с учетом ошибки при представлении каждого вектора входа. Затем обучение применяется к скорректированной сети, вычисляются выходы, сравниваются с соответствующими целями и вновь вычисляется ошибка обучения. Если достигнута допустимая погрешность или превышено максимальное число циклов (эпох) обучения, то процедура настройки прекращается. Алгоритм обучения и настройки сходится, если задача классификации разрешима. Проиллюстрируем решение задачи классификации, ранее решенной с помощью персептрона. Используем для этого простейшую линейную сеть, представленную на рис. 1. Обучающее множество представлено следующими четырьмя парами векторов входов и целей:
Определим линейную сеть с начальными значениями веса и смещения, используемыми по умолчанию, т. е. нулевыми; зададим допустимую погрешность обучения, равную 0.1: р = [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] Выполним моделирование созданной сети с векторами входа из обучающего множества и вычислим ошибки сети: А = sim{net, р) err = t - sim(net,P) А = 0.028173 err = -0.028173
Заметим, что погрешности сети весьма значительны. Попытка задать большую точность в данном случае не приводит к цели, поскольку возможности линейной сети ограничены. Демонстрационный пример demolin4 иллюстрирует проблему линейной зависимости векторов, которая свойственна и этому случаю. Обучение линейной нейронной сети иллюстрируется демонстрационной программой demolin2, которая возвращает значения весов и погрешность в процессе обучения. В связи с рассматриваемой проблемой классификации можно также обратиться к демонстрационной программе nnd10lc, в которой рассмотрена классическая задача классификации объектов при действии шумов. Фильтрация сигнала На рис. 7 представлена структурная схема цифрового фильтра, отличительной особенностью которого является то, что он включает динамический компонент - линию задержки (ЛЗ) и 1 слой линейной нейронной сети.
а = purelin(Wp+ b)
Рис. 7
Последовательность значений входного сигнала { p (k)}поступает на ЛЗ, состоящую из N-1 блока запаздывания; выход ЛЗ - N-мерный вектор pd, составленный из значений входа в моменты времени k, k-l,..., k-N-1. Выход линейного нейронного слоя и фильтра в целом описывается следующим динамическим соотношением: a(k) = purelin(Wp + b) = Σw1 i pd (k - i+ 1) + b. (10) Рассмотрим конкретный пример цифрового фильтра, представленный на рис. 8.
а = purelin(Wp+ b) Рис. 8 Предположим, что входной сигнал принимает значения в диапазоне от 0 до 10, и сформируем линейную сеть с одним входом и одним выходом, используя М-функцию newlin:net = newlint[0,10],1). Введем ЛЗ с двумя тактами запаздывания: net.inputWeights{1,1}.delays = [0 1 2]; определим следующие начальные значения весов и смещения: net.IW{l,l) = [7 8 9]; net.b{1} = [0]. Зададим начальные условия для динамических блоков линии задержки: pi ={l 2}. Последовательность их задания слева направо соответствует блокам запаздывания, расположенным на рисунке сверху вниз. Этим завершается формирование сети. Теперь определим входной сигнал в виде следующей последовательности значений: р = {3 4 5 6} и промоделируем эту сеть: [a,pf] = sim(net,p,pi); а = [46] [70] [94] [118] pf = [5] [6]. Для того чтобы получить желаемую последовательность сигналов на выходе, необходимо выполнить настройку сформированной сети. Предположим, что задана следующая желаемая последовательность для выхода фильтра: Т = {10 20 30 40}. Выполним настройку параметров, используя процедуру адаптации adapt и 10 циклов обучения: net.adaptParam.passes = 10; [net,y,E pf,af] = adapt(net,p,Т,pi); % Процедура адаптации Выведем полученные значения весов, смещения и выходного сигнала: wts = net.IW{l,. 1}, bias = net.b{l}, y wts = 0.5059 3.1053 5.7046 bias = 1.5993 у = [11.856] [20.774] [29.668] [39.004] Если продолжить процедуру настройки, то можно еще точнее приблизить выходной сигнал к желаемому: net. adaptParam. passes = 500; [net,y,E,pf,af] = adapt(net,p,Т,pi); у = [10.004] [20.002] [29.999] [39.998] Таким образом, линейные динамические нейронные сети могут быть адаптированы для решения задач фильтрации временных сигналов. Для сетей такого класса часто используется название ADALINE (ADaptive Linear NEtwork) - адаптируемые линейные сети. Рассмотрим другие применения этих сетей. Предсказание сигнала Попробуем применить сеть ADALINE для предсказания значений детерминированного процесса p(t). Обратимся к рис. 9.
а = purelin ( Wp + b)
Рис. 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; [у,time] = step(sys,0s0.2:10); % Формирование обучающего множества р = y(lslangth(time)-2)'; t = y(3:length(time))'; time = time(l:length(time)-2); % Формирование нейронной сети net = newlin([-1 1 ],1,[1 2]); P = num2cell(p); Т = imm2cell (t); % Настройка нейронной сети pi = (0 0); net.adaptParam.passes = 5; [net,Y,E,Pf,Af] = adapt(net,P,T,pi); Yl = cat(l,Y{:}); % Преобразование массива ячеек в массив double % Построение графиков plot(time,Yl,'b:',time,p,'r-'), xlabel('Время, с'), ylabel('Процессы') title ('Обучение нейронной сети') % Моделирование нейронной сети к = sim(net,P); Найденные значения весов и смещения равны net.IW{l,l}, net.b ans = 0.33427 0:31816 ans = [0.35853] Результаты обучения и моделирования результирующей нейронной сети, решающей задачу предсказания сигнала, представлены соответственно на рис. 10, a и б.
Рис. 10
Как видно из этих рисунков, приемлемое для данной постановки задачи количество (циклов обучения равно пяти; результаты моделирования показывают, что при длительности процесса 10 с диапазон успешного предсказания находится в пределах 1.8-10 с.
Подавление шумов Задача подавления шумов возникает в следующей ситуации. Когда пилот говорит микрофон, шум двигателя в кабине добавляется к голосовому сигналу и пассажиры слышат речь с искажениями. Требуется восстановить речь пилота, удалив из нее звуки шумов двигателя. Для решения этой задачи построим адаптивный фильтр, полагая, что нашем распоряжении имеются записи шумов двигателя (рис. 11).
Рис. 11
Используя адаптируемую нейронную сеть ADALINE, построим такой фильтр, который позволит удалить шум и из зашумленного сигнала т. Рассмотрим подробнее структурную схему, представленную на рис. 11. Голос пилота v смешан с помехой от шумов двигателя, которая формируется фильтром шума по известным записям сигнала п. Зашумленный сигнал т моделирует искаженную речь пилота. Задача состоит в том, чтобы с помощью адаптивного фильтра сформировать такую модель шума а, которая при вычитании из зашумленного сигнала позволила бы выделить речь пилота. Адаптивный фильтр, построенный на базе линейной нейронной сети ADALINE, должен быть настроен так, чтобы убирать шум двигателя. Заметим, что такая адаптивная фильтрация предпочтительнее классического фильтра, в котором шум не вычитается, а отфильтровывается от сигнала т. Многомерные цифровые фильтры Для проектирования многомерных фильтров следует применять сети ADALINE, в которых используется более одного нейрона. Это приведет к тому, что вместо вектора весов входа будет использоваться матрица весов W, а вместо единственного смещения - вектор смещений bо. Структурная схема такого многомерного фильтра показана на рис. 12.
Рис. 12
Эта схема достаточно сложна для восприятия, и ее можно представить в укрупненном виде (рис. 13, а). Если в линии задержки (ЛЗ) требуется показать больше деталей, то можно использовать следующий вариант структурной схемы (рис. 13, б).
Рис. 13
Здесь ЛЗ представлена в развернутом виде, указывая, что на вход весовой матрицы подается текущее значение и значения с запаздыванием на 1 и 2 периода дискретности. Можно использовать и большее число блоков задержки, но указывать их надо в порядке возрастания сверху вниз. В заключение отметим основные преимущества и ограничения линейных сетей: • Однослойные линейные сети могут решать задачи линейной аппроксимации функций и распознавания образов. • Однослойные линейные сети могут быть либо рассчитаны непосредственно, либо обучены с использованием правила обучения WH. Кроме того, для их настройки могут применяться процедуры адаптации. • Архитектура однослойной линейной сети полностью определяется задачей, которая должна будет решена, причем число входов сети и число нейронов в слое определяется числом входов и выходов задачи. • Адаптируемые линейные сети ADALINE находят большое практическое применение при построении цифровых фильтров для обработки сигналов. • Линейные нейронные сети могут быть успешно обучены только в том случае, когда входы и выходы связаны линейно. Тем не менее даже в том случае, когда линейная сеть не может найти точного решения, она в состоянии построить наиболее близкое решение в смысле минимума среднеквадратичной ошибки при условии, что параметр обучения достаточно мал. Такая сеть найдет наиболее точное решение в рамках линейной структуры сети. Это обусловлено тем, что поверхность ошибки обучения является многомерным параболоидом, имеющим единственный минимум, и алгоритм градиентного спуска должен привести решение к этому минимуму. • При работе с моделями линейных сетей могут возникать ситуации, когда число настраиваемых параметров недостаточно, чтобы выполнить все условия; в этом случае говорят, что сеть переопределена. Однако может иметь место и обратная ситуация, когда число настраиваемых параметров слишком велико, и в этом случае говорят, что сеть недоопределена. Тем не менее в обоих случаях метод наименьших квадратов осуществляет настройку, стремясь минимизировать ошибку сети. Эти ситуации поясняются демонстрационными примерами demolin4 и demolin5. Разрешимость линейной задачи с помощью линейной нейронной сети может быть установлена следующим образом. Если суммарное количество весов и смещений линейной сети S*R + S, где R - количество входов, S - количество слоев, равно количеству пар векторов входа и цели Q, то такая задача разрешима с помощью линейной нейронной сети. Это справедливо за исключением того случая, когда векторы входа являются линейно зависимыми и используется сеть без смещений.
Дата добавления: 2017-02-01; Просмотров: 72; Нарушение авторских прав?; Мы поможем в написании вашей работы! |