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.
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
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
Non sono sicuro che "arbitrariamente piccolo" sia corretto. La mia sensazione è che l'influenza mantenga un significato. –