2015-05-27 3 views
6

Ho scaricato 100 miliardi di file vettoriali pretrained di Google News. Inoltre, sto anche allenando i miei dati da 3 GB che producono un altro file vettoriale pre-esistente. Entrambi hanno 300 dimensioni e più di 1 GB di dimensioni.Unione di modelli preained in Word2Vec?

Come unire questi due enormi vettori pre-formati? o come posso addestrare un nuovo modello e aggiornare i vettori su un altro? Vedo che word2vec basato su C non supporta l'allenamento in batch.

Sto cercando di calcolare l'analogia delle parole da questi due modelli. Credo che i vettori appresi da queste due fonti produrranno risultati piuttosto buoni.

risposta

11

Non esiste un modo semplice per unire i risultati finali di sessioni di allenamento separate.

Anche per gli stessi dati esatti, una leggera randomizzazione da seeding iniziale o jitter di schedulazione del thread comporterà diversi stati finali, rendendo i vettori solo completamente confrontabili all'interno della stessa sessione.

Questo perché ogni sessione trova a utile configurazione di vettori ... ma ci sono molte configurazioni ugualmente utili, piuttosto che un singolo migliore.

Ad esempio, qualunque stato finale raggiunto ha molte rotazioni/riflessioni che possono essere ugualmente valide nell'attività di previsione dell'allenamento, oppure eseguire esattamente come su altri compiti (come la risoluzione delle analogie). Ma la maggior parte di queste alternative possibili non avrà coordinate che possono essere mescolate e abbinate per confronti utili l'uno contro l'altro.

Precaricare il modello con i dati delle precedenti sessioni di allenamento potrebbe migliorare i risultati dopo un maggior addestramento con i nuovi dati, ma non sono a conoscenza di alcun test rigoroso di questa possibilità. L'effetto probabilmente dipende dagli obiettivi specifici, dalle scelte dei parametri e dalla quantità di dati vecchi e nuovi simili o rappresentativi dei dati finali rispetto ai quali verranno utilizzati i vettori.

Ad esempio, se il corpus di Google News è diverso dai tuoi dati di allenamento o il testo che utilizzerai per comprendere i vettori di parole, utilizzarlo come punto di partenza potrebbe rallentare o pregiudicare il tuo allenamento. D'altra parte, se ti alleni sui tuoi nuovi dati abbastanza a lungo, alla fine qualsiasi influenza dei valori precaricati potrebbe essere diluita al nulla. (Se si desidera un risultato "misto", è necessario allenarsi simultaneamente sui nuovi dati con un obiettivo interlacciato per riportare i vettori ai valori del set di dati precedente.)

Metodi per combinare i risultati di sessioni indipendenti potrebbe fare un buon progetto di ricerca.Forse il metodo utilizzato nei progetti di traduzione linguistica word2vec - l'apprendimento di una proiezione tra gli spazi del vocabolario - potrebbe anche "tradurre" tra le diverse coordinate di diverse esecuzioni. Forse il blocco di alcuni vettori sul posto, o l'allenamento sul duplice obiettivo di "prevedere il nuovo testo" e "stare vicino ai vecchi vettori" darebbe risultati significativamente migliorati.

+0

La mia comprensione è che la qualità del vettore migliora molto più i dati su cui è addestrato. Che ne dici di unire tutte le fonti di dati (GoogleNews, Wikipedia, Gutenberg) e quindi di formare un singolo file vettoriale? Non riesco a capire perché la qualità del vettore si diluisce quando viene addestrata su un altro corpus? – pbu

+0

Il corpus di testo di GoogleNews ("circa 100 miliardi di parole") non è disponibile: solo i vettori finali. Se li carichi, quindi continua ad allenarti su altri dati, ogni pass che fai su nuovi dati spinge i vettori a essere più bravi a predire il tuo nuovo testo, ma meno bene sul testo GN non visto per un po '. Con abbastanza nuovo addestramento, * qualsiasi * influenza da valori iniziali GN-source diventerà arbitrariamente piccola. Più adattamenti del modello al testo più recente rendono la qualità del vettore "migliore" o "peggiore"? Non chiaro/dipende. (Il testo GN era già ideale per il tuo compito particolare, o il testo più recente è migliore?) – gojomo

+1

Non sono sicuro che "arbitrariamente piccolo" sia corretto. La mia sensazione è che l'influenza mantenga un significato. –

3

Questi sono i miei metodi:

  • Scarica il raccolti da Google News e unirli nei dati, poi li treno!

  • Dividere il set di dati in 2 set di dati di uguale dimensione, quindi addestrarli entrambi. Ora hai 3 modelli, quindi puoi utilizzare il metodo di fusione per prevedere.

Spero che questi possano aiutarti!

+0

Come interrogare i due file e calcolare la media delle risposte? Inoltre non riesco a formare un set di dati così grande, quindi mi baso solo su modelli pre-addestrati. – pbu

+0

Le risposte medie suonano alla grande! Puoi anche provare a concatenarli in un unico vettore. –

+0

Dove trovo le colture da Google News? Avete un link? – pbu