Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

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




 

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

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

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

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

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

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

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

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

t = 2p1+p2.

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

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

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

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

Р1 = [Р{:}], Т1=[Т{:}] % Переход от массива ячеек к массиву double

P1 =

-1 -0.33333 0.5 0.16667

1 0.25 0 0.66667

Т1 = -1 -0.41667 1 1

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

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

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

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

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

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

[netl,a,e] = adapt(net,Р,Т);

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

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

netl.IW{l, 1}, a, e

ans = 0 0

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

e = [-1] [-0.41667] [1] [1]

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

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

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

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

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

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

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

[netl,a,e] = adapt(net,P,T); netl.IW{l, 1}, а, е

ans = 0.34539 -0.069422

а = [0] [-0.11667] [0.11] [-0.091833]

е = [-1] [-0.3] [0.89] [1.0918]

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

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

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

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

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

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

net.inputWeights{l,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=l:30,

[net,a{i},e{i}] = adapt(net,P,T); W(i,:)=net.IW{l,l}; 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'))], 'к1) % Рис 3.1,а

xlabel(''),ylabel("Выходы a(i)'),grid

subplot(3,1,2)

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

xlabel(''), ylabel('Beca входов w(i)'),grid subplot(3,1,3)

for i=l:30, E(i) = mse(e{i}); end semilogy(l:30, E,+k') % Рис. 3.1,в xlabel(' Циклы'), ylabel('Ошибка1),grid

 

Рис. 8

 

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

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

На рис. 8 а показаны выходы нейронов в процессе адаптации сети, на рис. 8 б коэффициенты восстанавливаемой зависимости, которые соответствуют элементам вектора весов входа, а на рис. 8, в ошибка обучения. Как следует из анализа графиков за 12 шагов получена ошибка обучения 1.489е-3.

Предлагаем читателю самостоятельно убедиться, что для исследуемой зависимости обучающие последовательности вида

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

Т = {-1 -1/2 1/2 1}; % Массив векторов цели не являются представительными.

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

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

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

Используется та же модель статической сети с теми же требованиями к погрешности адаптации. При обращении к М-функции adapt по умолчанию вызываются функции adaptwb и learnwh; последняя выполняет настройку параметров сети на основе алгоритма WH, реализующего правило Уидроу - Хоффа (Widrow - Hoff).

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

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

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

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

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

net3.inputWeights{l,l}.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,P,T);

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

ЕЕ = mse(e{i});

ee(i)= ЕЕ;

i = i+1;

End

Результатом адаптации при заданной погрешности являются следующие значения ко­эффициентов линейной зависимости, значений выходов нейронной сети, приближающихся к значениям желаемого выхода, а также среднеквадратичная погрешность адаптации:

W(63,:)

ans = 1.9114 0.84766

Cell2mat(a(63))

ans = -1.003 -0.36242 1.0172. 0.94256

ЕЕ = mse(e{63})

ЕЕ = 0.0016368

mse(e{l})

ans = 0.7934

Процедура адаптации выходов и параметров нейронной сети иллюстрируется рис. 3.2.

Subplot(3,1,1)

plot(0:63,[zeros(l,4); cell2mat(a')], 'k') % Рис.3.2,a

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...