Учебник ИИ. _Учебник ИНС_2014_Э4743. Учебник рекомендовано Ученым советом Вятгу в качестве учебного пособия Киров 2014
Скачать 3.7 Mb.
|
8.5. Влияние параметра SPREAD нейронной сети на результаты аппроксимации Для исследования параметра SPREAD будет использована радиально-базисная нейронная сеть, созданная ранее. Для параметра GOAL устанавливается в значение 0.000001, которое обеспечит достаточно точную аппроксимацию функций sin(x), cos(x) при снижении времени обучения сети за счёт меньшего количества нейронов в скрытом слое (чем при GOAL=0). Интервал значений входных векторов [-pi:01: pi]. Параметр влияния SPREAD существенно влияет на качество аппроксимации функции: чем его значение больше, тем более «гладкой» будет аппроксимация. Слишком большое значение параметра SPREAD приведет к тому, что для получения «гладкой» аппроксимации быстро изменяющейся функции потребуется большое количество нейронов скрытого слоя. Малое значение параметра SPREAD потребует большого количества нейронов для аппроксимации «гладкой» функции. Интервал значений тестовой выборки [-pi: 0.05: pi]. Установим значение параметра SPREAD=0.01. На нижеприведённых рис. 8.17-8.18 показаны графики функций sin(x), cos(x) (сплошная линия), графики аппроксимаций этих функций через НС (маркеры (‘o’) указывают на входные вектора обучения НС). Также точечными маркерами (‘.’) и линиями отмечены результаты работы НС при поступлении на вход тестового вектора. 145 Рис. 8.17. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=0.01, numneurons=62, StepInVector=0.1, StepTestVector=0.05) Рис. 8.18. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=0.01, numneurons=62, StepInVector=0.1, StepTestVector=0.05) Рис. 8.19-8.32 демонстрируют, что НС не обеспечивает необходимой гладкости аппроксимируемой функции, за счёт влияния параметра SPREAD. 146 Рис. 8.19. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=0.03, numneurons=62, StepInVector=0.1, StepTestVector=0.05) Рис. 8.20. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=0.03, numneurons=62, StepInVector=0.1, StepTestVector=0.05) Так как SPREAD=0.01, то интервал перекрытия входных значений составляет плюс-минус 0.01. При обучении НС векторами с шагом 0.1 значения тестового вектора не перекрываются функциями активации и не обеспечивается необходимая гладкость функции. При приближении параметра SPREAD к значению шага изменения входного вектора, аппроксимируемая функция приобретает необходимую гладкость. 147 Рис. 8.21. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=0.05, numneurons=62, StepInVector=0.1, StepTestVector=0.05) Рис. 8.22. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=0.05, numneurons=62, StepInVector=0.1, StepTestVector=0.05) 148 Рис. 8.23. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=0.07, numneurons=62, StepInVector=0.1, StepTestVector=0.05) Рис. 8.24. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=0.07, numneurons=61, StepInVector=0.1, StepTestVector=0.05) 149 Рис. 8.25. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=0.5, numneurons=18, StepInVector=0.1, StepTestVector=0.05) Рис. 8.26. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=0.5, numneurons=19, StepInVector=0.1, StepTestVector=0.05) 150 Рис. 8.27. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=250, numneurons=63, StepInVector=0.1, StepTestVector=0.05) Рис. 8.28. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=250, numneurons=63, StepInVector=0.1, StepTestVector=0.05) 151 Рис. 8.29. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=400, numneurons=63, StepInVector=0.1, StepTestVector=0.05) Рис. 8.30. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=400, numneurons=63, StepInVector=0.1, StepTestVector=0.05) 152 Рис. 8.31. График функции sin(x) и аппроксимации с помощью НС (newrb, spread=100000000, numneurons=63, StepInVector=0.1, StepTestVector=0.05) Рис. 8.32. График функции cos(x) и аппроксимации с помощью НС (newrb, spread=100000000, numneurons=63, StepInVector=0.1, StepTestVector=0.05) При больших значениях SPREAD=100 000 000 (табл. 8.3) все функции активации перекрывают друг друга, и каждый базисный нейрон 153 выдает значение близкое к нулю для всех входных значений и сеть перестает реагировать на входные значения. Таблица 8.3. Зависимость количества нейронов и средней ошибки от значения параметра влияния SPREAD SPREAD Количество нейронов Среднеквадратичная ошибка sin(x) cos(x) sin(x) cos(x) 0.01 62 62 0 0 0.03 62 62 4.7850*10 -33 6.5239*10 -33 0.05 62 62 9.5930*10 -33 7.6335*10 -33 0.5 18 19 9.5791*10 -7 6.3002*10 -7 250 63 63 0.0044 3.4797*10 -4 400 63 63 0.1973 0.0387 100 000 000 63 63 0.4987 0.5013 Листинг программы исследования влияния параметра SPREAD на структуру и качество аппроксимации приведён ниже. Файл LR3_p3_spread: %Создание радиально-базисных нейронных сетей для аппроксимации %функций %sin(x) и cos(x) %Задание интервала на котором моделируются целевые функции %sin(x) и cos(x) X = [-pi: 0.1: pi]; %Получение значения функций Ys = sin(X); Yc = cos(X); %Создание радиально-базисных нейронных сетей %SPREAD=1 nets = newrb(X, Ys, 0.000001, 0.01); 154 netc = newrb(X, Yc, 0.000001, 0.01); % Симуляция Yns=sim(nets,X); Ync=sim(netc,X); %Построение графика аппроксимации функции %Построение графика функции sin(x) figure('NumberTitle','off','Name','Функция Sin(x)','ToolBar','none','MenuBar','none'); plot(X,Ys,'-r','linewidth',6);hold on; plot(X,Yns,'-o','markersize',5); hold on; title('Sin(x)'); xlabel('X'); ylabel('Y'); Xin=[-pi:0.05:pi]; Yout=sim(nets,Xin); plot(Xin,Yout,'-g.','markersize',5); %Построение графика функции cos(x) figure('NumberTitle','off','Name','Функция Cos(x)','ToolBar','none','MenuBar','none'); plot(X,Yc,'-r','linewidth',6);hold on; plot(X,Ync,'-o','markersize',5); hold on; title('Cos(x)'); xlabel('X'); ylabel('Y'); Xin=[-pi:0.05:pi]; Yout=sim(netc,Xin); plot(Xin,Yout,'-g.','markersize',5); %Количество нейронов в скрытом слое созданной НС NumNeuronsSin=nets.layers{1}.size 155 NumNeuronsCos=netc.layers{1}.size %Вычисление значения средней квадратичной ошибки обучения НС Es=Ys-Yns; Es = mse(Es) Ec=Yc-Ync; Ec = mse(Ec) В результате исследований выявлено влияние изменения параметров нейронных сетей GOAL и SPREAD на качество аппроксимации функций. Зависимости количества нейронов и средней ошибки от значений параметров GOAL и SPREAD приведены в табл. 8.2 и табл.8.3. Значение параметра влияния SPREAD с одной стороны должно быть достаточно большим, чтобы покрыть весь диапазон значений входного вектора. С другой стороны, параметр SPREAD не должен быть слишком большим, тогда сеть перестанет реагировать на различные элементы входного множества. Увеличение параметра GOAL, т. е. уменьшение точности обучения сети приводит к уменьшению количества необходимых нейронов в скрытом слое радиально-базисной сети. 8.6. Моделирование вероятностных нейронных сетей (PNN) для задач классификации векторов Вероятностные нейронные сети (PNN) являются разновидностью радиальных базисных сетей и применяются для решения вероятностных задач и задач классификации. Такие сети имеют высокую скорость обучения, но работают относительно медленно. Листинг программы моделирования приведён ниже. %Моделирование с помощью вероятностной нейронной сети PNN 156 %Задание множества двухэлементных векторов P = [1 1 2 2 2 3 3 3 4 4 4 5 5 5 6;... 1 2 1 2 3 2 3 4 3 4 5 4 5 6 5]; %Задание множества классов, каждый вектор соответствует %одному из 5 классов Tclass = ... [1 1 1 2 2 2 3 3 3 4 4 4 5 5 5]; %Преобразование вектора в разряженную матрицу, определяющую %принадлежность векторов своим классам Tmat = ind2vec(Tclass) %Преобразование разреженной матрицы в полную матрицу Tf = full(Tmat) %Создание вероятностной нейронной сети PNN net = newpnn(P,Tf); %Задание тестовых векторов testP = [5 4 3 2 1;... 6 5 4 3 2]; %Моделирование полученной вероятностной НС %векторами, принадлежащими разным классам Y = sim(net,testP); %Преобразование матрицы в индексный вектор class = vec2ind(Y); class Результаты работы программы: Tmat = (1,1) 1 (1,2) 1 (1,3) 1 (2,4) 1 157 (2,5) 1 (2,6) 1 (3,7) 1 (3,8) 1 (3,9) 1 (4,10) 1 (4,11) 1 (4,12) 1 (5,13) 1 (5,14) 1 (5,15) 1 Tf = Columns 1 through 10 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 Columns 11 through 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 1 1 1 class = 5 4 3 2 1 Результаты работы программы показывают, что тестовые векторы правильно классифицировались вероятностной нейронной сетью (PNN). 158 8.7. Моделирование радиально-базисных нейронных сетей для аппроксимации функции tang(x) Результаты аппроксимации радиально-базисной сети для аппроксимации функции tang(x) представлены в табл. 8.4 и 8.5. Таблица 8.4. Радиально-базисная сеть с нулевой ошибкой для аппроксимации функции tang(x) Количество нейронов в скрытом слое Точные значения функции tang(x) Средняя ошибка 14.101 0.69891 -0.309 -0.7602 -5.7978 1 0.01 0,72046 -0,303 -0,8025 -5,7336 2.478 2 1,7141 0,72046 -0,303 -0,8025 -5,7336 2.478 Таблица 8.5. Изменение значений ошибки в зависимости от параметров радиально-базисной сети Допу стим ое знач ен ие функц ио на ла оши бк и Значение параметра влияния Точные значения функции tang(x) Ср ед няя оши бк а -0.995 -0.96334 -0.862 0.0407 0.819 0.01 1,71417 1,7141 0,72046 -0,3038 -0,8025 -5,733 2.478 4 0.001 1,7141 0,72046 -0,3038 -0,8025 -5,733 2.478 0.0001 10 1,7141 0,72046 -0,3038 -0,8025 -5,733 2.478 10 0.0000001 1,7141 0,72046 -0,3038 -0,8025 -5,733 2.478 159 Рис. 8.33. Результаты аппроксимации функции tang(x) При аппроксимации функции тангенса с помощью радиально- базисных функций значения получились намного точнее, чем в случае с многослойной сетью. Изменение параметров сети также не повлияло на результаты, и при любых значениях входных параметров сети ошибка получилась не более 2.478, что говорит о точности полученных результатов. Сравнительный анализ результатов моделирования многослойной и нейронной сети с радиально-базисными функциями представлен в табл. 8.6 и 8.7. Сравнительный анализ данных, приведённых в табл. 6.6 и 6.7, показывает, что результаты аппроксимирования функций с помощью РБФ- сетей на порядок выше, чем при использовании многослойных сетей. Это можно объяснить тем фактом, что в основе РБФ-сетей лежат радиально- базисные функции, которые являются радиально-симметричными функциями относительно начала координат. 160 Таблица 8.6. Результаты моделирования функции tang (x) Таблица 8.7. Результаты моделирования функции cos (x) Применение РБФ-сетей для аппроксимации функций обеспечивает решение задачи, алгоритм обучения РБФ сети сходится гораздо быстрее, чем алгоритм обратного распространения ошибки при обучении многослойной сети. Для обеспечения высокой точности РБФ-сеть требует большое число скрытых нейронов, что приводит к замедлению функционирования RBF сети по сравнению с многослойной нейронной сетью. tang (x) Многослой ная сеть 0,99810 0,98586 -0,29193 -0,96162 -0,99704 РБФ- сеть 1,71417 0,72046 -0,30384 -0,80251 -5,73363 Точные значения 14.10142 0.698919 -0.30934 -0.7602 -5.79788 cos (x) Многос лойная сеть -0.99952 -0.95787 -0.86069 0.04016 0.82201 РБФ- сеть -0,99580 -0,96334 -0,86200 0,040785 0,819648 Точные значен ия -0.99581 -0.96334 -0.862 0.040785 0.819648 161 Перечисленные примеры демонстрируют, что нейронные сети обеспечивают решение различных задач аппроксимации тригонометрических функций. 8.8. Пример моделирования задачи кластеризации с помощью нейронной сети Кохонена Нейронная сеть Кохонена применяется в задачах кластеризации. Обучение сети Кохонена происходит без учителя. Для создания сети необходимо использовать функцию newsom. Сокращение SOM (self- organization map) в названии функции соответствует самоорганизующейся карте. Созданная нейронная сеть Кохонена предназначена для разделения входных данных на несколько кластеров. Количество формируемых кластеров зависит от количества нейронов в сети. Для исследования карт будем использовать различные гексагональные сетки, изменяя количество нейронов при создании сети с помощью функции newsom. Исследование задачи кластеризации проведено на примере технической диагностики персонального компьютера. Предположим, что у нас имеется 20 компьютеров, в каждом из которых может возникнуть 3 вида отказа или компьютер может быть исправен. Эту задачу можно представить массивом из 20 векторов, каждый вектор содержит по 2 элемента. Каждый компьютер можно отнести к одному из четырёх кластеров: 1. нет отказа, компьютер исправен; 2. отказ в блоке питания; 3. отказ в материнской плате; 4. отказ в жестком диске (HDD). 162 Сеть Кохонена решает задачу технической диагностики, используя метод конкуренции. Чтобы смоделировать задачу технической диагностики для четырёх ситуаций необходимо использовать четыре нейрона. Листинг программы, моделирующей задачу технической диагностики персональных компьютеров с помощью нейронной сети Кохонена, приведён ниже. %Процедура очистки переменных среды clear; %Задание координат центров кластеров (-5; -5), (5; -5), %(-5;5), (5;5) плюс случайный разброс от 0 до 1. X1=-5+rand (1, 5); y1=-5+rand (1, 5); X2=5+rand (1, 5); y2=-5+rand (1, 5); X3=-5+rand (1, 5); y3=5+rand (1, 5); X4=5+rand(1,5); Y4=5+rand(1,5); %Объединение вектора в один массив X (1:5) =x1; X (6:10) =x2; X (11:15) =x3; X (16:20) =x4; Y (1:5) =y1; Y(6:10) =y2; Y(11:15) =y3; Y(16:20) =y4; 163 %Создание обучающего вектора Z (1, 1:20) =x; Z (2, 1:20) =y; %Создание нейронной сети Кохонена с гексагональной сеткой 2х2 net = newsom(z,[2 2]); %Построение топологии двумерной карты Кохонена figure('NumberTitle','off','Name','Карта размещения нейронов','ToolBar','none','MenuBar','none'); plotsom(net.layers{1}.positions); %Настройка параметров обучения и обучение сети net.trainparam.epochs = 1000; net = train(net, z); %Построение входных векторов с их отображениями, которые % формируются весами SOM figure('NumberTitle','off','Name','Векторы весов','ToolBar','none','MenuBar','none'); plot(x1,y1,'ob');hold on;grid on; plot(x2,y2,'or'); plot(x3,y3,'og'); plot(x4,y4,'ok'); plotsom(net.iw{1,1},net.layers{1}.distances);hold off; %Моделирование и проверка получившейся нейронной сети на %входном массиве Outnet = sim(net,z) OutIndex = vec2ind(Outnet) figure('NumberTitle','off','Name','Расположение векторов по кластерам','ToolBar','none','MenuBar','none'); bar(sum(Outnet')); Результаты работы программы представлены ниже. 164 Outnet = Columns 1 through 14 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 Columns 15 through 20 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 OutIndex = Columns 1 through 14 2 2 2 2 2 1 1 1 1 1 4 4 4 4 Columns 15 through 20 4 3 3 3 3 3 Проанализировав полученные результаты, можно сделать вывод о том, что нейронная сеть Кохонена обучилась и работает правильно, так как каждый элемент вектора был кластеризован правильно. Ниже на рис. 8.34- 8.42 приведены графики работы нейронной сети Кохонена. 165 Рис. 8.34. Топология двумерной карты Кохонена (гексагональная сетка 2х2) Рис. 8.35. Входные вектора с их отображениями, которые формируются весами SOM (гексагональная сетка 2х2) 166 Рис. 8.36. Распределение векторов по кластерам (гексагональная сетка 2х2) Рис. 8.37. Результаты обучения нейронной сети Кохонена (гексагональная сетка 2х2) 167 Рис. 8.38. Топология обученной нейронной сети (окно по ссылке SOM Topology, гексагональная сетка 2х2) Рис. 8.39. Соседние соединения НС (окно по ссылке SOM Neighbor Connections, гексагональная сетка 2х2) 168 Рис. 8.40. Соседние расстояния НС (окно по ссылке SOM Neighbor Distances, гексагональная сетка 2х2) Рис. 8.41. Входные плоскости (окно по ссылке SOM Input Planes, гексагональная сетка 2х2) 169 Рис. 8.42. Распределение векторов по плоскостям (окно по ссылке SOM Sample Hits, гексагональная сетка 2х2) Сравнительный анализ моделируемых сетей Кохонена в зависимости от различной размерности гексагональной сетки позволяет сделать следующие выводы: 1. Для решения задачи технической диагностики четырьмя выходными значениями, необходимо четыре нейрона. Топология расположения этих нейронов (1х4, 4х1, 2х2) ни как не влияет на решение задачи. 2. При использовании количества нейронов меньше четырёх, задача не может быть решена правильно, так как этого количества недостаточно для описания четырёх ситуаций. 3. При использовании количества нейронов больше четырёх задача также не решается правильно, так как появляется излишняя точность в кластеризации (4х4). При этом распределение количества 170 элементов вектора по нейронам варьируется от 0 до 5. Такое количество нейронов оказывается избыточным. 4. Необходимое и достаточное количество нейронов для решения задачи кластеризации в нейронной сети Кохонена четырёх состояний персональных компьютеров равно четырём. |