NNTvZU_LR1_A03_Brigada_1_Kozlov_Muromtseva_Yarikova
.docxЛабораторная работа No1. Изучение основ применения искусственных нейронных сетей
Бригада 1
Козлов Муромцева Ярикова //А-03-19.
Цель работы
Изучение основ работы с искусственными нейронными сетями (ИНС) в среде Neural Toolbox ППП Matlab.
П1_5 – начальная настройка НС по inputX1 и targetX1.
// lr1_punk4_backPropagation // lr1_p5_10_11_GD
// lr1_punkt4_backPropagation_data11
П6 = п1_5 по inputX3 и targetX3 – проверка работы обученной сети (+Supply Targets (Учитывать целевые данные) - целевые данные (targetX3)).
П7 - plot постройте график ошибки работы сети (network1_errors), график выходных значений сети (network1_outputs) и целевых значений выходов (target). // Сделайте вывод о качестве работы полученной сети.
П8 – half – копия обучающей выборки половины данных – П1-7 по half
П8.1 – half по inputX1 и targetX1 //п1-7 inputX1_half и targetX1_half П8.2 – half по inputX3 и targetX3 //п1-7 inputX3_half и targetX3_half
//Сделайте вывод о влиянии изменения размера выборки на качество работы ИНС
П9 – Увеличить вдвое кол-во нейронов на скрытом слое – было 10 стало 20.
П1_7 полные данные inputX1 и targetX1, inputX3 и targetX3.
//Сделайте вывод о влиянии добавления нейронов на качество работы ИНС.
П10 – Доп слой ИНС – 3 слоя всего. В доп. слое больше, меньше и равное количество нейронов, чем в предыдущем слое, П1_7 полные данные inputX1 и targetX1, inputX3 и targetX.
П10.1 – в доп слое больше нейронов – 20 на 2 слое
// Lr1_punkt10_3layers_20
П10.2 – в доп слое меньше нейронов – 5 на 2 слое
// Lr1_punkt10_3layers_5
П10.3 – в доп слое равное нейронов – 10 на 2 слое
// Lr1_punkt10_3layers_10
// Сделайте вывод о влиянии добавления дополнительного слоя на качество работы ИНС.
П11 – с другими параметрами обучения П10 – с алг. Левенберга-Марквардта
– 3 слоя: второй слой 1) 20, 2) 5, 3) 10. (+Training function = TRAINLM.):
inputX1 и targetX1, inputX3 и targetX3.
//по П1-6, П7 – plot.
// Lr1_p11_10_11_ LM // Lr1_p11_10_13_LM
inputX1_half и targetX1_half, inputX3_half и targetX3_half - half – копия половины выборки //п8 = п1-7 по half, plot
// Lr1_p11_10_11_LM_half
// Lr1_p11_10_13_LM_half
Увеличить вдвое кол-во нейронов на скрытом слое – было 10 стало 20. - П1-7 полные данные inputX1 и targetX1, inputX3 и targetX3, plot //П9 = п1-7 на скрытом слое 10 на 20 нейронов. //Всего 2 слоя.
// Lr1_p11_20_11_LM
// Lr1_p11_20_13_LM
Доп слой ИНС – 3 слоя. Больше, меньше и равное (отн. 10 на 1 слое.) - inputX1 и targetX1, inputX3 и targetX3.
П11.1 – в доп слое больше нейронов – 20 на 2 слое
// Lr1_p11_10_20_11_LM_layer3
// Lr1_p11_10_20_13_LM_layer3
П11.2 – в доп слое меньше нейронов – 5 на 2 слое
// Lr1_p11_10_5_11_LM_layer3
// Lr1_p11_10_5_13_LM_layer3
П11.3 – в доп слое равное нейронов – 10 на 2 слое
// Lr1_p11_10_10_11_LM_layer3
// Lr1_p11_10_10_13_ LM _layer3
Принцип обозначения файлов:
– [№ЛР]
– [пункт в лр 11]
– [10 нейронов на вн слое (20 – п9)]
– [ (‘_’ – если без доп слоя – 2 слоя)/ (если доп слой – 3 слоя – ‘10, 20, 5’ – нейронов на доп слое)]
– [(11 - inputX1 и targetX1)/ (13 - inputX3 и targetX3)]
– [LM - алг. Левенберга-Марквардта]
– [(‘_’ – без доп слоя – 2 слоя)/(‘layer3’ – доп слой, 3 слоя)]
– [(‘_’ – полная выборка)/(‘half’ – половина данных)
Lr1_p11_10_10_11_LM_layer3
Lr1_p11_10_10_13_ LM _layer3
Lr1_p11_10_11_ LM
Lr1_p11_10_11_LM_half
Lr1_p11_10_13_LM
Lr1_p11_10_13_LM_half
Lr1_p11_10_20_11_LM_layer3
Lr1_p11_10_20_13_LM_layer3
Lr1_p11_10_5_11_LM_layer3
Lr1_p11_10_5_13_LM_layer3
Для пунктов 13-15:
Код для получения номеров кластеров, это не нужно, но я вставлю пока что
clusters = zeros(1, length(punkt15_competitive_input11_outputs));
k=1;
for i = 0:(length(punkt15_competitive_input11_outputs)-1)
for j = 1:5
v = i*5+j;
if j==1 && punkt15_competitive_input11_outputs(v) == 1
clusters(k) = 1;
k = k+1;
elseif j==2 && punkt15_competitive_input11_outputs(v) == 1
clusters(k) = 2;
k = k+1;
elseif j==3 && punkt15_competitive_input11_outputs(v) == 1
clusters(k) = 3;
k = k+1;
elseif j==4 && punkt15_competitive_input11_outputs(v) == 1
clusters(k) = 4;
k = k+1;
elseif j==5 && punkt15_competitive_input11_outputs(v) == 1
clusters(k) = 5;
k = k+1;
end
end
end
П1_5
input11 и target11, GD, 2 слоя, 10 нейронов на 1 слое. Эпох = 1000, lr = 0.9. // lr1_p5_10_11_GD
Причина остановки – завершение эпох.
Можем распознать скопления точек в группы. Переобучение не наблюдаем. Обучение останавливается по окончании 1000 эпох. Градиент 0.000304.
П6
input13 и target13, GD, 2 слоя, 10 нейронов на 1 слое. Эпох = 1000, lr = 0.9. // lr1_p5_10_11_GD – в той же НС во вкладке Simulate окна Network.
Окно Train
Окно Simulate
Названия переменных, в которые будут записываться отклики (Outputs) и ошибки (Errors) ИНС в процессе обучения.
// lr1_p5_10_11_GD_outputs // lr1_p5_10_11_GD_errors
П7
Plot: - график ошибки работы сети (network1_errors), - график выходных значений сети (network1_outputs), - целевых значений выходов (target).
input11 и target11, input13 и target13, target13 – гр target.
>> plot(lr1_p5_10_11_GD_errors)
>> plot(lr1_p5_10_11_GD_outputs)
>> plot(target13)
П8
Создайте копию обучающей выборки, содержащую только половину данных из исходной выборки. Повторите пп.1 – 7.
>> input11_half = input11(:, 1:500);
>> input13_half = input13(:, 1:500);
>> target11_half = target11(:, 1:500);
>> target13_half = target13(:, 1:500);
1-5)
*Сбросили нач коэфф
6/)
lr1_p5_10_11_GD_half_outputs
lr1_p5_10_11_GD_half_errors
7)
>> plot(lr1_p5_10_11_GD_half_errors)
>> plot(lr1_p5_10_11_GD_half_outputs) >> plot(target13_half)
//Некрасиво - с ЛР
Errors data 11
Outputs 11
Target data 11
Пункт 6+, дата 1.3
Errors data 1.3
Outputs data 1.3
Target 13
Половина данных пункт 8
>> input13_half = input13(:, 1:500);
>> target13_half = target13(:, 1:500);
>> nntools
8. Создайте копию обучающей выборки, содержащую только половину данных из исходной выборки. Повторите пп.1 – 7. Сделайте вывод о влиянии изменения размера выборки на качество работы ИНС.
Target13-half
Error
Outputs
Target half 13
9. Увеличьте вдвое количество нейронов в скрытом слое. Повторите пп.1 – 7. Сделайте вывод о влиянии добавления нейронов на качество работы ИНС
Errors
Target
Data 13
Errors
Outputs
>> nntool
>> plot(lr1_punkt8_halfData_errors)
>> plot(lr1_punkt8_halfData_outputs)
>> plot(target13_half)
>> nntool
>> plot(lr1_punkt9_data11_errors)
>> plot(lr1_punkt9_data11_outputs)
>> plot(lr1_punkt9_data13_errors)
>> plot(lr1_punkt9_data13_outputs)
10. Добавьте дополнительный слой ИНС. Рассмотрите случаи, когда в дополнительном слое больше, меньше и равное количество нейронов, чем в предыдущем слое и повторите пп.1 – 7. Сделайте вывод о влиянии добавления дополнительного слоя на качество работы ИНС
Lr1_punkt10_3layers_5
Второй слой 5 нейронов
>> plot(Lr1_punkt10_3layers_5_outputs)Outputs
>> plot(Lr1_punkt10_3layers_5_errors)
Train 13
Train 13
>> plot(Lr1_punkt10_3layers_5_outputs) //13
>> plot(Lr1_punkt10_3layers_5_errors) //13
Lr1_punkt10_3layers_10
Train11
>> plot(Lr1_punkt10_3layers_10_outputs)
>> plot(Lr1_punkt10_3layers_10_errors)
10_train13
> plot(Lr1_punkt10_3layers_10_outputs) //13
>> plot(Lr1_punkt10_3layers_10_errors) //13
\
Lr1_punkt10_3layers_20
>> plot(Lr1_punkt10_3layers_20_outputs)
>> plot(Lr1_punkt10_3layers_20_errors)
Train 13 20 p10
>> plot(Lr1_punkt10_3layers_20_outputs) //13
>> plot(Lr1_punkt10_3layers_20_errors)//13
11. Повторите пп.1 - 10 с другими параметрами обучения – с помощью алгоритма Левенберга-Марквардта. Для этого при создании ИНС в соответствующем окне в качестве параметра Training function укажите TRAINLM
1. 10 layer 1, LM, X11
LR1_punkt11_LM_10_11
New
Lr1_p11_10_11_ML
>> plot(Lr1_p11_10_11_ML_outputs)
>> plot(Lr1_p11_10_11_ML_errors)
Lr1_p11_10_13_ML
Lr1_p11_10_13_ML
>> plot(Lr1_p11_10_13_ML_outputs)
>> plot(Lr1_p11_10_13_ML_errors)
Lr1_p11_10_11_ML_half
>> plot(Lr1_p11_10_11_ML_half_outputs)
>> plot(Lr1_p11_10_11_ML_half_errors)
Lr1_p11_10_13_ML_half
>> plot(Lr1_p11_10_13_ML_half_outputs)//13
>> plot(Lr1_p11_10_13_ML_half_errors) //13
ML 1l – 10 2 l – 5 11
Lr1_p11_10_5_13_ML
Bcnjhbz matlab
%-- 26.09.22 11:32 --%
nntool
input11_half = input11(:, 1:500)
length(target11))
length(target11)
target11_half = target11(:, 1:500)
length(target11_half)
input13_half = input13(:, 1:500);
target13_half = target13(:, 1:500);
nntools
nntool
plot(lr1_punkt8_halfData_errors)
plot(lr1_punkt8_halfData_outputs)
plot(target13_half)
nntool
plot(lr1_punkt9_data11_errors)
plot(lr1_punkt9_data11_outputs)
plot(lr1_punkt9_data13_errors)
plot(lr1_punkt9_data13_outputs)
nntool
plot(lr1_punkt10_data11_outputs)
plot(Lr1_punkt10_3layers_5_outputs)
plot(Lr1_punkt10_3layers_5_errors)
plot(Lr1_punkt10_3layers_5_outputs)
plot(Lr1_punkt10_3layers_5_errors)
plot(Lr1_punkt10_3layers_10_outputs)
plot(Lr1_punkt10_3layers_10_errors)
plot(Lr1_punkt10_3layers_10_outputs)
plot(Lr1_punkt10_3layers_10_errors)
plot(Lr1_punkt10_3layers_20_outputs)
plot(Lr1_punkt10_3layers_20_errors)
plot(Lr1_punkt10_3layers_20_outputs)
plot(Lr1_punkt10_3layers_20_errors)
nntool
plot(Lr1_punkt10_3layers_20_errors)
nntool
plot(Lr1_p11_10_11_ML_outputs)
plot(Lr1_p11_10_11_ML_errors)
nntool
plot(Lr1_p11_10_13_ML_outputs)
plot(Lr1_p11_10_13_ML_errors)
plot(Lr1_p11_10_11_ML_half_outputs)
plot(Lr1_p11_10_11_ML_half_errors)
plot(Lr1_p11_10_11_ML_half_outputs)
plot(Lr1_p11_10_13_ML_half_outputs)
plot(Lr1_p11_10_13_ML_half_errors)
12. По результатам моделирования сравните полученные результаты: длительность обучения, количество эпох обучения, полученные значения ошибок обучения и работы ИНС и занесите результаты с выводами в отчёт.
// тут есть выводы, честно-честно
13. Проведите кластеризацию данных inputX1 одним из классических методов (например, с помощью функции kmeans). Количество предполагаемых кластеров задайте равным 5.
>> c1 = kmeans(input11', 5)
>> c11 = find(c1 == 1);
>> c12 = find(c1 == 2);
>> c13 = find(c1 == 3);
>> c14 = find(c1 == 4);
>> c15 = find(c1 == 5);
Результаты полученные с помощью классического метода
>> disp(string(sum(c1==1)) + " " + string(sum(c1==2)) + " " + string(sum(c1==3)) + " " + string(sum(c1==4)) + " " + string(sum(c1==5)));
218 187 190 205 200
14. Постройте график, иллюстрирующий разделение данных на кластеры. Используйте функции plot3 и find.
>> scatter3(transpose(input11(1,:)), transpose(input11(2,:)), transpose(input11(3,:)), 50, c1)
15. Создайте ИНС вида Competitive. Проведите её обучение с целью выделения 5 кластеров. Проанализируйте полученные результаты. Сравните полученные результаты с результатами классического метода.