Reti a due torri e campionamento negativo nei sistemi di raccomandazione |  di Michael Roizner |  Novembre 2023

 | Intelligenza-Artificiale

Comprendi gli elementi chiave che alimentano i motori di raccomandazione avanzati

Uno dei tipi di modelli più importanti attualmente nei sistemi di raccomandazione sono le reti neurali a due torri. Sono strutturati come segue: una parte della rete neurale (torre) elabora tutte le informazioni sulla query (utente, contesto), mentre l’altra torre elabora le informazioni sull’oggetto. Gli output di queste torri sono incorporamenti, che vengono poi moltiplicati (prodotto scalare o coseno, come abbiamo già discusso Qui). Una delle prime menzioni dell’applicazione di tali reti per le raccomandazioni si trova in un articolo molto buono carta su YouTube. A proposito, ora definirei questo articolo un classico e il più adatto per entrare nel campo delle raccomandazioni.

Dal giornale Reti neurali profonde per i consigli di YouTube

Cosa caratterizza tali reti? Sono molto simili alla fattorizzazione di matrici, che in realtà è un caso speciale, prendendo solo ID utente E numero identificativo dell’oggetto come input. Tuttavia, se le confrontiamo con reti arbitrarie, la restrizione sull’attraversamento ritardato (che non consente agli ingressi di diverse torri di fondersi fino alla fine) rende le reti a due torri estremamente efficienti nell’applicazione. Per creare raccomandazioni per un singolo utente, dobbiamo calcolare una volta la torre di query e quindi moltiplicare questo incorporamento per gli incorporamenti di documenti, che di solito sono precalcolati. Questo processo è molto veloce. Inoltre, questi incorporamenti di documenti precalcolati possono essere organizzati in un file ANN indice (ad es. HNSW) per trovare rapidamente buoni candidati senza dover scorrere l’intero database.

Possiamo ottenere un’efficienza ancora maggiore calcolando la parte utente non per ogni query, ma in modo asincrono, con una certa regolarità. Tuttavia, ciò significa sacrificare la considerazione della storia e del contesto in tempo reale.

Le torri stesse possono essere piuttosto sofisticate. Ad esempio, nella parte utente, possiamo utilizzare il meccanismo di auto-attenzione per elaborare la cronologia, che si traduce in un trasformatore per la personalizzazione. Ma quanto costa introdurre la restrizione sugli attraversamenti tardivi? Naturalmente, ciò influisce sulla qualità. Nello stesso meccanismo di attenzione non possiamo utilizzare gli elementi che attualmente desideriamo raccomandare. Idealmente, vorremmo concentrarci su elementi simili nella cronologia dell’utente. Pertanto, le reti con incrocio anticipato vengono tipicamente utilizzate nelle fasi successive della graduatoria, quando restano solo poche decine o centinaia di candidati, mentre quelle con incrocio tardivo (a due torri) vengono utilizzate, viceversa, nelle fasi iniziali e per i candidati generazione.

(Tuttavia, esiste un argomento puramente teorico secondo cui qualsiasi classificazione ragionevole di documenti per query diverse può essere codificata tramite incorporamenti di dimensionalità sufficiente. Inoltre, i decodificatori in PNL operano effettivamente secondo lo stesso principio, ricalcolando solo la torre di query per ciascun token.)

Un punto di particolare interesse è la funzione di perdita utilizzata per addestrare reti a due torri. In linea di principio, possono essere addestrati con qualsiasi funzione di perdita, mirando a vari risultati e persino avendone più di diversi per teste diverse (con incorporamenti diversi in ciascuna torre). Tuttavia, una variante interessante è l’allenamento con una perdita softmax sui negativi in ​​batch. Per ogni coppia query-documento nel dataset, gli altri documenti nello stesso mini-batch vengono utilizzati come negativi in ​​combinazione con la stessa query nella perdita softmax. Questo metodo è una forma altamente efficace di mining negativo.

Ma è importante considerare l’interpretazione probabilistica di tale funzione di perdita, che non è sempre ben compresa. In una rete addestrata,

L’esponente del punteggio è proporzionale non alla probabilità a priori del documento data la query, ma al PMI (Informazione reciproca puntuale), specifico per la query. I documenti più popolari non saranno necessariamente raccomandati più spesso da un tale modello, perché durante la formazione appaiono proporzionalmente più spesso come negativi. Usare il punteggio come funzionalità può essere utile, ma per la classifica finale e la generazione dei candidati, ciò può portare a documenti molto specifici, ma di scarsa qualità.

Google, nell’a cartaha suggerito di combattere questo problema con la correzione logQ durante l’addestramento. Noi, invece, solitamente affrontiamo questo problema in fase di presentazione della domanda, non durante la formazione, semplicemente moltiplicando per la probabilità a priori del documento P(D). Tuttavia, non abbiamo mai confrontato questi approcci, il che sarebbe davvero un confronto interessante.

Esiste un algoritmo di filtraggio collaborativo noto come ALS implicita (IALS). ho già l’ho menzionato prima. Nell’era pre-neurale delle reti era senza dubbio uno degli algoritmi più popolari. La sua caratteristica distintiva è l’efficace ‘estrazione’ di negativi: tutte le coppie utente-oggetto senza una storia di interazione vengono trattate come negative (anche se con meno peso rispetto alle interazioni effettive). Inoltre, a differenza del mining vero e proprio, questi negativi non vengono campionati ma vengono utilizzati nella loro interezza in ogni iterazione. Questo approccio è noto come regolarizzazione implicita.

Com’è possibile? Date le dimensioni ragionevoli delle attività (numero di utenti e oggetti), dovrebbero esserci così tanti aspetti negativi che anche elencarli richiederebbe più tempo dell’intero processo di formazione. La bellezza dell’algoritmo sta nel fatto che, utilizzando la perdita MSE e il metodo dei minimi quadrati, è possibile precalcolare alcuni elementi separatamente per tutti gli utenti e separatamente per tutti gli oggetti prima di ogni iterazione completa, e questo è sufficiente per effettuando una regolarizzazione implicita. In questo modo, l’algoritmo evita una dimensione quadratica. (Per maggiori dettagli vi rimando a uno dei miei giornali preferiti di quel periodo).

Un paio di anni fa, ho riflettuto se fosse possibile combinare questa meravigliosa idea di regolarizzazione implicita con la tecnologia più avanzata delle reti neurali a due torri. È una domanda complessa, poiché esiste un’ottimizzazione stocastica anziché un batch completo e c’è una riluttanza a tornare alla perdita MSE (almeno per l’intera attività; in particolare per la regolarizzazione, potrebbe essere ok) poiché tende a produrre risultati inferiori.

Ho pensato a lungo e intensamente e alla fine ho trovato una soluzione! Per un paio di settimane, ero euforico, aspettando con impazienza come avremmo provato questo al posto dei negativi in ​​batch.

E poi, ovviamente (come spesso accade in questi casi), ho letto su un giornale che tutto era già stato pensato tre anni prima. Ancora una volta, lo era Google. Più tardi, in quello stesso articolo sulla correzione logQhanno dimostrato che la perdita softmax con negativi in ​​batch funziona meglio della regolarizzazione implicita.

È così che siamo riusciti a risparmiare tempo e a non testare questa idea 🙂

Dopotutto, abbiamo esempi reali di impressioni di raccomandazioni e, se un utente non ha interagito con esse, queste possono essere utilizzate come forti elementi negativi. (Ciò non considera il caso in cui il servizio di raccomandazione stesso non è stato ancora lanciato e non ci sono ancora impressioni.)

La risposta a questa domanda non è così banale; dipende da come intendiamo applicare esattamente il modello addestrato: per la classifica finale, per la generazione dei candidati o semplicemente come funzionalità per l’input in un altro modello.

Cosa succede quando addestriamo il modello solo sulle impressioni effettive? Si verifica un bias di selezione piuttosto forte e il modello impara a distinguere bene solo quei documenti che sono stati mostrati in quel particolare contesto. Sui documenti (o più precisamente, coppie query-documento) che non sono stati mostrati, il modello funzionerà molto peggio: potrebbe sovrastimare per alcuni documenti e sottostimare per altri. Certamente questo effetto può essere mitigato applicando l’esplorazione nel ranking, ma il più delle volte questa è solo una soluzione parziale.

Se un candidato generatore viene addestrato in questo modo, potrebbe produrre una pletora di documenti in risposta a una query, documenti che non ha mai visto in un contesto del genere e per i quali sovrastima le previsioni. Tra questi documenti spesso c’è completa spazzatura. Se il modello di classificazione finale è sufficientemente buono, filtrerà questi documenti e non li mostrerà all’utente. Tuttavia, continuiamo a sprecare inutilmente la quota di candidati (e potrebbero non esserci più documenti idonei). Pertanto, i candidati generatori dovrebbero essere formati in modo tale da comprendere che la maggior parte della documentazione di base è di scarsa qualità e non dovrebbe essere raccomandata (nominata come candidati). Il campionamento negativo è un buon metodo per questo.

I modelli per la classifica finale sono molto simili alla generazione dei candidati a questo riguardo, ma c’è un’importante distinzione: imparano dai propri errori. Quando il modello commette un errore sovrastimando le previsioni per determinati documenti, questi documenti vengono mostrati agli utenti e quindi potrebbero essere inclusi nel successivo set di dati di addestramento. Possiamo riqualificare il modello su questo nuovo set di dati e distribuirlo nuovamente agli utenti. Emergeranno nuovi falsi positivi. Il processo di raccolta e riqualificazione del set di dati può essere ripetuto, risultando in una sorta di apprendimento attivo. In pratica, sono sufficienti solo poche iterazioni di riqualificazione perché il processo converga e perché il modello smetta di raccomandare sciocchezze. Naturalmente, il danno derivante dalle raccomandazioni casuali deve essere valutato e talvolta vale la pena prendere ulteriori precauzioni. Ma nel complesso, in questo caso non è necessario il campionamento negativo. Al contrario, può compromettere l’esplorazione, facendo sì che il sistema rimanga in un ottimo locale.

Se il modello viene utilizzato per le funzionalità come input in un altro modello, si applica la stessa logica, ma il danno derivante dalla sovrastima delle previsioni per documenti candidati casuali è ancora meno significativo perché altre funzionalità possono aiutare a correggere la previsione finale. (Se un documento non arriva nemmeno all’elenco dei candidati, non ne calcoleremo le caratteristiche.)

A un certo punto, abbiamo testato direttamente e scoperto che, come funzionalità, ALS standard funziona meglio di IALS, ma non dovrebbe essere utilizzato per la generazione di candidati.

Fonte: towardsdatascience.com

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *