Questo post tratterà alcuni concetti di base dell’apprendimento automatico, dall’algebra lineare alle metriche di valutazione. Serve come una bella guida per i neofiti che cercano di entrare nel campo.

Algebra lineare

L’algebra lineare è il pilastro centrale nel campo dell’apprendimento automatico. Perché? Gli algoritmi di apprendimento automatico sono descritti in libri, articoli e sul sito web usando la notazione vettoriale e matriciale. L’algebra lineare è la matematica dei dati e la sua notazione permette di descrivere con precisione le operazioni sui dati con operatori specifici. I 2 concetti più importanti dell’algebra lineare con cui dovresti avere familiarità sono vettori e matrici.

1 – Vettori

Un vettore è una tupla di uno o più valori conosciuti come scalari. È comune introdurre i vettori usando la definizione geometrica, in cui un vettore rappresenta un punto o una coordinata in uno spazio ad alta densità. Le principali operazioni aritmetiche sui vettori sono addizione, sottrazione, moltiplicazione, divisione, prodotto di punti e moltiplicazione scalare.

  • Due vettori di uguale lunghezza possono essere sommati per creare un nuovo terzo vettore.
  • Un vettore può essere sottratto da un altro vettore di uguale lunghezza per creare un nuovo terzo vettore.
  • Due vettori di uguale lunghezza possono essere moltiplicati insieme.
  • Due vettori di uguale lunghezza possono essere divisi.
  • Il prodotto di punti è la somma degli elementi moltiplicati di due vettori della stessa lunghezza per dare uno scalare.
  • Un vettore può essere moltiplicato per uno scalare per scalare la grandezza del vettore.

Ci sono molti usi dei vettori. Per esempio, i vettori possono rappresentare un offset nello spazio 2D o 3D. I punti sono solo vettori dall’origine. Anche i dati (pixel, gradienti in un punto chiave dell’immagine, ecc.) possono essere trattati come un vettore.

2 – Matrici

Una matrice è un array bidimensionale di scalari con una o più colonne e una o più righe. Se la matrice ha lo stesso numero di righe e colonne, allora è una matrice quadrata. La matrice di identità è una matrice quadrata con 1 sulla diagonale e 0 ovunque. La matrice diagonale è una matrice quadrata con numeri sulla diagonale e 0 altrove. Un vettore colonna è solo una matrice in cui c’è una riga, mentre un vettore riga è solo una matrice in cui c’è una colonna.

Le operazioni matriciali di base sono addizione, scalare, prodotto punto, moltiplicazione vettoriale, moltiplicazione scalare, trasposizione, inverso e determinante/traccia.

  • Due matrici con le stesse dimensioni possono essere aggiunte insieme per creare una nuova terza matrice.
  • Similmente, una matrice può essere sottratta da un’altra matrice con le stesse dimensioni.
  • Due matrici con le stesse dimensioni possono essere moltiplicate insieme, e questo è spesso chiamato moltiplicazione di matrice elementare.
  • Una matrice può essere divisa da un’altra matrice con le stesse dimensioni.
  • Il prodotto di punto della matrice ha le voci di 2 vettori moltiplicate l’una per l’altra e sommando il risultato.
  • Una matrice e un vettore possono essere moltiplicati insieme, purché si rispetti la regola della moltiplicazione di matrice.
  • Una matrice può essere moltiplicata per uno scalare. Il risultato è una matrice delle stesse dimensioni della matrice madre in cui ogni elemento della matrice è moltiplicato per il valore scalare.
  • La trasposizione della matrice è quando invertiamo le colonne e le righe di una matrice, così la riga 1 è ora la colonna 1, e così via.
  • Data una matrice A, il suo inverso A^(-1) è una matrice tale che A x A^(-1) = I. Se A^(-1) esiste, allora A è invertibile o non singolare. Altrimenti, è singolare.

Apprendimento automatico

1 – Approcci principali

I 3 approcci principali all’apprendimento automatico sono:

  • Apprendimento non supervisionato, che è usato molto nella visione artificiale. Esempi sono k-means, ICA, PCA, Gaussian Mixture Models, e deep auto-encoders.
  • Apprendimento supervisionato, che è anche usato molto nella visione artificiale. Esempi sono le reti neurali profonde supervisionate.
  • Reinforcement Learning, che è usato soprattutto per la robotica e i problemi di controllo. Esempi sono il Q-learning profondo e i metodi del gradiente di policy.

Nel Reinforcement Learning, le regole del gioco sono sconosciute. Non c’è un supervisore, solo un segnale di ricompensa con feedback ritardato. Le azioni dell’agente influenzano i dati successivi che riceve.

Nell’apprendimento non supervisionato, vogliamo trovare struttura e significato nei dati senza etichette. Come menzionato sopra, algoritmi di esempio sono l’analisi delle componenti principali, k-means, la fattorizzazione delle matrici non negative, l’analisi delle componenti indipendenti, i modelli Gaussian Mixture, Latent Dirichlet Allocation e gli autocodificatori.

Nell’apprendimento supervisionato, la terminologia di base è tale che abbiamo uno spazio iniziale di input x e uno spazio iniziale di output y. Dopo aver visto una serie di esempi (x, y), vogliamo scegliere una mappatura F: x -> y che replichi accuratamente lo schema input-output degli esempi. Ci sono molti algoritmi per trovare diversi modelli di F da osservazioni etichettate (ground truth). Spesso l’apprendimento è classificato secondo il loro spazio di uscita, che può essere discreto o continuo.

  • Lo spazio di uscita continuo è usato nel problema della regressione. Per esempio, dato l’input come un’immagine di un piatto di cibo, vogliamo che l’output sia il numero di calorie totali. O dato l’input come il volto di una persona, vogliamo l’output come l’età di quella persona.
  • Con lo spazio di output discreto, stiamo tipicamente costruendo dei classificatori. Per esempio, vogliamo che l’output sia classe 1, classe 2, classe 3…, dove i numeri rappresentano una sorta di categoria significativa. Possiamo anche chiamare queste etichette o categorie.

2 – Dati di allenamento e dati di test

I dati di allenamento sono quelli che diamo al classificatore durante il processo di allenamento. Sono i dati accoppiati per imparare f(x) = y, dove x è l’input (un vettore di caratteristiche in R^d) e y è l’output (un’etichetta con classificazione). Durante l’addestramento, cerchiamo di trovare un buon modello di f(x) che replichi la relazione input-output dei dati.

I dati di test vengono utilizzati con un classificatore addestrato per valutarlo. Abbiamo x, ma non sappiamo y. Di solito, facciamo solo finta di non avere y nella ricerca, ma nel mondo reale, davvero non lo avrete. Il sistema addestrato predice y per noi, e noi valutiamo quanto bene funziona il sistema.

3 – Probabilità

Invece di categorizzare un input solo in una delle K diverse classi, potremmo voler conoscere la probabilità di ciascuna di queste classi. Per ogni possibile categoria, P(C = k | x) restituisce un valore tra 0 e 1, con valori più vicini a 1 che significano che il classificatore “pensa” che quella classe sia probabilmente la categoria dell’input. Per classificare, vogliamo scegliere il più grande P(C = k | x).

4 – Parametrico e non parametrico

I modelli parametrici coinvolgono l’adattamento dei parametri. Per esempio, vogliamo trovare buoni valori per i vettori w per il nostro classificatore lineare. I modelli parametrici hanno un numero finito di parametri, in cui il numero di parametri è indipendente dal set di allenamento.

I modelli non parametrici implicano la memorizzazione dei dati e il loro utilizzo in qualche modo. Qui, il numero di parametri dipende dall’insieme di allenamento (quanti dati si memorizzano). Più specificamente, il numero di parametri cresce con la dimensione del set di allenamento.

Valutazione dei classificatori di Machine Learning

Dopo aver visto una serie di esempi (x, y), il modello sceglie una mappatura F: x -> y che replica lo schema input-output degli esempi. La domanda è quanto bene funziona il modello F dopo l’allenamento? Possiamo valutare F sui dati di allenamento, ma la performance sui dati di allenamento non ci dice realmente quanto bene il modello si generalizza ad altri dati. In altre parole, F potrebbe semplicemente memorizzare i dati di allenamento. Quindi, dobbiamo valutare i dati di test per avere un’idea migliore di come funziona il modello.

La misura di valutazione più semplice per la classificazione è la precisione, che è la frazione di punti classificati correttamente. L’accuratezza può essere calcolata come la somma dei veri positivi e dei veri negativi, divisa per tutti i punti dei dati. Il tasso di errore è semplicemente 1 – Accuratezza, o la somma di falsi positivi e falsi negativi, divisa per tutti i punti dati.

Per implementare l’accuratezza, il modo migliore è quello di memorizzare le vostre previsioni per ogni vettore di test x_t. Quindi, se hai un totale di T vettori da testare, ti ritrovi con un vettore T-dimensionale con tutte le tue previsioni e poi semplicemente lo confronti con la ground truth. Potresti anche salvare le probabilità per calcolare altre metriche, ma questo potrebbe richiedere molta memoria se hai molte classi.

1 – Matrice di confusione

Una matrice di confusione è una tabella specifica che permette la visualizzazione delle prestazioni di un algoritmo, tipicamente un apprendimento supervisionato. Ogni riga della matrice rappresenta le istanze di una classe prevista mentre ogni colonna rappresenta le istanze di una classe reale. Permette di vedere quali classi sono più confuse. Una diagonale “forte” indica una buona performance. In una matrice di confusione normalizzata, le righe sono normalizzate per sommare a 1.

2 – Precisione e richiamo

La precisione è il numero di esempi positivi correttamente classificati diviso per il numero totale di esempi classificati come positivi. Recall è il numero di esempi positivi correttamente classificati diviso per il numero totale di esempi positivi effettivi nel set di test. Precision-Recall è una metrica dominante nel rilevamento degli oggetti ed è particolarmente utile quando le categorie sono sbilanciate. Alta precisione significa che un algoritmo ha restituito sostanzialmente più risultati rilevanti che irrilevanti, mentre alto richiamo significa che un algoritmo ha restituito la maggior parte dei risultati rilevanti.

3 – Soglie del classificatore

Spesso un classificatore avrà qualche valore di fiducia in ogni categoria. Questi sono più spesso generati da classificatori probabilistici. A volte, si fissano delle soglie per i valori di probabilità. Nella computer vision, questo accade spesso nel rilevamento. La soglia ottimale varia a seconda dei compiti. Alcune metriche di performance sono sensibili alla soglia. Cambiando il valore della soglia dal minimo al massimo (da 0 a 1), possiamo disegnare una curva (ROC e Precision-Recall Curve).

Potenza del modello

1 – Overfitting & Underfitting

Si dice che il tuo classificatore F è overfit dei dati se la performance di training è molto maggiore di quella di test. D’altra parte, F non si adatta ai dati quando non è abbastanza potente per modellare la relazione input-output.

2 – Capacità del modello

La capacità del modello si riferisce al numero di parametri. Una capacità maggiore generalmente significa che hai bisogno di più dati di allenamento per addestrare il modello, altrimenti, ha un alto rischio di overfitting. D’altra parte, una bassa capacità probabilmente significa che si sottoadatta significativamente i dati di allenamento.

Specificamente, con le reti neurali, più neuroni significano più capacità. Una buona analogia è che il classificatore lineare ha una capacità molto bassa e la rete neurale profonda ha molta capacità. Con più dati di allenamento, vince il modello più complesso. I classificatori con un modello maggiore possono creare confini decisionali complessi, ma troppo complessi possono essere un modello povero per i dati di test, specialmente se i dati sono limitati.

3 – Complessità del campione

La complessità del campione è il numero di campioni di allenamento che dobbiamo fornire all’algoritmo di apprendimento in modo che la funzione restituita dall’algoritmo sia entro un errore arbitrariamente piccolo della migliore funzione possibile (treno e test). Gli algoritmi con una maggiore capacità del modello tendono ad avere una peggiore complessità del campione perché hanno più parametri da adattare e sono suscettibili di sovraadattare con dati di allenamento insufficienti. In questi casi, le tecniche di regolarizzazione possono aiutare.

Se siete interessati a questo materiale, seguite la pubblicazione Cracking Data Science Interview per ricevere i miei successivi articoli su come superare il processo di intervista di data science.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *