В чем разница между поездом, валидацией и тестовым набором в нейронных сетях?


155

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

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

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

1
"... это должно быть 80%?" Нет, средняя ошибка и правильный процент - это разные вещи. Предположим, что ваше целевое значение равно 5,0, а ваш нейрон вернул 4,8 (т.е. ошибка 0,2). В зависимости от данных ошибка 0,2 может быть приемлемой, поэтому, если ошибка достаточно мала, вы можете считать этот экземпляр правильно заданным. Таким образом, если у вас есть 10 целей и ваша ошибка классификации для 7 из них находится в допустимом диапазоне, то вы бы правильно классифицировали 70% данных.
Кирил

Каковы критерии прекращения обучения, требуемые вашим учителем?
Кирил

Ответы:


292

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

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

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

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

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

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


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

@ Даниэль, точность обучения колеблется или точность проверки колеблется? Возможно, что ваша точность проверки колеблется, но менее вероятно, что точность обучения будет колебаться. Когда вы говорите «input, target = p», это означает, что вы устанавливаете оба параметра на p?
Кирил

Я не очень хорошо разбираюсь в python, поэтому код выглядит немного смущающим для меня ... в общем, вы хотите прекратить обучение, когда ваша точность проверки достигает определенного порога, скажем, 70% или 90%, что бы ни имело смысла для домена ваших данных.
Кирил

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

2
@AntonAndreev Я не понимаю. Согласно вашему ответу, ни то, validation setни другое не test setиспользуются для настройки весов нейронной сети. Почему вы не можете использовать тот же набор данных, не использованный для тренировки весов, как validation setи test set? Что получается, если держать их отдельно?
Гили

77

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

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

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

Из раздела ftp://ftp.sas.com/pub/neural/FAQ1.txt « Что такое население, выборка, набор для обучения, набор для разработки, проверка »

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

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

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

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

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


11
Я знаю, что я не должен публиковать бессмысленные комментарии, подобные этому, но хотел сказать, что я очень ценю этот ответ :)
Лламагеддон,

6

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


1
Я тоже посещаю занятия Эндрю Нг и согласен с вами. Валидационный набор должен быть частью обучения. Он должен использоваться только для включения гиперпараметров.
Джек Пэн,

4

Мы создаем набор для проверки

  • Измерьте, насколько хорошо модель обобщается во время обучения
  • Сообщите нам, когда следует прекратить обучение модели; когда потери при проверке перестают уменьшаться (и особенно когда потеря при проверке начинает увеличиваться, а потеря при обучении все еще уменьшается)

Почему используется набор проверки :

Почему используется набор проверки


3

Скажем, вы тренируете модель на тренировочном наборе, а затем измеряете ее производительность на тестовом наборе. Вы думаете, что еще есть возможности для улучшения, и вы пытаетесь настроить гиперпараметры (если модель является нейронной сетью - гиперпараметры - это число слоев или узлов в слоях). Теперь вы получаете чуть лучшую производительность. Однако, когда модель подвергается воздействию других данных (не входящих в набор для тестирования и обучения), вы можете не получить такой же уровень точности. Это связано с тем, что при настройке гиперпараметров вы внесли некоторый уклон, чтобы повысить точность тестового набора. Вы в основном адаптировали модель и гиперпараметры, чтобы получить лучшую модель для этого конкретного учебного набора.

Распространенным решением является дальнейшее разделение обучающего набора для создания проверочного набора . Теперь у вас есть

  • Обучающий набор
  • набор для тестирования
  • набор проверки

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

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

Наконец, вы оцениваете эту окончательную модель на тестовом наборе, чтобы получить оценку ошибки обобщения.


0

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

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

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


-15

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.