Предварительная обработка и восстановление данных
Вычислительная процедура обучения нейронной сети связана с проведением больших объемов вычислений с данными, диапазоны изменения которых могут существенно различаться и которые имеют случайные разбросы, обусловленные погрешностью их измерения или задания. Поскольку обработка таких данных выполняется на компьютерах, имеющих ограниченный диапазон представления чисел и ограниченную точность выполнения операций умножения и алгебраического сложения в арифметике с плавающей точкой, то необходимо предпринять определенные меры, чтобы такая обработка не привела к потере точности. Для этого осуществляется предварительная обработка данных с целью привести значения элементов обучающего множества к определенному диапазону (масштабирование данных), ограничить разброс случайных величин (нормировка данных), избавиться от несущественных данных (факторный анализ). Поскольку эти операции являются вспомогательными и связаны только с особенностями вычислений, то необходимо предусмотреть восстановление масштабов данных на выходе нейронной сети. Все это направлено на то, чтобы обеспечить достоверность вычислений, повысить точность обучения и в конечном счете обеспечить эффективность функционирования проектируемой нейронной сети.
Для этой цели в составе ППП 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 - 2024 stydopedia.ru Все материалы защищены законодательством РФ.
|