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

3.1.1. Способы адаптации и обучения

В ППП Neural Network Toolbox реализовано 2 способа адаптации и обучения: последовательныйигрупповой, в зависимости от того, применяется ли последовательное или групповое представление входов.

Адаптация нейронных сетей

Статические сети.Воспользуемся следующей моделью однослойной линейной сети с двухэлементным вектором входа, значения которого находятся в интервале [–1 1], и нулевым параметром скорости настройки:

% Формирование однослойной статической линейной сети с двумя входами

% и нулевым параметром скорости настройки

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

Требуется адаптировать параметры сети так, чтобы она формировала линейную зависимость вида

Последовательный способ.Рассмотрим случай последовательного представления обучающей последовательности. В этом случае входы и целевой вектор формируются в виде массива форматаcell:

% Массив ячеек векторов входа

P = {[–1; 1] [–1/3; 1/4] [1/2; 0] [1/6; 2/3]};

T = {–1 –5/12 1 1}; % Массив ячеек векторов цели

P1 = [P{:}], T1=[T{:}] % Переход от массива ячеек к массиву double

P1 =

–1 –0.33333 0.5 0.16667

1 0.25 0 0.66667

T1 = –1 –0.41667 1 1

Сначала зададим сеть с нулевыми значениями начальных весов и смещений:

net.IW{1} = [0 0]; % Присваивание начальных весов

net.b{1} = 0; % Присваивание начального смещения

В ППП NNT процедуры адаптации реализуются на основе метода adapt. Для управления процедурой адаптации используется свойствоnet.adaptFcn, которое задает метод адаптации; для статических сетей по умолчанию применяется методadaptwb, который позволяет выбирать произвольные функции для настройки весов и смещений. Функции настройки весов и смещений задаются свойствамиnet.inputWeights{i, j}.learnFcn, net.layerWeights{i, j}.learnFcnиnet.biases{i, j}.learnFcn.

Выполним 1 цикл адаптации сети с нулевым параметром скорости настройки:

% Последовательная адаптация сети с входами P и целями T

[net1,a,e] = adapt(net,P,T);

% net1-новая сеть, a-выход, e-ошибка обучения

В этом случае веса не модифицируются, выходы сети остаются нулевыми, поскольку параметр скорости настройки равен нулю и адаптации сети не происходит. Погрешности совпадают со значениями целевой последовательности

net1.IW{1, 1}, a, e

ans = 0 0

a = [0] [0] [0] [0]

e = [–1] [–0.41667] [1] [1]

Зададим значения параметров скорости настройки и весов входа и смещения:

net.IW{1} = [0 0]; % Присваивание начальных весов

net.b{1} = 0; % Присваивание начального смещения

net.inputWeights{1,1}.learnParam.lr = 0.2;

net.biases{1,1}.learnParam.lr = 0;

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

Выполним 1 цикл настройки:

[net1,a,e] = adapt(net,P,T);

net1.IW{1, 1}, a, e

ans = 0.34539 –0.069422

a = [0] [–0.11667] [0.11] [–0.091833]

e = [–1] [–0.3] [0.89] [1.0918]

Теперь выполним последовательную адаптацию сети в течение 30 циклов:

% Последовательная адаптация сети с входами P и целями T за 30 циклов

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

net.IW{1} = [0 0]; % Присваивание начальных весов

net.b{1} = 0; % Присваивание начального смещения

Зададим значения параметров скорости настройки для весов входа и смещения:

net.inputWeights{1,1}.learnParam.lr = 0.2;

net.biases{1,1}.learnParam.lr = 0;

P = {[–1; 1] [–1/3; 1/4] [1/2; 0] [1/6; 2/3]}; % Массив векторов входа

T = {–1 –5/12 1 1}; % Массив векторов цели

for i=1:30,

[net,a{i},e{i}] = adapt(net,P,T);

W(i,:)=net.IW{1,1};

end

mse(cell2mat(e{30})) % Среднеквадратичнаяошибкаадаптации

ans = 0.0017176

W(30,:) % Веса после 30 циклов

ans = 1.9199 0.925

cell2mat(a{30})

ans = –0.9944 –0.40855 0.95663 0.93005

cell2mat(e{30})

ans = –0.0055975 –0.0081125 0.043367 0.069947

Построим графики зависимости значений выходов сети и весовых коэффициентов в зависимости от числа итераций (рис. 3.1):

subplot(3,1,1)

plot(0:30,[[0 0 0 0];cell2mat(cell2mat(a'))],'k') % Рис3.1,a