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

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

Рассмотрим нейронную сеть типа 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 регулярных подхода, которые позволяют преодолеть явление переобучения.


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



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