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

Процедура обучения

Для обучения линейной нейронной сети может быть применена типовая процедура обучения с помощью М-функции train. Эта функция для каждого вектора входа выполняет настройку весов и смещений, используя М-функциюlearnp. В результате сеть будет настраиваться по сумме всех коррекций. Будем называть каждый пересчет для набора входных векторовэпохой. Это и отличает процедуру обучения от процедуры адаптацииadapt, когда настройка параметров реализуется при представлении каждого отдельного вектора входа. Затем процедураtrainмоделирует настроенную сеть для имеющегося набора векторов, сравнивает результаты с набором целевых векторов и вычисляет среднеквадратичную ошибку. Как только значение ошибки становится меньше заданного или исчерпано предельное число эпох, обучение прекращается.

Обратимся к тому же примеру, который использовался при рассмотрении процедуры адаптации, и выполним процедуру обучения.

P = [1 –1.2];% Вектор входов

T= [0.5, 1]; % Вектор целей

% Максимальное значение параметра обучения

maxlr = 0.40*maxlinlr(P,'bias');

% Создание линейной сети

net = newlin([–2,2],1,[0],maxlr);

% Расчет функции критерия качества

w_range=–1:0.2:1; b_range=–1:0.2:1; % Диапазоны значений веса и смещения

ES = errsurf(P,T, w_range, b_range, 'purelin');

% Построение поверхности функции критерия качества

surfc(w_range, b_range, ES) % Рис.5.5,а

На рис. 5.5, апостроена поверхность функции критерия качества в пространстве параметров сети. В процессе обучения траектория обучения будет перемещаться из начальной точки в точку минимума критерия качества. Выполним расчет и построим траекторию обучения линейной сети для заданных начальных значений веса и смещения.

% Расчет траектории обучении

x = zeros(1,50); y = zeros(1,50);

net.IW{1}=1; net.b{1}= –1; % Начальные значения весов и смещения

x(1) = net.IW{1}; y(1) = net.b{1};

net.trainParam.goal = 0.001; % Пороговое значение критерия качества

net.trainParam.epochs = 1; % Число эпох

% Цикл вычисления весов и смещения для одной эпохи

for i = 2:50,

[net, tr] = train(net,P,T);

x(i) = net.IW{1};

y(i) = net.b{1};

end

% Построение линий уровня и траектории обучении

clf, contour(w_range, b_range, ES, 20), hold on

plot(x, y,'–*'), hold off, % Рис.5.5,б

На рис. 5.5,бсимволом * отмечены значения веса и смещения на каждом шаге обучения; видно, что примерно за 10 шагов при заданной точности (пороговое значение критерия качества) 0.001 получимw= –0.22893,b= 0.70519. Это согласуется с решением, полученным с использованием процедуры адаптации.

а

б

Рис. 5.5

Если не строить траектории процесса обучения, то можно выполнить обучение, обратившись к М-функции train только 1 раз:

net.IW{1}=1; net.b{1}= –1; % Начальные значения веса и смещения

net.trainParam.epochs = 50; % Число эпох обучения

net.trainParam.goal = 0.001; % Пороговое значение критерия качества

[net, tr] = train(net,P,T);

TRAINWB, Epoch 0/50, MSE 5.245/0.001.

TRAINWB, Epoch 11/50, MSE 0.000483544/0.001.

TRAINWB, Performance goal met.

net.IW, net.b

ans = [–0.22893]

ans = [0.70519]

На рис. 5.6 показано, как изменяется критерий качества на каждом цикле обучения.

Рис. 5.6

Если повысить точность обучения до значения 0.00001, то получим следующие результаты:

net.trainParam.goal = 0.00001;

[net, tr] = train(net,P,T);

net.IW, net.b

TRAINWB, Epoch 0/50, MSE 0.000483544/1e–005.

TRAINWB, Epoch 6/50, MSE 5.55043e–006/1e–005.

TRAINWB, Performance goal met.

ans = [–0.22785]

ans = [ 0.72495]

Повышение точности на 2 порядка приводит к уточнению значений параметров во вто­ром знаке.