Qual è la differenza tra treno, validazione e set di test, nelle reti neurali?


155

Sto usando questa libreria per implementare un agente di apprendimento.

Ho generato i casi di addestramento, ma non so con certezza quali siano i set di validazione e test.
L'insegnante dice:

Il 70% dovrebbe essere casi di treni, il 10% sarà casi di test e il restante 20% casi di validazione.

modificare

Ho questo codice per l'allenamento, ma non ho idea di quando interrompere l' allenamento.

  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

modificare

Posso ottenere un errore medio di 0,2 con i dati di convalida, dopo forse 20 iterazioni di allenamento, che dovrebbe essere dell'80%?

errore medio = somma della differenza assoluta tra target di validazione e output, dati input / dimensione dei dati di validazione.

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
"... dovrebbe essere l'80%?" No, l'errore medio e la percentuale corretta sono due cose diverse. Supponiamo che il valore target sia 5.0 e che il neurone abbia restituito 4.8 (ovvero un errore di 0,2). A seconda dei dati, un errore di 0,2 può essere accettabile, quindi se l'errore è abbastanza piccolo, si può considerare quell'istanza correttamente specificata. Quindi, se hai 10 target e il tuo errore di classificazione per 7 di essi rientrava nell'intervallo accettabile, avresti classificato correttamente il 70% dei dati.
Kiril,

Quali sono i criteri di terminazione richiesti dal tuo insegnante?
Kiril,

Risposte:


292

I set di addestramento e di validazione vengono utilizzati durante l'allenamento.

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

Una volta terminato l'allenamento, corri contro il tuo set di test e verifica che l'accuratezza sia sufficiente.

Set di allenamento : questo set di dati viene utilizzato per regolare i pesi sulla rete neurale.

Set di convalida : questo set di dati viene utilizzato per ridurre al minimo il sovraccarico. Non stai regolando i pesi della rete con questo set di dati, stai solo verificando che qualsiasi aumento di accuratezza rispetto al set di dati di training in realtà produce un aumento della precisione su un set di dati che non è stato mostrato alla rete prima, o almeno la rete non si è allenata su di essa (ovvero set di dati di convalida). Se l'accuratezza sul set di dati di allenamento aumenta, ma l'accuratezza sul set di dati di convalida rimane invariata o diminuisce, si sta adattando eccessivamente la rete neurale e si dovrebbe interrompere l'allenamento.

Set di test : questo set di dati viene utilizzato solo per testare la soluzione finale al fine di confermare l'effettiva potenza predittiva della rete.


il suo pitone: xi non riesco proprio a ottenere un criterio di stop .. i valori convergono .. ma sempre con qualche fluttuazione ..
Daniel

@Daniel, l'accuratezza dell'addestramento varia o l'accuratezza della convalida fluttua? È possibile che la precisione della convalida fluttui, ma è meno probabile che la precisione della formazione fluttui. Quando dici "input, target = p" significa che stai impostando entrambi su p?
Kiril,

Non sono molto bravo con Python, quindi il codice mi sembra un po 'confuso ... in generale vuoi interrompere l'allenamento quando la precisione della convalida raggiunge una certa soglia, diciamo 70% o 90%, qualunque cosa abbia senso per il dominio dei tuoi dati.
Kiril,

5
Il set di convalida viene utilizzato nel processo di formazione. Il set di test non lo è. Il set di test consente a 1) di verificare se il set di addestramento è stato sufficiente e 2) se il set di convalida ha svolto il compito di prevenire l'eccessivo adattamento. Se si utilizza il set di test durante il processo di formazione, sarà solo un altro set di convalida e non mostrerà cosa succede quando vengono immessi nuovi dati nella rete.
Anton Andreev,

2
@AntonAndreev Non capisco. Secondo la tua risposta, né il validation setné il test setsono usati per sintonizzare i pesi della rete neurale. Perché non è possibile utilizzare lo stesso set di dati, non utilizzato per allenare i pesi, come validation sete test set? Cosa si ottiene mantenendoli separati?
Gili,

77

Set di addestramento : un insieme di esempi utilizzati per l'apprendimento, ovvero per adattare i parametri [ovvero i pesi] del classificatore.

Set di convalida : un set di esempi utilizzati per ottimizzare i parametri [vale a dire architettura, non pesi] di un classificatore, ad esempio per scegliere il numero di unità nascoste in una rete neurale.

Set di test : un set di esempi utilizzato solo per valutare le prestazioni [generalizzazione] di un classificatore completamente specificato.

Dalla sezione ftp://ftp.sas.com/pub/neural/FAQ1.txt " Cosa sono la popolazione, il campione, il set di formazione, il set di progettazione, la validazione "

La superficie dell'errore sarà diversa per i diversi set di dati dal set di dati (apprendimento batch). Pertanto, se trovi un minimo locale molto buono per i dati del tuo set di test, questo potrebbe non essere un ottimo punto e potrebbe essere un punto molto brutto in superficie generato da qualche altro set di dati per lo stesso problema. Pertanto è necessario calcolare un modello del genere che non solo trova una buona configurazione del peso per il set di allenamento, ma dovrebbe anche essere in grado di prevedere nuovi dati (che non si trovano nel set di allenamento) con un buon errore. In altre parole, la rete dovrebbe essere in grado di generalizzare gli esempi in modo che apprenda i dati e non si limiti a ricordare o caricare l'insieme di formazione sovrastimando i dati di addestramento.

Il set di dati di convalida è un set di dati per la funzione che si desidera apprendere, che non si utilizza direttamente per addestrare la rete. Stai addestrando la rete con un set di dati che chiami l'insieme di dati di training. Se si utilizza un algoritmo basato sul gradiente per addestrare la rete, la superficie dell'errore e il gradiente ad un certo punto dipenderanno completamente dal set di dati di allenamento, quindi il set di dati di allenamento viene utilizzato direttamente per regolare i pesi. Per assicurarsi di non equipaggiare eccessivamente la rete, è necessario inserire il set di dati di convalida nella rete e verificare se l'errore rientra in un intervallo. Poiché il set di convalida non viene utilizzato direttamente per regolare i pesi di netowork, quindi un buon errore per la convalida e anche il set di test indica che la rete prevede bene gli esempi del set di treni,

L'arresto anticipato è un modo per interrompere l'allenamento. Sono disponibili diverse varianti, lo schema principale è che vengono monitorati sia gli errori del treno che quelli del set di convalida, l'errore del treno diminuisce ad ogni iterazione (backprop e fratelli) e inizialmente diminuisce l'errore di convalida. L'allenamento viene interrotto nel momento in cui l'errore di convalida inizia a salire. La configurazione del peso a questo punto indica un modello che prevede bene i dati di allenamento, nonché i dati che non sono visti dalla rete . Ma perché i dati di validazione in realtàinfluenza indirettamente la configurazione del peso per selezionare la configurazione del peso. È qui che entra in gioco il set di test. Questo set di dati non viene mai utilizzato nel processo di formazione. Dopo aver selezionato un modello in base al set di convalida, i dati del set di test vengono applicati al modello di rete e viene rilevato l'errore per questo set. Questo errore è un rappresentante dell'errore che possiamo aspettarci da dati assolutamente nuovi per lo stesso problema.

MODIFICARE:

Inoltre, nel caso in cui non si disponga di dati sufficienti per un set di convalida, è possibile utilizzare la convalida incrociata per ottimizzare i parametri e stimare l'errore del test.


11
So che non dovrei pubblicare commenti insignificanti come questo, ma volevo dirti che apprezzo molto questa risposta :)
Llamageddon,

6

Il set di convalida incrociata viene utilizzato per la selezione del modello, ad esempio selezionare il modello polinomiale con il minor numero di errori per un determinato set di parametri. Il set di test viene quindi utilizzato per segnalare l'errore di generalizzazione sul modello selezionato. Da qui: https://www.coursera.org/learn/machine-learning/lecture/QGKbr/model-selection-and-train-validation-test-sets


1
Frequento anche le lezioni di Andrew Ng e sono d'accordo con te. Il set di convalida dovrebbe far parte della formazione. Dovrebbe essere usato solo per trasformare iperparametri.
Jack Peng,

4

Creiamo un set di validazione su

  • Misura quanto bene un modello si generalizza, durante l'allenamento
  • Indica quando interrompere l'allenamento di un modello; Quando la perdita di convalida smette di diminuire (e soprattutto quando la perdita di convalida inizia ad aumentare e la perdita di addestramento sta ancora diminuendo)

Perché il set di convalida utilizzato :

Perché viene utilizzato il set di convalida


3

Supponi di allenare un modello su un set di allenamento e di misurarne le prestazioni su un set di test. Pensi che ci sia ancora spazio per miglioramenti e provi a modificare gli iperparametri (se il modello è una rete neurale - gli iperparametri sono il numero di layer o nodi nei layer). Ora ottieni prestazioni leggermente migliori. Tuttavia, quando il modello è soggetto ad altri dati (non nel set di test e formazione), è possibile che non si ottenga lo stesso livello di precisione. Questo perché è stata introdotta una certa distorsione mentre si modificavano gli iperparametri per ottenere una maggiore precisione sul set di test. Fondamentalmente hai adattato il modello e gli iperparametri per produrre il modello migliore per quel particolare set di allenamento.

Una soluzione comune è quella di dividere ulteriormente il set di formazione per creare un set di convalida . Adesso hai

  • set di allenamento
  • set di test
  • set di validazione

Si procede come prima ma questa volta si utilizza il set di validazione per testare le prestazioni e modificare gli iperparametri. Più in particolare, si allena più modelli con vari iperparametri sul set di addestramento ridotto (ovvero, il set di allenamento completo meno il set di convalida) e si seleziona il modello che funziona meglio sul set di convalida.

Dopo aver selezionato il modello con le migliori prestazioni sul set di validazione, ti alleni il modello migliore sul set completo di training (incluso il set di validazione) e questo ti dà il modello finale.

Infine, si valuta questo modello finale sul set di test per ottenere una stima dell'errore di generalizzazione.


0

Set di dati di training : il campione di dati utilizzato per adattarsi al modello.

Set di dati di convalida : il campione di dati utilizzato per fornire una valutazione imparziale di un modello adatto al set di dati di addestramento durante l'ottimizzazione degli iperparametri del modello. La valutazione diventa più distorta quando l'abilità nel set di dati di convalida viene incorporata nella configurazione del modello.

Set di dati di prova : il campione di dati utilizzato per fornire una valutazione imparziale di un modello finale adatto al set di dati di addestramento.


-15

In parole semplici definire set di allenamento, set di test, set di convalida

Set di allenamento: viene utilizzato per trovare i vicini più vicini. Set di convalida: serve per trovare diversi k che si applicano al set di treni. Set di test: viene utilizzato per trovare la massima precisione e dati invisibili in futuro.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.