Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Моделирование в АГРОИНЖЕНЕРИИ00.doc
Скачиваний:
10
Добавлен:
01.07.2025
Размер:
4 Мб
Скачать
☆

Xlabe1(''), у label ( 'Выходы a(I)'), grid

subplot(3,1,2)

plot(0:30,[[0 0]; Wb'k')

Xlabel(''), ylabel('Beca входов w(I)'), grid

subplot(3,1,3)

for i=l:30, E(i) = mse(e{i}); end

semilogy(1:30, E, '+k')

Xlabel(' Циклы'), ylabel('Ошибка'),grid

Условие окончания адаптации определяется погрешностью приближения к целевому вектору; в данном случае мерой такой погрешности является среднеквад-ратичная ошибка rnse(e{i}), которая должна быть меньше заданной. В оптимальном случае она должна приближаться к нулю.

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

Р = [-1 -1/3 1/2 1/6; 1 1/4 0 2/3];

Т = [-1 -5/12 11];

Используется та же модель статической сети с теми же требованиями к погре-шности адаптации. Основной цикл адаптации сети с заданной погрешностью выглядит следующим образом:

% Групповой способ адаптации сети с входами Р и целями Т

net3 = newlin([-l 1;-1 1],1, 0, 0.2);

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

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

net3.inputWeights{l,1}.learnParam.lr = 0.2;

Р = [-1 -1/3 1/2 1/6; 1 1/4 0 2/3];

Т = [-1 -5/12 1 1];

ЕЕ = 10; i=l;

while ЕЕ > 0.0017176

[net3,a{i},e{i},pf] = adapt(net3,Р,Т);

W(i,:) = net3.IW{l,l};

ЕЕ = mse(e{i});

ее(i)= ЕЕ;

i « i+1;

end

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

Последовательный способ. Обратимся к линейной модели нейронной сети с одним входом и одним элементом запаздывания. Установим начальные условия на линии задержки, а также для весов и смещения равными 0, а параметр скорости настройки равным 0.5:

net s newlin ([-l 1], 1, [0 13], 0.5);

Pi = {0}; % Начальное условие для элемента запаздывания

net.IW{l} = [0 0]; % Значения весов

net.biasConnect = 0; % Значение смещения

Чтобы применить последовательный способ адаптации, представим входы и цели как массивы ячеек:

Р = {-1/2 1/3 1/5 1/4}; % Вектор входа

Т * { -1 1/6 11/15 7/10}; % Вектор цели

Пусть необходимо приспособить сеть для формирования нужного выхода на основе следующего соотношения:

y(t) = 2p(t) + p(t-l).

Используем для этой цели М-функцию adapt и основной цикл адаптации сети с заданной погрешностью, как это уже было описано выше:

ЕЕ = 10; i = 1;

while ЕЕ > 0.0001

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

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

ЕЕ = mse(e{i});

ее (i) = ЕЕ ;

i = i+1;

end

Групповой способ представления обучающего множества для адаптации динамических систем не применяется.

Обучение нейронных сетей.

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

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

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

net = newlin([-l 1;-1 13,1, 0, 0);

net.IW{l} = [0 0]; % Значения весов

net.b{l} = 0; % Значения смещений

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

t = 2p1+p2.

Последовательный способ. Для этого представим обучающую последователь-ность в виде массивов ячеек:

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

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

Теперь все готово к обучению сети. Будем обучать ее с помощью функции train в течение 30 циклов.

В этом случае для обучения и настройки параметров сети используются функции trainwb и learnwh соответственно.

% Параметр скорости настройки весов

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

net-biases{1}.learnParam.lr = 0; % Параметр скорости настройки смещений

net.trainParam.epochs =30; % Число циклов обучения

netl = train(net,P,T);

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

w = netl.iw{l}

у = sim(netl, P)

ЕЕ = mse([y{:}]-[T{:}])

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

Групповой способ. Для этого представим обучающую последовательность в виде массивов формата double array:

Р = [-1 -1/3 1/2 1/6; 1 1/4 0 2/3];

Т = [-1 -5/12 1 1];

netl = train(net,P,T);

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

w = netl.iwd}

у = sim(netl/ P)

ЕЕ = mse(y-T)

Динамические сети. Обучение динамических сетей выполняется аналогичным образом с использованием метода train.