Ответ 1
Вы, кажется, немного смущены (я помню, что я тоже), поэтому я собираюсь упростить вам все.;)
Пример сценария нейронной сети
Всякий раз, когда вам предоставляется задание, такое как создание нейронной сети, вам часто также предоставляется образец набора данных для использования в целях обучения. Предположим, вы тренируете простую систему нейронных сетей Y = W · X
, где Y
- результат, вычисляемый при вычислении скалярного произведения (·) весового вектора W
с заданным вектором образца X
. Теперь наивный способ сделать это будет использовать весь набор данных, скажем, 1000 образцов для обучения нейронной сети. Предполагая, что обучение сходится и ваши веса стабилизируются, вы можете спокойно сказать, что ваша сеть будет правильно классифицировать данные обучения. Но что происходит с сетью, если представлены ранее невидимые данные? Очевидно, что целью таких систем является возможность обобщать и правильно классифицировать данные, отличные от тех, которые используются для обучения.
Объяснение переобучения
В любой реальной ситуации, однако, ранее невидимые/новые данные доступны только после развертывания нейронной сети в среде, пусть ее называют, производственной средой. Но так как вы не проверили его адекватно, вы, вероятно, будете иметь плохое время.:) Явление, с помощью которого любая система обучения соответствует его обучению, почти идеально, но постоянно терпит неудачу с невидимыми данными, называется overfitting.
Три набора
Здесь приведены части проверки и тестирования алгоритма. Вернемся к исходному набору данных из 1000 образцов. Что вы делаете, так это разбить его на три группы - обучение, проверка и тестирование (Tr
, Va
и Te
) - используя тщательно подобранные пропорции. (80-10-10)% обычно является хорошей пропорцией, где:
-
Tr = 80%
-
Va = 10%
-
Te = 10%
Обучение и проверка
Теперь происходит то, что нейронная сеть обучается по набору Tr
, и его весы корректно обновляются. Затем для определения ошибки классификации E = M - Y
используется значение проверки Va
, используя веса, полученные в результате обучения, где M
- ожидаемый выходной вектор, взятый из набора проверки, а Y
- вычисленный результат, полученный из классификация (Y = W * X
). Если ошибка выше пользовательского порога, повторяется целая время проверки обучения. Эта стадия обучения заканчивается, когда ошибка, вычисленная с использованием набора проверки, считается достаточно низкой.
Интеллектуальное обучение
Теперь разумная уловка состоит в том, чтобы случайным образом выбирать, какие образцы использовать для обучения и проверки из общего набора Tr + Va
на каждой итерации эпохи. Это гарантирует, что сеть не будет перегружать учебный набор.
Тестирование
Затем для определения производительности сети используется набор тестов Te
. Эти данные идеально подходят для этой цели, поскольку они никогда не использовались на протяжении всего этапа обучения и валидации. Это фактически небольшой набор ранее невидимых данных, который, как предполагается, имитирует то, что произойдет, когда сеть будет развернута в рабочей среде.
Производительность снова измеряется с точки зрения ошибки классификации, как объяснялось выше. Производительность может также (или, может быть, даже должна) быть измерена в терминах точность и отзыв, чтобы знать, где и как происходит ошибка, но это тема для другого Q & A.
Перекрестная проверка
Поняв этот механизм проверки и проверки, можно еще больше укрепить сеть от переустановки, выполнив кросс-валидация K-fold, Это несколько эволюция умной уловки, которую я объяснил выше. Этот метод включает в себя выполнение K раундов обучения-валидации-тестирования на, разных, неперекрывающихся, равномерно распределенных Tr
, Va
и Te
наборах.
Учитывая k = 10
, для каждого значения K вы разделите свой набор данных на Tr+Va = 90%
и Te = 10%
, и вы запустите алгоритм, записывая результаты тестирования.
k = 10
for i in 1:k
# Select unique training and testing datasets
KFoldTraining <-- subset(Data)
KFoldTesting <-- subset(Data)
# Train and record performance
KFoldPerformance[i] <-- SmartTrain(KFoldTraining, KFoldTesting)
# Compute overall performance
TotalPerformance <-- ComputePerformance(KFoldPerformance)
Показана перевершение
Я беру всемирно известный сюжет ниже wikipediaчтобы показать, как набор проверок помогает предотвратить переобучение. Ошибка обучения, синяя, имеет тенденцию к уменьшению по мере увеличения числа эпох: поэтому сеть пытается точно соответствовать тренировочному набору. С другой стороны, ошибка проверки, красная, следует за другим u-образным профилем. Минимальная кривая заключается в том, что в идеале тренировка должна быть остановлена, так как это та точка, в которой ошибка обучения и проверки является самой низкой.
Ссылки
Для получения дополнительной информации эта отличная книга даст вам как хорошее знание машинного обучения, так и нескольких мигреней. Вам решать, стоит ли это.:)