Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB 6.doc
Скачиваний:
857
Добавлен:
07.03.2016
Размер:
15.55 Mб
Скачать

6.1. Сети grnn

Нейронные сети GRNN (GeneralizedRegressionNeuralNetwork) описаны в работе [43] и предназначены для решения задач обобщенной регрессии, анализа временных рядов и аппроксимации функций. Характерной особенностью этих сетей является очень высокая скорость их обучения.

Архитектура сети

Архитектура сети GRNN показана на рис. 6.10. Она аналогична архитектуре радиальной базисной сети, но отличается структурой второго слоя, в котором используется блок normprod для вычисления нормированного скалярного произведения строки массива весовLW21и вектора входаa1 в соответствии со следующим соотношением:

. (6.3)

Рис. 6.10

Первый слой – это радиальный базисный слой с числом нейронов, равным числу элементов Qобучающего множества; в качестве начального приближения для матрицы весов выбирается массивP'; смещениеb1устанавливается равным вектор-столбцу с элементами 0.8326/SPREAD. Функцияdist вычисляет расстояние между вектором входа и вектором веса нейрона; вход функции активацииn1 равен поэлементному произведению взвешенного входа сети на вектор смещения; выход каждого нейрона первого слояa1 является результатом преобразования вектораn1радиальной базисной функциейradbas. Если вектор веса нейрона равен транспонированному вектору входа, то взвешенный вход равен 0, а выход функции активации – 1. Если расстояние между вектором входа и вектором веса нейрона равноspread, то выход функции активации будет равен 0.5.

Второй слой – это линейный слой с числом нейронов, также равным числу элементов Qобучающего множества, причем в качестве начального приближения для матрицы весовLW{2,1} выбирается массивT. Предположим, что имеем вектор входаpi, близкий к одному из векторов входаp из обучающего множества. Этот входpiгенерирует значение выхода слояai1, близкое к 1. Это приводит к тому, что выход слоя 2 будет близок кti.

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

Синтез сети

Для создания нейронной сети GRNN предназначена М-функция newgrnn. Зададим следующее обучающее множество векторов входа и целей и построим сеть GRNN:

P = [4 5 6];

T = [1.5 3.6 6.7];

net = newgrnn(P,T);

net.layers{1}.size % Число нейронов в скрытом слое

ans = 3

Эта сеть имеет 3 нейрона в скрытом слое. Промоделируем построенную сеть сначала для одного входа, а затем для последовательности входов из интервала [4 7]:

p = 4.5;

v = sim(net,p);

p1 = 4:0.1:7;

v1 = sim(net,p1);

plot(P,T,'*k',p,v,'ok',p1,v1,'–k','MarkerSize',10,'LineWidth',2)

Результат показан на рис. 6.11.

Рис. 6.11

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

Демонстрационная программа demogrn1 иллюстрирует, как сети GRNN решают задачи аппроксимации. Определим обучающее множество в виде массивов Р и Т.

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

T = [0 1 2 3 2 1 2 1];

Для создания сети GRNN используется функция newgrnn. Примем значение параметра влияния SPREAD немного меньшим, чем шаг задания аргумента функции (в данном случае 1), чтобы построить аппроксимирующую кривую, близкую к заданным точкам. Как мы уже видели ранее, чем меньше значение параметра SPREAD, тем ближе точки аппроксимирующей кривой к заданным, но тем менее гладкой является сама кривая:

spread = 0.7;

net = newgrnn(P,T,spread);

net.layers{1}.size % Число нейронов в скрытом слое

ans = 8

A = sim(net,P);

plot(P,T,'*k','markersize',10)

hold on,

plot(P,A,'ok','markersize',10);

Результат показан на рис. 6.12.

Рис. 6.12

Моделирование сети для диапазона значений аргумента позволяет увидеть всю аппроксимирующую кривую, причем возможна экстраполяция этой кривой за пределы области ее определения. Для этого зададим интервал аргумента в диапазоне [–1 10]:

P2 = –1:0.1:10;

A2 = sim(net,P2);

plot(P2,A2,'–k','linewidth',2)

hold on,

plot(P,T,'*k','markersize',10)

Результат показан на рис. 6.13.

Рис. 6.13

Сформированная сеть GRNNиспользует всего 8 нейронов в скрытом слое и весьма успешно решает задачу аппроксимации и экстраполяции нелинейной зависимости, восстанавливаемой по экспериментальным точкам.