Алгоритм GDA

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

Эта стратегия заключается в следующем. Вычисляются выход и погрешность инициализированной нейронной сети. Затем на каждом цикле обучения вычисляются новые
значения настраиваемых параметров и новые значения выходов и погрешностей. Если отношение нового значения погрешности к прежнему превышает величину max_perf_inc (по умолчанию 1.04), то новые значения настраиваемых параметров во внимание не при­нимаются. При этом параметр скорости настройки уменьшается с коэффициентом lr_dec (по умолчанию 0.7). Если новая погрешность меньше прежней, то параметр скорости настройки увеличивается с коэффициентом lr_inc (по умолчанию 1.05).

Эта стратегия способствует увеличению скорости и сокращению длительности обучения.

Алгоритм GDA в сочетании с алгоритмом GD определяет функцию обучения traingda, а в сочетании с алгоритмом GDM – функцию обучения traingdx.

Вновь обратимся к той же нейронной сети (см. рис. 3.8), но будем использовать функцию обучения traingda:

net = newff([–1 2; 0 5],[3,1],{'tansig','purelin'},'traingda');

Функция traingda характеризуется следующими параметрами, заданными по умолчанию:

net.trainParam

ans =

epochs: 100

goal: 0

lr: 0.0100

lr_inc: 1.0500

lr_dec: 0.7000

max_fail: 5

max_perf_inc: 1.0400

min_grad: 1.0000e–006

show: 25

Здесь epochs – максимальное количество циклов обучения; goal – предельное значение критерия обучения; lr – параметр скорости настройки; lr_inc – коэффициент увеличения скорости настройки; lr_dec – коэффициент уменьшения скорости настройки; max_fail – максимально допустимый уровень превышения ошибки контрольного подмножества по сравнению с обучающим; max_perf_inc – пороговый коэффициент отношения погрешностей; min_grad – минимальное значение градиента; show – интервал вывода информации, измеренный в циклах; time – предельное время обучения.

Установим следующие значения этих параметров:

net.trainParam.epochs = 300;

net.trainParam.goal = 1e–5;

net.trainParam.lr = 0.05;

net.trainParam.mc = 0.9;

net.trainParam.show = 50;

p = [–1 –1 2 2;0 5 0 5];

t = [–1 –1 1 1];

net = train(net,p,t); % Рис. 3.10

На рис. 3.10 приведен график изменения ошибки обучения в зависимости от числа
выполненных циклов.

Рис. 3.10

a = sim(net,p)

a = –0.9959 –1.0012 0.9963 0.9978

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

Демонстрационная программа nnd12vl иллюстрирует производительность алгоритма
с переменным параметром скорости настройки.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: