Apprendimento profondo e apprendimento automatico: comprendi le differenze

L'apprendimento automatico e l'apprendimento profondo sono entrambe forme di intelligenza artificiale. Puoi anche dire, correttamente, che il deep learning è un tipo specifico di machine learning. Sia il machine learning che il deep learning iniziano con l'addestramento e i dati di test e un modello e passano attraverso un processo di ottimizzazione per trovare i pesi che rendono il modello più adatto ai dati. Entrambi possono gestire problemi numerici (regressione) e non numerici (classificazione), sebbene vi siano diverse aree di applicazione, come il riconoscimento di oggetti e la traduzione linguistica, in cui i modelli di deep learning tendono a produrre risultati migliori rispetto ai modelli di machine learning.

Apprendimento automatico spiegato

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).

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, che è essenzialmente la discesa più ripida eseguita più volte da punti di partenza casuali.

I miglioramenti comuni sulla discesa del gradiente stocastico 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.

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 dovrebbe essere un elenco ordinato.

Per utilizzare i dati numerici per la regressione della macchina, di solito è necessario normalizzare i dati. Altrimenti, i numeri con intervalli maggiori potrebbero tendere a dominare la distanza euclidea tra i vettori delle caratteristiche , i loro effetti potrebbero essere amplificati a scapito degli altri campi e l'ottimizzazione della discesa più ripida potrebbe avere difficoltà a convergere. Esistono diversi modi per normalizzare e standardizzare i dati per l'apprendimento automatico, tra cui normalizzazione min-max, normalizzazione media, standardizzazione e adattamento alla lunghezza dell'unità. Questo processo è spesso chiamato ridimensionamento delle funzionalità .

Ingegneria delle funzionalità per l'apprendimento automatico

Una caratteristica è una proprietà misurabile individuale o caratteristica di un fenomeno osservato. Il concetto di "caratteristica" è correlato a quello di variabile esplicativa, che viene utilizzato in tecniche statistiche come la regressione lineare. I vettori di caratteristiche combinano tutte le caratteristiche di una singola riga in un vettore numerico.

Parte dell'arte della scelta delle caratteristiche consiste nello scegliere un insieme minimo di variabili indipendenti che spieghino il problema. Se due variabili sono altamente correlate, è necessario combinarle in una singola funzione o eliminarne una. A volte le persone eseguono l'analisi delle componenti principali per convertire le variabili correlate in un insieme di variabili linearmente non correlate.

Alcune delle trasformazioni che le persone usano per costruire nuove caratteristiche o ridurre la dimensionalità dei vettori di caratteristiche sono semplici. Ad esempio, sottrarre Year of Birthda Year of Deathe si costruisce Age at Death, che è una variabile indipendente principale per tutta la vita e l'analisi della mortalità. In altri casi, la costruzione delle caratteristiche potrebbe non essere così ovvia.

Divisione dei dati per l'apprendimento automatico

La pratica abituale per l'apprendimento automatico supervisionato consiste nel suddividere il set di dati in sottoinsiemi per l' addestramento , la convalida e il test . Un modo di lavorare è assegnare l'80% dei dati al set di dati di addestramento e il 10% ciascuno ai set di dati di convalida e test. (La divisione esatta è una questione di preferenza.) La maggior parte dell'addestramento viene eseguito in base al set di dati di addestramento e la previsione viene eseguita in base al set di dati di convalida alla fine di ogni epoca.

Gli errori nel set di dati di convalida possono essere utilizzati per identificare i criteri di arresto o per guidare l'ottimizzazione degli iperparametri. Ancora più importante, gli errori nel set di dati di convalida possono aiutarti a scoprire se il modello ha superato i dati di addestramento.

La previsione rispetto al set di dati di test viene in genere eseguita sul modello finale. Se il set di dati di test non è mai stato utilizzato per l'addestramento, a volte viene chiamato set di dati di controllo.

Esistono molti altri schemi per suddividere i dati. Una tecnica comune, la convalida incrociata , comporta la suddivisione ripetuta dell'intero set di dati in un set di dati di addestramento e un set di dati di convalida. Alla fine di ogni epoca, i dati vengono mescolati e divisi di nuovo.

Librerie di machine learning

In Python, Spark MLlib e Scikit-learn sono scelte eccellenti per le librerie di machine learning. In R, alcune opzioni del pacchetto di apprendimento automatico sono CARAT, randomForest, e1071 e KernLab. In Java, le buone scelte includono Java-ML, RapidMiner e Weka.

Apprendimento profondo spiegato

Il deep learning è una forma di machine learning in cui il modello da addestrare ha più di uno strato nascosto tra l'input e l'output. Nella maggior parte delle discussioni, apprendimento profondo significa utilizzare reti neurali profonde . Esistono, tuttavia, alcuni algoritmi che implementano il deep learning utilizzando altri tipi di livelli nascosti oltre alle reti neurali.

Le idee per le reti neurali "artificiali" risalgono agli anni Quaranta. Il concetto essenziale è che una rete di neuroni artificiali costruita con interruttori di soglia interconnessi può imparare a riconoscere i modelli nello stesso modo in cui lo fanno il cervello e il sistema nervoso di un animale (inclusa la retina).

Backprop

L'apprendimento avviene fondamentalmente rafforzando la connessione tra due neuroni quando entrambi sono attivi contemporaneamente durante l'allenamento. Nel moderno software di rete neurale, si tratta più comunemente di aumentare i valori di peso per le connessioni tra i neuroni utilizzando una regola chiamata propagazione all'indietro dell'errore , backprop o BP.

Neuroni in reti neurali artificiali

Come vengono modellati i neuroni? Ognuno ha una funzione di propagazione che trasforma gli output dei neuroni collegati, spesso con una somma ponderata. L'uscita della funzione di propagazione passa a una funzione di attivazione, che si attiva quando il suo ingresso supera un valore di soglia.

Funzioni di attivazione nelle reti neurali

Negli anni '40 e '50 i neuroni artificiali utilizzavano una funzione di attivazione a gradini e venivano chiamati perceptrons . Le moderne reti neurali possono dire che stanno usando i percettroni, ma in realtà hanno funzioni di attivazione fluide, come la funzione logistica o sigmoidea, la tangente iperbolica o l'unità lineare rettificata (ReLU). ReLU è solitamente la scelta migliore per la convergenza rapida, sebbene abbia un problema di neuroni che "muoiono" durante l'allenamento se il tasso di apprendimento è impostato troppo alto.

[Anche su: 6 modi per far fallire l'apprendimento automatico]

L'uscita della funzione di attivazione può passare a una funzione di uscita per una modellatura aggiuntiva. Spesso, tuttavia, la funzione di output è la funzione di identità, il che significa che l'output della funzione di attivazione viene passato ai neuroni collegati a valle.

Topologie di reti neurali

Ora che conosciamo i neuroni, dobbiamo conoscere le topologie di rete neurale comuni. In una rete feed-forward, i neuroni sono organizzati in livelli distinti: un livello di input, n livelli di elaborazione nascosti e un livello di output. Gli output di ogni livello vanno 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.

Formazione di reti neurali

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 . I batch di dati di addestramento eseguiti insieme prima dell'applicazione delle correzioni sono chiamati epoche.

Per chi è interessato ai dettagli, la retro propagazione utilizza il gradiente della funzione di errore (o costo) rispetto ai pesi e ai bias del modello per scoprire la direzione corretta per minimizzare l'errore. Due cose controllano l'applicazione delle correzioni: l'algoritmo di ottimizzazione e la variabile del tasso di apprendimento. La variabile del tasso di apprendimento di solito deve essere piccola per garantire la convergenza ed evitare di causare neuroni ReLU morti.

Ottimizzatori per reti neurali

Gli ottimizzatori per le reti neurali utilizzano tipicamente una qualche forma di algoritmo di discesa del gradiente per guidare la propagazione all'indietro, spesso con un meccanismo per evitare di rimanere bloccati nei minimi locali, come l'ottimizzazione di mini-batch selezionati casualmente (Stochastic Gradient Descent) e l'applicazione di correzioni di quantità di moto al pendenza. Alcuni algoritmi di ottimizzazione adattano anche le velocità di apprendimento dei parametri del modello osservando la cronologia del gradiente (AdaGrad, RMSProp e Adam).