Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

Предварительная обработка и восстановление данных

Вычислительная процедура обучения нейронной сети связана с проведением больших объемов вычислений с данными, диапазоны изменения которых могут существенно различаться и которые имеют случайные разбросы, обусловленные погрешностью их измерения или задания. Поскольку обработка таких данных выполняется на компьютерах, имеющих ограниченный диапазон представления чисел и ограниченную точность выполнения операций умножения и алгебраического сложения в арифметике с плавающей точкой, то необходимо предпринять определенные меры, чтобы такая обработка не привела к потере точности. Для этого осуществляется предварительная обработка данных с целью привести значения элементов обучающего множества к определенному диапазону (масштабирование данных), ограничить разброс случайных величин (нормировка данных), избавиться от несущественных данных (факторный анализ). Поскольку эти операции являются вспомогательными и связаны только с особенностями вычислений, то необходимо предусмотреть восстановление масштабов данных на выходе нейронной сети. Все это направлено на то, чтобы обеспечить достоверность вычислений, повысить точность обучения и в конечном счете обеспечить эффективность функционирования проектируемой нейронной сети.

Для этой цели в составе ППП Neural Network Toolbox предусмотрены следующие М-функ­­ции для предварительной подготовки и восстановления данных при обучении нейронных сетей:

Операция

Обработка обу­ча­ю­щего множества

Обработка вы­ходных данных

Обработка входных данных

Масштабирование

premnmx

postmnmx

tramnmx

Нормировка

prestd

poststd

trastd

Факторный анализ

prepca

trapca

Регрессионный анализ

postreg

Масштабирование.Перед тем как начинать процедуру обучения, бывает полезно провести масштабирование векторов входа и целей так, чтобы их элементы оказались в определенном интервале значений. В частности, М-функцияpremnmxпредназначена для приведения данных к интервалу [–1 1].

% Масштабирование входов и целей

[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t);

net = train(net,pn,tn); % Обучение сети

Входными параметрами этой функции являются массивы p и t, соответствующие входам и целевым выходам. Элементы выходных массивов pn и tn имеют значения в интервале [–1 1]. Векторы minp и maxp включают минимальные и максимальные значения исходных векторов входа, а векторы mint и maxt – минимальные и максимальные значения исходных векторов целей. После завершения процедуры обучения эти векторы используются для масштабирования векторов входов и целей, подаваемых на вход сети. Эти параметры становятся неотъемлемой частью параметров, определяющих сеть, как, например, ее веса и смещения.

Если выполнено масштабирование входов и целей с использованием М-функции premnmx, то выходы сети будут иметь значения в интервале [–1 1]. Для приведения вектора выхода к исходным единицам измерения используется М-функция postmnmx. Ее следует применять после того, как выполнено моделирование сети:

an = sim(net,pn); % Моделирование сети с масштабированным входом

a = postmnmx(an,mint,maxt); % Восстановление исходного масштаба

Если функция масштабирования premnmxиспользовалась для обучения сети, то при последующей работе с такой сетью необходимо масштабировать новые входные последовательности, используя М-функциюtramnmx:

pnewn = tramnmx(pnew,minp,maxp); % Масштабирование поступающих входов

anewn = sim(net,pnewn); % Моделирование сети

anew = postmnmx(anewn,mint,maxt); % Восстановление исходного масштаба

Нормировка.В тех случаях, когда обучающее множество включает случайные величины, распределенные по нормальному закону, приведение элементов к единому масштабу связано с процедурой нормировки данных с использованием величин среднего значения и стандартного отклонения. Эта процедура выполняется с помощью М-функцииprestd, которая нормирует входы и цели так, чтобы они имели среднее значение, равное 0, и стандартное отклонение, равное 1.

[pn,meanp,stdp,tn,meant,stdt] = prestd(p,t);

Входными параметрами этой функции являются массивы pиt, соответствующие входам и целевым выходам. Элементы выходных массивов pnиtn будут иметь среднее значение, равное 0, и стандартное отклонение, равное 1. Векторы meanpи stdpвключают средние значения и стандартные отклонения исходных векторов входа, а векторыmeantиstdt– средние значения и стандартные отклонения исходных векторов целей. После завершения процедуры обучения эти векторы используются для масштабирования векторов входов и целей, подаваемых на вход сети. Эти величины становятся неотъемлемой частью параметров, определяющих сеть, как, например, ее веса и смещения.

Если выполнено масштабирование входов и целей с использованием М-функции prestd, то выходы сети будут нормированы так, что их среднее значение равно 0, а стандартное отклонение – 1. Для приведения вектора выхода к исходным единицам измерения используется М-функция poststd. Ее следует применять после того, как выполнено моделирование сети:

an = sim(net,pn); % Моделирование сети с нормированным входом

a = poststd(an,meant,stdt); % Восстановление исходных единиц измерения

Если функция нормировки prestdиспользовалась для обучения сети, то при последующей работе с такой сетью необходимо нормировать новые входные последовательности, используя М-функциюtrastd:

pnewn = trastd(pnew,meanp,stdp); % Нормировка векторов входа

anewn = sim(net,pnewn); % Моделирование сети

% Восстановление исходных единиц измерения

anew = poststd(anewn,meant,stdt);

Факторный анализ.Во многих случаях, когда векторы входа содержат большое число элементов, они оказываются коррелированными, т. е. взаимосвязанными между собой,и, следовательно, избыточными для процедур обучения. В этом случае полезно сократить размеры векторов входа. Для этого применяется процедура статистической обработки, называемая факторным анализом. При применении этой процедуры решаются 3 задачи:

  • выполняется ортогонализация векторов входа, что исключает их взаимную корреляцию;

  • выполняется упорядочение векторов обучающего множества так, чтобы векторы, охватывающие большой диапазон значений, были первыми (главные компоненты);

  • удаляются векторы, диапазон значений которых незначителен.

Для реализации процедуры факторного анализа предназначена М-функция prepca:

[pn,meanp,stdp] = prestd(p);% Нормализация вектора входа

[ptrans,transMat] = prepca(pn, 0.02);

% Устранение векторов входа, вклад которых не превышает 2 проц.

В последовательности этих операторов сначала выполняется нормировка векторов входа, затем проводится факторный анализ. Второй аргумент функции prepcaравен 0.02, что означает устранение тех главных компонентов, вклад которых составляет менее 2 %. Массивptransсодержит преобразованные векторы входа; матрицаtransMatявляется матрицей преобразования в главные компоненты. После обучения сети эта матрица должна быть использована для предварительного преобразования векторов входа. Она становится такой же неотъемлемой частью параметров сети, как ее веса и смещения. Если умножить нормированные векторы входаpnна матрицу преобразованияtransMat, то получим векторptransс упорядоченными главными компонентами.

Если функция prepca использовалась для предварительной обработки множества обучающих данных, то всякий раз, когда обученная сеть используется с новыми входами, они должны быть соответствующим образом преобразованы. Это реализуется с помощью М-функции trapca:

pnewn = trastd(pnew,meanp,stdp); % Нормировка векторов входа

pnewtrans = trapca(pnewn,transMat);

a = sim(net,pnewtrans); % Моделирование сети

Регрессионный анализ. В определенной степени качество обучения нейронной сети может быть оценено ошибками обучения, контроля и тестирования, но этого может оказаться недостаточно и требуется более детальный анализ. Один из возможных подходов – это регрессионный анализ выходов сети и соответствующих целей. В составе ПППNeuralNetworkToolboxдля этих целей предназначена М-функцияpostreg.

Следующая последовательность операторов поясняет, как можно выполнить регрессионный анализ для сети, построенной на основе процедуры с прерыванием обучения:

p = [–1:0.05:1];

t = sin(2*pi*p)+ 0.1*randn(size(p));

v.P = [–0.975:.05:0.975];

v.T = sin(2*pi*v.P)+0.1*randn(size(v.P));

net = newff([–1 1],[20,1],{'tansig','purelin'},'traingdx');

net.trainParam.show = 25;

net.trainParam.epochs = 300;

net = init(net);

[net,tr]=train(net,p,t,[],[],v);

a = sim(net,p); % Моделирование сети

figure(2)

[m,b,r] = postreg(a,t)

m = 0.99278

b = 0.0064888

r = 0.99579

Выход сети и вектор целей передаются в качестве входных аргументов функции postreg, а она возвращает параметры регрессии: первые два – m и b – определяют наклон и смещение линии регрессии в координатах цель-выход, третий – r – коэффициент корреляции. Если выходы точно равняются целям, то наклон должен быть равен 1, а смещение 0. В рассматриваемом примере можно видеть, что эти параметры действительно весьма точно отражают линейную регрессию. Коэффициент корреляции близок к 1, что указывает на существенную корреляцию между выходами и целями, т. е. малые изменения цели будут адекватно отражаться в выходах нейронной сети, что является характеристикой ее высокого качества.

а

б

Рис. 3.26

На рис. 3.26, а ибпоказаны соответственно результаты обучения и результаты регрессионного анализа нейронной сети, предназначенной для аппроксимации функций. Выходы сети обозначены кружками; наилучшая подгонка – пунктирной, а точная – сплошной линией. В данном случае трудно отличить наилучшую подгонку от точной, поскольку аппроксимация функции выполнена очень точно.