Сделай Сам Свою Работу на 5

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

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

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



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.