Яка різниця між поїздом, валідацією та тестовим набором у нейронних мережах?


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

Після того, як ви закінчите тренування, ви будете протистояти своєму тестовому набору і переконатися, що точність достатня.

Набір тренувань : цей набір даних використовується для регулювання ваги в нейронній мережі.

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

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


його python: 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 " Що таке сукупність, зразок, навчальний набір, набір дизайну, перевірка "

Поверхня помилок буде відрізнятися для різних наборів даних з вашого набору даних (пакетне навчання). Тому, якщо ви знайдете дуже хороші локальні мінімуми для даних свого тестового набору, це може бути не дуже хорошою точкою, а може бути дуже поганою точкою на поверхні, породженою деяким іншим набором даних для тієї ж проблеми. Тому потрібно обчислити таку модель, яка не тільки знаходить гарну конфігурацію ваги для тренувального набору, але і повинна мати можливість передбачати нові дані (яких немає у навчальному наборі) з хорошою помилкою. Іншими словами, мережа повинна бути у змозі узагальнити приклади, щоб вона засвоювала дані і не просто запам'ятовувала або не завантажувала навчальний набір, доповнюючи дані тренувань.

Набір даних перевірки - це набір даних для функції, яку ви хочете вивчити, які ви не використовуєте безпосередньо для тренування мережі. Ви тренуєте мережу з набором даних, який ви називаєте набором даних про навчання. Якщо ви використовуєте алгоритм на основі градієнта для тренування мережі, то поверхня помилок і градієнт в якийсь момент будуть повністю залежати від набору навчальних даних, таким чином набір даних тренінгу безпосередньо використовується для регулювання ваг. Щоб переконатися, що ви не перенапружуєте мережу, потрібно ввести в мережу набір даних перевірки та перевірити, чи помилка знаходиться в деякому діапазоні. Оскільки набір перевірки не використовується безпосередньо для регулювання ваг мережевої мережі, тому хороша помилка валідації, а також тестовий набір вказує на те, що мережа добре прогнозує приклади набору поїздів,

Рання зупинка - це спосіб припинити тренування. Існують різні варіанти, основний контур - моніторинг помилок поїзда та набору валідацій, помилка поїзда зменшується при кожній ітерації (зворотній зв'язок і брати) і спочатку помилка перевірки зменшується. Навчання припиняється в момент, коли помилка перевірки починає зростати. Вагова конфігурація в цей момент вказує модель, яка добре прогнозує дані тренувань, а також дані, які не бачать мережа . Але тому, що фактично дані перевіркипобічно впливає на конфігурацію ваги, щоб вибрати конфігурацію ваги. Тут надходить тестовий набір. Цей набір даних ніколи не використовується в навчальному процесі. Після вибору моделі на основі набору валідації дані тестового набору застосовуються до мережевої моделі і виявляється помилка для цього набору. Ця помилка є представником тієї помилки, якої ми можемо очікувати від абсолютно нових даних для тієї ж проблеми.

Редагувати:

Крім того, якщо у вас недостатньо даних для набору валідації, ви можете використовувати перехресну перевірку для настройки параметрів, а також для оцінки помилки тесту.


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

6

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


1
Я теж беру на заняття Ендрю Нґ, і я з вами згоден. Набір перевірки повинен бути частиною навчання. Його слід використовувати лише для перетворення гіперпараметрів.
Джек Пен

4

Ми створюємо набір для перевірки

  • Виміряйте, наскільки добре модель узагальнюється під час тренувань
  • Скажіть нам, коли слід припинити навчання моделі; Коли втрати валідації перестають зменшуватися (і особливо, коли втрати валідації починають зростати, а втрати від навчання все ще зменшуються)

Чому використовується набір перевірки :

Чому використовується набір перевірки


2

Скажіть, ви тренуєте модель на тренувальному наборі, а потім вимірюєте її ефективність на тестовому наборі. Ви вважаєте, що ще є можливість для вдосконалення, і ви намагаєтесь налаштувати гіперпараметри (Якщо модель нейронна мережа - гіперпараметри - це кількість шарів або вузлів у шарах). Тепер ви отримуєте трохи кращі показники. Однак, коли модель піддається іншим даним (не в наборі для тестування та навчання), можливо, ви не отримаєте однакового рівня точності. Це тому, що ви ввели деяку упередженість під час налаштування гіперпараметрів, щоб отримати кращу точність на тестовому наборі. Ви в основному адаптували модель і гіперпараметри, щоб створити найкращу модель для цього конкретного навчального набору.

Загальне рішення - розділити навчальний набір далі, щоб створити набір перевірки . Тепер у вас є

  • навчальний набір
  • тестовий набір
  • набір перевірки

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

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

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


0

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

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

Тестовий набір даних : Зразок даних, що використовується для забезпечення неупередженої оцінки кінцевої моделі, що вписується в навчальний набір даних.


-15

Простими словами визначають навчальний набір, тестовий набір, набір перевірки

Навчальний набір: використовується для пошуку найближчих сусідів. Набір валідації: призначений для пошуку різних k, які застосовуються для набору поїздів. Тестовий набір: використовується для пошуку максимальної точності та невидимих ​​даних у майбутньому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.