Формирование представительной выборки

Другой способ преодоления эффекта переобучения связан с организацией целенаправленной процедуры прерывания обучения. Для этого из исходных данных выделяется 3 подмножества. Первое – обучающее подмножество (training set), второе – контрольное подмножество (validation set) и третье – тестовое подмножество (test set). Обучающее подмножество используется для настройки параметров сети; контрольное подмножество используется в течение всего процесса обучения для того, чтобы контролировать представительность используемой выборки. Как правило, ошибка для контрольного подмножества на начальной фазе обучения уменьшается, так же как и ошибка для обучающего подмножества. Однако когда ошибка для контрольного подмножества начинает увеличи­ваться, это означает, что в сети начал проявляться эффект переобучения. В этом случае фиксируется итерация, на которой ошибка для контрольного подмножества была минимальной, и восстанавливаются соответствующие значения настраиваемых параметров сети. Соответствующая длина выборки признается представительной.

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

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

Вновь обратимся к задаче аппроксимации функции синуса. Сформируем обучающее подмножество на интервале входных значений от –1 до 1 с шагом 0.05 в виде суммы функции синуса и погрешности, описываемой случайной величиной, распределенной
по нормальному закону с дисперсией 0.01:

p = [–1:0.05:1];

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

Затем сформируем контрольное подмножество. Определим входы в диапазоне
от –0.975 до 0.975 и, чтобы сделать задачу более реалистичной, добавим некоторую помеху, распределенную по нормальному закону:

v.P = [–0.975:.05:0.975];

v.T = sin(2*pi*v.P)+0.1*randn(size(v.P));

Тестовое подмножество в данном примере не используется.

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

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

net.trainParam.epochs = 300;

net.trainParam.show = 25;

net = init(net);

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

Анализ рис. 3.24 показывает, что ошибка контрольного подмножества превысила ошибку обучающего подмножества вблизи 70-й итерации и далее эта ошибка постоянно превышала ошибку обучающего подмножества, пока на 141-й итерации их отношение
не превысило величину maxfail, по умолчанию равную 5, и произошло прерывание процедуры обучения.

Рис. 3.24

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

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

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

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

Рис. 3.25

Из анализа рис. 3.25 следует, что в сети отсутствует эффект переобучения, хотя реакция на выходе сети не такая гладкая, как при использовании метода регуляризации (рис. 3.23).


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



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