Qual è la differenza tra RNN di generazione di testo basato su parole e basato su caratteri?


15

Durante la lettura della generazione di testo con le reti neurali ricorrenti ho notato che alcuni esempi sono stati implementati per generare testo parola per parola e altri carattere per carattere senza dichiarare effettivamente il perché.

Quindi, qual è la differenza tra i modelli RNN che prevedono la base del testo per parola e quelli che prevedono la base del testo per carattere ? RNN basato su parole richiede una dimensione del corpus maggiore? Le RNN basate sui caratteri si generalizzano meglio? Forse l'unica differenza è la rappresentazione in input (codifica one-hot, incorporamenti di parole)? Quali scegliere per la generazione di testo?

Risposte:


15

Ecco cosa ho imparato di recente.

Ovviamente, quando si parla di RNN di generazione di testo, si parla di modelli linguistici RNN. Quando chiediamo informazioni sugli RNN di generazione di testi basati su word / char , ci chiediamo dei modelli di linguaggio RNN basati su word / char (LM).

Gli LM basati su parole mostrano una maggiore precisione e costi di calcolo inferiori rispetto agli LM basati su caratteri .

Questo calo di prestazioni è improbabile a causa della difficoltà per il modello a livello di carattere di acquisire memoria a breve termine più lunga, poiché anche le reti ricorrenti di memoria a più breve termine (LSTM) funzionano meglio con l'input basato su parole.

Questo perché gli LM RNN basati su char richiedono uno strato nascosto molto più grande per modellare con successo dipendenze a lungo termine, il che significa costi di calcolo più elevati.

Pertanto, possiamo dirlo

una delle differenze fondamentali tra il livello di parola e i modelli di livello di carattere è nel numero di parametri a cui RNN deve accedere durante l'addestramento e il test. Più piccolo è lo strato di input e output di RNN, più grande deve essere lo strato nascosto completamente collegato, il che rende costoso l'addestramento del modello.

Tuttavia, le LM RNN basate su caratteri migliorano le lingue modello con una ricca morfologia come Finish, Turco, Russo ecc. L'uso delle LM RNN basate su parole per modellare tali lingue è difficile se possibile e non è consigliato.

L'analisi di cui sopra ha senso soprattutto quando si guarda il testo di output, generato da RNN basati sui caratteri:

La sorpresa degli investitori non avrebbe raccolto fondi. Non sono la compagnia con il tempo che ci sono tutti interessanti rapidamente, non devo scendere dagli stessi programmatori.

Mentre il semplice LM a rischio massimo basato su caratteri con una finestra di 13 caratteri offre questo:

E quando ha fatto molti mattoni solidi. Li impilò in pile e le calpestò i piedi. Il dottore gli ha diagnosticato una mazza. La ragazza e il suo ragazzo le hanno chiesto di uscire.

Naturalmente ho scelto l'esempio (in realtà la maggior parte degli esempi di LM LM sembravano migliori di qualsiasi testo generato da RNN che ho letto finora) e questo piccolo LM LM è stato addestrato su un corpus più semplice ma ottieni l'idea: la probabilità condizionale semplice genera meglio testi di RNN basato su caratteri molto più complessi .

Gli LMR RNN basati su char possono imitare sequenze grammaticalmente corrette per una vasta gamma di lingue, richiedono un livello nascosto più grande e computazionalmente più costosi mentre gli LM RNN basati su parole si allenano più velocemente e generano testi più coerenti, eppure anche questi testi generati sono tutt'altro che sensati .


1
Ottimo commento. Va aggiunto che per alcuni problemi l'uno o l'altro potrebbe avere più senso a prescindere dalle preoccupazioni computazionali. Ad esempio, se il tuo obiettivo è studiare i vettori di parole per trovare relazioni tra le parole o se vuoi generare un testo basato su un argomento di parole, allora devi andare con RNN basato su parole. E, al contrario, ci sono probabilmente problemi in cui RNN basato sui caratteri è la strada da percorrere. Dipende anche da ciò che l'utente sta cercando di fare.
Ricardo Cruz,

Non ho capito il tuo ultimo commento: "RNN LM basato su char (...) non è all'altezza quando si tratta di dare un senso reale." Non ho visto neanche un RNN basato su Word. Perché hai isolato i modelli basati su caratteri qui?
Ricardo Cruz,

Ho aggiornato il finale ambiguo.
minerali

Bella risposta! In effetti qualcuno potrebbe facilmente aggiungere che dipende molto dall'attività coinvolta, dalle dimensioni del set di dati, dalle lingue e dal livello di pre-elaborazione che sei disposto a fare. Ad esempio, per elaborare linguaggi morfologici più ricchi e gestire parole fuori dal vocabolario (OOV), puoi anche utilizzare un modello di parole con lemmatizzazione, codifica delle posizioni e aggiungere prefissi, suffissi, ecc.
Claude COULOMBE,

5

C'è un bel commento sul linguaggio che modella un miliardo di parole . Di seguito sono riportati alcuni estratti:

I modelli a livello di parola presentano un vantaggio importante rispetto ai modelli a livello di carattere.
Prendi la seguente sequenza come esempio (una citazione di Robert A. Heinlein):

I progressi non sono fatti dai mattinieri. È fatto da uomini pigri che cercano di trovare modi più semplici per fare qualcosa.

Dopo la tokenizzazione, il modello a livello di parola potrebbe visualizzare questa sequenza come contenente 22 token. D'altro canto, il livello del personaggio visualizzerà questa sequenza come contenente 102 token. Questa sequenza più lunga rende l'attività del modello di carattere più difficile del modello di parola, poiché deve tenere conto delle dipendenze tra più token in più intervalli di tempo. Un altro problema con i modelli di linguaggio dei caratteri è che devono imparare l'ortografia oltre alla sintassi, alla semantica, ecc. In ogni caso, i modelli di linguaggio delle parole avranno in genere un errore inferiore rispetto ai modelli di caratteri

Il vantaggio principale del personaggio rispetto ai modelli linguistici di parole è che hanno un vocabolario davvero piccolo. Ad esempio, il set di dati GBW conterrà circa 800 caratteri rispetto a 800.000 parole (dopo aver eliminato i token a bassa frequenza). In pratica, ciò significa che i modelli di personaggi richiederanno meno memoria e avranno inferenze più veloci rispetto alle loro controparti di parole. Un altro vantaggio è che non richiedono la tokenizzazione come fase di preelaborazione.


1

A mio avviso, anche le RNN basate sui personaggi avranno prestazioni migliori, ma hanno bisogno di molti più dati di quelli che i modelli basati su parole e i modelli basati su caratteri devono addestrare per un periodo di tempo molto più lungo. Direi che si tratta più di una prova ed errore, sia di un compromesso tra dati e potenza di calcolo disponibile.

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.