- •Задание по курсу «Нейронные сети» Цель задания – овладение практическими навыками построения нейронной сети.
- •Методические указания по выполнению работы Распознавание рукописного текста Определение архитектуры нейронной сети
- •Инициализация нейронной сети.
- •Обучение нейронной сети Алгоритм обратного распространения ошибки
- •Алгоритм наискорейшего спуска
- •Подбор коэффициента обучения
- •Алгоритм обучения нейронной сети
- •Обучение в отсутствие шума
- •Обучение в присутствии шума
- •Повторное обучение в отсутствии шума
- •Эффективность функционирования
- •Моделирование нейронной сети
Обучение в отсутствие шума
clear
clc
[alphabet, targets] = inout;
[R,Q] = size(alphabet);
[S2,Q] = size(targets);
S1 = 10;
net = newff(minmax(alphabet),[S1,S2],['logsig','logsig'],'traingdxx'); %traingdx
net
net.LW{2,1} = net.LW{2,1}*0.01;
net.b{2} = net.b{2}*0.01;
P = alphabet;
T = targets;
net.performFnc='sse';
net.trainParam.goal = 0.1;
net.trainParam.show = 40;
net.trainParam.epochs = 1500;
net.trainParam.mc = 0.95;
[net,tr] = train(net,P,T);
Рисунок 1 Сходимость процесса обучения
Обучение сети в отсутствии шума
TRAINGDX, Epoch 0/1500, SSE 255.871/0.1, Gradient 87.4476/1e-006
TRAINGDX, Epoch 40/1500, SSE 31.9768/0.1, Gradient 0.0286155/1e-006
TRAINGDX, Epoch 80/1500, SSE 31.9932/0.1, Gradient 0.00882557/1e-006
TRAINGDX, Epoch 120/1500, SSE 31.9942/0.1, Gradient 0.00763003/1e-006
TRAINGDX, Epoch 160/1500, SSE 31.9942/0.1, Gradient 0.0075437/1e-006
TRAINGDX, Epoch 200/1500, SSE 31.9942/0.1, Gradient 0.00764733/1e-006
TRAINGDX, Epoch 240/1500, SSE 31.9936/0.1, Gradient 0.0085967/1e-006
TRAINGDX, Epoch 280/1500, SSE 31.9833/0.1, Gradient 0.0259749/1e-006
TRAINGDX, Epoch 320/1500, SSE 16.8016/0.1, Gradient 2.72855/1e-006
TRAINGDX, Epoch 360/1500, SSE 13.3016/0.1, Gradient 1.10108/1e-006
TRAINGDX, Epoch 400/1500, SSE 6.44769/0.1, Gradient 0.628439/1e-006
TRAINGDX, Epoch 440/1500, SSE 2.11401/0.1, Gradient 0.254985/1e-006
TRAINGDX, Epoch 480/1500, SSE 1.87538/0.1, Gradient 0.17614/1e-006
TRAINGDX, Epoch 520/1500, SSE 1.3139/0.1, Gradient 0.0542365/1e-006
TRAINGDX, Epoch 560/1500, SSE 1.09298/0.1, Gradient 0.0132043/1e-006
TRAINGDX, Epoch 600/1500, SSE 0.560667/0.1, Gradient 0.630736/1e-006
TRAINGDX, Epoch 640/1500, SSE 0.143912/0.1, Gradient 0.0945784/1e-006
TRAINGDX, Epoch 655/1500, SSE 0.0988305/0.1, Gradient 0.0489187/1e-006
TRAINGDX, Performance goal met.
pause %press any key to train network with noise
Обучение в присутствии шума
Чтобы спроектировать нейронную сеть, не чувствительную к воздействию шума, обучим ее с применением двух идеальных и двух зашумленных копий векторов алфавита. Зашумленные векторы имеют шум со средним значением 0.1 и 0.2. Это обучает нейрон правильно распознавать зашумленные символы и в то же время хорошо распознавать идеальные векторы.
netn = net;
netn.trainParam.goal = 0.8;
netn.trainParam.epochs = 500;
T = [targets targets targets targets];
for pas = 1:10
P = [alphabet,alphabet,(alphabet+randn(R,Q)*0.1),(alphabet+randn(R,Q)*0.2)];
[netn,tr] = train(netn,P,T);
pause %press any key to train network with noise
end
pas=1
TRAINGDX, Epoch 0/500, SSE 1.31322/0.8, Gradient 5.13255/1e-006
TRAINGDX, Epoch 3/500, SSE 0.786427/0.8, Gradient 1.65158/1e-006
TRAINGDX, Performance goal met.
pas=2
TRAINGDX, Epoch 0/500, SSE 1.74855/0.8, Gradient 7.84458/1e-006
TRAINGDX, Epoch 31/500, SSE 0.787699/0.8, Gradient 1.10963/1e-006
TRAINGDX, Performance goal met.
pas=3
TRAINGDX, Epoch 0/500, SSE 1.63643/0.8, Gradient 4.17566/1e-006
TRAINGDX, Epoch 10/500, SSE 0.78531/0.8, Gradient 0.998797/1e-006
TRAINGDX, Performance goal met.
pas=4
TRAINGDX, Epoch 0/500, SSE 0.954826/0.8, Gradient 1.40901/1e-006
TRAINGDX, Epoch 10/500, SSE 0.790217/0.8, Gradient 0.888174/1e-006
TRAINGDX, Performance goal met.
pas=5
TRAINGDX, Epoch 0/500, SSE 1.47512/0.8, Gradient 7.4172/1e-006
TRAINGDX, Epoch 15/500, SSE 0.783199/0.8, Gradient 1.38714/1e-006
TRAINGDX, Performance goal met.
pas=6
TRAINGDX, Epoch 0/500, SSE 1.16497/0.8, Gradient 4.43303/1e-006
TRAINGDX, Epoch 5/500, SSE 0.791847/0.8, Gradient 1.02625/1e-006
TRAINGDX, Performance goal met.
pas=7
TRAINGDX, Epoch 0/500, SSE 1.57567/0.8, Gradient 2.66046/1e-006
TRAINGDX, Epoch 26/500, SSE 0.791558/0.8, Gradient 0.872456/1e-006
TRAINGDX, Performance goal met.
pas=8
TRAINGDX, Epoch 0/500, SSE 1.52145/0.8, Gradient 3.03757/1e-006
TRAINGDX, Epoch 28/500, SSE 0.793402/0.8, Gradient 0.876786/1e-006
TRAINGDX, Performance goal met.
pas=9
TRAINGDX, Epoch 0/500, SSE 2.115/0.8, Gradient 4.87005/1e-006
TRAINGDX, Epoch 8/500, SSE 0.791197/0.8, Gradient 0.938449/1e-006
TRAINGDX, Performance goal met.
pas=10
TRAINGDX, Epoch 0/500, SSE 0.894572/0.8, Gradient 1.3497/1e-006
TRAINGDX, Epoch 6/500, SSE 0.796984/0.8, Gradient 1.09763/1e-006
TRAINGDX, Performance goal met.
