Cos'è l'apprendimento automatico? Intelligenza derivata dai dati

Apprendimento automatico definito

L'apprendimento automatico è una branca dell'intelligenza artificiale che include metodi o algoritmi per la creazione automatica di modelli dai dati. A differenza di un sistema che esegue un'attività seguendo regole esplicite, un sistema di machine learning impara dall'esperienza. Mentre un sistema basato su regole eseguirà un'attività allo stesso modo ogni volta (nel bene e nel male), le prestazioni di un sistema di apprendimento automatico possono essere migliorate attraverso l'addestramento, esponendo l'algoritmo a più dati.

Gli algoritmi di apprendimento automatico sono spesso suddivisi in supervisionati (i dati di addestramento sono contrassegnati con le risposte) e non supervisionati (eventuali etichette che possono esistere non vengono mostrate all'algoritmo di addestramento). I problemi di apprendimento automatico supervisionato sono ulteriormente suddivisi in classificazione (previsione di risposte non numeriche, come la probabilità di un mancato pagamento del mutuo) e regressione (previsione di risposte numeriche, come il numero di widget che verranno venduti il ​​mese prossimo nel tuo negozio di Manhattan).

L'apprendimento senza supervisione è ulteriormente suddiviso in raggruppamento (trovare gruppi di oggetti simili, come scarpe da corsa, scarpe da passeggio e scarpe da sera), associazione (trovare sequenze comuni di oggetti, come caffè e panna) e riduzione della dimensionalità (proiezione, selezione delle caratteristiche e l'estrazione delle caratteristiche).

Applicazioni dell'apprendimento automatico

Sentiamo parlare di applicazioni di machine learning su base giornaliera, anche se non tutte sono successi puri. Le auto a guida autonoma sono un buon esempio, in cui le attività vanno da semplici e di successo (assistenza al parcheggio e seguire la corsia autostradale) a complesse e incerte (controllo completo del veicolo in ambienti urbani, che ha portato a diversi decessi).

L'apprendimento automatico del gioco ha un grande successo per dama, scacchi, shogi e Go, avendo battuto campioni del mondo umani. La traduzione automatica della lingua ha avuto un grande successo, sebbene alcune combinazioni linguistiche funzionino meglio di altre e molte traduzioni automatiche possono ancora essere migliorate dai traduttori umani.

La sintesi automatica in testo funziona abbastanza bene per le persone con accenti tradizionali, ma non altrettanto bene per le persone con forti accenti regionali o nazionali; le prestazioni dipendono dai set di formazione utilizzati dai fornitori. L'analisi automatica del sentiment dei social media ha un tasso di successo ragionevolmente buono, probabilmente perché i set di formazione (ad esempio le valutazioni dei prodotti Amazon, che accoppiano un commento con un punteggio numerico) sono ampi e di facile accesso.

Lo screening automatico dei curriculum è un'area controversa. Amazon ha dovuto ritirare il suo sistema interno a causa di pregiudizi sui campioni di formazione che l'hanno indotta a declassare tutte le domande di lavoro delle donne.

Altri sistemi di screening del curriculum attualmente in uso possono avere pregiudizi di formazione che li inducono a migliorare i candidati che sono "come" dipendenti attuali in modi che legalmente non dovrebbero avere importanza (ad esempio, giovani, bianchi, candidati maschi provenienti da quartieri di lingua inglese di alto livello che hanno giocato è più probabile che gli sport di squadra superino la proiezione). Gli sforzi di ricerca di Microsoft e altri si concentrano sull'eliminazione dei pregiudizi impliciti nell'apprendimento automatico.

La classificazione automatica delle immagini patologiche e radiologiche è avanzata al punto da poter assistere (ma non sostituire) patologi e radiologi per l'individuazione di alcuni tipi di anomalie. Nel frattempo, i sistemi di identificazione facciale sono entrambi controversi quando funzionano bene (a causa di considerazioni sulla privacy) e tendono a non essere così accurati per le donne e le persone di colore come lo sono per i maschi bianchi (a causa dei pregiudizi nella popolazione di formazione).

Algoritmi di apprendimento automatico

L'apprendimento automatico dipende da una serie di algoritmi per trasformare un set di dati in un modello. Quale algoritmo funziona meglio dipende dal tipo di problema che stai risolvendo, dalle risorse di elaborazione disponibili e dalla natura dei dati. Indipendentemente dall'algoritmo o dagli algoritmi che utilizzi, devi prima pulire e condizionare i dati.

Parliamo degli algoritmi più comuni per ogni tipo di problema.

Algoritmi di classificazione

Un problema di classificazione è un problema di apprendimento supervisionato che richiede la scelta tra due o più classi, fornendo solitamente probabilità per ciascuna classe. Tralasciando le reti neurali e il deep learning, che richiedono un livello molto più elevato di risorse di elaborazione, gli algoritmi più comuni sono Naive Bayes, Decision Tree, Logistic Regression, K-Nearest Neighbors e Support Vector Machine (SVM). Puoi anche utilizzare metodi di insieme (combinazioni di modelli), come Random Forest, altri metodi di Bagging e metodi di boost come AdaBoost e XGBoost.

Algoritmi di regressione

Un problema di regressione è un problema di apprendimento supervisionato che chiede al modello di prevedere un numero. L'algoritmo più semplice e veloce è la regressione lineare (dei minimi quadrati), ma non dovresti fermarti qui, perché spesso ti dà un risultato mediocre. Altri algoritmi di regressione di machine learning comuni (a parte le reti neurali) includono Naive Bayes, Decision Tree, K-Nearest Neighbors, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost e XGBoost. Noterai che esiste una certa sovrapposizione tra gli algoritmi di apprendimento automatico per la regressione e la classificazione.

Algoritmi di clustering

Un problema di clustering è un problema di apprendimento non supervisionato che richiede al modello di trovare gruppi di punti dati simili. L'algoritmo più popolare è il clustering K-Means; altri includono Mean-Shift Clustering, DBSCAN (Density-Based Spatial Clustering of Applications with Noise), GMM (Gaussian Mixture Models) e HAC (Hierarchical Agglomerative Clustering).

Algoritmi di riduzione della dimensionalità

La riduzione della dimensionalità è un problema di apprendimento non supervisionato che richiede al modello di eliminare o combinare variabili che hanno un effetto minimo o nullo sul risultato. Questo è spesso usato in combinazione con la classificazione o la regressione. Gli algoritmi di riduzione della dimensionalità includono la rimozione di variabili con molti valori mancanti, la rimozione di variabili con bassa varianza, albero decisionale, foresta casuale, rimozione o combinazione di variabili con alta correlazione, eliminazione di feature all'indietro, selezione di feature in avanti, analisi fattoriale e PCA (analisi dei componenti principali).

Metodi di ottimizzazione

L'addestramento e la valutazione trasformano gli algoritmi di apprendimento supervisionato in modelli ottimizzando i pesi dei parametri per trovare l'insieme di valori che meglio corrisponde alla verità di base dei dati. Gli algoritmi spesso si basano su varianti della discesa più ripida per i loro ottimizzatori, ad esempio la discesa del gradiente stocastico (SGD), che è essenzialmente la discesa più ripida eseguita più volte da punti di partenza randomizzati.

I perfezionamenti comuni su SGD aggiungono fattori che correggono la direzione del gradiente in base allo slancio o regolano il tasso di apprendimento in base al progresso da un passaggio attraverso i dati (chiamato epoca o batch) al successivo.

Reti neurali e deep learning

Le reti neurali sono state ispirate dall'architettura della corteccia visiva biologica. Il deep learning è un insieme di tecniche per l'apprendimento nelle reti neurali che coinvolge un gran numero di livelli "nascosti" per identificare le caratteristiche. I livelli nascosti si trovano tra i livelli di input e di output. Ogni strato è costituito da neuroni artificiali, spesso con funzioni di attivazione sigmoide o ReLU (unità lineare rettificata).

In una rete feed-forward, i neuroni sono organizzati in livelli distinti: un livello di input, un numero qualsiasi di livelli di elaborazione nascosti e un livello di output e gli output di ogni livello passano solo al livello successivo.

In una rete feed-forward con connessioni di scelta rapida, alcune connessioni possono saltare uno o più livelli intermedi. Nelle reti neurali ricorrenti, i neuroni possono influenzare se stessi, direttamente o indirettamente attraverso lo strato successivo.

L'apprendimento supervisionato di una rete neurale viene eseguito come qualsiasi altro apprendimento automatico: si presenta la rete con gruppi di dati di addestramento, si confronta l'output di rete con l'output desiderato, si genera un vettore di errore e si applicano le correzioni alla rete in base al vettore di errore , di solito utilizzando un algoritmo di backpropagation. I batch di dati di addestramento eseguiti insieme prima dell'applicazione delle correzioni sono chiamati epoche.

Come con tutto il machine learning, è necessario verificare le previsioni della rete neurale rispetto a un set di dati di test separato. Senza farlo, rischi di creare reti neurali che memorizzano solo i loro input invece di imparare a essere predittori generalizzati.

La svolta nel campo della visione della rete neurale è stata LeNet-5 di Yann LeCun del 1998, una rete neurale convoluzionale (CNN) a sette livelli per il riconoscimento di cifre scritte a mano digitalizzate in immagini 32x32 pixel. Per analizzare le immagini a risoluzione più elevata, la rete avrebbe bisogno di più neuroni e più strati.

Le reti neurali convoluzionali utilizzano tipicamente livelli convoluzionali, pooling, ReLU, completamente connessi e di perdita per simulare una corteccia visiva. Lo strato convoluzionale prende fondamentalmente gli integrali di molte piccole regioni sovrapposte. Lo strato di pooling esegue una forma di down-sampling non lineare. I livelli ReLU, che ho menzionato prima, applicano la funzione di attivazione non saturante f(x) = max(0,x).

In uno strato completamente connesso, i neuroni hanno connessioni complete a tutte le attivazioni nello strato precedente. Un livello di perdita calcola il modo in cui l'addestramento della rete penalizza la deviazione tra le etichette previste e vere, utilizzando un Softmax o una perdita di entropia incrociata per la classificazione o una perdita euclidea per la regressione.

L'elaborazione del linguaggio naturale (PNL) è un'altra importante area di applicazione per l'apprendimento profondo. Oltre al problema di traduzione automatica affrontato da Google Translate, le principali attività di PNL includono riepilogo automatico, risoluzione di co-riferimento, analisi del discorso, segmentazione morfologica, riconoscimento di entità denominate, generazione del linguaggio naturale, comprensione del linguaggio naturale, tagging di parti del discorso, sentiment analisi e riconoscimento vocale.

Oltre alle CNN, le attività di PNL sono spesso affrontate con reti neurali ricorrenti (RNN), che includono il modello LSTM (Long-Short Term Memory).

Più strati ci sono in una rete neurale profonda, maggiore è il numero di calcoli necessari per addestrare il modello su una CPU. Gli acceleratori hardware per reti neurali includono GPU, TPU e FPGA.

Insegnamento rafforzativo

L'apprendimento per rinforzo allena un attore o agente a rispondere a un ambiente in un modo che massimizza un certo valore , di solito per tentativi ed errori. È diverso dall'apprendimento supervisionato e non supervisionato, ma spesso è combinato con loro.

Ad esempio, AlphaGo di DeepMind, per imparare a giocare (l'azione) al gioco di Go (l'ambiente), ha prima imparato a imitare i giocatori di Go umani da un ampio set di dati di giochi storici (apprendimento dell'apprendista). Ha quindi migliorato il suo gioco per tentativi ed errori (apprendimento per rinforzo), giocando un gran numero di giochi Go contro istanze indipendenti di se stesso.

Il controllo robotico è un altro problema che è stato attaccato con metodi di apprendimento per rinforzo profondo, il che significa apprendimento per rinforzo più reti neurali profonde, le reti neurali profonde spesso vengono addestrate dalle CNN per estrarre funzionalità dai fotogrammi video.

Come utilizzare l'apprendimento automatico

Come si crea un modello di machine learning? Si inizia pulendo e condizionando i dati, si prosegue con la progettazione delle funzionalità e quindi si prova ogni algoritmo di apprendimento automatico che abbia senso. Per alcune classi di problemi, come la visione e l'elaborazione del linguaggio naturale, gli algoritmi che possono funzionare coinvolgono l'apprendimento profondo.

Pulizia dei dati per l'apprendimento automatico

Non esistono dati puliti in natura. Per essere utili per l'apprendimento automatico, i dati devono essere filtrati in modo aggressivo. Ad esempio, ti consigliamo di:

  1. Esamina i dati ed escludi tutte le colonne con molti dati mancanti.
  2. Esamina nuovamente i dati e scegli le colonne che desideri utilizzare ( selezione delle caratteristiche ) per la tua previsione. Questo è qualcosa che potresti voler variare durante l'iterazione.
  3. Escludi tutte le righe che presentano ancora dati mancanti nelle colonne rimanenti.
  4. Correggi errori di battitura evidenti e unisci risposte equivalenti. Ad esempio, Stati Uniti, Stati Uniti, Stati Uniti e America dovrebbero essere uniti in un'unica categoria.
  5. Escludi righe con dati fuori intervallo. Ad esempio, se stai analizzando i viaggi in taxi all'interno di New York City, ti consigliamo di filtrare le righe con latitudini e longitudini di partenza o arrivo che si trovano al di fuori del riquadro di delimitazione dell'area metropolitana.

C'è molto di più che puoi fare, ma dipenderà dai dati raccolti. Questo può essere noioso, ma se imposti un passaggio di pulizia dei dati nella pipeline di machine learning, puoi modificarlo e ripeterlo a piacimento.

Codifica e normalizzazione dei dati per l'apprendimento automatico

Per utilizzare i dati categoriali per la classificazione della macchina, è necessario codificare le etichette di testo in un'altra forma. Esistono due codifiche comuni.

Uno è la codifica dell'etichetta , il che significa che ogni valore dell'etichetta di testo viene sostituito con un numero. L'altra è una codifica a caldo , il che significa che ogni valore dell'etichetta di testo viene trasformato in una colonna con un valore binario (1 o 0). La maggior parte dei framework di machine learning ha funzioni che eseguono la conversione per te. In generale, è preferibile la codifica one-hot, poiché la codifica dell'etichetta a volte può confondere l'algoritmo di apprendimento automatico facendogli credere che la colonna codificata sia ordinata.