Сделай Сам Свою Работу на 5

Расширение возможностей процедур обучения

Очень трудно определить, какой обучающий алгоритм будет самым быстрым при решении той или иной практической задачи. Это зависит от многих факторов, включая сложность задачи, число элементов обучающего множества, число настраиваемых параметров сети и конечную ошибку. Вообще говоря, для сетей, которые содержат до нескольких сотен параметров, алгоритм LM имеет самую быструю сходимость. Это преимущество особенно значимо, если требуется высокая точность обучения. Алгоритмы методов Ньютона и секущих плоскостей занимают следующее место для нейронных сетей умеренных размеров. Алгоритм BFGS требует значительного объема памяти для хранения матрицы Гессе, но при этом значительно превосходит по быстродействию алгоритмы метода сопряженных градиентов.

Среди алгоритмов метода сопряженных градиентов алгоритм CGB Пауэлла – Биеле требует наибольших объемов памяти, но обычно имеет самую быструю сходимость.
Алгоритмы Rprop и SCG не требуют использования процедур одномерного поиска
и предъявляют незначительные требования к памяти. Они работают достаточно быстро
и могут быть рекомендованы для решения задач большой размерности. Алгоритм CGS
с переменным параметром скорости настройки обычно работает намного медленнее других алгоритмов и требует приблизительно столько же памяти, как алгоритм Rprop, но при решении некоторых практических задач он может оказаться весьма полезным, поскольку возникают ситуации, когда оказываются предпочтительными алгоритмы с медленной сходимостью, например при использовании стратегии прерывания.

При решении практических задач рекомендуется начинать с алгоритма LM. Если при этом требуется слишком много памяти, то следует перейти к алгоритму BFG или одному из алгоритмов метода сопряженных градиентов. Алгоритм Rprop также характеризуется высоким быстродействием и предъявляет относительно малые требования к объему
используемой памяти.

Табл. 3.1 иллюстрирует характеристики различных алгоритмов при решении с помощью нейронных сетей одной частной задачи регрессионного анализа.

Таблица 3.1

М-функция ППП Алгоритм Время, с Циклы обучения Число операций, Mflops
traingds GDS 57.71 2.50
trainrp Rprop 12.95 0.56
trainscg SCG 16.06 0.70
traincgf CGF 16.40 0.99
traincgp CGP 16.16 0.75
traincgb CGB 15.03 0.59
trainoss OSS 18.46 0.75
trainbfg BFGS 10.86 1.02
trainlm LM 1.87 0.46

 

Сеть типа 1–10–1, имеющая 1 вход, 10 скрытых нейронов и 1 выход, обучалась с использованием последовательности из 41 элемента, представляющих пары вход – целевой выход, пока не была достигнута среднеквадратичная погрешность обучения, равная 0.01. Для каждого алгоритма обучения было выполнено 20 прогонов, чтобы получить усредненные показатели, приведенные в таблице. Рассматривать эти показатели надо весьма осторожно, поскольку приведенные данные относятся к конкретной задаче и могут существенно измениться при решении какой-либо другой задачи.

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

Переобучение

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

Рассмотрим нейронную сеть типа 1–30–1 с одним входом, 30 скрытыми нейронами
и одним выходом, которую необходимо обучить аппроксимировать функцию синуса, если заданы ее приближенные значения, которые получены как сумма значений синуса и случайных величин, распределенных по нормальному закону:

net = newff([–1 1],[30,1],{'tansig','purelin'},'trainbfg');

net.trainParam.epochs = 300;

net.trainParam.show = 50;

net.trainParam.goal = 1e–5;

p = [–1:0.05:1];

t = sin(2*pi*p)+0.1*randn(size(p)); % Возмущенные значения функции

t1 = sin(2*pi*p); % Обучающая последовательность

[net,tr] = train(net,p,t); % Рис.3.19

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

Рис. 3.19

Для того чтобы убедиться, что в данном случае мы сталкиваемся с явлением переобучения, построим графики аппроксимируемой функции, ее приближенных значений и результата аппроксимации (рис. 3.20):

an = sim(net,p); % Значения аппроксимирующей функции

plot(p,t,'+',p,an,'–',p,t1,':') % Рис.3.20

Рис. 3.20

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

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

К сожалению, заранее трудно предсказать, насколько мощной должна быть сеть для конкретного приложения. Поэтому рассмотрим 2 регулярных подхода, которые позволяют преодолеть явление переобучения.

Метод регуляризации

Первый подход связан с использованием метода регуляризации, предложенного
в 1963 г. российским математиком А. Н. Тихоновым [50]. Суть этого метода заключается в том, чтобы видоизменить функционал качества таким образом, чтобы он всегда имел ми­ни­мум и положение этого минимума непрерывно зависело от параметра регуляризации.

Модификация функционала качества. Типичный функционал качества, который используется при обучении нейронных сетей с прямой передачей, – это функционал средней суммы квадратов ошибки обучения

. (3.33)

Если модифицировать функционал добавлением слагаемого вида

, (3.34)

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

Введем параметр регуляризации g и построим следующий регуляризирующий функционал:

(3.35)

Рассмотрим нейронную сеть типа 1–5–1 с одним входом, пятью скрытыми нейронами и одним выходом. Эта сеть использует те же типы нейронов, что и предыдущая сеть, но количество скрытых нейронов в 6 раз меньше, предельное количество циклов обучения сокращено до 100, а параметр регуляризации равен 0.9998.

net = newff([–1 1],[5,1],{'tansig','purelin'},'trainbfg');

net.trainParam.epochs = 100;

net.trainParam.show = 50;

net.trainParam.goal = 1e–5;

net.performFcn = 'msereg';

net.performParam.ratio = 0.9998;

p = [–1:0.05:1];

t = sin(2*pi*p)+0.1*randn(size(p)); % Возмущенные значения функции

t1 = sin(2*pi*p); % Обучающая последовательность

[net,tr] = train(net,p,t); % Рис.3.21,а

 

an = sim(net,p); % Значения аппроксимирующей функции

plot(p,t,'+',p,an,'–',p,t1,':') % Рис.3.21,б

На рис. 3.21, а показан график изменения ошибки обучения, из которого следует, что ошибка обучения составляет величину порядка 0.01; на рис. 3.21, б показаны результаты аппроксимации, из которых следует, что при использовании пяти нейронов в скрытом слое переобучение не наблюдается, кривая выхода аппроксимирует функцию синуса,
но точность аппроксимации недостаточна.

а б

Рис. 3.21

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

Автоматическая регуляризация. Автоматический выбор параметра регуляризации может быть реализован на основе правила Байеса. Этот подход был предложен Д. Мак-Кейем (D. MacKay) [27] и состоит в том, что веса и смещения сети рассматриваются как случайные величины с известным законом распределения. Параметр регуляризации связан с дисперсией этого распределения и может быть оценен с использованием статистических методов. Детальное описание процедуры регуляризации с использованием правила Байеса и алгоритма Левенберга – Марквардта можно найти в работе [11]. Соответствующая процедура реализована в виде М-функции trainbr.

Вновь обратимся к нейронной сети типа 1–20–1, предназначенной для решения задачи аппроксимации функции синуса.

net = newff([–1 1],[20,1],{'tansig','purelin'},'trainbr');

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

net.trainParam

ans =

epochs: 100

show: 25

goal: 0

time: Inf

min_grad: 1e–010

max_fail: 5

mem_reduc: 1

mu: 0.005

mu_dec: 0.1

mu_inc: 10

mu_max: 1e+010

Этот список соответствует списку параметров М-функции trainlm.

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

net = newff([–1 1],[20,1],{'tansig','purelin'},'trainbr');

net.trainParam.epochs = 50;

net.trainParam.show = 10;

randn('seed',192736547);

p = [–1:.05:1];

t = sin(2*pi*p)+0.1*randn(size(p));

net = init(net);

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

Рис. 3.22

На рис. 3.22 показаны изменения суммы квадратов ошибок и весов, а также оптимальное количество настраиваемых параметров нейронной сети. В данном случае после обучения используется приблизительно 18 – из общего числа 61 – параметров сети типа 1–20–1.

Построим графики исследуемых функций:

an = sim(net,p); % Значения аппроксимирующей функции

t1 = sin(2*pi*p); % Значения аппроксимируемой функции

plot(p,t,'+',p,an,'–',p,t1,':') % Рис. 3.23

Рис. 3.23 иллюстрирует реакцию построенной нейронной сети при решении задачи аппроксимации. В отличие от рис. 3.19, на котором видно, что в сети существует переобучение, здесь мы видим, что реакция сети близка к основной функции синуса. Следовательно, сеть хорошо приспособлена к новым входам. Можно попробовать реализовать более мощную исходную сеть, но при этом в реакции сети никогда не будет проявляться эффект переобучения. Таким образом, процедура обучения trainbr представляет собой некоторую регулярную процедуру для определения оптимального числа настраиваемых параметров и, как следствие, оптимального размера сети.

Рис. 3.23



©2015- 2017 stydopedia.ru Все материалы защищены законодательством РФ.