Изучить модель вычислений радиального базисного нейрона, структуру и функции сетей регрессии, вероятностных нейронных сетей.
Ошибка! Ошибка связи.
Рис. 8. Радиальный базисный нейрон
Радиальная базисная нейронная сеть (РБНС) состоит из двух слоев: скрытого радиального базисного слоя из S1 нейронов и выходного линейного слоя из S2 нейронов. Элементы первого слоя РБНС вычисляют расстояния между входным вектором и векторами весов первого слоя, сформированных из строк матрицы W 2,1. Вектор порогов В и расстояния поэлементно умножаются. Выход первого слоя можно выразить формулой:
где A1 – выход первого слоя; функция radbas – радиально-базисная функция; W – матрица весов первого слоя сети; X – входной вектор; В – вектор порогов первого слоя.
Согласно формуле радиальные базисные нейроны с вектором весов, близким к X, сгенерируют значения, близкие к 1. Если нейрон имеет выход 1, то это значение весами второго слоя будет передано на его линейные нейроны. Фактически радиальный базисный нейрон с выходом 1 превращает выходы всех остальных нейронов в нули. Тем не менее, типичным является случай, когда несколько нейронов дают на выходах значимый результат, хотя и с разной степенью.
Радиальные базисные нейронные сети обучаются в три этапа. Опишем этапы обучения.
Первый этап – выделение центров (весов). Центры, представленные в РБН-слое, оптимизируются первыми с помощью обучения без учителя. Центры могут быть выделены разными алгоритмами, в частности обучением Кохонена. Алгоритмы должны разместить центры, отражая кластеризацию исходных данных.
Второй этап – назначение отклонений. Отклонения могут быть назначены различными алгоритмами, например алгоритмом «ближайшего соседа».
Третий этап – линейная оптимизация. Можно использовать методы обучения по дельта-правилу, обратному распространению ошибки.
Нейронные сети регрессии (НСР) имеют такой же, как и РБНС, первый слой, но второй слой строится специальным образом. Для аппроксимации функций часто используются обобщенные сети регрессии (generalized regression neuron networks). Второй слой, как и в случае РБНС, выполняет поэлементное произведение строки 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
Материалы на данной страницы взяты из открытых источников либо размещены пользователем в соответствии с договором-офертой сайта. Вы можете сообщить о нарушении.