La fattorizzazione matriciale è un semplice modello di incorporamento. Dato il la matrice del feedback A \(\in R^{m \times n}\), dov'è \(m\) numero di utenti (o query) ed \(n\) è il numero di elementi, il modello apprende:
- Una matrice di incorporamento utente \(U \in \mathbb R^{m \times d}\), dove la riga i rappresenta l'incorporamento per l'utente i.
- Una matrice di incorporamento degli elementi \(V \in \mathbb R^{n \times d}\), dove la riga j rappresenta l'incorporamento dell'elemento j.
Gli incorporamenti vengono appresi in modo che il prodotto \(U V^T\) sia una una buona approssimazione della matrice di feedback A. Tieni presente che \((i, j)\) valore di \(U . V^T\) è semplicemente il prodotto scalare \(\langle U_i, V_j\rangle\) degli incorporamenti di utenti \(i\) e \(j\), a cui vuoi avvicinarti \(A_{i, j}\).
Scelta della funzione obiettivo
Una funzione obiettivo intuitiva è la distanza al quadrato. Per farlo, minimizzare la somma degli errori quadrati in tutte le coppie di voci osservate:
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]
In questa funzione obiettivo, si somma solo le coppie osservate (i, j), cioè superiori a valori diversi da zero nella matrice del feedback. Tuttavia, sommando sui valori di uno non è una buona idea: una matrice di tutti i valori avrà una perdita minima e produrre un modello che non può fornire suggerimenti efficaci e generalizza male.
Potresti considerare i valori non osservati come zero e sommare voci nella matrice. Ciò corrisponde a ridurre al minimo Frobenius al quadrato distanza tra \(A\) e sua approssimazione \(U V^T\):
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]
Puoi risolvere questo problema quadratico tramite Scomposizione del valore singolare (SVD) della matrice. Tuttavia, Anche SVD non è una soluzione eccezionale, perché nelle applicazioni reali matrice \(A\) potrebbe essere molto sparse. Ad esempio, pensa a tutti i video su YouTube rispetto a tutti i video guardati da un determinato utente. La soluzione \(UV^T\) (che corrisponde all'approssimazione del modello della matrice di input) saranno probabilmente vicini allo zero, il che genera una delle prestazioni di generalizzazione.
Al contrario, la fattorizzazione della matrice ponderata scompone l'obiettivo nelle due seguenti somme:
- Una somma delle voci osservate.
- Una somma rispetto a voci non osservate (trattate come zeri).
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]
Qui, \(w_0\) è un iperparametro che pondera i due termini in modo che l'obiettivo non sia preso da una o l'altra. L'ottimizzazione di questo iperparametro è molto importante.
\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]
dove \(w_{i, j}\) è una funzione della frequenza della query i e dell'elemento j.
Ridurre al minimo la funzione obiettivo
Gli algoritmi comuni per ridurre al minimo la funzione obiettivo includono:
Discesa stocastica del gradiente (SGD) è un metodo generico per ridurre al minimo le funzioni di perdita.
L'API Weighted Alternating Least Squares (WALS) è specializzata in questo scopo specifico.
L'obiettivo è quadratico in ciascuna delle due matrici U e V. Nota, tuttavia, che il problema non è convesso congiuntamente. Il comando WALLS inizializza gli incorporamenti in modo casuale, alternando tra loro:
- Correggere \(U\) e trovare soluzioni per \(V\).
- Correggere \(V\) e trovare soluzioni per \(U\).
Ogni fase può essere risolta esattamente (tramite la soluzione di un sistema lineare) e può la distribuzione. È garantita la convergenza di questa tecnica poiché ogni passaggio per ridurre la perdita.
SGD e WALS
SGD e WALS presentano vantaggi e svantaggi. Esamina le informazioni riportate di seguito per confrontare questi due aspetti:
SGD
Molto flessibile: può utilizzare altri dati di perdita .
Può essere parallelizzato.
Più lenta: la convergenza non avviene così rapidamente.
È più difficile gestire le voci non osservate (è necessario per utilizzare campionamento negativo o gravità).
WALS
Si basa solo su Loss Squares.
Può essere parallelizzato.
Converge più velocemente di SGD.
Maggiore facilità di gestione delle voci non osservate.