Apprendimento automatico e Reti Neurali - pagina 61

 

Regressione lineare: un'introduzione amichevole



Regressione lineare: un'introduzione amichevole

Ciao, sono Louis Serrano, e questa è un'amichevole introduzione alla regressione lineare. Questo video è la prima parte di una serie in tre parti in cui tratterò la regressione lineare, la regressione logistica e le macchine vettoriali di supporto. Tuttavia, per ora concentriamoci sulla regressione lineare.

In genere, le spiegazioni della regressione lineare coinvolgono concetti complessi come algebra lineare, matrici, derivate, calcolo e funzioni di errore. Ma per me, questo può essere travolgente. Ho una mente visiva e preferisco comprendere la regressione lineare con un approccio più intuitivo utilizzando punti e linee.

Lasciatemi dimostrare cosa intendo con questo. Innanzitutto, definiamo la regressione lineare utilizzando un esempio di prezzi delle case. Immagina di avere cinque case con un numero variabile di stanze. Possediamo casa tre e vogliamo stimare il suo prezzo per la vendita. Per fare questo, guardiamo i prezzi di case simili e proviamo a fare un'ipotesi plausibile. Dopo aver osservato che la casa uno costa $ 150.000, la casa due costa $ 200.000, la casa quattro costa $ 300.000 e la casa cinque costa $ 350.000, possiamo stimare che la casa tre potrebbe costare circa $ 250.000.

In sostanza, quello che abbiamo fatto qui è eseguire la regressione lineare. Abbiamo tracciato le case su un grafico, con il numero di stanze sull'asse orizzontale e il prezzo sull'asse verticale. Abbiamo osservato che i prezzi sembravano seguire una linea retta, quindi abbiamo posizionato la casa tre sulla linea per fare la stima migliore. Questo semplice approccio di far passare una linea attraverso un insieme di punti e usarla per le previsioni è l'essenza della regressione lineare.

In realtà, il calcolo dei prezzi coinvolge fattori aggiuntivi, rendendo i dati più complessi. Tuttavia, possiamo ancora adattare una linea che si avvicina molto ai prezzi delle case. La regressione lineare può essere applicata a vari scenari, come il calcolo dei prezzi delle azioni nella finanza o la determinazione della durata della vita dei pazienti in medicina. Le applicazioni sono numerose.

Ora, discutiamo di come effettivamente eseguiamo la regressione lineare. Abbiamo bisogno di un algoritmo o di una procedura per trovare la linea che meglio si adatta ai punti. Per semplicità, ci concentreremo su un algoritmo di base che prevede di apportare piccoli aggiustamenti alla linea finché non si adatta bene ai punti.

Ecco un riassunto dell'algoritmo:

  1. Inizia con una linea casuale.
  2. Definire il tasso di apprendimento, che determina l'entità degli aggiustamenti che apportiamo.
  3. Ripetere i seguenti passaggi un numero specificato di volte (epoche):
    • Seleziona un punto a caso.
    • Sposta la linea verso il punto in base alla sua posizione rispetto alla linea.
  4. Goditi la tua linea aderente!

Per spostare la linea verso un punto, eseguiamo rotazioni e traslazioni. Ruotando la linea in senso orario o antiorario si regola la pendenza, mentre traslandola verso l'alto o verso il basso si regola l'intercetta y. Gli aggiustamenti vengono effettuati aggiungendo o sottraendo piccoli importi, che sono determinati dal tasso di apprendimento.

Ripetendo questo processo più volte, la linea si avvicina gradualmente ai punti, ottenendo un buon adattamento. Il numero di epoche determina quante volte ripetiamo il processo e può essere regolato in base all'accuratezza desiderata e alle risorse computazionali disponibili.

Questa è l'idea di base dietro la regressione lineare. È un potente strumento per adattare le linee ai punti dati e fare previsioni. Spero che questa spiegazione intuitiva ti aiuti a capire meglio la regressione lineare.

Abbiamo qualcosa che è più vicino al punto principale e ci sono quattro casi da verificare per garantire che il trucco quadrato funzioni in modo efficace. Esaminiamo un altro caso in cui il punto si trova sotto la linea ea destra dell'asse y. L'equazione viene riproposta. Nel primo passaggio, selezioniamo un piccolo tasso di apprendimento di 0,01. Nel passaggio due, applichiamo questo tasso alla pendenza e all'intercetta y. Ora, la distanza verticale è negativa perché il punto è sotto la linea (-4), mentre la distanza orizzontale rimane positiva perché il punto è a destra dell'asse y (+5). Per modificare la pendenza, aggiungiamo 0,01 volte (-4) volte 5, ottenendo -0,2. Sottraendo -0,2, riduciamo la pendenza, facendo muovere la linea in senso orario. Per l'intercetta y, aggiungiamo il tasso di apprendimento moltiplicato per la distanza verticale, che è 0,01 volte (-4), risultando in -0,04. La nuova equazione della linea diventa y = 1,8 - 0,2x + 2,96 - 0,04. Si noti che la pendenza è minore, indicando una rotazione in senso orario, e l'intercetta y è minore, indicando una traslazione verso il basso. Questo aggiustamento ci avvicina al punto. Sebbene abbiamo verificato solo due dei quattro casi, ti incoraggio a testarli tutti per verificare che il secondo passaggio funzioni in modo coerente. Infine, esploriamo l'algoritmo di regressione lineare. L'algoritmo procede come segue:

  1. Inizia con una linea casuale.
  2. Imposta il numero di ripetizioni (epoche) su 8.000.
  3. Scegli una piccola lunghezza del passo (tasso di apprendimento) di 0,01.
  4. Ripeti il seguente ciclo per il numero specificato di epoche:
    • Seleziona un punto a caso.
    • Regola la linea per spostarti verso il punto utilizzando la velocità di apprendimento, la distanza verticale e la distanza orizzontale.
  5. Goditi la tua linea aderente. Questo è l'algoritmo di regressione lineare. Ti incoraggio a codificarlo utilizzando lo pseudocodice fornito e testarlo su diversi set di dati per osservarne le prestazioni. Ho implementato questo algoritmo e ho scoperto che funziona eccezionalmente bene.

Ora sorge la domanda: questo algoritmo è migliore o uguale a quelli esistenti? Questa situazione mi ricorda un brillante matematico di nome John Borwein, con cui una volta ho lavorato. Ha cercato formule per calcolare le cifre di pi greco e ha scoperto che quando una formula si avvicinava molto a pi greco, era una situazione vantaggiosa per tutti perché o ha scoperto una nuova formula o ha trovato qualcosa di notevolmente vicino a pi greco. Allo stesso modo, con questo algoritmo, abbiamo una situazione vantaggiosa per tutti. O supera gli algoritmi esistenti o si dimostra altrettanto efficace pur essendo più semplice.

Sorprendentemente, questo algoritmo è esattamente lo stesso di quello utilizzato nella regressione lineare tradizionale, come la discesa del gradiente dell'errore quadrato. L'approccio tradizionale prevede la riduzione al minimo dell'errore quadrato calcolando la distanza tra i punti e la linea e quindi utilizzando derivate, calcolo e discesa del gradiente o risolvendo sistemi lineari di equazioni. La sfida che ti presento è verificare che il trucco quadrato sia equivalente al tradizionale metodo dell'errore quadrato calcolando l'errore quadrato, prendendo le derivate ed eseguendo piccoli passi opposti alla direzione della derivata, proprio come la discesa del gradiente. Scoprirai che la derivata della differenza al quadrato è strettamente correlata alle distanze verticale e orizzontale. Ciò dimostra che il trucco quadrato è equivalente all'approccio tradizionale.

La seconda sfida riguarda la misurazione della cattiveria o della bontà di una linea. Abbiamo discusso in precedenza l'errore quadrato, che comporta l'elevazione al quadrato delle distanze. Un altro metodo più semplice è l'errore assoluto, dove sommiamo i valori assoluti delle distanze senza considerare i loro segni. La linea cattiva ha distanze arancioni maggiori, mentre la linea buona ha distanze arancioni minori a causa della sua maggiore vicinanza ai punti. Utilizzando il calcolo, è possibile ridurre al minimo l'errore assoluto ed eseguire passaggi di discesa del gradiente. Puoi sviluppare un trucco assoluto, che si occupa solo della distanza orizzontale e include un'istruzione if per gestire la posizione della linea rispetto al punto. Esplorando questa sfida, scoprirai il trucco assoluto. Sentiti libero di codificarlo e osservarne l'efficacia.

Questo video è incentrato sulla regressione lineare. Ricorda che questo fa parte di una serie in tre parti che include trucchi per la regressione logistica e macchine vettoriali di supporto. Restate sintonizzati per i prossimi video. Se ti è piaciuto questo contenuto, ti preghiamo di prendere in considerazione l'iscrizione, il gradimento e la condivisione. Apprezzo i vostri commenti, domande e suggerimenti. Fammi sapere come te la sei cavata con le sfide e sentiti libero di suggerire argomenti per i video futuri. Puoi anche contattarmi su Twitter (@LouisLikesMath). Grazie e ci vediamo nel prossimo video.

Linear Regression: A friendly introduction
Linear Regression: A friendly introduction
  • 2018.12.22
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAn introduction to linear regression that req...
 

Regressione logistica e algoritmo Perceptron: un'introduzione amichevole



Regressione logistica e algoritmo Perceptron: un'introduzione amichevole

Esiste un algoritmo migliore in grado di gestire tutti e tre i casi contemporaneamente. Spiegherò ora il trucco del percettrone, che si prende cura di questi casi insieme. Consideriamo una linea con la stessa equazione e un punto blu che si trova sulla linea rossa. Dobbiamo regolare la posizione della linea per accogliere questo punto. Per fare ciò, ridurremo il valore di -6 di una piccola quantità, diciamo 0,1, che sposterà la linea verso l'alto. Successivamente, regoleremo la pendenza della linea per ruotarla. Ad esempio, se vogliamo ruotare la linea per renderla più ripida, possiamo ridurre il valore da 2 a 1,8.

Allo stesso modo, se il punto è più lontano in quella direzione, dobbiamo ruotare maggiormente la linea per avvicinarla. In questo caso, potremmo ridurre il valore di 2 a 1,4. Tuttavia, se il punto si trova dall'altra parte, dobbiamo ruotare la linea nella direzione opposta. Quindi, potremmo aver bisogno di aumentare il valore di 2, diciamo a 2,2. Ripercorriamo questo processo in modo più accurato. Quando il punto non è lontano dall'asse y, riduciamo il valore di -6 di una piccola quantità, ad esempio 0,01, che sposta leggermente la linea verso l'alto.

Consideriamo ora il valore di 2. Se il punto ha coordinate (4, 5), la distanza orizzontale è 4. Per regolare la pendenza, possiamo moltiplicare 4 per un tasso di apprendimento, diciamo 0,04, per ridurre il valore di 2 Questo ruoterà la linea attorno a un perno. Allo stesso modo, possiamo applicare lo stesso principio al valore di 3. Ad esempio, se il punto ha coordinate (4, 5), la distanza verticale è 5. Moltiplicando 5 con un tasso di apprendimento, come 0,05, possiamo diminuire il valore di 3. Ciò ruoterà ulteriormente la linea. Infine, dopo aver ridotto 2 di 0,04, 3 di 0,05 e -6 di 0,01, l'equazione diventa 1,96x + 2,95y - 6,01. Questa tecnica, nota come trucco del percettrone, affronta sia la direzione che l'entità degli aggiustamenti. Per riassumere, con un tasso di apprendimento di 0,01, possiamo aggiornare l'equazione nella forma di ax + per + c = 0 riducendo a di un tasso di apprendimento per b, riducendo b di un tasso di apprendimento per q e riducendo c di a tasso di apprendimento.

Tuttavia, c'è un'altra considerazione: il caso in cui l'area blu è in alto e l'area rossa è in basso, con punti classificati erroneamente. In questo scenario, aggiungeremmo i valori invece di sottrarli. Ad esempio, se abbiamo -2x - 3y + 6 = 0 invece di 2x + 3y - 6 = 0, aggiungeremo piccole quantità ad a, b e c. Tenendo conto della posizione dei punti rispetto all'asse y, possiamo determinare se aumentare o diminuire i valori. Passiamo ora all'algoritmo di regressione logistica, che è un approccio ancora migliore.

Non entrerò nei dettagli, ma ti fornirò uno schema e due sfide. La prima sfida si chiama discesa del gradiente, che prevede l'utilizzo di una funzione di errore per misurare le prestazioni del classificatore. L'obiettivo è ridurre al minimo l'errore e migliorare l'algoritmo utilizzando il calcolo. Il processo di discesa del gradiente è simile all'algoritmo del percettrone discusso in precedenza.

La seconda sfida è scegliere una funzione di attivazione appropriata per la regressione logistica. La funzione di attivazione è responsabile della trasformazione della somma ponderata degli input in un valore di probabilità compreso tra 0 e 1.

Una funzione di attivazione comunemente usata è la funzione sigmoidea, che ha una curva a forma di S. Mappa qualsiasi numero reale su un valore compreso tra 0 e 1. La funzione sigmoide è definita come:

σ(z) = 1 / (1 + e^(-z))

Qui, z rappresenta la somma ponderata degli input ed è calcolata come:

z = ax + b y + c

Nella regressione logistica, l'obiettivo è trovare i valori ottimali per a, b e c che massimizzino la verosimiglianza dei dati osservati. Ciò si ottiene minimizzando una funzione di costo, spesso indicata come funzione di perdita di entropia incrociata.

La funzione di costo misura la discrepanza tra le probabilità previste e le effettive etichette di classe. Una forma comune della funzione di costo è:

J(a, b, c) = -1/m * Σ(y * log(σ(z)) + (1-y) * log(1-σ(z)))

In questa equazione, m rappresenta il numero di esempi di addestramento, y è la vera etichetta di classe (0 o 1) e σ(z) è la probabilità prevista della classe positiva.

Per minimizzare la funzione di costo, è possibile applicare la discesa del gradiente. L'idea alla base della discesa del gradiente è di aggiornare in modo iterativo i valori dei parametri (a, bec) nella direzione opposta del gradiente della funzione di costo rispetto a questi parametri. Questo processo continua fino alla convergenza, dove la funzione di costo è minimizzata.

Le equazioni di aggiornamento per la discesa del gradiente nella regressione logistica sono simili a quelle dell'algoritmo perceptron. Utilizzando il tasso di apprendimento (α), gli aggiornamenti dei parametri sono i seguenti:

a := a - α * ∂J/∂ab := b - α * ∂J/∂bc := c - α * ∂J/∂c

Le derivate parziali (∂J/∂a, ∂J/∂b, ∂J/∂c) rappresentano i gradienti della funzione di costo rispetto a ciascun parametro. Possono essere calcolati usando il calcolo.

Aggiornando in modo iterativo i valori dei parametri utilizzando la discesa del gradiente, la regressione logistica può imparare a classificare i dati con maggiore flessibilità rispetto all'algoritmo perceptron. È un algoritmo ampiamente utilizzato ed efficace per problemi di classificazione binaria.

In conclusione, la regressione logistica si basa sui principi dell'algoritmo perceptron ma introduce un quadro probabilistico e una diversa funzione di costo. Applicando la discesa del gradiente, ottimizza i parametri per massimizzare la verosimiglianza dei dati osservati. La scelta della funzione di attivazione sigmoidea consente alla regressione logistica di produrre stime di probabilità per l'appartenenza alla classe.

Logistic Regression and the Perceptron Algorithm: A friendly introduction
Logistic Regression and the Perceptron Algorithm: A friendly introduction
  • 2019.01.01
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAn introduction to logistic regression and th...
 

Support Vector Machines (SVM): un'introduzione amichevole



Support Vector Machines (SVM): un'introduzione amichevole

Salve, mi chiamo Luis Serrano e questa è un'amichevole introduzione a Support Vector Machines, o SVM in breve. Questo è il terzo video di una serie di tre sui modelli lineari. Se non hai ancora visto il primo, si chiama "Regressione lineare" e il secondo si chiama "Regressione logistica". Questo video si basa sui concetti trattati nel secondo video.

In primo luogo, vorrei dare credito agli studenti del corso di machine learning che ho insegnato alla Quest University nella Columbia Britannica, in Canada. Mi hanno aiutato a sviluppare l'idea chiave per questo video ed è stata un'esperienza meravigliosa lavorare con loro. Nella foto mi vedete con il mio amico Richard Hoshino, anche lui professore all'università.

Ora, tuffiamoci in SVM. Le Support Vector Machines sono un algoritmo di classificazione cruciale che mira a separare i punti di due classi utilizzando una linea. Tuttavia, SVM fa un ulteriore passo avanti per trovare la migliore linea possibile che massimizza la separazione tra i punti. Tipicamente, SVM è spiegato in termini di ottimizzazione lineare o discesa del gradiente. Ma in questo video, introdurrò un metodo che non ho visto in letteratura, che io chiamo il "metodo dei piccoli passi". È un approccio iterativo in cui miglioriamo continuamente la capacità di classificazione della linea.

Per iniziare, ricapitoliamo il video precedente sulla regressione logistica e l'algoritmo perceptron. In quel video, abbiamo cercato di trovare una linea che separi i dati in due classi: punti rossi e punti blu. L'algoritmo del percettrone inizia con una linea casuale e la regola in modo iterativo in base al feedback dei punti. L'algoritmo fa piccoli passi per migliorare gradualmente la capacità della linea di classificare correttamente i punti.

Ora, introduciamo il passaggio aggiuntivo in SVM. Invece di trovare solo una linea, miriamo a trovare due linee parallele che siano il più distanti possibile pur separando efficacemente i dati. Per illustrare questo, immagina due serie di linee parallele, equidistanti dalla linea principale. L'obiettivo è massimizzare la distanza tra queste due linee. Maggiore è la separazione, migliore è la classificazione.

Successivamente, dobbiamo addestrare l'algoritmo per selezionare la linea migliore. Otteniamo ciò moltiplicando le equazioni di linea per diverse costanti. In questo modo, possiamo controllare la distanza tra le linee. Una costante più grande determina una separazione più ampia, mentre una costante più piccola avvicina le linee. In questo modo possiamo trovare le linee ottimali che massimizzano la distanza.

Per separare le linee utilizzando le equazioni, consideriamo un'equazione di esempio: 2x + 3y - 6 = 0. La moltiplicazione di questa equazione per un fattore costante non modifica la linea stessa ma influisce sulla distanza tra le linee. Possiamo regolare questa costante per espandere o contrarre le linee.

Per formalizzare l'algoritmo SVM, incorporiamo il tasso di espansione, che determina la dimensione del passo per separare le linee. Moltiplicando le equazioni di linea con un valore vicino a 1, come 0,99, aumentiamo gradualmente la distanza tra le linee ad ogni iterazione.

In sintesi, l'algoritmo SVM segue questi passaggi:

  1. Inizia con una linea casuale e due linee parallele equidistanti.
  2. Applicare l'algoritmo perceptron per regolare la posizione della linea in base al feedback del punto.
  3. Introduci la velocità di espansione per allargare leggermente le linee.
  4. Ripeti questi passaggi in modo iterativo per trovare le linee ottimali che massimizzano la separazione.

Questa è una breve panoramica dell'algoritmo SVM e di come incorpora il metodo a piccoli passi per migliorare la classificazione. È una tecnica efficace per risolvere i problemi di classificazione e spero che questo video fornisca una prospettiva unica su SVM.

Ora considereremo un altro aspetto che contribuisce all'errore nel nostro modello. Questo aspetto si basa sulla distanza tra due linee. Per dimostrarlo, esaminiamo due macchine a vettori di supporto (SVM) che classificano un set di dati. Il primo SVM ha linee più larghe ma classifica erroneamente un punto, mentre il secondo SVM ha linee strette ma classifica correttamente tutti i punti. La domanda è: quale è meglio? La risposta dipende da vari fattori come il set di dati, il modello e lo scenario. Tuttavia, possiamo analizzarlo utilizzando le funzioni di errore.

Ricordiamo il calcolo dell'errore nell'algoritmo del percettrone. Quando un punto è correttamente classificato, l'errore è zero. Se un punto viene classificato in modo errato, l'errore dipende dalla sua distanza dal confine. I punti più vicini al confine hanno errori minori, mentre quelli più lontani hanno errori maggiori. Vogliamo una funzione di errore che catturi questa relazione di distanza. Allo stesso modo, in SVM, abbiamo due errori di classificazione: l'errore di classificazione blu e l'errore di classificazione rosso. Ogni errore misura la distanza da un punto classificato erroneamente al rispettivo confine. Sommando queste distanze si ottiene l'errore di classificazione.

Inoltre, abbiamo l'errore di margine, che indica la vicinanza delle linee. Un errore di margine più grande implica che le linee sono più vicine tra loro, mentre un errore di margine più piccolo suggerisce che le linee sono più distanti. Vogliamo che il nostro modello abbia un piccolo errore di margine, indicando linee larghe. Quindi, minore è l'errore, migliore è il nostro modello. È interessante notare che l'errore di margine assomiglia al termine di regolarizzazione nella regolarizzazione L2.

Per riassumere, l'errore SVM è costituito dall'errore di classificazione e dall'errore di margine. L'errore di classificazione misura il numero di punti classificati in modo errato e l'entità dell'errore di classificazione. L'errore di margine indica la distanza tra le linee. Questi due errori insieme formano l'errore SVM totale. Il nostro obiettivo è ridurre al minimo questo errore utilizzando la discesa del gradiente, simile al trucco SVM di regolare la posizione e la separazione delle linee.

Tornando al confronto tra i due modelli, quello di sinistra ha un grosso errore di classificazione ma un piccolo errore di margine poiché le linee sono molto distanti. Il modello a destra, invece, ha un piccolo errore di classificazione ma un grande errore di margine dovuto alla stretta vicinanza delle linee. Decidere quale modello è migliore dipende dalle nostre preferenze e requisiti. Possiamo usare il parametro C, un iperparametro, per controllare l'importanza dell'errore di classificazione relativo all'errore di margine. Una C minuscola enfatizza l'errore di margine, risultando in un modello come quello a sinistra, mentre una C grande dà la priorità all'errore di classificazione, portando a un modello simile a quello a destra.

È importante notare che la scelta degli iperparametri può essere determinata attraverso la sperimentazione e il test di valori diversi per valutare le prestazioni del modello. Gli iperparametri svolgono un ruolo cruciale negli algoritmi di apprendimento automatico e ci consentono di mettere a punto i nostri modelli.

Grazie per l'attenzione prestata durante questa serie di video sui modelli lineari. Spero che tu l'abbia trovato informativo e divertente. Sentiti libero di mettere mi piace, condividere e commentare. Il tuo feedback è apprezzato. Resta sintonizzato per altri video in futuro.

Support Vector Machines (SVMs): A friendly introduction
Support Vector Machines (SVMs): A friendly introduction
  • 2019.01.27
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAn introduction to support vector machines (S...
 

Denoising e Autoencoder Variazionali



Denoising e Autoencoder Variazionali

Ciao, sono Luis Serrano e in questo video parleremo degli autocodificatori. In particolare, ci concentreremo sul denoising e sugli autoencoder variazionali.

Gli autoencoder sono modelli di generatori popolari e fanno parte di una serie che include reti generative avversarie e macchine Boltzmann limitate. Se ti piacciono i modelli di generatore, assicurati di controllare i link nei commenti.

Per capire gli autocodificatori, immaginiamo che tu voglia comprendere un libro, quindi chiedi alla tua amica intelligente Aisha di riassumerlo per te. Il compito di Aisha è condensare il libro in poche pagine per facilitarne la comprensione. Quindi, valutiamo la qualità del riassunto di Aisha chiedendo all'altra nostra amica, Berta, di riscrivere l'intero libro sulla base del riassunto di Aisha. Confrontiamo il libro riscritto di Berta con il libro originale per valutarne le prestazioni.

Idealmente, Aisha riassumerebbe le idee principali del libro nel modo più accurato possibile e Berta eccellerebbe nel ricostruire il libro sulla base di quelle idee. Costringendo rispettivamente Aisha e Berta a condensare e ricostruire il libro, acquisiscono una profonda comprensione del suo contenuto. Questo concetto è alla base degli autoencoder. Semplificano notevolmente i dati e poi li ricostruiscono, estraendo le caratteristiche più utili nel processo.

Gli autoencoder sono algoritmi di riduzione della dimensionalità e fanno parte dell'apprendimento automatico senza supervisione. Nel contesto dei set di dati della vita reale, consideriamo un set di dati di immagini facciali. Ogni immagine è codificata utilizzando più numeri per rappresentare il colore di ciascun pixel. Aisha, ora indicata come il codificatore, riassume questo set di dati estraendo caratteristiche come la dimensione degli occhi, il colore dei capelli e altre caratteristiche facciali. Queste caratteristiche vengono poi passate a Berta, il decodificatore, che aiuta a ricostruire i volti da queste caratteristiche estratte.

La dimensione di un punto dati si riferisce al numero di numeri necessari per codificarlo. In questo caso, riduciamo la dimensionalità del set di dati dell'immagine facciale riassumendolo in un insieme più piccolo di caratteristiche e quindi aumentandolo nuovamente durante il processo di ricostruzione.

I codificatori automatici sono costituiti da due parti: un codificatore che riduce i dati e un decodificatore che li espande nuovamente. L'obiettivo è che l'output ricostruito assomigli molto all'input originale. I dati rimpiccioliti o semplificati sono noti come spazio latente, che riassume e compatta i dati per fornire preziose informazioni.

Due importanti tipi di autocodificatori sono gli autocodificatori denoising e gli autocodificatori variazionali. Gli autocodificatori di denoising sono addestrati a prendere dati corrotti, come immagini rumorose, e generare versioni chiare e più nitide di tali immagini. Gli autocodificatori variazionali, d'altra parte, sono addestrati a generare nuovi dati prelevando campioni da uno spazio latente semplificato, che rappresenta una versione a dimensione inferiore dello spazio dati originale.

Gli autocodificatori variazionali sono particolarmente efficaci nella generazione di immagini ad alta risoluzione, come gli spazi. Nel video puoi trovare esempi di volti generati da un codificatore automatico variazionale.

Il concetto principale da comprendere prima di immergersi negli autoencoder è la riduzione della dimensionalità. Per illustrare questo concetto, consideriamo un set di dati campione di immagini. Queste immagini sono semplici immagini di 2x2 pixel, con ogni pixel di un colore diverso: rosso, blu, giallo e verde. Ogni pixel ha un valore di intensità compreso tra 0 e 1, dove 1 rappresenta l'intensità del colore pieno e 0 rappresenta il bianco.

Ogni punto dati in questo set di dati è descritto da quattro valori di intensità, corrispondenti ai quattro colori. Tuttavia, a un esame più attento, notiamo una proprietà peculiare: le intensità dei pixel negli angoli in alto a destra e in basso a sinistra sono sempre le stesse, così come le intensità dei pixel negli angoli in alto a sinistra e in basso a destra. Ciò significa che non abbiamo più bisogno di codificare tutti e quattro i valori di intensità in modo indipendente. Invece, possiamo rappresentare ogni punto dati con solo due valori: l'intensità dei pixel in alto a sinistra e in basso a destra.

In questo modo, abbiamo ridotto la dimensionalità del nostro set di dati da quattro a due. Questa riduzione ci consente di catturare le informazioni essenziali delle immagini scartando caratteristiche ridondanti o correlate. Semplifica inoltre la rappresentazione dei dati e può aiutare in varie attività come la visualizzazione, l'archiviazione e l'analisi.

Gli autoencoder utilizzano un principio simile di riduzione della dimensionalità ma in un modo più sofisticato e appreso. Invece di selezionare manualmente quali caratteristiche mantenere o scartare, gli autoencoder imparano a estrarre automaticamente le caratteristiche più informative dai dati di input.

Approfondiamo l'architettura e il processo di addestramento degli autoencoder. Come accennato in precedenza, gli autoencoder sono costituiti da un codificatore e un decodificatore.

Il codificatore prende i dati di input, come un'immagine, e applica una serie di trasformazioni per codificarli in una rappresentazione di dimensione inferiore, nota come spazio latente. Lo spazio latente è una rappresentazione compressa dei dati di input, che ne cattura le caratteristiche più importanti.

Il decodificatore prende la rappresentazione dello spazio latente e applica le trasformazioni inverse per ricostruire i dati di input originali il più fedelmente possibile. L'obiettivo è ridurre al minimo la differenza tra i dati di input e l'output ricostruito, apprendendo efficacemente una rappresentazione compressa in grado di riprodurre fedelmente l'input.

Per addestrare un codificatore automatico, abbiamo bisogno di un set di dati di dati di input per il quale disponiamo sia dei campioni originali che dei corrispondenti output di destinazione. Durante l'addestramento, l'autoencoder impara a ridurre al minimo l'errore di ricostruzione, che in genere viene misurato utilizzando una funzione di perdita come l'errore quadratico medio (MSE) o l'entropia incrociata binaria.

Il processo di addestramento prevede l'alimentazione dei dati di input attraverso il codificatore per ottenere la rappresentazione dello spazio latente. Quindi, la rappresentazione dello spazio latente viene fatta passare attraverso il decodificatore per ricostruire i dati. La ricostruzione viene confrontata con l'input originale e la discrepanza tra di essi viene utilizzata per aggiornare i pesi del codificatore e del decodificatore tramite retropropagazione e discesa del gradiente.

Addestrando in modo iterativo l'autoencoder su un set di dati di grandi dimensioni, impara gradualmente a estrarre le caratteristiche più salienti dai dati di input e diventa in grado di ricostruirli con una perdita minima.

Gli autoencoder di denoising e gli autoencoder variazionali sono due varianti popolari dell'architettura di autoencoder di base.

Gli autoencoder di denoising sono specificamente progettati per gestire dati di input rumorosi o corrotti. Durante l'addestramento, all'autoencoder vengono presentati dati di input che sono stati intenzionalmente danneggiati, ad esempio aggiungendo rumore casuale o introducendo distorsioni. L'autoencoder impara quindi a eliminare il rumore dall'input ricostruendo i dati originali e puliti nel modo più accurato possibile. Questa capacità di denoising consente all'autoencoder di apprendere rappresentazioni robuste che sono più resistenti al rumore.

Gli autoencoder variazionali (VAE) adottano un approccio diverso incorporando la modellazione probabilistica nel framework dell'autoencoder. I VAE mirano ad apprendere uno spazio latente che segue una specifica distribuzione di probabilità, come una distribuzione gaussiana. Ciò consente ai VAE di generare nuovi punti dati campionando dalla distribuzione appresa nello spazio latente.

L'addestramento dei VAE comporta non solo la riduzione al minimo dell'errore di ricostruzione, ma anche la massimizzazione della probabilità che la distribuzione dello spazio latente corrisponda alla distribuzione desiderata. Ciò si ottiene attraverso una combinazione di perdita di ricostruzione e un termine di regolarizzazione chiamato divergenza di Kullback-Leibler (KL), che misura la differenza tra la distribuzione appresa e la distribuzione desiderata.

Ottimizzando contemporaneamente la perdita di ricostruzione e la divergenza KL, i VAE imparano a generare nuovi campioni di dati che presentano caratteristiche simili ai dati di addestramento mentre esplorano la diversità dello spazio latente appreso.

Gli autoencoder sono potenti modelli di apprendimento senza supervisione in grado di apprendere rappresentazioni compatte dei dati di input. Sono costituiti da un codificatore e un decodificatore che lavorano insieme per comprimere e ricostruire i dati. Gli autoencoder di denoising e gli autoencoder variazionali sono due varianti degne di nota che estendono l'architettura di autoencoder di base e offrono funzionalità aggiuntive come il denoising e la modellazione generativa.

Esaminiamo alcuni esempi aggiuntivi in questa sezione. Il primo esempio che abbiamo qui sembra essere un'immagine completamente colorata, ad eccezione del pixel verde nell'angolo in basso a destra, che ha un valore di 0,2. L'encoder denoising è in grado di colorare l'intera immagine per noi. Successivamente, abbiamo un altro esempio di immagine bianca, ad eccezione del pixel blu con un valore di 0,8 nell'angolo in alto a destra. Il codificatore neocenter determina che l'immagine deve essere bianca e trasforma il pixel blu in bianco. Ti incoraggio a esplorare il repository e sperimentare con le tue immagini per vedere i risultati. In sintesi, questi codificatori esterni costringono qualsiasi immagine ad assomigliare a una delle immagini nel set di dati addestrato.

Gli altri codificatori che abbiamo utilizzato finora avevano solo un livello, ma è importante notare che questo non è sempre il caso delle reti neurali. I codificatori possono avere più livelli e architetture complesse, come livelli convoluzionali o ricorrenti. Di seguito è riportato un esempio di un codificatore convoluzionale utilizzato per eliminare il rumore dalle immagini di caratteri scritti a mano nel set di dati MNIST. Come puoi vedere, questi tipi di codificatori automatici di denoising si comportano bene nella pulizia delle immagini rumorose.

Passiamo ora a un'altra affascinante proprietà degli autocodificatori. Hanno la capacità di generare punti dati completamente nuovi, come nuove immagini. Queste immagini generate non sono semplici copie delle immagini nel set di dati, ma immagini completamente nuove e uniche che assomigliano molto a quelle nel set di dati. Questa capacità è davvero notevole. Ad esempio, un codificatore automatico può generare il volto di una persona che non esiste o una cifra scritta a mano che non è mai stata disegnata prima. Per generare queste nuove immagini, dobbiamo solo concentrarci sul decoder e dimenticarci del codificatore. Il decodificatore prende una serie di numeri, chiamata rappresentazione latente, e genera un'immagine basata su quei numeri. Questo processo fornisce una rappresentazione visiva dello spazio latente.

Per illustrare questo, consideriamo un esempio. Supponiamo di inserire i numeri 0.3 e 0.8 nel decodificatore. Genera un'immagine con intensità di 0,12 e 0,95. Possiamo visualizzare lo spazio latente come un quadrato, dove l'asse orizzontale corrisponde alla diagonale rosso-verde e l'asse verticale corrisponde alla diagonale blu-gialla dell'immagine. Ogni punto in questo quadrato rappresenta un'immagine e, spostandoci verso destra, l'intensità della diagonale rosso-verde aumenta. Allo stesso modo, spostandoci dal basso verso l'alto, l'intensità della diagonale blu-gialla aumenta. Questa visualizzazione ci permette di comprendere lo spazio latente e la sua relazione con le immagini generate.

Nello spazio latente, possiamo selezionare qualsiasi punto in modo uniforme, il che equivale a scegliere due numeri e passarli attraverso il decodificatore. Questo processo ci consente di generare una qualsiasi di queste immagini con la stessa probabilità. Tuttavia, in alcuni casi, potremmo voler generare solo immagini specifiche che esistono nel set di dati, escludendone altre. Questa situazione è comune quando lo spazio latente è ampio e contiene rumore, con solo una piccola parte che rappresenta le immagini desiderate. Per risolvere questo problema, possiamo utilizzare una tecnica chiamata codificatori automatici variazionali.

Nel caso degli autocodificatori variazionali, addestriamo due distribuzioni normali che ci consentono di selezionare punti che molto probabilmente si trovano all'interno di una specifica regione di interesse. Ad esempio, se abbiamo una piccola regione di forma ovale nello spazio latente in cui esistono le immagini desiderate, vogliamo che l'autoencoder generi immagini all'interno o vicino a quella regione con una probabilità maggiore rispetto al resto dello spazio. Raggiungiamo questo obiettivo addestrando due distribuzioni normali, una per ogni coordinata nello spazio latente. Queste distribuzioni ci consentono di selezionare i punti che probabilmente si trovano verso il centro della regione desiderata. Utilizzando questi punti selezionati come rappresentazione latente e facendoli passare attraverso il decodificatore, possiamo generare immagini più focalizzate e allineate con i nostri criteri desiderati.

Il processo di addestramento per gli autoencoder variazionali comporta l'ottimizzazione simultanea di due obiettivi: la perdita di ricostruzione e la perdita di regolarizzazione. La perdita di ricostruzione misura la corrispondenza tra le immagini generate e le immagini di input, in modo simile ai codificatori automatici tradizionali. La perdita di regolarizzazione, spesso indicata come divergenza di Kullback-Leibler (KL), incoraggia la distribuzione latente ad assomigliare a una distribuzione precedente nota, tipicamente una distribuzione normale standard.

L'aggiunta della perdita di regolarizzazione introduce un compromesso durante l'allenamento. Da un lato, vogliamo che le immagini ricostruite assomiglino da vicino alle immagini di input, il che si ottiene riducendo al minimo la perdita di ricostruzione. D'altra parte, vogliamo che la distribuzione latente corrisponda alla distribuzione precedente, promuovendo la generazione di immagini diverse e realistiche. Il bilanciamento di questi obiettivi è fondamentale per garantire che il modello catturi le caratteristiche importanti dei dati pur consentendo creatività e novità nelle immagini generate.

Una volta addestrato l'autocodificatore variazionale, possiamo campionare punti dalla distribuzione precedente (spesso una distribuzione normale standard) e passarli attraverso il decodificatore per generare nuove immagini. Controllando il processo di campionamento, possiamo esplorare diverse regioni dello spazio latente e generare diverse variazioni dei dati di input.

Gli autocodificatori variazionali sono stati ampiamente utilizzati in varie applicazioni, come la generazione di immagini, la generazione di testo e il rilevamento di anomalie. Forniscono un potente framework per l'apprendimento e la generazione di distribuzioni di dati complesse, consentendo al tempo stesso il controllo sull'output generato.

In sintesi, gli autoencoder, compresi gli autoencoder denoising e variazionali, offrono capacità affascinanti nell'elaborazione e generazione di immagini. Possono rimuovere il rumore dalle immagini, ricostruire le parti mancanti e generare immagini completamente nuove e uniche. Gli autocodificatori di denoising sfruttano un'architettura codificatore-decodificatore per apprendere la struttura sottostante dei dati, mentre gli autocodificatori variazionali aggiungono modelli probabilistici per acquisire diverse variazioni nell'output generato. Queste tecniche hanno rivoluzionato il campo dell'apprendimento non supervisionato e hanno trovato ampie applicazioni nella visione artificiale e nella ricerca sull'intelligenza artificiale.

Denoising and Variational Autoencoders
Denoising and Variational Autoencoders
  • 2022.01.15
  • www.youtube.com
A video about autoencoders, a very powerful generative model. The video includes:Intro: (0:25)Dimensionality reduction (3:35)Denoising autoencoders (10:50)Va...
 

Alberi decisionali - Un'introduzione amichevole



Alberi decisionali - Un'introduzione amichevole

Benvenuti all'Accademia Serrano! In questo video parleremo degli alberi decisionali, che sono modelli di machine learning molto popolari. Gli alberi decisionali sono efficaci negli scenari della vita reale e sono intuitivi da comprendere. Imitano il modo in cui gli esseri umani prendono le decisioni, rendendole facili da interpretare.

Per illustrare come funzionano gli alberi decisionali, utilizziamo un esempio di sistema di raccomandazione. Immagina di dover decidere se indossare una giacca al mattino. Puoi iniziare controllando se fuori piove. Se piove, indossare una giacca è una scelta obbligata. Ma se non piove, puoi considerare ulteriormente la temperatura. Se fa freddo indosserai una giacca, se fa caldo no. Questo processo decisionale può essere rappresentato come un albero decisionale, in cui ogni decisione diventa un nodo e le opzioni disponibili diventano bordi che portano a nuovi nodi o decisioni finali.

Possono esserci più alberi decisionali per un dato problema. Ad esempio, un altro albero decisionale potrebbe comportare il controllo se è lunedì, il colore della tua auto e se hai preso il caffè quel giorno. Tuttavia, non tutti gli alberi decisionali sono ugualmente efficaci. Il primo albero decisionale di cui abbiamo discusso sembra funzionare bene, mentre il secondo include nodi irrilevanti. Trovare il miglior albero decisionale è l'obiettivo del machine learning. L'apprendimento automatico ci aiuta a scoprire l'albero decisionale che meglio si adatta ai dati. Esploriamo un esempio per comprendere questo processo.

Prendi in considerazione un piccolo set di dati da un sistema di consigli per le app basato sui dati demografici degli utenti. Il set di dati include colonne per sesso, età e app scaricata. Vogliamo formulare una regola per consigliare le app ai futuri utenti in base a questo set di dati. Analizzando i dati, possiamo osservare le tendenze. Ad esempio, tutti i giovani nel set di dati hanno scaricato TikTok, quindi è ragionevole consigliare TikTok a una ragazza di 16 anni. Allo stesso modo, se vediamo che le donne trentenni scaricano principalmente YouTube, possiamo consigliare YouTube a una donna di 30 anni. Seguendo questo approccio, possiamo formulare raccomandazioni per diversi utenti in base alle loro informazioni demografiche.

L'intuizione alla base degli alberi decisionali è in linea con i principi matematici utilizzati nell'apprendimento automatico. Gli alberi decisionali possono gestire sia dati categorici che numerici. Per i dati numerici, determiniamo il miglior punto di divisione valutando diverse possibilità. Ogni punto di divisione crea un moncone decisionale e confrontiamo l'accuratezza di questi monconi per trovare quello migliore. Una volta trovata la suddivisione migliore, possiamo continuare a costruire l'albero decisionale iterando il processo sui sottoinsiemi di dati risultanti. Questo processo iterativo ci consente di costruire alberi decisionali più ampi.

Gli alberi decisionali sono potenti modelli di machine learning che forniscono previsioni accurate e sono facili da interpretare. Imitano i processi decisionali umani e possono essere addestrati su vari tipi di dati. Trovando il miglior albero decisionale per un problema specifico, possiamo formulare raccomandazioni o previsioni efficaci basate su dati dati.

Decision trees - A friendly introduction
Decision trees - A friendly introduction
  • 2022.09.29
  • www.youtube.com
A video about decision trees, and how to train them on a simple example.Accompanying blog post: https://medium.com/@luis.serrano/splitting-data-by-asking-que...
 

Un'introduzione amichevole al teorema di Bayes e ai modelli di Markov nascosti



Un'introduzione amichevole al teorema di Bayes e ai modelli di Markov nascosti

Ciao e benvenuto a un'introduzione al teorema di base e ai modelli di Markov nascosti. Sono Luis Serrano di Udacity, dove tengo corsi di machine learning e intelligenza artificiale. In questo scenario, abbiamo due amici di nome Alice e Bob che vivono molto distanti e comunicano al telefono. L'umore di Bob cambia in base al tempo. Se c'è il sole, Bob è felice, e se piove, Bob è scontroso. Alice può dedurre il tempo dall'umore di Bob.

Rendiamo lo scenario più complicato. Bob è per lo più felice quando c'è il sole, ma ci sono delle eccezioni. È per lo più scontroso quando piove, ma ci sono anche delle eccezioni. Abbiamo calcolato le probabilità sulla base dei dati passati. Quando c'è il sole, Bob è felice con una probabilità dell'80% e scontroso con una probabilità del 20%. Quando piove, Bob è scontroso con una probabilità del 60% e felice con una probabilità del 40%.

Consideriamo ora una situazione specifica. Bob dice ad Alice che questa settimana è stata un ottovolante emotivo. Lunedì era felice, martedì era scontroso, mercoledì era di nuovo felice, giovedì era scontroso e venerdì era felice. Alice cerca di dedurre il tempo in base all'umore di Bob.

Per determinare la verosimiglianza di questa sequenza di stati d'animo, usiamo un modello di Markov nascosto. Ha osservazioni (l'umore di Bob) e stati nascosti (il tempo). Calcoliamo le probabilità di transizione (la probabilità di passare da uno stato all'altro) e le probabilità di emissione (la probabilità che le osservazioni vengano emesse dagli stati nascosti).

In questo video risponderemo a quattro domande. Innanzitutto, come calcoliamo queste probabilità? In secondo luogo, qual è la probabilità che una giornata casuale sia soleggiata o piovosa, indipendentemente dall'umore di Bob? Terzo, se Bob è felice oggi, qual è la probabilità che ci sia il sole o piova? E quarto, se Bob è felice per tre giorni consecutivi, qual è il tempo più probabile?

Possiamo calcolare le probabilità analizzando i dati passati. Contiamo le occorrenze di determinati modelli meteorologici e gli stati d'animo di Bob per stimare le probabilità. Con dati sufficienti, possiamo ottenere buone stime delle probabilità effettive.

Per determinare la probabilità che un giorno casuale sia soleggiato o piovoso, indipendentemente dall'umore di Bob, possiamo contare le occorrenze di giorni soleggiati e piovosi nei dati passati oppure utilizzare le probabilità di transizione. In questo caso, troviamo che è probabile che sia soleggiato per 2/3 e piovoso per 1/3.

Se Bob è felice oggi, le probabilità di sole e pioggia cambiano. Usiamo il teorema di Bayes per aggiornare le probabilità. Ad esempio, se Bob è felice ed è mercoledì, consideriamo le probabilità a priori (2/3 soleggiato e 1/3 piovoso) e le probabilità di emissione (80% soleggiato e 20% scontroso quando c'è il sole, 40% felice e 60% scontroso quando c'è il sole). piovoso). Utilizzando il teorema di Bayes, calcoliamo le probabilità a posteriori (8/10 di sole e 2/10 di pioggia).

Queste probabilità ci permettono di dedurre il tempo in base all'umore di Bob. Se Bob è felice, è più probabile che ci sia il sole. Se Bob è scontroso, è più probabile che piova. Le probabilità cambiano in base alle nuove informazioni.

Usiamo modelli di Markov nascosti e il teorema di Bayes per dedurre il tempo dall'umore di Bob. Analizzando i dati passati, calcoliamo le probabilità di transizione e le probabilità di emissione. Questo ci aiuta a determinare la probabilità di determinati modelli meteorologici in base all'umore di Bob.

A friendly introduction to Bayes Theorem and Hidden Markov Models
A friendly introduction to Bayes Theorem and Hidden Markov Models
  • 2018.03.27
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytA friendly introduction to Bayes Theorem and ...
 

Entropia di Shannon e guadagno di informazioni



Entropia di Shannon e guadagno di informazioni

Salve, sono Louie Serrano, e sono qui con Shannon per parlare di entropia e guadagno di informazioni. Se sei interessato a una spiegazione più dettagliata, ho scritto un post sul blog su questo argomento. Trovi il link nella sezione commenti.

Cominciamo introducendo il concetto di entropia, che ha origine dalla fisica. Possiamo illustrarlo usando i tre stati dell'acqua: solido (ghiaccio), liquido (acqua) e gassoso (vapore acqueo). Ogni stato ha un diverso livello di entropia, che misura la velocità con cui si muovono le particelle all'interno di un oggetto. Il ghiaccio ha una bassa entropia perché le sue particelle si muovono lentamente, rendendolo una sostanza stabile. L'acqua ha un'entropia media, poiché le particelle si muovono un po' più velocemente. Il vapore acqueo ha un'entropia elevata perché le particelle al suo interno si muovono molto velocemente.

L'entropia non è solo un concetto in fisica, ma appare anche in matematica, in particolare nella teoria della probabilità. Per dimostrarlo, consideriamo un esempio con tre secchi, ciascuno contenente palline di colori diversi. Il secchio 1 ha quattro palline rosse, il secchio 2 ha tre palline rosse e una pallina blu e il secchio 3 ha due palline rosse e due palline blu. Sulla base dell'intuizione, possiamo dedurre che il secchio 1 ha una bassa entropia, il secchio 2 ha un'entropia media e il secchio 3 ha un'entropia elevata.

Per convalidare la nostra intuizione, possiamo misurare l'entropia esaminando quanto possiamo riorganizzare l'insieme di palline in ogni secchio. Nel primo set, con quattro palline rosse, è possibile un riarrangiamento limitato poiché tutte le palline sono indistinguibili in termini di colore. Per il secondo set, possiamo riorganizzare le palline in alcuni modi. Infine, per il terzo set, abbiamo ancora più arrangiamenti possibili. Possiamo calcolare il numero di arrangiamenti usando il coefficiente binomiale, che fornisce una misura quantitativa dell'entropia. Sulla base del grado di riarrangiamento possibile, possiamo confermare che il Bucket 1 ha una bassa entropia, il Bucket 2 ha un'entropia media e il Bucket 3 ha un'alta entropia.

Tuttavia, esiste un modo più preciso per determinare l'entropia in base alle informazioni. Immaginiamo di fare un gioco con questi secchi. Si parte da una particolare disposizione delle palline e le si disegnano a caso, cercando di riprodurre l'esatta sequenza della disposizione originale. Se ci riusciamo, vinciamo una notevole quantità di denaro. Altrimenti non vinciamo niente. Ora sorge la domanda: quale secchio è il migliore con cui giocare e qual è il peggiore?

Riflettendoci, ci rendiamo conto che il Bucket 1 è la scelta migliore perché tutte le palline sono rosse, facilitando la riproduzione della sequenza originale. Il secchio 2 è la scelta media poiché contiene un mix di palline rosse e blu, mentre il secchio 3 è la scelta peggiore in quanto non abbiamo idea di quale colore disegneremo. Possiamo calcolare la probabilità di vincita in ogni partita considerando la probabilità di estrarre una pallina specifica dal secchio. Per il secchio 1, la probabilità di vincita è del 100% poiché tutte le palline sono rosse. Per il secchio 2, la probabilità è inferiore a causa della presenza di palline blu, mentre per il secchio 3 è la più bassa in quanto vi è la stessa possibilità di pescare palline rosse o blu.

Ora, riassumiamo le probabilità ei corrispondenti livelli di entropia in una tabella. Possiamo osservare che il Bucket 1 ha un'alta probabilità di vincere, con conseguente bassa entropia. Il secchio 2 ha una probabilità moderata, che indica un'entropia media. Infine, il secchio 3 ha la probabilità di vincita più bassa, portando a un'entropia elevata.

Per stabilire una formula per l'entropia, possiamo utilizzare il concetto di logaritmi. Invece di occuparci di prodotti, possiamo convertirli in somme usando i logaritmi. Il logaritmo di un prodotto è uguale alla somma dei logaritmi. Prendendo il logaritmo del prodotto delle probabilità, possiamo trasformarlo in una somma di probabilità individuali. Questa trasformazione ci consente di calcolare l'entropia come contenuto informativo medio o incertezza associata a un evento.

La formula dell'entropia è data da:

Entropia = - (p1 * log(p1) + p2 * log(p2) + ... + pn * log(pn))

dove p1, p2, ..., pn rappresentano le probabilità di diversi esiti o stati. La funzione logaritmica (tipicamente con base 2) viene utilizzata per tenere conto della natura esponenziale delle informazioni.

Applicando questa formula al nostro esempio, calcoliamo l'entropia per ogni secchio. Nel Secchio 1, dove tutte le palline sono rosse, la probabilità di estrarre una pallina rossa è 1 (100%). Pertanto, l'entropia per Bucket 1 è:

Entropia(Bucket 1) = - (1 * log2(1)) = 0

Poiché il logaritmo di 1 è 0, l'entropia è 0, indicando assenza di incertezza o guadagno di informazioni.

Per il secchio 2, ci sono tre palline rosse e una pallina blu. La probabilità di estrarre una pallina rossa è 3/4, mentre la probabilità di estrarre una pallina blu è 1/4. Pertanto, l'entropia per Bucket 2 è:

Entropia(Secchio 2) = - (3/4 * log2(3/4) + 1/4 * log2(1/4))

Calcolando i valori otteniamo:

Entropia(Secchio 2) ≈ 0,811

Questo valore rappresenta un livello moderato di incertezza o guadagno di informazioni.

Passando al secchio 3, dove ci sono due palline rosse e due palline blu, la probabilità di estrarre una pallina rossa o una pallina blu è 1/2 ciascuna. Pertanto, l'entropia per Bucket 3 è:

Entropia(Secchio 3) = - (1/2 * log2(1/2) + 1/2 * log2(1/2))

Semplificando l'espressione troviamo:

Entropia(Secchio 3) = - (1/2 * (-1) + 1/2 * (-1)) = 1

L'entropia per Bucket 3 è 1, che indica il livello più alto di incertezza o guadagno di informazioni.

L'entropia quantifica il livello di incertezza o informazione in un sistema. Usando il concetto di probabilità, possiamo calcolare l'entropia come il contenuto informativo medio associato a diversi risultati. Valori di entropia più elevati indicano una maggiore incertezza, mentre valori di entropia più bassi indicano meno incertezza o risultati più prevedibili. La comprensione dell'entropia e del guadagno di informazioni è preziosa in vari campi, tra cui la teoria dell'informazione, l'apprendimento automatico e l'analisi dei dati, in quanto ci consente di misurare e analizzare la complessità e la prevedibilità dei sistemi.

Shannon Entropy and Information Gain
Shannon Entropy and Information Gain
  • 2017.11.04
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytAccompanying blog post: https://medium.com/p/...
 

Classificatore Naive Bayes: un approccio amichevole



Classificatore Naive Bayes: un approccio amichevole

Ciao, sono Luis Serrano e in questo video esploreremo il classificatore Naive Bayes. La tua base di conoscenza è cruciale in termini di probabilità e incredibilmente utile nell'apprendimento automatico. Piuttosto che vederla come una formula complessa che coinvolge rapporti di probabilità, pensiamola come la probabilità che un evento accada dato che abbiamo informazioni su un altro evento. Naive Bayes estende questo concetto formulando ipotesi ingenue per semplificare la matematica quando si tratta di più eventi.

Per illustrare, costruiamo un rilevatore di spam. Iniziamo con un set di dati di 100 email, di cui 25 sono spam e 75 no. Il nostro obiettivo è identificare le proprietà correlate alle e-mail di spam. Concentriamoci sulla parola "compra". Tra le e-mail spam, 20 contengono "acquista", mentre 5 e-mail non spam lo contengono. Sulla base di ciò, possiamo concludere che se un'e-mail contiene "acquista", c'è l'80% di possibilità che si tratti di spam.

Consideriamo ora un'altra parola, "a buon mercato". Tra le e-mail spam, 15 hanno "economico" e tra le e-mail non spam, 10 lo hanno. Se un'e-mail contiene "economico", c'è una probabilità del 60% che si tratti di spam.

Ma cosa succede se vogliamo analizzare insieme "compra" e "economico"? Tra le e-mail di spam, 12 contengono entrambe le parole e non ci sono istanze di questa combinazione tra le e-mail non di spam. Se un'e-mail contiene sia "acquista" che "economico", è probabile che si tratti di spam al 100%. Tuttavia, una certezza del 100% sembra troppo forte e irrealistica per un classificatore.

Il problema sorge perché non abbiamo trovato istanze di email non spam con "acquista" e "economico". Per affrontare questo problema, potremmo raccogliere più dati, ma esploriamo una soluzione alternativa. Possiamo fare ipotesi per stimare il verificarsi di tali casi. Supponiamo che lo 0,5% delle email contenga sia "acquista" che "economico". Questa ipotesi si basa sulle percentuali di occorrenze "buy" e "cheap" nel nostro set di dati.

Ora, con questo presupposto, possiamo calcolare la probabilità che un'e-mail sia spam se contiene sia "compra" che "economico". Applicando il teorema di Bayes, troviamo che la probabilità è approssimativamente del 94,737%.

Il classificatore Naive Bayes prevede la compilazione di una tabella con i dati. Tuttavia, quando alcuni eventi sono troppo scarsi nel set di dati, assumiamo ingenuamente che gli eventi siano indipendenti. Questa ipotesi semplifica i calcoli, anche se potrebbe non essere vera nella realtà. Facendo queste ipotesi, possiamo stimare le probabilità e costruire un classificatore di spam.

Naive Bayes classifier: A friendly approach
Naive Bayes classifier: A friendly approach
  • 2019.02.10
  • www.youtube.com
Announcement: New Book by Luis Serrano! Grokking Machine Learning. bit.ly/grokkingML40% discount code: serranoytA visual description of Bayes' Theorem and th...
 

La distribuzione Beta in 12 minuti!



La distribuzione Beta in 12 minuti!

Ciao, sono Luis Serrano e in questo video esploreremo l'argomento delle distribuzioni beta. Le distribuzioni beta sono un concetto essenziale in probabilità e statistica in quanto modellano la probabilità di una probabilità. Approfondiamo questo argomento affascinante.

Per comprendere le distribuzioni beta, consideriamo un esempio che coinvolge tre monete: moneta uno, moneta due e moneta tre. Queste monete possono finire su testa o croce. Tuttavia, tutte e tre le monete sono truccate, il che significa che nessuna di esse restituisce testa con una probabilità della metà.

Supponiamo che la moneta uno dia testa con una probabilità di 0,4, la moneta due con una probabilità di 0,6 e la moneta tre con una probabilità di 0,8. Ora, immagina di scegliere a caso una di queste monete senza sapere quale sia. Il compito è indovinare quale moneta abbiamo scelto lanciandola cinque volte.

Supponiamo di ottenere tre teste e due code in quest'ordine. La domanda è: quale moneta pensi che abbiamo preso? Intuitivamente, potremmo propendere per la moneta due poiché dovrebbe restituire testa tre volte su cinque. Tuttavia, c'è ancora incertezza. È possibile che abbiamo scelto la moneta uno o la moneta tre, e la sequenza osservata di testa e croce era solo una coincidenza.

Per determinare le probabilità di scelta di ciascuna moneta, possiamo applicare il teorema di Bayes. Esaminiamo ogni caso singolarmente.

Per la moneta uno, la probabilità di ottenere testa tre volte e croce due volte è calcolata come segue: (0,4 * 0,4 * 0,4) * (0,6 * 0,6) = 0,0230.

Per la moneta due, la probabilità è: (0,6 * 0,6 * 0,6) * (0,4 * 0,4) = 0,0346.

Per la moneta tre, la probabilità è: (0,8 * 0,8 * 0,8) * (0,2 * 0,2) = 0,0205.

Poiché questi sono gli unici tre eventi possibili, la somma delle loro probabilità deve dare uno. Normalizziamo queste probabilità dividendo ciascuna di esse per la somma: 0,0230 + 0,0346 + 0,0205. Ciò produce le probabilità normalizzate: 0,295, 0,443 e 0,262 rispettivamente per la moneta uno, la moneta due e la moneta tre.

Come possiamo vedere, la moneta due ha la probabilità più alta, ma c'è ancora la possibilità che abbiamo scelto la moneta uno o la moneta tre. Queste probabilità sono ottenute usando il teorema di Bayes, che è un potente strumento nella teoria della probabilità. Se vuoi saperne di più, ho un video sul mio canale che lo spiega in dettaglio.

Consideriamo ora lo stesso esempio ma con un numero maggiore di monete. Diciamo che lanciamo una moneta ed esce testa sette volte e croce tre volte. Questa moneta potrebbe essere una delle dieci monete, ciascuna con diverse probabilità di ottenere testa, che vanno da 0,0 a 0,9, aumentando di 0,1 per ogni moneta.

Quale moneta pensi che abbiamo scelto in questo caso? Ancora una volta, l'opzione più probabile è la moneta che esce testa il 70% delle volte, che corrisponde alla moneta sette. Per calcolare le probabilità di scegliere ogni moneta, eseguiamo calcoli simili a quelli precedenti.

Per ogni moneta calcoliamo la probabilità di ottenere sette volte testa e tre volte croce. Usiamo la formula: (p^7) * ((1-p)^3), dove p rappresenta la probabilità di ottenere testa. Quindi normalizziamo queste probabilità dividendo ciascuna di esse per la somma di tutte le probabilità.

Man mano che aumentiamo il numero di monete, i calcoli diventano più complicati. Tuttavia, il principio di base rimane lo stesso. Calcoliamo le probabilità di ciascuna moneta in base ai risultati osservati e alle probabilità associate a ciascuna moneta. Normalizzando queste probabilità, otteniamo una distribuzione che rappresenta la nostra incertezza su quale moneta è stata scelta.

Ora, generalizziamo questo concetto alla distribuzione beta. La distribuzione beta è una distribuzione di probabilità continua definita sull'intervallo [0, 1]. È caratterizzato da due parametri di forma, spesso indicati come alfa e beta. Questi parametri determinano la forma della distribuzione.

La distribuzione beta è particolarmente utile per modellare le probabilità perché è flessibile e può assumere una varietà di forme a seconda dei valori di alfa e beta. Ci consente di catturare un'ampia gamma di distribuzioni di probabilità, da uniforme a distorta e da concentrata a dispersa.

La funzione di densità di probabilità (PDF) della distribuzione beta è data dalla formula: f(x) = (x^(alpha-1)) * ((1-x)^(beta-1)) / B(alpha, beta), dove B(alpha, beta) è la funzione beta che assicura che la distribuzione si integri a 1 nell'intervallo [0, 1].

La media della distribuzione beta è data dalla formula: E[X] = alpha / (alpha + beta), e la varianza è Var[X] = (alpha * beta) / ((alpha + beta)^2 * ( alfa + beta + 1)).

La distribuzione beta è comunemente usata in vari campi, come la statistica bayesiana, l'apprendimento automatico e l'analisi decisionale. Può modellare quantità incerte, come percentuali di successo, proporzioni o probabilità, e può essere utilizzato per la stima dei parametri, la verifica di ipotesi e la generazione di campioni casuali.

Le distribuzioni beta sono un concetto fondamentale in probabilità e statistica, specialmente quando si tratta di probabilità incerte. Forniscono un quadro flessibile per modellare un'ampia gamma di distribuzioni di probabilità. Comprendendo le proprietà e le applicazioni delle distribuzioni beta, possiamo prendere decisioni più informate e analizzare i dati in modo più efficace.

The Beta distribution in 12 minutes!
The Beta distribution in 12 minutes!
  • 2021.06.13
  • www.youtube.com
This video is about the Beta distribution, a very important distribution in probability, statistics, and machine learning. It is explained using a simple exa...
 

Campionamento Thompson, banditi armati e distribuzione beta



Campionamento Thompson, banditi armati e distribuzione beta

Ciao, sono Louis Sorano e in questo video parlerò del concetto di one-arm bandits e della distribuzione beta. Immagina di essere in un casinò con una fila di slot machine, comunemente note come banditi a un braccio. Quando giochi a queste macchine, ci sono due possibili esiti: o esce una moneta, che indica una vincita, o non esce nulla, con conseguente perdita. L'obiettivo è determinare quali macchine sono buone e quali no, al fine di massimizzare le tue vincite.

Ogni macchina nella riga ha una diversa probabilità di produrre una moneta, indicata con 'p'. Ad esempio, se la macchina a sinistra ha una probabilità dello 0,1 (10%), significa che in media puoi aspettarti di vincere una moneta il 10% delle volte, mentre il 90% delle volte perderai. Allo stesso modo, la macchina a destra ha una probabilità di 0,7 (70%), indicando che hai una probabilità maggiore di vincere una moneta, il 70% delle volte, e una possibilità del 30% di perdere.

La sfida è che non conosci i valori effettivi di 'p' per ogni macchina, quindi devi stimarli giocando le macchine. L'obiettivo è giocare con tutte le macchine e identificare quelle con maggiori probabilità di vincita per concentrarsi su di esse, dando occasionalmente alle macchine meno performanti la possibilità di migliorare.

Ci sono due strategie da considerare: la strategia "explore" e la strategia "exploit". La strategia di esplorazione prevede di giocare ogni macchina più volte per raccogliere dati e stimare le probabilità di vincita. Ad esempio, se giochi la prima macchina 15 volte e vinci due volte, stimi che la probabilità sia 2/15. Ripetendo questo processo per ogni macchina, puoi confrontare le loro probabilità stimate e identificare quelle con la più alta probabilità di vincita.

D'altra parte, la strategia di exploit implica giocare ogni macchina meno volte e prendere decisioni basate sui dati disponibili. Giocando una macchina solo un paio di volte, potresti non avere abbastanza informazioni per stimare con precisione la sua probabilità di vincita. Questo approccio rischia di perdere potenziali vincitori, in quanto potrebbe non esplorare lo spazio abbastanza per raccogliere dati sufficienti.

Per trovare una strategia ottimale, hai bisogno di una combinazione di esplorazione e sfruttamento. Questo approccio, noto come campionamento Thompson, implica il mantenimento di una distribuzione beta per ogni macchina. La distribuzione beta rappresenta la probabilità di vincita in base al numero di vittorie e sconfitte. Aggiornando la distribuzione beta con ogni gioco, puoi perfezionare le tue stime.

Il campionamento di Thompson prevede una competizione tra le macchine con un tocco di casualità. I punti casuali vengono selezionati dalle distribuzioni beta e la macchina con il valore più alto in quel punto viene scelta per essere giocata successivamente. Questa tecnica consente l'esplorazione di tutte le macchine favorendo quelle con prestazioni più elevate.

Il campionamento Thompson, utilizzando la distribuzione beta, ha ampie applicazioni oltre al gioco d'azzardo. Viene utilizzato nei test A/B per il web design e la pubblicità, negli studi medici per determinare l'efficacia dei farmaci sperimentali e in vari scenari decisionali in cui l'esplorazione e lo sfruttamento sono cruciali.

In conclusione, il campionamento Thompson con la distribuzione beta è una tecnica potente che combina esplorazione e sfruttamento per prendere decisioni ottimali. Ti consente di massimizzare i tuoi guadagni concentrandoti su macchine con maggiori probabilità di vincita mentre esplori ancora altre possibilità. Il campionamento Thompson trova applicazioni in diversi campi e offre un approccio pratico al processo decisionale in condizioni di incertezza.

Grazie per la visione e se hai trovato utile questo video, iscriviti, metti mi piace e condividilo. Ti incoraggio anche a dare un'occhiata al mio libro, "Rocking Machine Learning", dove spiego l'apprendimento automatico supervisionato in modo accessibile e coinvolgente. Puoi trovare il libro e altre risorse nella sezione commenti qui sotto. Sentiti libero di lasciare commenti e suggerimenti per argomenti futuri e non dimenticare di seguirmi su Twitter.
Thompson sampling, one armed bandits, and the Beta distribution
Thompson sampling, one armed bandits, and the Beta distribution
  • 2021.07.06
  • www.youtube.com
Thompson sampling is a strategy to explore a space while exploiting the wins. In this video we see an application to winning at a game of one-armed bandits.B...
Motivazione: