Il titolo di questa domanda è una domanda separata al suo testo, quindi risponderò ad entrambi separatamente (dato che l'uno conduce nell'altro).
- Come posso dedurre frasi invisibili:
# ... trained model stored in var model
list_of_words = ["this", "is", "a", "new","unseen", "sentence"]
inferred_embedding = model.infer_vector(list_of_words)
Come funziona ? Come nel documento originale ( https://cs.stanford.edu/~quocle/paragraph_vector.pdf ) abbiamo due matrici ponderali inizializzate a caso che è lo stesso matrice da Word2Vec in cui ogni colonna o riga viene mappata a un vettore parola e che è la matrice del documento in cui ogni colonna o riga viene mappata a una frase / documento. Durante l'allenamento, un classificatore softmax di dimensioni fisse della finestra sposta (in una finestra mobile come la moda) minimizzando la seguente probabilità di log (cross-entropia multi-classe):W∈ RN× PD ∈ RM× RK
1MΣi = 1M1| Dio|Σt = k| Di - 1| -kl o g( p ( wiot| wiot - k, . . . , wiot + k, Dio) )
Dove corrisponde al vettore che rappresenta la frase ,il suo numero di parole in quel documento e è la parola nel documento . Tutto ciò che ricorda la retro-propagazione è il documento su cui stiamo attualmente spostando il nostro softmax con finestre e aggiorna solo quella riga nella matrice insieme alle parole in quella finestra.Dioiot h| Dio|wiottt hiot hD
Inoltre, quando vogliamo dedurre qualcosa che non è nel set di addestramento, ripariamo modo che non venga aggiornato e aumentiamo la matrice con la nuova riga inizializzata casualmente e ci alleniamo solo per diverse iterazioni (con la nuova riga che tiene l'incorporamento per il vettore inferito) . Questo porta alla domanda 2.WD
- Possiamo dedurre che una frase forse invisibile corrisponde esattamente a una frase nel set di addestramento?
La risposta breve è no e non è per questo che Doc2Vec serve. A causa dell'inizializzazione casuale + della complessità della convergenza e dell'addestramento il tuo vettore inferito non sarà mai esattamente lo stesso del suo vettore corrispondente in questo è il motivo per cui Gensim non ha incorporato una funzione per supportare questo, come mai dato che il modello è stato bene addestrato questi due vettori dovrebbero essere arbitrariamente vicini l'uno all'altro in modo da poter concludere che sono estremamente simili.D
Anche riparare il seme casuale potrebbe non funzionare, ci sono così tante altre variabili che possono influenzare la sua convergenza, vedi la prima risposta su https://github.com/RaRe-Technologies/gensim/issues/374 .
In ogni caso puoi trovare l'etichetta più simile nel tuo set di dati con una frase inferita semplicemente ripetendo il tuo set di allenamento e confrontando la somiglianza con il vettore inferito. Ma perché dovresti voler fare una corrispondenza esatta con qualcosa nel set di allenamento? questo è ciò che sono le espressioni regolari ai fini dell'incorporamento di questi documenti per attività di apprendimento supervisionate o non supervisionate (ovvero classificazione e raggruppamento).