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

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

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

Для этой цели в составе ППП 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); % Моделирование сети

Регрессионный анализ. В определенной степени качество обучения нейронной сети может быть оценено ошибками обучения, контроля и тестирования, но этого может оказаться недостаточно и требуется более детальный анализ. Один из возможных подходов – это регрессионный анализ выходов сети и соответствующих целей. В составе ППП Neural Network Toolbox для этих целей предназначена М-функция 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, а и б показаны соответственно результаты обучения и результаты регрессионного анализа нейронной сети, предназначенной для аппроксимации функций. Выходы сети обозначены кружками; наилучшая подгонка – пунктирной, а точная – сплошной линией. В данном случае трудно отличить наилучшую подгонку от точной, поскольку аппроксимация функции выполнена очень точно.