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

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

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

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

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
4b9b3361

Ответ 1

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

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

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

EDIT:

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

Ответ 3

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

Ответ 4

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

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

Ответ 5

Я считаю, что в режиме обучения вы позволяете узлам вашей сети изменять значения их входных или выходных весов. Вы также предоставляете положительную или отрицательную обратную связь, чтобы изменить вес. Другими словами, вы даете набор ввода и вывод обратной связи с выходом XOR ed против известного истинного/ложного, а затем НЕ этого. Другими словами, когда ответы совпадают, вы даете положительные отзывы, а когда они не согласны, вы даете отрицательную обратную связь.

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