Эта тема представляет часть типичного многоуровневого сетевого рабочего процесса. Для получения дополнительной информации и другие шаги, смотрите Многоуровневые Мелкие Нейронные сети и Обучение Обратной связи.
При обучении многоуровневых сетей общая практика должна сначала разделить данные на три подмножества. Первое подмножество является набором обучающих данных, который используется для вычисления градиента и обновления сетевых весов и смещений. Второе подмножество является набором валидации. Ошибка на наборе валидации проверена во время учебного процесса. Ошибка валидации обычно уменьшается во время начальной фазы обучения, как делает ошибку набора обучающих данных. Однако, когда сеть начинает сверхсоответствовать данным, ошибка на наборе валидации обычно начинает повышаться. Сетевые веса и смещения сохранены в минимуме ошибки набора валидации. Этот метод обсужден более подробно в, Улучшают Мелкое Обобщение Нейронной сети и Стараются не Сверхсоответствовать.
Ошибка набора тестов не используется во время обучения, но это используется, чтобы сравнить различные модели. Также полезно построить ошибку набора тестов во время учебного процесса. Если ошибка на наборе тестов достигает минимума в существенно отличающемся номере итерации, чем ошибка набора валидации, эта сила указывает на плохое деление набора данных.
Существует четыре функции, предусмотренные, деля данные на обучение, валидацию и наборы тестов. Они - dividerand
(значение по умолчанию), divideblock
, divideint
и divideind
. Деление данных обычно выполняется автоматически, когда вы обучаете сеть.
Функция | Алгоритм |
---|---|
Разделите данные, случайным образом (по умолчанию) | |
Разделите данные на непрерывные блоки | |
Разделите данные с помощью чередованного выбора | |
Разделите данные на индекс |
Можно получить доступ или изменить функцию деления для сети с этим свойством:
net.divideFcn
Каждая из функций деления берет параметры, которые настраивают его поведение. Эти значения хранятся и могут быть изменены со следующим сетевым свойством:
net.divideParam
К функции деления получают доступ автоматически каждый раз, когда сеть обучена и используется, чтобы разделить данные на обучение, валидацию и подмножества тестирования. Если net.divideFcn
установлен в '
dividerand
'
(значение по умолчанию), то данные случайным образом разделены на эти три подмножества с помощью параметров деления net.divideParam.trainRatio
, net.divideParam.valRatio
и net.divideParam.testRatio
. Частью данных, которые помещаются в набор обучающих данных, является trainRatio
/ (trainRatio+valRatio+testRatio
) с подобной формулой для других двух наборов. Отношения по умолчанию для обучения, тестирования и валидации 0.7, 0.15 и 0.15, соответственно.
Если net.divideFcn
установлен в '
divideblock
'
, то данные разделены на три подмножества с помощью трех непрерывных блоков исходного набора данных (обучение, берущее первый блок, валидация второе и тестирующее третье). Часть исходных данных, которые входят в каждое подмножество, определяется теми же тремя параметрами деления, используемыми для dividerand
.
Если net.divideFcn
установлен в '
divideint
'
, то данные разделены на чередованный метод, как в контакте деки карт. Это сделано так, чтобы различные проценты данных вошли в эти три подмножества. Часть исходных данных, которые входят в каждое подмножество, определяется теми же тремя параметрами деления, используемыми для dividerand
.
Когда net.divideFcn
установлен в '
divideind
'
, данные разделены на индекс. Индексы для этих трех подмножеств заданы параметрами деления net.divideParam.trainInd
, net.divideParam.valInd
и net.divideParam.testInd
. Присвоение по умолчанию для этих индексов является пустым массивом, таким образом, необходимо установить индексы при использовании этой опции.