В чем разница между поездом, валидацией и тестовым набором в нейронных сетях? - PullRequest
127 голосов
/ 04 июня 2010

Я использую эту библиотеку для реализации обучающего агента.

Я создал учебные примеры, но точно не знаю, что такое наборы для проверки и проверки.
Учитель говорит:

70% должны быть обучающими случаями, 10% будут контрольными случаями, а остальные 20% должны быть проверочными.

редактировать

У меня есть этот код для обучения, но я не знаю, когда прекратить тренировку.

  def train(self, train, validation, N=0.3, M=0.1):
    # N: learning rate
    # M: momentum factor
    accuracy = list()
    while(True):
        error = 0.0
        for p in train:
            input, target = p
            self.update(input)
            error = error + self.backPropagate(target, N, M)
        print "validation"
        total = 0
        for p in validation:
            input, target = p
            output = self.update(input)
            total += sum([abs(target - output) for target, output in zip(target, output)]) #calculates sum of absolute diference between target and output

        accuracy.append(total)
        print min(accuracy)
        print sum(accuracy[-5:])/5
        #if i % 100 == 0:
        print 'error %-14f' % error
        if ? < ?:
            break

редактировать

Я могу получить среднюю ошибку 0,2 с данными проверки, возможно, после 20 итераций обучения, это должно быть 80%?

средняя ошибка = сумма абсолютной разницы между целевым значением и выходным значением для проверки, учитывая ввод данных проверки / размер проверочных данных.

1
        avg error 0.520395 
        validation
        0.246937882684
2
        avg error 0.272367   
        validation
        0.228832420879
3
        avg error 0.249578    
        validation
        0.216253590304
        ...
22
        avg error 0.227753
        validation
        0.200239244714
23
        avg error 0.227905    
        validation
        0.199875013416

Ответы [ 4 ]

246 голосов
/ 04 июня 2010

Наборы для обучения и проверки используются во время обучения.

for each epoch
    for each training data instance
        propagate error through the network
        adjust the weights
        calculate the accuracy over training data
    for each validation data instance
        calculate the accuracy over the validation data
    if the threshold validation accuracy is met
        exit training
    else
        continue training

После того, как вы закончите тренировку, вы бежите к своему испытательному набору и убедитесь, что точность достаточна.

Учебный набор : этот набор данных используется для настройки весов в нейронной сети.

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

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

66 голосов
/ 16 апреля 2013

Учебный комплект : Набор примеров, используемых для обучения, который подходит параметры [то есть, веса] классификатора.

Набор для проверки : Набор примеров, используемых для настройки параметров [то есть, архитектуры, а не весов] классификатора, например, для выбора количества скрытых единиц в нейронной сети.

Тестовый набор : Набор примеров используется только для оценки производительности [обобщения] полностью определенного классификатора.

С ftp: //ftp.sas.com/pub/neural/FAQ1.txt раздел " Что такое популяция, образец, набор для обучения, набор дизайна, проверка "

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

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

Ранняя остановка - это способ прекратить тренировки. Доступны различные варианты, основной план таков: отслеживаются ошибки как поезда, так и набора проверки, ошибка поезда уменьшается на каждой итерации (backprop и brothers) и сначала уменьшается ошибка проверки. Обучение останавливается в тот момент, когда ошибка проверки начинает расти. Конфигурация веса в этой точке указывает на модель, которая хорошо предсказывает данные тренировки, а также данные , которые не видны в сети . Но поскольку данные проверки на самом деле косвенно влияют на конфигурацию веса, чтобы выбрать конфигурацию веса. Вот где приходит набор тестов. Этот набор данных никогда не используется в процессе обучения. Как только модель выбрана на основе набора проверки, данные набора тестов применяются к сетевой модели и обнаруживается ошибка для этого набора. Эта ошибка является представителем ошибки, которую мы можем ожидать от абсолютно новых данных для той же проблемы.

РЕДАКТИРОВАТЬ:

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

6 голосов
/ 25 февраля 2017

Набор перекрестной проверки используется для выбора модели, например, выберите полиномиальную модель с наименьшим количеством ошибок для данного набора параметров. Затем набор тестов используется для сообщения об ошибке обобщения выбранной модели. Отсюда: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets

0 голосов
/ 05 июля 2018

Простыми словами: набор для обучения, набор для проверки, набор для проверки

Учебный комплект: используется для поиска ближайших соседей. Набор для проверки: предназначен для нахождения различных k, которые применяются к набору поездов. Тестовый набор: используется для нахождения максимальной точности и невидимых данных в будущем.

...