Come affrontare i problemi di apprendimento automatico

Pubblicato: 2022-03-11

Uno dei compiti principali dei computer è automatizzare i compiti umani. Alcuni di questi compiti sono semplici e ripetitivi, come "spostare X da A a B". Diventa molto più interessante quando il computer deve prendere decisioni su problemi che sono molto più difficili da formalizzare. È qui che iniziamo a incontrare problemi di apprendimento automatico di base.

Illustrazione della copertina dei problemi di apprendimento automatico

Storicamente, tali algoritmi sono stati costruiti da scienziati o esperti che avevano una profonda conoscenza del loro campo ed erano in gran parte basati su regole. Con l'esplosione della potenza di calcolo e la disponibilità di set di dati ampi e diversificati, l'attenzione si è spostata su un approccio più computazionale.

I concetti di apprendimento automatico più diffusi in questi giorni hanno a che fare con le reti neurali e, secondo la mia esperienza, questo ha creato in molte persone l'impressione che le reti neurali siano una specie di arma miracolosa per tutti i problemi di inferenza. In realtà, questo è abbastanza lontano dalla verità. Agli occhi dello statistico, formano una classe di approcci di inferenza con i loro punti di forza e di debolezza associati, e dipende completamente dal problema se le reti neurali saranno la soluzione migliore o meno.

Molto spesso, ci sono approcci migliori.

In questo articolo, delineeremo una struttura per attaccare i problemi di apprendimento automatico. Non c'è spazio per entrare troppo nel dettaglio di specifici modelli di machine learning, ma se questo articolo genera interesse, gli articoli successivi potrebbero offrire soluzioni dettagliate per alcuni interessanti problemi di machine learning.

Prima, tuttavia, facciamo un po' di sforzo per mostrare perché dovresti essere più cauto piuttosto che pensare automaticamente alla "rete neurale" di fronte a un problema di apprendimento automatico.

Pro e contro delle reti neurali

Con le reti neurali, l'inferenza viene eseguita tramite una "rete" ponderata. I pesi vengono calibrati durante il cosiddetto processo di “apprendimento” e successivamente applicati per assegnare i risultati agli input.

Per quanto possa sembrare semplice, tutti i pesi sono parametri della rete calibrata e, di solito, ciò significa troppi parametri per un essere umano a cui dare un senso.

Illustrazione input-output della teoria delle reti neurali

Quindi potremmo anche considerare le reti neurali come una sorta di scatola nera di inferenza che collega l'input all'output, senza un modello specifico in mezzo.

Diamo un'occhiata più da vicino ai pro e ai contro di questo approccio.

Vantaggi delle reti neurali

  • L'input sono i dati stessi. Risultati utilizzabili anche con poca o nessuna ingegneria delle funzionalità.
  • Abilità allenabile. Senza l'ingegneria delle funzionalità, non sono necessarie abilità così difficili da sviluppare come l'intuizione o l'esperienza di dominio. Sono disponibili strumenti standard per inferenze generiche.
  • La precisione migliora con la quantità di dati. Più input vede, migliori saranno le prestazioni di una rete neurale.
  • Può superare i modelli classici quando non sono disponibili informazioni complete sul modello. Pensa al sentimento pubblico, per esempio.
  • L'inferenza aperta può scoprire schemi sconosciuti. Se si utilizza un modello e si lascia fuori una considerazione, non rileverà il fenomeno corrispondente. Le reti neurali potrebbero.

Esempio di rete neurale di successo: l'IA di Google ha trovato un pianeta in orbita attorno a una stella lontana, dove la NASA non l'ha fatto, analizzando i dati accumulati dal telescopio.

Svantaggi delle reti neurali

  • Richiedono molti dati (annotati!). Innanzitutto, questa quantità di dati non è sempre disponibile. La convergenza è lenta. Un modello solido (diciamo, in fisica) può essere calibrato dopo alcune osservazioni: con le reti neurali, questo è fuori questione. L'annotazione richiede molto lavoro, per non parlare del fatto che, di per sé, non è infallibile.
  • Nessuna informazione sulla struttura interna dei dati. Ti interessa sapere su cosa si basa l'inferenza? Nessuna fortuna qui. Ci sono situazioni in cui la regolazione manuale dei dati migliora l'inferenza di un balzo, ma una rete neurale non sarà in grado di aiutare in questo.
  • Problemi di overfitting. Succede spesso che la rete abbia più parametri di quelli giustificati dai dati, il che porta a un'inferenza non ottimale.
  • Le prestazioni dipendono dalle informazioni. Se sono disponibili informazioni complete su un problema, un modello solido tende a superare una rete neurale.
  • Ci sono problemi di campionamento. Il campionamento è sempre una questione delicata, ma con un modello è possibile sviluppare rapidamente una nozione di campionamento problematico. Le reti neurali imparano solo dai dati, quindi se ottengono dati distorti, avranno conclusioni distorte.

Un esempio di fallimento: una relazione personale mi ha parlato di una grande azienda (di cui non so il nome) che stava lavorando per rilevare veicoli militari su foto aeree. Avevano immagini in cui c'erano tali veicoli e altri che no. La maggior parte delle immagini della prima classe sono state scattate in una giornata piovosa, mentre le seconde sono state scattate con tempo soleggiato. Di conseguenza, il sistema ha imparato a distinguere la luce dall'ombra.

Per riassumere, le reti neurali formano una classe di metodi di inferenza che hanno i loro pro e contro.

Il fatto che la loro popolarità eclissi tutti gli altri metodi statistici agli occhi del pubblico ha probabilmente più a che fare con il governo societario che con qualsiasi altra cosa.

Formare le persone all'uso di strumenti standard e metodi di rete neurale standardizzati è un processo molto più prevedibile rispetto alla ricerca di esperti di dominio e artisti di vari campi. Questo, tuttavia, non cambia il fatto che l'uso di una rete neurale per un problema semplice e ben definito in realtà è solo sparare a un passero con un cannone: ha bisogno di molti dati, richiede molto lavoro di annotazione e in cambio potrebbe appena sottoperformato rispetto a un modello solido. Non il miglior pacchetto.

Tuttavia, c'è un enorme potere nel fatto che "democratizzano" la conoscenza statistica. Una volta che una soluzione di inferenza basata su rete neurale viene vista come un semplice strumento di programmazione, può aiutare anche coloro che non si sentono a proprio agio con algoritmi complessi. Quindi, inevitabilmente, ora vengono costruite molte cose che altrimenti non esisterebbero se potessimo operare solo con modelli sofisticati.

Affrontare i problemi di apprendimento automatico

Quando affronti i problemi di apprendimento automatico, questi sono i passaggi che dovrai seguire:

  • Impostazione dei criteri di accettazione
  • Pulizia dei tuoi dati e massimizzazione del contenuto delle informazioni ist
  • Scelta dell'approccio di inferenza più ottimale
  • Allenati, prova, ripeti

Vediamo questi elementi in dettaglio.

Diversi passaggi di un problema di apprendimento automatico

Impostazione dei criteri di accettazione

Dovresti avere un'idea della precisione del tuo obiettivo il prima possibile, per quanto possibile. Questo sarà l'obiettivo verso cui lavorerai.

Pulire i tuoi dati e massimizzare il loro contenuto informativo

Questo è il passaggio più critico. Prima di tutto, i tuoi dati non dovrebbero avere (o pochi) errori. Pulirlo da questi è un primo passo essenziale. Sostituisci i valori mancanti, cerca di identificare schemi che sono ovviamente falsi, elimina i duplicati e qualsiasi altra anomalia che potresti notare.

Per quanto riguarda le informazioni, se i tuoi dati sono molto informativi (in senso lineare), praticamente qualsiasi metodo di inferenza ti darà buoni risultati. Se le informazioni richieste non sono presenti, il risultato sarà rumore. Massimizzare le informazioni significa principalmente trovare eventuali relazioni non lineari utili nei dati e linearizzarli. Se questo migliora significativamente gli input, bene. In caso contrario, potrebbe essere necessario aggiungere più variabili. Se tutto ciò non dà frutti, la precisione del bersaglio potrebbe risentirne.

Con un po' di fortuna, ci saranno singole variabili utili. È possibile identificare variabili utili se, ad esempio, le si tracciano rispetto alle variabili target di apprendimento e si scopre che il grafico è simile a una funzione (ovvero, un intervallo ristretto nell'input corrisponde a un intervallo ristretto nell'output). Questa variabile può quindi essere linearizzata, ad esempio, se traccia come una parabola, sottrai alcuni valori e prendi la radice quadrata.

Per le variabili rumorose - un intervallo ristretto nell'input corrisponde a un intervallo ampio nell'output - potremmo provare a combinarle con altre variabili.

Per avere un'idea dell'accuratezza, potresti voler misurare le probabilità delle classi condizionali per ciascuna delle tue variabili (per problemi di classificazione) o applicare una forma molto semplice di regressione, come la regressione lineare (per problemi di previsione). Se il contenuto informativo dell'input migliora, lo sarà anche la tua inferenza e semplicemente non vuoi perdere troppo tempo in questa fase a calibrare un modello quando i dati non sono ancora pronti. Quindi continua a testare il più semplice possibile.

Scelta dell'approccio di inferenza più ottimale

Una volta che i tuoi dati sono in una forma decente, puoi utilizzare il metodo di inferenza (i dati potrebbero ancora essere lucidati in seguito, se necessario).

Dovresti usare un modello? Bene, se hai buone ragioni per credere di poter costruire un buon modello per l'attività, probabilmente dovresti. Se non la pensi così, ma ci sono dati ampi con buone annotazioni, allora potresti andare a mani libere con una rete neurale. Nelle applicazioni pratiche di machine learning, tuttavia, spesso non ci sono dati sufficienti per questo.

La precisione del gioco rispetto alla copertura spesso ripaga enormemente. Gli approcci ibridi di solito vanno bene. Supponiamo che i dati siano tali da poter ottenere una precisione prossima al 100% sull'80% di essi con un modello semplice? Ciò significa che puoi dimostrare rapidamente i risultati e se il tuo sistema è in grado di identificare quando sta operando in un territorio amico dell'80%, allora hai praticamente coperto la maggior parte del problema. Il tuo cliente potrebbe non essere ancora del tutto soddisfatto, ma questo ti farà guadagnare rapidamente la sua fiducia. E non c'è nulla che ti impedisca di fare qualcosa di simile sui dati rimanenti: con uno sforzo ragionevole ora copri, diciamo, il 92% dei dati con una precisione del 97%. È vero, sul resto dei dati, è un lancio di monete, ma hai già prodotto qualcosa di utile.

Per la maggior parte delle applicazioni pratiche, questo è molto utile. Supponiamo che tu sia nel settore dei prestiti e desideri decidere a chi concedere un prestito, e tutto ciò che sai è che sul 70% dei clienti il ​​tuo algoritmo è molto accurato. Ottimo, vero, l'altro 30% dei tuoi candidati richiederà più elaborazione, ma il 70% può essere completamente automatizzato. Oppure: supponiamo che tu stia cercando di automatizzare il lavoro dell'operatore per i call center, puoi fare un buon lavoro (veloce e sporco) solo per le attività più semplici, ma queste attività coprono il 50% delle chiamate? Ottimo, il call center risparmia denaro se può automatizzare il 50% delle chiamate in modo affidabile.

Per riassumere: se i dati non sono sufficientemente informativi o il problema è troppo complesso per essere gestito nella sua interezza, pensare fuori dagli schemi. Identifica i sottoproblemi utili e facili da risolvere finché non hai un'idea migliore.

Una volta che hai il tuo sistema pronto, impara, testalo e ripetilo fino a quando non sei soddisfatto dei risultati.

Allenati, prova, ripeti

Dopo i passaggi precedenti, rimane poco di interesse. Hai i dati, hai il metodo di apprendimento automatico, quindi è il momento di estrarre i parametri tramite l'apprendimento e quindi testare l'inferenza sul set di test. La letteratura suggerisce che il 70% dei record dovrebbe essere utilizzato per la formazione e il 30% per i test.

Se sei soddisfatto dei risultati, l'attività è terminata. Ma, più probabilmente, hai sviluppato alcune nuove idee durante la procedura e queste potrebbero aiutarti a migliorare la precisione. Forse hai bisogno di più dati? O semplicemente più pulizia dei dati? O un altro modello? Ad ogni modo, è probabile che sarai impegnato per un bel po'.

Quindi, buona fortuna e goditi il ​​lavoro che ci aspetta!

Imparentato:
  • Macchine e fiducia: come mitigare la distorsione dell'IA
  • Stelle riallineate: miglioramento del sistema di valutazione IMDb