Quello dei Vettori e del loro utilizzo, specie per la ricerca semantica, è un argomento che mi ha appassionato sin da quando ne lessi la prima volta. E ancora oggi, anche in relazione allo studio del Machine Learning che sto facendo, i Vectors continuano a destarmi domande a cui intendo dare risposte (per me stesso).
Anche in favore di coloro che leggeranno questo mio scritto, andiamo con ordine.
Cosa sono i Vettori?
I Vettori sono "la rappresentazione multidimensionale di un oggetto".
Ogni dimensione codifica informazioni specifiche dell'oggetto e, aggiungendosi alle altre, concorre alla composizione dell'Embedding (altro modo di riferirsi al vettore) dell'oggetto stesso.
Riprendendo l'esempio che ho proposto durante il mio speech,
consideriamo la seguente frase:
"L'ITDevCon è la conferenza su Delphi più attesa nell'anno"
Grazie all'impiego di un modello LLM, otteniamo il vettore corrispondente a questa frase:
Come detto, ogni elemento del vettore, codifica una particolarità semantica (in questo caso) del testo.
Ad esempio:
In maniera analoga otterremmo un vettore siffatto anche nel caso di un immagine, una E-Mail, un PDF, una traccia audio.....
...e il tutto con l'impego di modelli specifici, per il testo, per le immagini, per l'audio, pre-addestrati e performanti.
Sin qui, tutto bello: passo del testo o una immagine ad un transformer (BERT per il testo, ResNet per le immagini) e ottengo l'embedding.
Proviamo adesso ad immaginare uno di quegli scenari che giornalmente ci si trova ad analizzare; scenario in cui esiste un RDMS classico (Postgres, Firebird...), a supporto di un gestionale aziendale, dove sicuramente vi sono memorizzati prodotti. I prodotti sono il centro dell'attività aziendale e, per tanti, tantissimi possibili motivi, è richiesto un processo di embedding di ognuno di essi al fine di una loro gestione in un nuovo processo aziendale in cui la ricerca semantica è fondamentale.
Le Features
Un prodotto, in genere, è una entity ben definita: ha un codice, una descrizione, un prezzo, una unità di misura, un fornitore, una categoria, una sub categoria, una immagine......
...ma ha anche delle correlazioni: può essere collegato ad altri prodotti in quanto complementari; ha delle correlazioni sul tipo di impiego o sulla sua fattura. Ha comportamenti specifici. Ha informazioni sull'interazione coi clienti (vendite) o attraverso i canali social.
Ha, per generalizzare, informazioni utili e necessarie per una semantic search corretta e puntuale oltre a tutte quelle info (descrizione, prezzo....) che lo caratterizzano.
Tali informazioni, attributi e correlazioni, sono dette Features.
Le Features non possono essere ignorate. E non possono essere ignorate in particolare quando, come in questo caso esempflicativo, i prodotti sono oggetto di analisi e predizione tramite sistemi di Machine Learning. Anche se, in questi casi, l'embedding potrebbe non essere il fine ultimo.
Le Features e la loro estrazione: un processo fondamentale
Ma come estraiamo queste features?
Il processo, chiamato Feature Engineering, richiede una profonda comprensione sia del dominio applicativo che delle tecniche di elaborazione dati. Ad esempio, dal testo di una recensione potremmo estrarre il sentiment generale (positivo, negativo), le parole chiave più frequenti, la lunghezza del testo, la presenza di termini tecnici specifici (come visto nell'esempio precedente)
E non dimentichiamo i dati comportamentali: il numero di volte che un prodotto viene visualizzato prima dell'acquisto, il tempo medio speso sulla sua pagina, i prodotti visualizzati nella stessa sessione: sono tutte features che raccontano una storia sulla relazione tra il prodotto e il cliente.
L'estrazione delle features non è un processo semplice. Nè tanto meno breve.
L'estrazione delle features sta nel bilanciare la quantità di informazioni con la loro rilevanza. Non tutte le features hanno lo stesso peso, e parte della sfida sta proprio nel selezionare quelle che meglio rappresentano il nostro oggetto nel contesto specifico in cui andremo ad utilizzarle.
Nel processo di creazione dell'embedding, le features vengono poi elaborate e trasformate in quelle dimensioni vettoriali di cui parlavamo prima, contribuendo a creare una rappresentazione ricca e significativa del nostro prodotto.
La Sfida
La corsa alla 'Intelligenza Artificiale' da parte delle aziende apre nuovi scenari per chi come me, come noi, progetta e sviluppa soluzioni software per il business. Ma ci rende vulnerabili al fallimento quando la soluzione proposta non è il frutto di conoscenza reale del dominio e delle regole che il dominio impone.
E' sempre così e sempre lo sarà: l'analisi del dominio è fondamentale per il nostro lavoro.
E nell'ambito della Intelligenza Artificiale, materia molto ampia e molto tecnica, molto lontana dai canoni quotidiani e spesso dalla nostra formazione professionale sino ad oggi, l'insidia e il fallimento sono sempre dietro l'angolo.
E' per questo che è necessario essere coscienti che questo è un ambito di azione a cui approcciarsi con rispetto e umiltà. Non è semplice programmazione. Non lo può essere e non lo deve essere.
#codinglikeacoder
Nessun commento:
Posta un commento