Мегаобучалка Главная | О нас | Обратная связь


Построение сети с числом нейронов, равным числу обучающих примеров



2015-11-27 904 Обсуждений (0)
Построение сети с числом нейронов, равным числу обучающих примеров 0.00 из 5.00 0 оценок




 

В [1, 2] рассматриваемый подход называется созданием сети с нулевой ошибкой, что строго говоря, не является точным. Для создания сети используется функция

net = newrbe(Р,Т,SPREAD),

где Р — массив входных векторов, Т — массив целей,SPREAD — "параметр влияния" [1], влияющий на ширину радиальных базисных функций (SPREAD — англ. протяжение).

Функция newrbe создает столько нейронов радиального базисного слоя, сколько имеется входных векторов в массиве Р, и устанавливает веса первого слоя равными Р'(т. е. равными транспонированному массиву Р). При этом смещения устанавливаются равными 0.8326/SPREAD. Это означает, что уровень перекрытия ради­альных базисных функций равен 0.5 и все входы в диапазоне ±SPREAD считаются значи­мыми. Чем больший диапазон входных значений должен быть принят во внима­ние, тем большее значение параметра влияния SPREAD должно быть установлено.

Веса второго слоя IW{2,1}и смещения b{2}могут быть найдены путем формирования выходов первого слоя A{1}и по­следующего решения системы линейных алгебраических уравнений (СЛАУ)

[W{2,1} b{2}] * [A{1}; ones] = T

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

Математически представленная запись представляет собой следующее. Зафиксировано число нейронов первого слоя, центры и ширина. На вход сети подаются обучающие векторы . При подаче вектор выход сети должен быть равен значению целевого вектора и т. д. Тогда веса второго слоя можно определить из решения системы линейных алгебраических уравнений

где – число нейронов первого слоя.

В матричной форме систему запишем в виде

,

где

,

– вектор‑строка искомых весов, .

Для решения данной системы можно использовать решатель MATLAB, минимизирующий сумму квадратов ошибок

Wb = T/[P; ones(1,Q)]

Обратите внимание, что в данном случае используется решатель "прямой слеш", так как искомые векторы‑строки умножаются на известную матрицу.

Рассмотрим пример [2] использования функции newrbe для построения сети аппроксимирующей функцию, заданную 21 значением аргумента (входами)

>> P = -1:.1:1;

и соответствующими значениями функции (выходами)

>> T = [-.9602 -.5770 -.0729 .3771 .6405 .6600 .4609 ...

.1336 -.2013 -.4344 -.5000 -.3930 -.1647 .0988 ...

.3072 .3960 .3449 .1816 -.0312 -.2189 -.3201];

Построим график обучающего множества (рис. 4.4):

>> plot(P,T,'*r','LineWidth', 2)

>> grid on

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

>> ylabel('Целевой вектор T');

>> hold on

Рис. 4.4. Обучающее множество

 

Создадим сеть с помощью функции newrbe:

>> net = newrbe(P,T);

Warning: Rank deficient, rank = 13, tol = 2.2386e-014.

> In newrbe>designrbe at 137

In newrbe>create_network at 121

In newrbe at 63

Предупреждение Warning: Rank deficient означает, что решаемая система линейных алгебраических уравнений имеет неполный ранг, равный 13. Значит, в матрице системы из 21 столбца линейно независимыми являются только 13 столбцов, достигнута точность tol=2.2386e-014.

Промоделируем работу сети на векторах из обучающего множества:

>> V = net(P);

Построим график результатов моделирования сети (рис. 4.5)

>> plot(P,V,'ob','MarkerSize',12)

Рис. 4.5. Результаты моделирования работы сети

 

На обучающем множестве сеть практически идеально аппроксимирует функцию. Но известно [3], что радиальная базисная сеть может обладать плохой обобщающей способностью. В частности, плохой обобщающей способностью может обладать сеть, построенная с помощью функции newrbe. Рассмотрим элементарный пример. Аппроксимируем функцию на 7 примерах:

>> P1=0:pi/3:2*pi;

>> T1=sin(P1);

>> net1 = newrbe(P1,T1);

Построим график:

>> plot(P1,T1,'*r','LineWidth', 2)

>> grid on

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

>> ylabel('Целевой вектор T1');

>> hold on

Промоделируем работу сети на векторах из обучающего множества:

>> V1 = net1(P1);

Построим график результатов моделирования сети (рис. 4.6)

>> plot(P1,V1,'ob','MarkerSize',12)

>> hold on

Результат, как следовало ожидать, отличный (рис. 4.6).

Рис. 4.6. Результаты моделирования работы сети на обучающем множестве

 

Теперь промоделируем работу сети на 25 примерах:

>> P2=0:pi/12:2*pi;

>> T2=sin(P2);

>> plot(P2,T2)

>> hold on

>> V2 = net1(P2);

>> plot(P2,V2,'+','MarkerSize',6)

Результат на примерах, которые не использовались при построении сети, заметно отличается от целевого значения (рис. 4.7)

Рис. 4.7. Результаты моделирования работы сети на множестве из 25 примеров (крестообразный маркер)

 



2015-11-27 904 Обсуждений (0)
Построение сети с числом нейронов, равным числу обучающих примеров 0.00 из 5.00 0 оценок









Обсуждение в статье: Построение сети с числом нейронов, равным числу обучающих примеров

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (904)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)