Decollo! Come iniziare con il tuo primo progetto di ML 🚀

Decollo primo progetto di ML 🚀

Le persone che sono nuove nel mondo dell’apprendimento automatico spesso si imbattono in due ostacoli ricorrenti. Il primo è scegliere la libreria giusta da imparare, cosa che può essere spaventosa quando ce ne sono così tante tra cui scegliere. Anche una volta che hai scelto una libreria e hai seguito alcuni tutorial, il problema successivo è quello di creare il tuo primo grande progetto e definire adeguatamente i suoi obiettivi per massimizzare l’apprendimento. Se ti sei imbattuto in questi problemi e stai cercando una nuova libreria di apprendimento automatico da aggiungere al tuo toolkit, sei nel posto giusto!

In questo post ti guiderò attraverso alcuni consigli per passare da 0 a 100 con una nuova libreria utilizzando Sentence Transformers (ST) come esempio. Inizieremo capendo le basi di ciò che ST può fare e evidenzieremo alcune cose che lo rendono una grande libreria da imparare. Successivamente, condividerò la mia strategia collaudata per affrontare il tuo primo progetto autonomo. Parleremo anche di come ho costruito il mio primo progetto basato su ST e di cosa ho imparato nel processo 🥳

Cos’è Sentence Transformers?

Incorporare frasi? Ricerca semantica? Similarità coseno?!?! 😱 Solo poche settimane fa, questi termini mi confondevano così tanto da farmi girare la testa. Avevo sentito dire che Sentence Transformers era una libreria potente e versatile per lavorare con dati di linguaggio e immagini e volevo sperimentarla, ma temevo di non essere all’altezza. Come si è scoperto, non avrei potuto essere più sbagliato!

Sentence Transformers è tra le librerie integrate da Hugging Face, dove viene descritto come segue:

Calcola rappresentazioni vettoriali dense per frasi, paragrafi e immagini

In poche parole, Sentence Transformers risponde a una domanda: e se potessimo trattare le frasi come punti in uno spazio vettoriale multidimensionale? Ciò significa che ST ti permette di fornire una stringa arbitraria di testo (ad esempio, “Sono così contento di aver imparato a programmare con Python!”), e la trasforma in un vettore, ad esempio [0.2, 0.5, 1.3, 0.9]. Un’altra frase, come “Python è un ottimo linguaggio di programmazione.”, verrebbe trasformata in un vettore diverso. Questi vettori sono chiamati “embeddings” e svolgono un ruolo essenziale nell’apprendimento automatico. Se queste due frasi fossero incorporate con lo stesso modello, entrambe coesisteranno nello stesso spazio vettoriale, consentendo molte possibilità interessanti.

Ciò che rende ST particolarmente utile è che, una volta generati alcuni embeddings, puoi utilizzare le funzioni di utilità integrate per confrontare quanto una frase sia simile a un’altra, inclusi i sinonimi! 🤯 Un modo per farlo è utilizzare la funzione “Similarità coseno”. Con ST, puoi evitare tutta la fastidiosa matematica e chiamare la molto comoda funzione util.cos_sim per ottenere un punteggio da -1 a 1 che indica quanto le frasi incorporate siano “simili” nello spazio vettoriale che condividono: più grande è il punteggio, più simili sono le frasi!

Dopo aver incorporato le frasi, possiamo confrontarle con la Similarità coseno.

Confrontare le frasi per similarità significa che se abbiamo una collezione di frasi o paragrafi, possiamo trovare rapidamente quelli che corrispondono a una particolare query di ricerca con un processo chiamato ricerca semantica. Per alcune applicazioni specifiche di questo, consulta questo tutorial per creare un cercatore di codice GitHub o questo altro tutorial sulla costruzione di un motore FAQ utilizzando Sentence Transformers.

Perché imparare ad usare Sentence Transformers?

Innanzitutto, offre un modo semplice per acquisire esperienza pratica con modelli all’avanguardia per generare embeddings. Ho scoperto che creare i miei embeddings di frasi è stato uno strumento di apprendimento potente che ha contribuito a rafforzare la mia comprensione di come i modelli moderni lavorano con il testo, e ha anche stimolato la mia creatività per l’ideazione! In pochi minuti dal caricamento del modello msmarco-MiniLM-L-6-v3 in un notebook Jupyter, ho avuto un sacco di idee divertenti solo dall’incorporazione di alcune frasi e dall’esecuzione di alcune delle funzioni di utilità di ST.

In secondo luogo, Sentence Transformers è un punto di ingresso accessibile a molti concetti importanti di apprendimento automatico a cui puoi approfondire. Ad esempio, puoi usarlo per imparare clustering, distillazione del modello e persino avventurarti nel lavoro di testo-immagine con CLIP. In effetti, Sentence Transformers è così versatile che ha raggiunto quasi 8.000 stelle su GitHub, con oltre 3.000 progetti e pacchetti che dipendono da esso. Oltre alla documentazione ufficiale, c’è una grande quantità di contenuti creati dalla comunità (cerca alcuni link alla fine di questo post 👀), e l’ubiquità della libreria l’ha resa popolare nella ricerca.

In primo luogo, gli embedding sono fondamentali per diverse applicazioni industriali. Le ricerche di Google utilizzano gli embedding per abbinare testo a testo e testo a immagini; Snapchat li utilizza per “servire l’annuncio giusto all’utente giusto al momento giusto”; e Meta (Facebook) li utilizza per la loro ricerca sociale. In altre parole, gli embedding ti consentono di creare cose come chatbot, sistemi di raccomandazione, classificatori a zero-shot, ricerca di immagini, sistemi FAQ e altro ancora.

Oltre a tutto questo, è anche supportato da numerose integrazioni di Hugging Face 🤗.

Affrontare il tuo primo progetto

Quindi hai deciso di provare Sentence Transformers e hai lavorato su alcuni esempi nella documentazione… e adesso cosa? Il tuo primo progetto auto-diretto (io li chiamo progetti Rocket Launch 🚀) è un grande passo nel tuo percorso di apprendimento e vorrai sfruttarlo al massimo! Ecco una piccola ricetta che mi piace seguire quando sto provando un nuovo strumento:

  1. Fai un brain dump di tutto ciò che sai che lo strumento è in grado di fare: Per Sentence Transformers questo include la generazione di embedding di frasi, il confronto tra frasi, il recupero e il riorientamento per compiti di ricerca complessi, il clustering e la ricerca di documenti simili con la ricerca semantica.
  2. Rifletti su alcune fonti di dati interessanti: Ci sono una vasta collezione di set di dati su Hugging Face Hub, o puoi consultare anche liste come “awesome-public-datasets” per qualche ispirazione. Spesso puoi trovare dati interessanti in luoghi inaspettati – ad esempio, il tuo comune potrebbe avere un portale di dati aperti. Dedicherai una quantità considerevole di tempo al lavoro con i tuoi dati, quindi tanto vale scegliere set di dati che ti entusiasmano!
  3. Scegli uno strumento secondario con cui ti senti a tuo agio: Perché limitare la tua esperienza all’apprendimento di un solo strumento alla volta? La “pratica distribuita” (chiamata anche “ripetizione spaziata”) significa distribuire il tuo apprendimento su più sessioni ed è stata dimostrata essere una strategia efficace per l’apprendimento di nuovi materiali. Un modo per farlo attivamente è quello di mettere in pratica nuove competenze anche in situazioni in cui non sono l’obiettivo principale dell’apprendimento. Se hai recentemente acquisito un nuovo strumento, questa è un’ottima opportunità per moltiplicare il tuo potenziale di apprendimento mettendo alla prova le tue competenze. Raccomando di includere solo uno strumento secondario nei tuoi progetti Rocket Launch.
  4. Elabora idee: Dedica del tempo a brainstorming su come potrebbero apparire diverse combinazioni degli elementi dei primi 3 passaggi! Nessuna idea è una cattiva idea e di solito cerco di puntare alla quantità anziché preoccuparmi della qualità. Presto troverai alcune idee che accenderanno quella scintilla speciale di curiosità in te ✨

Per il mio primo progetto con Sentence Transformers, mi sono ricordato di avere un piccolo set di dati con i testi delle canzoni popolari, che ho realizzato di poter combinare con la funzionalità di ricerca semantica di ST per creare un generatore di playlist divertente. Ho immaginato che se avessi potuto chiedere a un utente un suggerimento di testo (ad esempio “Mi sento selvaggio e libero!”), forse avrei potuto trovare canzoni con testi che corrispondessero al suggerimento! Avevo anche creato delle demo con Gradio e avevo recentemente lavorato per migliorare le mie competenze con i nuovi Gradio Blocks appena lanciati, quindi come strumento secondario ho deciso di realizzare un’app Gradio basata su Blocks per mostrare il mio progetto. Non perdere mai l’opportunità di accontentare due piccioni con una sola scone 🦆🐓

Ecco cosa ho finito per realizzare! Tieni d’occhio un futuro post sul blog in cui spiegheremo come è stato costruito 👀

Cosa puoi aspettarti di imparare dal tuo primo progetto?

Dato che ogni progetto è unico, il tuo percorso di apprendimento sarà anche unico! Secondo la teoria del “costruttivismo” dell’apprendimento, la conoscenza è profondamente personale e costruita attraverso l’attiva connessione con altre conoscenze che già possediamo. Attraverso il mio progetto Playlist Generator, ad esempio, ho dovuto imparare sui vari modelli pre-addestrati supportati da Sentence Transformers in modo da poterne trovare uno adatto al mio caso d’uso. Siccome stavo lavorando con Gradio su Hugging Face Spaces, ho imparato a ospitare i miei embedding su Hugging Face Hub e a caricarli nella mia app. Inoltre, siccome avevo molti testi da incorporare, ho cercato modi per velocizzare il processo di incorporamento e ho persino avuto l’opportunità di imparare sul supporto Multi-Processor di Sentence Transformers.


Dopo aver completato il tuo primo progetto, scoprirai di avere ancora più idee su cui lavorare! Divertiti e non dimenticare di condividere i tuoi progetti e tutto ciò che hai imparato con noi su hf.co/join/discord 🤗

Ulteriori letture:

  • Guida introduttiva agli Embeddings
  • Sentence Transformers e Hugging Face
  • Sentence_Transformers per la Ricerca Semantica – di Omar Espejel
  • Pinecone.io – Embeddings delle frasi
  • Embeddings delle frasi – di John Brandt