Il 4 aprile, presso la Microsoft House, si è svolta la quarta puntata di ODSC, una delle community più grandi di Milano in tema Data Science. 

È stato trattato il tema dei Recommender System in ambiti che coinvolgono i gusti personali dei consumatori.

Dopo l’introduzione teorica sui sistemi di raccomandazione (vedi parte 1) la serata prosegue discutendo di Deep Learning e di reti neurali e di come queste possano essere utilizzate nel caso del personal shopper e nella gestione di dati di tipo visuale. 

Le reti neurali prese in analisi sono le CNN (Convolutional Neural Network) una particolare classe di reti neurali che hanno come obiettivo quello di creare una rappresentazione sintetica dell’immagine di input.

Il metodo utilizzato prevede che la stessa immagine venga attraversata da vari livelli che permetteranno la costruzione di una piramide. Lungo questa piramide, l’immagine viene ridotta nelle dimensioni spaziali, per essere aumentata in termini di profondità. Il risultato è un vettore la cui dimensione espone la complessità di rappresentazione costruita.

Più il vettore ha una grande dimensione, più la sintesi creata tramite la CNN rappresenta qualcosa di complesso e approfondito.

Per individuare le features caratteristiche di una immagine si sfruttano i layer convoluzionali. Ai layer convoluzionali si aggiungono ulteriori layer che hanno il compito di introdurre non linearità nel modello.

Il limite delle CNN (Convolutional Neural Networks)

Le CNN presentano un limite: riescono ad estrapolare features intrinseche all’oggetto. Sono quindi adatte per individuare l’appartenenza dell’oggetto ad una determinata classe già conosciuta. Quello che interessa invece sono le similarità tra due immagini. È necessario costruire una architettura più complessa che sfrutta le CNN (sottoforma di blocchi) per sfruttarne la rappresentazione che fanno dell’immagine.

In questo modo si mettono in relazione le due rappresentazioni per poter analizzare la distribuzione di provenienza e per esprimere un giudizio sullo stile dei due prodotti.

Per risolvere il problema sono state utilizzate delle reti neurali siamesi, costituite da due reti gemelli che prendono due input sui quali si vuole esprimere un giudizio sulla similarità. Sono due reti identiche che condividono gli stessi pesi, sia allo stato iniziale che ad ogni iterazione del modello. Vengono inoltre aggiornate entrambe con le stesse modalità.

L’output restituito dalle due reti è una rappresentazione dell’immagine di input, che verrà messa in relazione per poter inferire qualcosa sulla similarità delle due immagini di input.

Le caratteristiche di tale reti sono la simmetria e la consistenza.

  • Simmetria: il risultato sarà sempre lo stesso, indipendentemente da dove verrà posizionata l’immagine.
  • Consistenza: le rappresentazioni vettoriali saranno vicine nello spazio sul quale si sta proiettando se sono simili le immagini di ingresso, lontani se non lo sono, ovvero che non provengono dalla stessa distribuzione.

Caso di studio: Personal shopper

Nel caso esposto si ha come immagine di input due capi di abbigliamento.
Le gambe delle reti siamesi sono delle CNN e la rappresentazione viene messa in relazione tramite una distanza assoluta dei due vettori.

Questa distanza viene poi pesata da un vettore di una preferenza per ottenere lo score finale di preferenza, ovvero la relazione o differenza degli score di preferenza delle due immagini di input.

L’allenamento avviene in modo asincrono: qualunque sia l’immagine di ingresso i pesi delle reti verranno sempre aggiornati, mentre il vettore di preferenze viene aggiornato solamente quando guarda la coppia che risulta sensata per l’utente preso in considerazione. È quindi l’aggiornamento dei pesi del vettore di preferenze ad essere asincrono, rispetto a quelli delle reti CNN.

Nella CNN non c’è il livello che esprime la probabilità di appartenenza ad una classe in quanto si è voluto costruire un blocco da inserire nella struttura più complessa rappresentata dalla siamese.

Ci sono 5 livelli convoluzionali con alla fine 3 layer densi. L’ultimo livello ha come dimensione di output la dimensione latente, ovvero quella che si sta cercando nella rappresentazione dell’immagini di input.

Keras

Keras predispone due modi per definire le reti: il primo in modo sequenziale, mentre il secondo in modo funzionale (un livello può avere come input degli output di due livelli separati). 

Il metodo di apprendimento usato è il Bayesian Personalized Ranking (BPR). Viene impiegato per ottimizzazioni di ordinamenti quando si utilizzano dati di feedback implicito.

Il fulcro del metodo si basa sul voler assegnare uno score sempre maggiore ad un oggetto già visto dall’utente, rispetto ad un item nuovo.

Si lavora a tripletta: un utente, un oggetto osservato (il prodotto che ha ricevuto la revisione) e un oggetto nuovo (per il quale non si è mai espressa nessuna preferenza).

Per ottenere una differenza di score sempre positiva (caso di feedback implicito, vedi parte 1) ci si affida alla scelta della funzione obiettivo e degli indici di performance (usati sia per validazione che test).

Viene inoltre impiegato l’AUC è l’indice di performance utilizzato. Il funzionamento è il seguente: si conta il numero di volte che si può garantire uno score di preferenza, associato all’oggetto revisionato, maggiore rispetto a quello dell’oggetto nuovo.

Visually-Aware Recommender System

Infine si giunge alla parte cardine: la costituzione di un Visually-Aware Recommender System.

Ad ogni iterazione viene scelto in modo casuale un utente, assieme ad un item revisionato. Viene altrettanto scelto un item presente nell’insieme degli oggetti mai visti.
Si ottiene una rappresentazione tramite le CNN, che si ricorda essere identiche. Usando un vettore di preferenza si ottiene la differenza di score. Non viene considerato un singolo utente, ma un batch di triplette. 

Bisogna porre attenzione sul modo in cui si disegna il vettore di preferenza. È importante essere sicuri che tale vettore per l’utente venga aggiornato solamente quando si ha una tripletta che gli compete.

Si introduce una matrice di preferenze con colonne che contengono i vettori di preferenza di tutti gli utenti del batch e come input una matrice diagonale con valore 1 in corrispondenza delle dimensioni che permettono di ritagliare la matrice nei punti di interesse.

Data la scelta di usare un layer denso per il vettore di preferenza, è stato necessario considerare una matrice srotolata.

Il funzionamento consiste nell’appendere un layer denso per ogni utente appartenente al batch.
La stessa rete convoluzionale viene richiamata una volta sola per essere applicata al ramo destro e sinistro, per permettere di allenare i pesi in modo uguale per entrambe le gambe.

Dopo l’esposizione del caso esempio, si delinea il valore aggiunto di un tale raccomandatore. Esso permette di definire un set di item che appartiene allo stesso stile, selezionato da un altro set, complementare rispetto agli oggetti revisionati.

Una novità rispetto ai raccomandatori tradizionali i quali, basandosi sugli item visti, consigliano altri items simili a quelli precedenti.

Articolo di Luca Zuino, Innovational Hacker
Se ti è piacuto questo articolo seguci dietro le quinte di ogni evento.

Lascia un commento

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