Posso addestrare ulteriormente una rete neurale addestrata solo con qualche nuovo carattere?

0

Vorrei realizzare un software OCR semiautomatico per i documenti scritti a mano offline, in cui l'OCR tenta di riconoscere le parole e l'utente ha la capacità di correggere i fallimenti del riconoscimento definendo i caratteri non riconosciuti.

Ho trovato un problema simile, ma in realtà non ha risposto alla mia domanda: link

Il mio primo approccio è il seguente: Allena una rete neurale prima di tutto ed eseguo il primo riconoscimento sul documento selezionato, quindi quando l'utente definisce un carattere specifico (ad esempio l'utente seleziona un carattere sull'immagine e dice che è una lettera "a") modifica solo i pesi nella rete neurale (runtime) e riavvia il riconoscimento sul documento. È possibile "addestrare rapidamente" l'intera rete solo con alcuni nuovi caratteri speciali in modo che i personaggi originali possano essere ancora riconoscibili?

Il mio secondo approccio: Creo due reti neurali indipendenti. Il primo è l'universale come sopra e il secondo è un vuoto. Dopo che la rete "universale" ha terminato il riconoscimento, aggiungo i nuovi caratteri specificati per addestrare la seconda rete neurale vuota e quindi riavviare il riconoscimento solo con questo NN.

    
posta Dániel Kárpáti 17.05.2017 - 00:00
fonte

3 risposte

2

È possibile fino a quando non hai fatto nulla per consolidare l'allenamento.

Una rete neurale inizia pesata a caso. Mentre ci si allena, i pesi assumono gradualmente valori che producono l'output desiderato (attraverso un ciclo di feedback). Una volta che sei soddisfatto, smetti di allenarti.

Ora vuoi aggiungere nuove cose che la rete deve riconoscere. Belle. O ricominciare casualmente o iniziare dove sei ora. È difficile dire quale ti porterà prima.

Anche se non hai ridotto il numero di neuroni al minimo necessario, dovresti allenarlo con un nuovo personaggio.

Tuttavia, non pensare che i tuoi vecchi personaggi possano essere semplicemente rimossi dal set di allenamento. Con un addestramento sufficiente saranno dimenticati.

    
risposta data 17.05.2017 - 00:24
fonte
0

Sebbene l'allenamento e il riconoscimento siano piuttosto diversi, è teoricamente possibile continuare l'allenamento dopo l'iniziale, anche sul dispositivo dell'utente finale. Tuttavia, la formazione NN funziona utilizzando i set di dati enormi . Sembra sospetto che l'utente finale sia in grado di fornire un set di dati sufficientemente ampio per la regolazione dell'addestramento in modo tale che l'NN venga completamente aggiornato per quell'utente. Confronta, ad esempio, la dimensione del set di allenamento originale con ciò che l'utente finale potrebbe fare nel corso di alcuni mesi, probabilmente una differenza nella dimensione del set di dati sulla scala di più di pochi ordini di grandezza.

    
risposta data 17.05.2017 - 05:27
fonte
0

Esistono tecniche, come la discesa del gradiente stocastico, che eseguono la formazione online (ad esempio, si allena la rete un esempio alla volta e si può sempre aggiungere altro). Il problema è che le reti neurali sono animali fondamentalmente statistici, il che significa che se la rete neurale pensa che X sia A, mentre potrebbe essere possibile riqualificarlo per classificare X come B, potrebbe richiedere un po 'di convincimento (più esempi di X essendo B) - questo dipende anche da quanto ben rappresentato è X nel set di allenamento o da quanto sia sicura la rete che X è A.

Puoi rendere più flessibile i nuovi esempi agitando gli iperparametri.

A condizione che l'utente apporti abbastanza correzioni, alla fine migliorerà l'accuratezza.

Molto tempo vorrei prendere in considerazione modi per migliorare la rete originale. Un suggerimento potrebbe essere quello di memorizzare le correzioni dell'utente, raccoglierle come dati anonimi e aggiungerli al set di allenamento.

Non penso che questo sia utile nel tuo caso, menzionerò il trasferimento di conoscenza [1], dal momento che potrebbe valere la pena di investigare. È stato osservato che i primi strati di una rete sono abbastanza identici (ad esempio, nel riconoscimento di immagini, il primo strato è quasi sempre un filtro Gabor o un blob di colore). Il trasferimento della conoscenza implica l'assunzione dei primi n strati di una rete, inizializzando a caso gli ultimi m strati e riqualificando l'intera rete. Questo potrebbe richiedere un set di dati più piccolo e una potenza di calcolo inferiore, quindi potresti essere in grado di farlo sui computer degli utenti.

[1] - link

    
risposta data 17.05.2017 - 11:43
fonte

Leggi altre domande sui tag