Учебник ИИ. _Учебник ИНС_2014_Э4743. Учебник рекомендовано Ученым советом Вятгу в качестве учебного пособия Киров 2014
Скачать 3.7 Mb.
|
8.9. Пример моделирования задачи кластеризации с помощью LVQ нейронной сети Исследование работы LVQ нейронной сети проводилось на той же задаче технической диагностики. Результирующая нейронная LVQ сеть была обучена и продемонстрировала правильные результаты. Для решения задачи потребовалось также четыре нейрона. Листинг программы, моделирующей задачу технической диагностики персональных компьютеров с помощью LVQ нейронной сети, приведён ниже. %Процедура очистки переменных среды clear; %Задание координат центров кластеров (-5;-5),(5;-5), %(-5;5),(5;5) плюс случайный разброс от 0 до 1. x1=-5+rand(1,5); x2=5+rand(1,5); y2=-5+rand(1,5); y1=-5+rand(1,5); x3=-5+rand(1,5); y3=5+rand(1,5); x4=5+rand(1,5); y4=5+rand(1,5); 171 %Задаём цели T1(1:5)=1; T2(1:5)=2; T3(1:5)=3; T4(1:5)=4; %Объединение вектора в один массив 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; Tc(1:5)=T1; Tc(6:10)=T2; Tc(11:15)=T3; Tc(16:20)=T4; %Создание обучающего вектора и целевого вектора z(1,1:20)=x; z(2,1:20)=y; %Преобразование целевых классов в целевые векторы T= ind2vec(Tc); %Создание нейронной сети LVQ сеть с 4 нейронами и процентной долей %каждого кластера по 25% net = newlvq(z,4,[.25 .25 .25 .25]); %Настройка параметров обучения и обучение сети net.trainparam.goal=0; net.trainparam.epochs = 1000; 172 net = train(net,z,T); %Построение входных векторов на координатной плоскости 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');hold off; %Моделирование и проверка получившейся нейронной сети на входном %массиве Outnet = sim(net,z) OutIndex = vec2ind(Outnet) figure('NumberTitle','off','Name','Распределение векторов по кластерам','ToolBar','none','MenuBar','none'); bar(sum(Outnet')); Результаты работы программы: Outnet = Columns 1 through 14 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 Columns 15 through 20 0 0 0 0 0 0 0 0 0 0 0 0 173 1 0 0 0 0 0 0 1 1 1 1 1 OutIndex = Columns 1 through 14 1 1 1 1 1 2 2 2 2 2 3 3 3 3 Columns 15 through 20 3 4 4 4 4 4 Рис. 8.43. Расположение входных векторов на координатной плоскости (заданные значения вероятностей распределения 25%,25%,25%,25%) Рис. 8.44. Распределение векторов по кластерам (заданные значения вероятностей распределения 25%,25%,25%,25%) 174 Рис. 8.45. Окно процесса обучения нейронной сети LVQ Рис. 8.46. Вероятности распределения (окно по ссылке Confusion)(заданные значения вероятностей распределения 25%,25%,25%,25%) 175 При изменении значений вероятности на 40%,40%,10%,10% нейронная сеть классифицирует входные векторы неправильно (см. графики на рис.8.47-8.54). Рис. 8.47. Расположение входных векторов на координатной плоскости (заданные значения вероятностей распределения 40%, 40%,10%,10%) Рис. 8.48. Окно процесса обучения нейронной сети LVQ(заданные значения вероятностей распределения 40%,40%,10%,10%) 176 Рис. 8.49. Вероятности распределения (окно по ссылке Confusion) (заданные значения вероятностей распределения 40%,40%,10%,10%) Рис. 8.50. Характеристика управления передатчиком НС (окно Reciver Operating Characteristic) (заданные значения вероятностей распределения 40%,40%,10%,10%) Нейронная сеть Кохонена содержит один слой нейронов и является самоорганизующейся сетью, обучается без учителя. Количество входов каждого нейрона равно размерности входного вектора. Количество 177 нейронов непосредственно определяет, сколько различных кластеров сеть может распознать. В результате исследования влияния размерности гексагональной сетки можно сделать вывод, что необходимое и достаточное количество нейронов для решения задачи с четырьмя классами должно быть равно четырём. LVQ нейронная сеть является развитием сети Кохонена и в отличие от самоорганизующихся сетей выполняет не только кластеризацию, но и классификацию. Первый слой сети обучается без учителя, а второй слой обучается с учителем, обеспечивая более определённые результаты, чем в сети Кохонена. 178 9. МОДЕЛИРОВАНИЕ РЕШЕНИЯ СИСТЕМЫ ДИФФЕРЕНЦИАЛЬНЫХ УРАВНЕНИЙ С ИСПОЛЬЗОВАНИЕМ НЕЙРОСЕТЕВЫХ ТЕХНОЛОГИЙ 9.1. Объект моделирования - система дифференциальных уравнений В [33,35] рассмотрено применение нейронных сетей для решения системы дифференциальных уравнений следующих объектов моделирования: система линейных дифференциальных уравнений; система нелинейных дифференциальных уравнений; нелинейное дифференциальное уравнение с разрывной функцией в правой части уравнений. Нейронные сети можно использовать для аппроксимации как непрерывных, так и разрывных решений дифференциальных уравнений [42,43]. Трудности возникают в случае бесконечного разрыва, так как на выходе нейронной сети может появиться только конечное число, то в точке бесконечного разрыва искомого решения возникают конечные значения, получаемые нейронной сетью. Система нелинейных дифференциальных уравнений не имеет аналитического решения. Поэтому обучающая выборка строилась с помощью численного метода Рунге-Кутта с автоматическим выбором шага. Для проверки результатов моделирования нелинейного дифференциального уравнения с разрывной правой частью было получено аналитическое решение. 179 В качестве оценки функционирования нейронной сети выбрана сумма квадратичных отклонений выходов сети от эталонов. С помощью пакета программ MATLAB рассмотрены и исследованы многослойные нейронные сети обратного распространения и нейронные RBF-сети. В качестве обучающего алгоритма использованы алгоритм обучения Левенберга-Марквардта и байесовский метод [43]. Для аппроксимации нелинейного отображения с помощью многослойного персептрона может потребоваться меньшее число параметров, чем для сети RBF при одинаковой точности вычислений. 9.2. Объект моделирования - система линейных дифференциальных уравнений В качестве примера рассматривается система линейных дифференциальных уравнений 1 ) 0 ( , 1 ) 0 ( , 0 ) 0 ( , 51 0 , , 5 ) ( 3 2 1 2 1 3 3 1 2 3 2 1 y y y y y t y y y y t y y y Данная система была решена аналитически (рис. 9.1) и на его основе сформирована обучающая выборка из 100 примеров. Значения независимой переменной t выбирались равномерно в пределах от 0 до 10 с шагом 0,1. 180 Сплошная линия –; штрихпунктирная линия –; Пунктирная линия – ) ( 3 t y Рис. 9.1. График решения системы линейных дифференциальных уравнений 9.3. Выбор алгоритма обучения и параметров трехслойной сети обратного распространения С помощью пакета программ MATLAB создана и обучена трехслойная сеть обратного распространения, включающая один нейрон во входном слое, три нейрона в выходном слое. Число нейронов в скрытом слое варьировалось с целью подбора наиболее оптимальной архитектуры. В качестве обучающего алгоритма выбран алгоритм Левенберга- Марквардта и байесовский метод [38,44]. Другие алгоритмы обучения на данной выборке продемонстрировали худшие результаты по критерию качества функционирования сети. В качестве оценки функционирования сети выбрана сумма квадратичных отклонений выходов сети от их эталонных значений. Обучение считается законченным при условии, что сумма квадратичных отклонений выходов сети от их эталонных значений не превышает 0,001. Максимальное количество циклов обучения - 15000. В среде MATLAB 181 описанные действия представлены кодом для нейронной сети с 18 нейронами в скрытом слое и обучающим алгоритмом Левенберга- Марквардта, листинг которого приведён ниже. net=newff(minmax(t),[1,18,3],{'logsig' 'logsig' 'purelin'},'trainlm'); net.performFcn='sse'; net.trainParam.goal=0.001; net.trainParam.epochs=15000; [net,tr]=train(net,t,y); В результате варьирования функций активации для трехслойной сети с 18 нейронами в скрытом слое было выявлено, что данная нейронная сеть обучается лишь в том случае, если в скрытом слое выбрана сигмоидальная логистическая функция, а в выходном слое – линейная функция. При этом для входного слоя лучше выбрать нелинейную сигмоидальную логистическую функцию активации. 9.4. Варьирование параметра SPREAD для нейронной радиально- базисной сети На той же обучающей выборке была обучена нейронная радиальная базисная сеть (RBF-сеть) с точностью 0,0000001. Проведено варьирование значения параметра SPREAD. Тестирование проводилось на выборке в 100000 примеров (табл. 9.1). Анализ данных табл. 9.1 показывает, что время обучения RBF-сети и время работы, принимают минимальные значения при изменении параметра SPREAD из интервала от одного до двух. В качестве оптимального значения параметра SPREAD выбрана единица, которая обеспечивает минимальное время работы. 182 По критерию минимального времени обучения, средней ошибки лучше выбрать параметр SPREAD равный двум. Таблица 9.1. Варьирование параметра SPREAD для нейронной RBF-сети SPREAD Время обучения, с Время работы, с Максимальная ошибка Средняя ошибка Чи сло нейронов 0,2 25,34 2,30 1,407979401 0,00559038 88 0,4 15,59 1,53 0,007366237 0,00024368 48 0,6 12,37 1,73 0,002655288 0,00016707 36 0,8 8,52 1,75 0,000632534 0,00014276 28 1 8,42 1,14 0,001402572 0,00018918 23 1,5 8,01 1,11 0,001402572 0,00018918 20 2 8,25 1,16 0,000721534 0,00010629 22 2,5 14,63 1,48 0,000858799 0,00014250 43 9.5. Выбор оптимальной архитектуры нейронной сети Время работы и ошибки рассчитывались для нейронных сетей разной архитектуры на 1000000 точек с параметрами, выбранными выше в качестве оптимальных. Ошибки рассчитывались в сравнении с аналитическим решением, результаты которых приведены в табл. 9.2. Время работы трехслойной нейронной сети возрастает по мере роста числа нейронов скрытого слоя. Сети, обученные по алгоритму Байеса, работают медленнее, чем сети, обученные по алгоритму Левенберга- Марквардта. Это связано с тем, что веса синапсов при обучении задаются случайным образом. 183 Таблица 9.2. Результаты моделирования нейронной сети Архитектура сети Время обучения, с Время работы, с Максималь ная ошибка Средняя ошибка RBF 7,89 4,87 0,000911859 0,000214449 1-9-3 trainlm 731,66 2,09 0,538380957 0,090512478 trainbr 800,45 3,22 0,221002567 0,013998969 1-15- 3 trainlm 480,65 2,83 0,010466897 0,001339655 trainbr 995,24 3,32 0,014147684 0,002023587 1-18- 3 trainlm 190,77 3,33 0,011569533 0,001390274 trainbr 140,45 4,68 0,012510434 0,001337011 1-21- 3 trainlm 237,81 3,45 0,020310202 0,001154658 trainbr 242,36 5,32 0,015167542 0,001428948 1-25- 3 trainlm 139,11 4,43 0,019714370 0,001406030 trainbr 103,28 6,80 0,021075418 0,001230780 1-30- 3 trainlm 118,49 5,40 0,023770362 0,000988233 trainbr 282,82 6,62 0,012567312 0,001163680 Наименьшую среднюю ошибку на 1000000 точек из трехслойных сетей дает сеть с 30 нейронами в скрытом слое для обоих алгоритмов обучения. Однако данная сеть имеет самое большое время работы и сравнительно большую максимальную погрешность. Наименьшую максимальную ошибку дает сеть с 15 нейронами в скрытом слое, но она 184 имеет большое время обучения. В среднем наиболее оптимальной является сеть с 18 нейронами в скрытом слое. К данной сети можно применять оба алгоритма обучения. В дальнейшем будет рассматриваться именно эта сеть. Достаточно хороший результат решения системы дифференциальных уравнений получен с помощью RBF-сети. Однако, время работы в режиме тестирования RBF-сети увеличивается по сравнению с трехслойной сетью, а время обучения RBF-сети во много раз меньше. Таким образом, для решения заданной системы дифференциальных уравнений с помощью нейросетевых технологий рекомендуется использовать трехслойной сети с 18 нейронами в скрытом слое и радиальные базисные нейронные сети. 9.6. Варьирование количества примеров обучающей выборки Для указанных сетей варьировалось количество примеров в обучающей выборке. Значения независимой переменной t выбирались равномерно в пределах от 0 до 10 с шагом 0,1. В результате варьирования количества примеров обучающей выборки для сети с 18 нейронами в скрытом слое и алгоритмом обучения Левенберга-Марквардта при работе сети на 1000000 точек выявлено, что с ростом количества примеров в обучающей выборке уменьшаются максимальная и средняя ошибки, но при этом растет время обучения. Наименьшее время обучения наблюдается при 100 примерах в обучающей выборке. В аналогичном эксперименте с использованием алгоритма обучения Байеса обнаружено, что с ростом количества примеров в обучающей выборке уменьшаются максимальная и средняя ошибки, но при этом также 185 растет время обучения. Сеть не удалось обучить на выборке из 500 примеров. Наименьшее время обучение наблюдается при 100 примерах в обучающей выборке. Время работы при разном количестве примеров в выборке также почти одинаковое. В результате варьирования выборки RBF-сети при работе сети на 1000000 точек можно заметить, для данного типа сети время обучения намного меньше, чем для трехслойных нейронных сетей. При этом минимальная средняя ошибка достигается при обучающей выборке из 100 примеров. Варьирование количества примеров в тестовой выборке для трехслойной сети с алгоритмом обучения Левенберга-Марквардта показало, что время работы растёт практически линейно с ростом количества примеров в тестовой выборке. Максимальная ошибка незначительно возрастает, средняя ошибка незначительно убывает. В результате варьирования количества примеров в тестовой выборке для сети RBF выявлено, что время работы растет практически линейно с ростом количества примеров в тестовой выборке. Максимальная ошибка и средняя ошибки практически не меняются. Время работы RBF-сети больше, чем трехслойной сети, однако, максимальная и средняя ошибки меньше. На разном количестве точек проводилось вычисление значений решения системы дифференциальных уравнений численным методом Рунге-Кутта с автоматическим выбором шага. Для рассмотренной системы дифференциальных уравнений ошибки, получаемые при использовании нейронных сетей, гораздо меньше, чем ошибки, получаемые численным методом. При увеличении количества точек время работы численного метода возрастает экспоненциально и намного превышает время моделирования с помощью нейронных сетей. 186 Например, для 4000000 точек численный метод находит решение в 1478,5 раз медленнее, чем трехслойная нейронная сеть и в 834,2 раза медленнее, чем нейронная сеть RBF. Время работы трёх рассмотренных выше методов нахождения решения системы дифференциальных уравнений представлены в табл. 9.3. При анализе решения системы линейных дифференциальных уравнений аналитически, с помощью трехслойных нейронных сетей обратного распространения, с помощью радиально-базисных нейронных сетей и с помощью численного метода Рунге-Кутта с автоматическим выбором шага было выявлены следующие результаты: – время работы численного метода растёт экспоненциально по мере роста примеров тестовой выборки; – время работы нейронных сетей характеризуется линейной зависимостью; – точность решения рассмотренной системы дифференциальных уравнений с помощью нейросетевых технологий выше по сравнению с численными методами. Таблица 9.3. Варьирование количества примеров в тестовой выборке для различных методов решения Количество примеров Время работы трехслойной сети, с Время работы RBF сети, с Время работы численного метода, с 1000 0,07 0,12 0,04 100000 0,29 0,50 5,54 300000 0,74 1,60 61,83 500000 1,17 2,50 199,84 700000 1,60 3,61 415,92 900000 2,07 4,66 714,70 2000000 4,55 8,31 2820,13 4000000 10,63 18,84 15716,09 187 Таким образом, по затратам времени и по точности для решения рассмотренной системы дифференциальных уравнений эффективнее использовать нейронные сети, предварительно обучив их на достаточном количестве примеров (не менее 100). При этом значение независимой переменной t выбрано из интервала от 0 до 10. В качестве оптимальных архитектур нейронных сетей выбраны трехслойная сеть обратного распространения с 18 нейронами в скрытом слое и алгоритмом обучения Левенберга-Марквардта и сеть RBF. Сеть RBF обучается быстрее и приводит к меньшим ошибкам, чем трехслойная сеть обратного распространения. Однако время ее тестирования больше, чем время тестирования трехслойного персептрона. Если имеются ограничения на время обучения нейронной сети, то целесообразно использовать RBF-сеть, если на время тестирования, то многослойную НС. 9.7. Моделирование системы нелинейных дифференциальных уравнений Рассматривается система нелинейных дифференциальных уравнений 1 ) 0 ( , 1 ) 0 ( , 0 ) 0 ( , ) 51 0 sin( , ), sin( ) cos( 3 2 1 2 1 3 3 1 2 3 2 1 y y y y y t y y y y y y y Данная система не имеет аналитического решения. Поэтому обучающая выборка строится с помощью численного метода Рунге-Кутта с автоматическим выбором шага, и результаты сравниваются с результатами работы этого метода. Как и в предыдущем примере, размер обучающей 188 выборки 100 примеров. Значения независимой переменной t взяты из интервала от 0 до 10. Для анализа была создана трехслойная сеть обратного распространения, включающая один нейрон во входном слое с сигмоидальной логистической функцией активации и три нейрона в выходном слое с линейной функцией активации. Число нейронов в скрытом слое с сигмоидальной логистической функцией активации варьировалось с целью подбора наиболее оптимальной архитектуры сети. В качестве обучающего алгоритма был выбран алгоритм Левенберга-Марквардта. В качестве оценки функционирования выбрана сумма квадратичных отклонений выходов сети от эталонов. При этом значение отклонения, при котором обучение считается законченным - 0,001. Максимальное количество циклов обучения - 15000. На этой же выборке была обучена сеть с радиальными базисными функциями с точностью 0,0000001 на обучающей выборке. Время работы и ошибки рассчитывались при работе сетей разной архитектуры на 100000 точек. Ошибки рассчитывались в сравнении с решением, полученным численным методом. Таблица 9.4. Сравнительные характеристики для нейронных сетей Архитектур а сети Время обучения, с Время работы, с Максимальн ая ошибка Средняя ошибка RBE 15,38 2,02 0,021354475 0,002782473 1-10-3 751,48 0,83 0,134491640 0,011535858 1-15-3 692,64 1,04 0,022203863 0,003520186 1-18-3 61,87 0,79 0,025334404 0,002900122 1-21-3 22,07 0,83 0,024508904 0,003088053 1-25-3 11,22 0,95 0,021440149 0,003389760 1-30-3 15,47 0,95 0,025778263 0,003609650 1-40-3 31,12 1,05 0,050063986 0,007294015 189 Результаты экспериментов, приведенных в табл. 9.4 показывают, что время работы трехслойной сети почти не меняется по мере роста числа нейронов в скрытом слое. При этом время обучения нейронной сети уменьшается и достигает наименьшего значение при 25 нейронах в скрытом слое. При дальнейшем увеличении числа нейронов время обучения возрастает. По совокупности показателей в среднем наиболее оптимальной является сеть с 25 нейронами в скрытом слое. В данном случае RBF-сеть имеет время обучения немного большее, чем время обучения трехслойной сети с 25 нейронами в скрытом слое. Время работы сети RBF при этом в два раза выше, а ошибки незначительно меньше. Таким образом, в данном примере в качестве оптимальной архитектуры сети можно однозначно выбрать трехслойный персептрон с 25 нейронами в скрытом слое. Следует отметить, что для численного метода Рунге-Кутта с автоматическим выбором шага время работы на 100000 точек составляет 5,62 с, что почти в шесть раз больше времени работы нейронных сетей. Таким образом, использовать нейронные сети эффективно. Можно использовать численный метод для построения обучающей выборки и, обучив на этой выборке нейронную сеть, получать результаты за более короткое время. |