Подтвердить что ты не робот

Как использовать кросс-проверку в k-fold в нейронной сети

Мы пишем небольшой ANN, который должен классифицировать 7000 продуктов на 7 классов на основе 10 входных переменных.

Чтобы сделать это, мы должны использовать k-fold cross validation, но мы немного сбиты с толку.

У нас есть этот отрывок из слайда презентации:

k-fold cross validation diagram

Каковы в точности проверки и тесты?

Из того, что мы понимаем, мы проходим через 3 набора тренировок и корректируем вес (единую эпоху). Тогда что нам делать с проверкой? Потому что я понимаю, что тестовый набор используется для получения ошибки в сети.

То, что происходит дальше, также сбивает меня с толку. Когда происходит кроссовер?

Если это не так много, чтобы спросить, будет оценен пулевой список шагов

4b9b3361

Ответ 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-образным профилем. Минимальная кривая заключается в том, что в идеале тренировка должна быть остановлена, так как это та точка, в которой ошибка обучения и проверки является самой низкой.

Overfitting reduced by validating neural network

Ссылки

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

Ответ 2

  • Разделите свои данные на K, не перекрывающиеся сгибами. Каждый раз K содержит равное количество элементов из каждого из m-классов (стратифицированная перекрестная проверка; если у вас есть 100 предметов из класса A и 50 из класса B, и вы выполняете 2-кратное подтверждение, каждая сводка должна содержать случайные 50 предметов из A и 25 из B).

    1. Для я в 1..k:

      • Назначьте сгиб я тестовой складкой
      • Назначьте одну из оставшихся k-1 фреймов флага проверки (это может быть либо случайным, либо функцией i, не имеет значения)
      • Назначьте все оставшиеся складки тренировочной складкой.
      • Выполняйте поиск по сетке для всех свободных параметров (например, скорости обучения, # нейронов в скрытом слое), тренировки по вашим данным обучения и потери компьютера на ваших данных валидации. Выбор параметров, минимизирующих потери.
      • Используйте классификатор с выигрышными параметрами для оценки потери теста. Накопление результатов

Теперь вы собрали совокупные результаты по всем складкам. Это ваша окончательная производительность. Если вы собираетесь применять это по-настоящему, в дикой природе, используйте лучшие параметры из поиска сетки для обучения по всем данным.