Лабораторная работа № 7. Изучение радиальных базисных, вероятностных нейронных сетей, сетей регрессии

  • doc
  • 13.05.2020
Публикация в СМИ для учителей

Публикация в СМИ для учителей

Бесплатное участие. Свидетельство СМИ сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 5. ЛР № 7. Изучение радиальных базисных, вероятностных нейронных сетей, сетей регрессии.doc

Лабораторная работа № 7. Изучение радиальных базисных, вероятностных нейронных сетей, сетей регрессии

        

Цель работы

Изучить модель вычислений радиаль­ного базисного нейрона, структуру и функции сетей регрес­сии, вероятностных нейронных сетей.

 

         Основные теоретические положения

           

Радиально-базисные сети. Сети регрессии. Вероятностные НС. Рассмотрим радиальный базисный нейрон с R входами. Струк­тура нейрона представлена на рис. 8. Радиальный базисный нейрон (РБН) вычисляет расстояние между векторами входов X и вектором весов W, затем умножает его на фиксированный порог b. Функция активации РБН, полученная в среде MATLAB, представлена на рис. 10. Ра­диальная базисная функция имеет максимум, равный 1, когда ее входы нулевые. Следовательно, радиальный базисный ней­рон действует как детектор, который получает на выходе 1, когда вход X идентичен его вектору весов W. Фиксированный порог b даст возможность управлять чувствительностью нейрона. Например, если нейрон имеет порог 0,1, то выход равен 0,5 для любого входного вектора X, находящегося на векторном расстоянии 8,326 (8,326/b) от W.

 

         Ошибка! Ошибка связи.

 

Рис. 8. Радиальный базисный нейрон

 

         Радиальная базисная нейронная сеть (РБНС) состоит из двух слоев: скрытого радиального базисного слоя из S1 нейронов и выходного линейного слоя из S2 нейронов. Элементы первого слоя РБНС вычисляют расстояния между входным вектором и векторами весов первого слоя, сформированных из строк матрицы W 2,1. Вектор порогов В и расстояния поэлементно умножаются. Выход первого слоя можно выразить формулой:

 

 

где A1 – выход первого слоя; функция radbas – радиально-базисная функция;   W – матрица весов первого слоя сети; X – входной вектор; В – вектор порогов первого слоя.

         Согласно формуле радиальные базисные нейроны с век­тором весов, близким к X, сгенерируют значения, близкие к 1. Если нейрон имеет выход 1, то это значение весами второго слоя будет передано на его линейные нейроны. Фактически радиальный базисный нейрон с выходом 1 превращает выхо­ды всех остальных нейронов в нули. Тем не менее, типичным является случай, когда несколько нейронов дают на выходах значимый результат, хотя и с разной степенью.

         Радиальные базисные нейронные сети обучаются в три этапа. Опишем этапы обучения.

         Первый этап – выделение центров (весов). Центры, представленные в РБН-слое, оптимизируются первыми с помощью обучения без учителя. Центры могут быть выделены разными алгоритмами, в частности обучением Кохонена. Ал­горитмы должны разместить центры, отражая кластеризацию исходных данных.

         Второй этап – назначение отклонений. Отклонения могут быть назначены различными алгоритмами, например алгоритмом «ближайшего соседа».

         Третий этап – линейная оптимизация. Можно ис­пользовать методы обучения по дельта-правилу, обратному распространению ошибки.

         Нейронные сети регрессии (НСР) имеют такой же, как и РБНС, первый слой, но второй слой строится специальным образом. Для аппроксимации функций часто используются обобщенные сети регрессии (generalized regression neuron net­works). Второй слой, как и в случае РБНС, выполняет поэле­ментное произведение строки W1,2 и вектора выхода первого слоя a1. Он имеет столько нейронов, сколько существует целевых пар <входной вектор/целевой вектор>. Матрица весов Wэто на­бор целевых строк. Целевое значение – это значение аппрок­симируемой функции в обучающей выборке. Предположим, имеется один входной вектор хi, который сгенерирует на выходе первого слоя выход, близкий к 1. В результате выход второго слоя будет близок к ti одному из значений аппроксимируемой функции, использованной при формировании второго слоя.

         Сети регрессии иногда называют Байесовскими вероятно­стными сетями регрессии, или обобщенными НС регрессии. Некоторые реализации сетей регрессии имеют четыре слоя: входной, выходной, слои радиальных центров, элементов рег­рессии. Радиальный слой представляет собой центры-класте­ры известных обучающих данных и содержит такое же коли­чество элементов, как обучающая выборка; РБН обучаются алгоритмом кластеризации. Слой регрессии имеет только на один элемент больше, чем выходной слой, и содержит линей­ные элементы одного из двух типов. Элемент первого типа вычисляет условную вероятность каждого выходного атрибу­та, элемент второго типа вычисляет плотность вероятности. Выходной слой выполняет специальные функции деления. Каждый элемент делит выходы, ассоциированные первым ти­пом, с помощью элементов второго типа.

         Байесовские вероятностные НС используются только для проблем классификации. Они содержат четыре слоя: вход­ной, выходной, слой РБН и элементов линейной классификации. Слои могут содержать квадратную матрицу потерь, включение которой возможно, только если третий и четвер­тый слои состоят из одинакового числа элементов. Радиаль­ные базисные нейроны в таких сетях используются для хра­нения образцов, взятых из обучающей выборки, которая бе­рется полностью. Следовательно, первый скрытый слой содержит такое же количество элементов, что и обучающая выборка. Так как элементы слоя классификации связаны с выходом каждого класса, можно оценить вероятность принадлежности последнему. Если используется матрица потерь, то цена решения минимальна. Такие сети обычно быстро тре­нируются, но медленно вычисляются из-за большого размера.

         Вероятностные нейронные сети (ВНС, probabilistic neuron networks) используются для решения проблемы классифика­ции. Первым слоем в архитектуре ВНС является слой радиальных базисных нейронов, который вычисляет расстояние и век­тор индикаторов принадлежности другим входным векторам, используемым при обучении. Второй слой суммирует эти зна­чения для каждого класса входов и формирует выходы сети как вектор вероятностей. Далее специальная функция активации (compete) определяет максимум вероятностей на выходе второ­го слоя и устанавливает данный выход в 1, а остальные выходы в 0. Матрица весов первого слоя W1,1 установлена в соответ­ствии с обучающими парами. Блок расчета расстояний полу­чает вектор, элементы которого показывают, насколько близок входной вектор к векторам обучающего множества. Элементы вектора умножаются на вектор порогов и преобразуются ра­диальной базисной функцией. Входной вектор, близкий к не­которому образцу, устанавливается в 1 в выходном векторе первого слоя. Если входной вектор близок к нескольким образцам отдельного класса, то несколько элементов выходного вектора первого слоя будут иметь значения, близкие к 1.

         Веса второго слоя W1,1 устанавливаются по матрице T целевых векторов, каждый вектор которой включает значение 1 в строке, связанной с определенным классом входов, и нули в остальных позициях. Произведения Т a1 суммируют эле­менты выходного вектора первого слоя а1 для каждого из K классов. Затем функция активации второго слоя (compete) ус­тановит значение 1 в позицию, соответствующую большему элементу выходного вектора, и 0 во все остальные. Следова­тельно, сеть классифицирует входные векторы, назначая вхо­ду единственный класс на основе максимальной вероятности принадлежности.

 

            Описание основных функций

         Функция newrb создает радиальную базисную сеть и имеет следующий синтаксис:

 

         net = newrb(P, Т, goal, spread).

 

         Радиальные базисные сети используют для аппроксимации функций. Функция newrb конструирует скрытый (первый) слой из радиальных базисных нейронов и использует значение средней квадратичной ошибки (goal). Функция newrb(P, Т, goal, spread) имеет следующие аргументы: Р – матрица Q входных векторов размерности R на Q; Т – матрица Q векторов целевых классов S на Q; goal средняя квадратичная ошибка, по умолчанию 0,0; spread – разброс радиальной ба­зисной функции, по умолчанию 1,0. Функция создает и возвращает в качестве объекта радиальную базисную сеть. Большое значение разброса приводит к большей гладкости аппроксимации. Слишком большой разброс требует много нейронов, для того чтобы подстроиться под быстро изменяющуюся функцию, слишком малый – для достижения гладкости аппроксимации. Подобрать значение разброса можно с помощью многократных вызовов функции newrb. Создадим в среде MATLAB радиальную базисную сеть:

 

net = newrbe(P, T, spread).

 

         Функция newrbe проектирует радиальную базисную сеть с нулевой ошибкой для заданных векторов. Функция newrbe(P, T, spread) имеет три параметра: Р матрица Q входных векторов размерности R на Q; Т матрица Q целевых векторов – описателей класса размерности S на Q; spread разброс радиальной базисной функции, по умолчанию 1,0. Функция создает радиальную базисную сеть.

         Функция newgrnn проектирует НС регрессии – это вид радиальной базисной сети, которая часто используется для аппроксимации функций и быстро строит сеть для аппроксимации:

 

net = newgrnn(P, T, spread).

 

         Функция newgrnn(P, T, spread) имеет следующие входы: Р – матрица Q входных векторов размерности R на Q; Т матрица Q целевых векторов классов размерности S на Q; spread – разброс радиальных базисных функций, по умолчанию 1,0. Функция возвращает НС регрессии. Чем больше разброс, тем более гладкой будет функция аппроксимации. Для того чтобы настроить функцию аппроксимации на исходные данные, используют разброс меньший, чем типичное расстояние между входными векторами.

         Функция newgrnn создает двухслойную сеть. Первый слой содержит радиальные базисные нейроны, вычисляющие расстояние между входами и весами с помощью netprod. Второй слой имеет нейроны с функцией активации purelin. Только у первого слоя существует bias.

         Функция newpnn создает вероятностную НС, проектируемую с помощью функции

 

net = newpnn(P, T, spread).

 

         Вероятностная НС – это вид радиальной базисной сети, как и НС регрессии, но данные сети используются для решения задачи классификации, а не аппроксимации. Функция net = newpnn(P, T, spread) имеет такие же параметры, как и вышеописанная функция newgrnn. Если разброс близок к нулю, вероятностная НС действует как классификатор на основе принципа выбора «ближайшего соседа», в противном случае сеть принимает в расчет несколько близких векторов.

        

Порядок выполнения работы

 

         Пример 1. Создание и обучение НС регрессии

         Рассмотрим проектирование НС регрессии. Определим:

 

% входы НС регрессии

P = [1 2 3];

% выходы НС регрессии

T = [3.0 5.1 4.8];

 

         Воспользуемся функцией newgrnn для создания НС регрессии. Зададим разброс радиальных базисных функций (переменная spread) меньше, чем 1, для того чтобы получить хорошую аппроксимацию данных и более гладкую функцию.

 

% установка разброса радиальных базисных функций

spread = 0.8;

% создание НС регрессии

net = newgrnn(P, T, spread);

% имитация работы НС регрессии

A = sim (net, P);

% изображение аппроксимируемой функции

plot(P, T, '.', 'markersize', 30);

% установка режима добавления графиков на координатные оси

hold on;

% изображение работы необученной НС регрессии

plot(P, A, '.', 'markersize', 30, 'color', [1 0 0]);

% очистка координатных осей

cla reset;

% установка нового входа НС регрессии

p = 4.5;

% получение отклика НС регрессии

a = sim (net, p);

% изображение аппроксимируемой функции

plot(P, T, '.', 'markersize', 30);

% установка диапазонов осей X и Y

axis ([0 9 -1 4]);

% включение режима добавления графиков

 hold on;

% изображение отклика НС регрессии на вход р

plot(p, a, '.', 'markersize', 30, 'color', [1 0 0]);

% написать заголовок графика

title('Новый входной вектор ');

% пометить ось X

xlabel('P и p');

% пометить ось Y

ylabel('T и a');

% очистить координатную сетку

cla reset;

% определить последовательность входов P2

P2 = 0: 0.2 : 9;

 

         Сымитируем отклик сети для различных значений, чтобы увидеть результат аппроксимации (рис. 9).

Рис. 9. Аппроксимация точек с помощью нейронной сети регрессии

 

% получить отклик НС регрессии на последовательность входов Р2

A2 = sim (net, P2);

% изобразить отклик НС регрессии

plot(P2, A2, 'linewidth', 4, 'color', [1 0 0]);

% включить режим добавления графиков

hold on;

% изобразить аппроксимируемую функцию

plot(P, T, '.', 'markersize', 30);

% установить диапазон осей

axis ([0 9 3 7]);

% озаглавить график

title ('Аппроксимируемая функция');

% пометить ось X

 xlabel('Р и Р2');

% пометить ось Y

ylabel('Т и А2');

 

Пример 2. Использование РБНС для аппроксимации функций

 

         Рассмотрим аппроксимацию функций на основе радиальной базисной сети.

 

% определение диапазона значений радиальной базисной функции

P = -4 : 0.1 : 4;

% вычисление радиальной базисной функции на диапазоне P

a = radbas (P);

% изображение РБФ

plot (P, a);

% озаглавить  график

title('Радиальная базисная функция');

% пометить ось X

xlabel('Вход P');

% пометить ось Y

ylabel ('Выход а');

 

         На рис. 10 изображена радиальная базисная функция.

Рис. 10. Радиальная базисная функция

         Функция newrbe создаст необходимую сеть. Зададим аппроксимируемую функцию как набор точек:

 

% определение последовательности аргументов

% аппроксимируемой функции Р

P = -1 : 0.1 : 1;

% определение значений аппроксимируемой функции,

% соответствующих Р

T = [-.6662 -.3766 -.1129 .2111 .6565 .3301 .3649 .2006...

-.1913 -.3994 -.5022 -.4531 -.1133 .0866 .3333 .4955...

.3488 .2833 -.1112 -.6685 -.3255];

        

Изобразим график функции (рис. 11).

Рис. 11. Результат аппроксимации с помощью радиальной базисной

нейронной сети

 

% изображение аппроксимируемой функции

plot(P, T, '*');

% озаглавить график

title('Обучающая выборка');

% пометить ось X

xlabel('Входной вектор Р');

% пометить ось Y

ylabel('Вектор Т');

 

         Далее необходимо найти функцию, которая хорошо описывает заданные 21 точку.

         Функция newrb создает РБНС для аппроксимации:

 

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

e = 0.02;

% разброса РБФ

sp = 1;

% создание РБФ

net = newrb(P,T,e,sp);

% определение вектора входов

X = -1 : 0.01 : 1;

 

         Сымитируем работу сети.

 

% формирование отклика Y

Y = sim(net, X);

% включение режима добавления графика

hold on;

% изображение результатов аппроксимации

plot(X, Y);

% отключение режима добавления графика

hold off;

 

         Пример 3. Использование вероятностной НС для классификации векторов

         Рассмотрим задачу классификации с набором входов Р и множеством классов, обозначенным Тс.

 

% определение входов

P = [1 2 3 4 5 6 7];

% определение желаемых выходов

Tc =[1 1 3 3 2 1 1];

% конвертирование индексов в векторы, содержащие 1

% в индексных позициях

T = ind2vec (Tc);

% создание вероятностной НС

net = newpnn (P, T);

% имитация работы вероятностной НС

Y = sim(net, P);

% конвертирование номеров классов в векторы.

Yc = vec2ind(Y);

 

         Контрольные вопросы

1       Какую функцию называют радиальной базисной функцией?

2       Из каких слоев состоит радиально-базисная НС?

3       Из каких слоев состоит НС регрессии?

4       Из каких слоев состоит вероятностная НС?

5       Какие виды НС предназначены для решения задачи ап­проксимации функций, а какие – для классификации объектов?

6       Какие типы НС создаются в среде MATLAB с помощью функций newrb, newrbe, newgrnn, newpnn?

 


Скачано с www.znanio.ru