Inquadrare un problema di machine learning

Dopo aver verificato che il problema può essere risolto al meglio utilizzando un ML predittivo o un approccio all'AI generativa, puoi strutturare il problema in termini di ML. Per inquadrare un problema in termini di ML, completa le seguenti attività:

  • Definisci il risultato ideale e l'obiettivo del modello.
  • Identificare l'output del modello.
  • Definisci le metriche più efficaci.

Definire il risultato ideale e l'obiettivo del modello

Indipendentemente dal modello di ML, qual è il risultato ideale? In altre parole, qual è l'attività esatta che vuoi che venga eseguita dal tuo prodotto o dalla tua funzionalità? Si tratta della stessa affermazione che hai definito in precedenza nella sezione Indica l'obiettivo.

Collega l'obiettivo del modello al risultato ideale definendo esplicitamente cosa vuoi che faccia il modello. La seguente tabella indica i risultati ideali e l'obiettivo del modello per le app ipotetiche:

App Risultato ideale Obiettivo del modello
App Meteo Calcola le precipitazioni per una regione geografica in incrementi di sei ore. Prevedere la quantità di precipitazioni di sei ore per regioni geografiche specifiche.
App di moda Genera vari modelli di magliette. Genera tre tipi di design di una camicia da un testo e un'immagine, in cui il testo indica lo stile e il colore e l'immagine indica il tipo di maglietta (t-shirt, bottone, polo).
App di video Consiglia video utili. Prevedere se un utente farà clic su un video.
App di posta Rileva lo spam. Prevedere se un'email è spam o meno.
App finanziaria Riepilogare le informazioni finanziarie di diverse fonti di notizie. Genera riepiloghi di 50 parole delle principali tendenze finanziarie dei sette giorni precedenti.
App di mappe Calcolare il tempo di percorrenza. Prevedere il tempo che impiegherà per passare da un punto all'altro.
App bancaria Identifica le transazioni fraudolente. Prevedere se una transazione è stata effettuata dal titolare della carta.
App di ristoranti Identifica i piatti in base al menù di un ristorante. Prevedere il tipo di ristorante.
App e-commerce Generare risposte all'assistenza clienti relative ai prodotti dell'azienda. Genera risposte utilizzando l'analisi del sentiment e la knowledge base dell'organizzazione.

Identifica l'output di cui hai bisogno

La scelta del tipo di modello dipende dal contesto specifico e dai vincoli del problema. L'output del modello dovrebbe completare l'attività definita nel risultato ideale. Pertanto, la prima domanda a cui rispondere è "Di che tipo di output ho bisogno per risolvere il mio problema?"

Se devi classificare qualcosa o effettuare una previsione numerica, probabilmente utilizzerai il machine learning predittivo. Se devi generare nuovi contenuti o produrre output relativi alla comprensione del linguaggio naturale, probabilmente utilizzerai l'AI generativa.

Le seguenti tabelle elencano gli output di ML predittivo e di AI generativa:

Tabella 1. ML predittivo
Sistema ML Output di esempio
Classificazione Programma binario Classificare un'email come spam o non spam.
Etichetta singola multiclasse Classifica un animale in un'immagine.
Multiclasse multi-etichetta Classifica tutti gli animali in un'immagine.
Numerico Regressione unidimensionale Prevedere il numero di visualizzazioni che un video riceverà.
Regressione multidimensionale Prevedere la pressione sanguigna, la frequenza cardiaca e i livelli di colesterolo di un individuo.
Tabella 2. AI generativa
Tipo di modello Output di esempio
Testo
Riassumi un articolo.

Rispondere alle recensioni dei clienti.

Traduci documenti dall'inglese al mandarino.

Scrivi descrizioni dei prodotti.

Analizzare i documenti legali.
Immagine
Produci immagini di marketing.

Applicare effetti visivi alle foto.

Genera varianti del design del prodotto.
Audio
Genera un dialogo con un accento specifico.

Generare una breve composizione musicale di un genere specifico, come il jazz.
Video
Genera video realistici.

Analizza i filmati e applica effetti visivi.
Multimodale Produci più tipi di output, ad esempio un video con sottotitoli codificati in formato testuale.

Classificazione

Un modello di classificazione prevede a quale categoria appartengono i dati di input, ad esempio se un input deve essere classificato come A, B o C.

Un modello di classificazione sta facendo previsioni.

Figura 1. Un modello di classificazione che fa previsioni.

In base alla previsione del modello, la tua app potrebbe prendere una decisione. Ad esempio, se la previsione è di categoria A, esegui X; se la previsione è di categoria B, allora esegui Y; se la previsione è di categoria C, esegui Z. In alcuni casi, la previsione è l'output dell'app.

Il codice di prodotto utilizza l'output del modello per prendere una decisione.

Figura 2. L'output di un modello di classificazione utilizzato nel codice prodotto per prendere una decisione.

Regressione

Un modello di regressione prevede un valore numerico.

Un modello di regressione sta facendo una previsione.

Figura 3. Un modello di regressione che esegue una previsione numerica.

In base alla previsione del modello, la tua app potrebbe prendere una decisione. Ad esempio, se la previsione rientra nell'intervallo A, esegui X; se la previsione rientra nell'intervallo B, scegli Y; se la previsione rientra nell'intervallo C, esegui Z. In alcuni casi, la previsione è l'output dell'app.

Il codice di prodotto utilizza l'output del modello per prendere una decisione.

Figura 4. Output di un modello di regressione utilizzato nel codice prodotto per prendere una decisione.

Considera il seguente scenario:

Vuoi memorizzare nella cache i video in base alla popolarità prevista. In altre parole, se il modello prevede che un video sarà popolare, vuoi pubblicarlo rapidamente per gli utenti. A questo scopo, utilizzerai la cache più efficace e costosa. Per gli altri video, userai una cache diversa. I criteri per la memorizzazione nella cache sono i seguenti:

  • Se si prevede che un video riceva almeno 50 visualizzazioni, è necessario utilizzare la costosa cache.
  • Se si prevede che un video avrà tra le 30 e le 50 visualizzazioni, puoi utilizzare la cache economica.
  • Se si prevede che il video riceverà meno di 30 visualizzazioni, non verrà memorizzato nella cache.

Pensi che un modello di regressione sia l'approccio giusto perché prevederà un valore numerico, il numero di visualizzazioni. Tuttavia, quando addestra il modello di regressione, ti rendi conto che produce la stessa perdita per una previsione di 28 e 32 per i video con 30 visualizzazioni. In altre parole, anche se la tua app avrà un comportamento molto diverso se la previsione è 28 anziché 32, il modello considera entrambe le previsioni ugualmente valide.

Modello in fase di addestramento e valutazione della perdita.

Figura 5. Addestramento di un modello di regressione.

I modelli di regressione non sono a conoscenza delle soglie definite per il prodotto. Di conseguenza, se il comportamento dell'app cambia in modo significativo a causa di piccole differenze nelle previsioni di un modello di regressione, dovresti prendere in considerazione l'implementazione di un modello di classificazione.

In questo scenario, un modello di classificazione produrrebbe il comportamento corretto perché un modello di classificazione produrrebbe una perdita maggiore per una previsione di 28 rispetto a 32. In un certo senso, i modelli di classificazione producono soglie per impostazione predefinita.

Questo scenario mette in evidenza due punti importanti:

  • Prevedere la decisione. Se possibile, prevedete la decisione che prenderà l'app. Nell'esempio del video, un modello di classificazione prevederebbe la decisione se le categorie in cui ha classificato i video fossero "senza cache", "cache economica" e "cache costosa". Nascondere il comportamento della tua app al modello può causare il comportamento errato dell'app.

  • Comprendere i vincoli del problema. Se la tua app esegue azioni diverse in base a soglie diverse, determina se queste soglie sono fisse o dinamiche.

    • Soglie dinamiche: se le soglie sono dinamiche, utilizza un modello di regressione e imposta i limiti delle soglie nel codice della tua app. In questo modo puoi aggiornare facilmente le soglie, mantenendo al contempo il modello di fare previsioni ragionevoli.
    • Soglie fisse: se le soglie sono fisse, utilizza un modello di classificazione ed etichetta i set di dati in base ai limiti di soglia.

    In generale, la maggior parte del provisioning della cache è dinamico e le soglie cambiano nel tempo. Di conseguenza, poiché si tratta in particolare di un problema di memorizzazione nella cache, un modello di regressione è la scelta migliore. Tuttavia, per molti problemi, le soglie verranno risolte, rendendo un modello di classificazione la soluzione migliore.

Diamo un'occhiata a un altro esempio. Se stai creando un'app meteo il cui risultato ideale è di comunicare agli utenti quanto pioverà nelle prossime sei ore, puoi utilizzare un modello di regressione che prevede l'etichetta precipitation_amount.

Risultato ideale Etichetta ideale
Comunica agli utenti quanto pioverà nella loro zona nelle prossime sei ore. precipitation_amount

Nell'esempio dell'app Meteo, l'etichetta indica direttamente il risultato ideale. Tuttavia, in alcuni casi, non è chiara una relazione one-to-one tra il risultato ideale e l'etichetta. Ad esempio, nell'app di video il risultato ideale è consigliare video utili. Tuttavia, non esiste alcuna etichetta nel set di dati denominato useful_to_user.

Risultato ideale Etichetta ideale
Consiglia video utili. ?

Pertanto, devi trovare un'etichetta proxy.

Etichette proxy

Le etichette proxy sostituiscono le etichette che non sono presenti nel set di dati. Le etichette proxy sono necessarie quando non puoi misurare direttamente ciò che vuoi prevedere. Nell'app video non possiamo misurare direttamente se un utente troverà utile un video. Sarebbe bello se il set di dati avesse una funzionalità useful e gli utenti avessero contrassegnato tutti i video che hanno trovato utili, ma poiché il set di dati non lo ha, avremo bisogno di un'etichetta proxy che sostituisca l'utilità.

Un'etichetta proxy che indica l'utilità potrebbe indicare se l'utente condividerà o meno il video.

Risultato ideale Etichetta proxy
Consiglia video utili. shared OR liked

Fai attenzione alle etichette proxy perché non misurano direttamente ciò che vuoi prevedere. Ad esempio, la seguente tabella evidenzia i problemi con le potenziali etichette proxy per Consigliare video utili:

Etichetta proxy Problema
Prevedere se l'utente farà clic sul pulsante "Mi piace". La maggior parte degli utenti non fa mai clic su "Mi piace".
Prevedere se un video diventerà popolare. Non personalizzato. Alcuni utenti potrebbero non apprezzare i video popolari.
Prevedere se l'utente condividerà il video. Alcuni utenti non condividono i video. A volte le persone condividono i video perché non li piacciono.
Prevedere se l'utente farà clic sul pulsante di riproduzione. Massimizza il clickbait.
Prevedere per quanto tempo guarderà il video. Predilige i video lunghi in maniera differenziata rispetto a quelli brevi.
Prevedere quante volte l'utente guarderà il video. Predilige i video "riguardabili" rispetto ai generi video che non sono riguardabili.

Nessuna etichetta proxy può essere un sostituto perfetto del risultato ideale. Tutti avranno potenziali problemi. Scegli quello che presenta il minor numero di problemi per il tuo caso d'uso.

Verifica le tue conoscenze

Una società vuole usare il machine learning nella sua app per la salute e il benessere per aiutare le persone a sentirsi meglio. Pensi che dovranno utilizzare le etichette proxy per raggiungere i propri obiettivi?
Sì, l'azienda dovrà trovare le etichette proxy. Categorie come felicità e benessere non possono essere misurate direttamente. Al contrario, devono essere approssimati in relazione ad altre caratteristiche, come le ore trascorse a fare attività fisica ogni settimana o il tempo trascorso a fare hobby o con gli amici.
No, l'azienda non avrà bisogno di utilizzare etichette proxy. Felicità e benessere possono essere misurati direttamente.

Generazione

Nella maggior parte dei casi, non addestrerai il tuo modello generativo perché questa operazione richiede enormi quantità di dati di addestramento e risorse di calcolo. Puoi invece personalizzare un modello generativo preaddestrato. Per ottenere un modello generativo in modo da produrre l'output desiderato, potrebbe essere necessario utilizzare una o più delle seguenti tecniche:

  • Distillazione. Per creare una versione ridotta di un modello più grande, genera un set di dati con etichette sintetiche dal modello più grande che utilizzi per addestrare il modello più piccolo. I modelli generativi sono in genere enormi e consumano risorse considerevoli (come memoria ed elettricità). La distillazione consente al modello più piccolo e a un minor utilizzo di risorse di approssimare le prestazioni del modello più grande.

  • Ottimizzazione o ottimizzazione efficiente dei parametri. Per migliorare le prestazioni di un modello in un'attività specifica, devi addestrare ulteriormente il modello su un set di dati che contenga esempi del tipo di output che vuoi produrre.

  • Ingegneria del prompt. Per fare in modo che il modello esegua un'attività specifica o generi output in un formato specifico, devi indicare al modello l'attività che vuoi che esegua o spiegare in che modo vuoi che venga formattato l'output. In altre parole, la richiesta può includere istruzioni in linguaggio naturale su come eseguire l'attività o esempi illustrativi con gli output desiderati.

    Ad esempio, se vuoi brevi riepiloghi degli articoli, puoi inserire quanto segue:

    Produce 100-word summaries for each article.
    

    Se vuoi che il modello generi testo per uno specifico livello di lettura, puoi inserire quanto segue:

    All the output should be at a reading level for a 12-year-old.
    

    Se vuoi che il modello fornisca l'output in un formato specifico, potresti spiegare come deve essere formattato l'output, ad esempio "formattare i risultati in una tabella", oppure puoi dimostrare l'attività fornendo degli esempi. Ad esempio, puoi inserire quanto segue:

    Translate words from English to Spanish.
    
    English: Car
    Spanish: Auto
    
    English: Airplane
    Spanish: Avión
    
    English: Home
    Spanish:______
    

La distillazione e il perfezionamento aggiornano i parametri del modello. Il prompt engineering non aggiorna i parametri del modello. Invece, l'ingegneria del prompt aiuta il modello a imparare come produrre un output desiderato dal contesto del prompt.

In alcuni casi, avrai anche bisogno di un set di dati di test per valutare l'output di un modello generativo rispetto a valori noti, ad esempio verificando che i riepiloghi del modello siano simili a quelli generati da esseri umani o che gli esseri umani valutino come validi i riepiloghi del modello.

L'IA generativa può essere utilizzata anche per implementare una soluzione di ML predittiva, come la classificazione o la regressione. Ad esempio, grazie alla profonda conoscenza del linguaggio naturale, i modelli linguistici di grandi dimensioni (LLM) possono spesso eseguire attività di classificazione del testo meglio rispetto al machine learning predittivo addestrato per l'attività specifica.

Definisci le metriche più efficaci

Definisci le metriche che utilizzerai per determinare se l'implementazione del machine learning è riuscita o meno. Le metriche di successo definiscono ciò che ti interessa, come il coinvolgimento o l'aiutare gli utenti a intraprendere le azioni appropriate, ad esempio guardare video che troveranno utili. Le metriche di successo differiscono dalle metriche di valutazione del modello, come accuratezza, precisione, richiamo o AUC.

Ad esempio, le metriche di successo e di errore dell'app meteo potrebbero essere definite come segue:

Operazione riuscita Gli utenti aprono la funzionalità "Pioverà?" il 50% in più rispetto al passato.
Errore Gli utenti aprono la funzionalità "Pioverà?" non più spesso rispetto a prima.

Le metriche delle app video possono essere definite come segue:

Operazione riuscita Gli utenti trascorrono in media il 20% di tempo in più sul sito.
Errore In media, gli utenti non trascorrono più tempo sul sito rispetto a prima.

Consigliamo di definire metriche di successo ambiziose. Tuttavia, grandi ambizioni possono creare divari tra successo e fallimento. Ad esempio, gli utenti che trascorrono in media il 10% in più di tempo sul sito rispetto a prima non rappresentano né un successo né un fallimento. Il divario non definito non è ciò che è importante.

L'importante è la capacità del modello di avvicinarsi, o superare, alla definizione di successo. Ad esempio, quando analizzi le prestazioni del modello, poniti la seguente domanda: migliorare il modello ti avvicinerebbe ai criteri di successo definiti? Ad esempio, un modello potrebbe avere metriche di valutazione efficaci, ma non avvicinarti ai criteri di successo, il che indica che anche con un modello perfetto, non è possibile soddisfare i criteri di successo che hai definito. D'altra parte, un modello potrebbe avere metriche di valutazione scadenti, ma avvicinarti ai tuoi criteri di successo, indicando che migliorare il modello ti avvicinerebbe al successo.

Di seguito sono riportate le dimensioni da considerare per determinare se vale la pena migliorare il modello:

  • Non abbastanza bene, ma continua. Il modello non deve essere utilizzato in un ambiente di produzione, ma nel tempo potrebbe essere migliorato in modo significativo.

  • Sì, e continua. Il modello potrebbe essere utilizzato in un ambiente di produzione e potrebbe essere ulteriormente migliorato.

  • Abbastanza buono, ma non può essere migliorato. Il modello si trova in un ambiente di produzione, ma probabilmente è davvero bello.

  • Non abbastanza bene e non lo sarà mai. Il modello non dovrebbe essere utilizzato in un ambiente di produzione e nessuna quantità di addestramento sarà sufficiente.

Quando decidi di migliorare il modello, rivaluta se l'aumento delle risorse, ad esempio il tempo di progettazione e i costi di calcolo, giustifica il miglioramento previsto del modello.

Dopo aver definito le metriche di successo e fallimento, devi determinare la frequenza con cui verranno misurate. Ad esempio, puoi misurare le metriche di successo sei giorni, sei settimane o sei mesi dopo l'implementazione del sistema.

Quando analizzi le metriche relative agli errori, prova a determinare il motivo per cui il sistema ha generato un errore. Ad esempio, il modello potrebbe prevedere su quali video gli utenti faranno clic, ma potrebbe iniziare a consigliare titoli di clickbait che causano una diminuzione del coinvolgimento degli utenti. Nell'esempio dell'app meteo, il modello potrebbe prevedere con precisione quando pioverà, ma per una regione geografica troppo ampia.

Verifica le tue conoscenze

Un'azienda di moda vuole vendere più vestiti. Qualcuno suggerisce di usare il machine learning per determinare quali vestiti l'azienda dovrebbe produrre. Pensano di poter addestrare un modello per stabilire quale tipo di abbigliamento è di moda. Dopo aver addestrato il modello, vogliono applicarlo al proprio catalogo per decidere quali vestiti realizzare.

Come dovrebbero inquadrare il loro problema in termini di ML?

Risultato ideale: stabilisci quali prodotti realizzare.

Obiettivo del modello: prevedere quali capi di abbigliamento sono di moda.

Output del modello: classificazione binaria, in_fashion, not_in_fashion

Metriche del successo: vendi il settanta percento o più degli abiti realizzati.

Risultato ideale: determinare la quantità di tessuto e forniture da ordinare.

Obiettivo del modello: prevedere la quantità di ciascun articolo da produrre.

Output del modello: classificazione binaria, make, do_not_make

Metriche del successo: vendi il settanta percento o più degli abiti realizzati.

Il risultato ideale non è determinare la quantità di tessuto e forniture da ordinare. Serve a stabilire se un articolo deve essere prodotto. Pertanto, l'obiettivo del modello riguarda l'obiettivo sbagliato.