• 🏡 Home
  • 🚨 GDPR Compliant
  • ⚡️ Data Science
  • 📌 Machine Learning
  • 🔒 Privacy Preserving
  • 🏡 Home
  • 🚨 GDPR Compliant
  • ⚡️ Data Science
  • 📌 Machine Learning
  • 🔒 Privacy Preserving
AI, machine-learning

Gradient Descent: cos’è? | Deep Learning & Neural Networks

Gradient Descent: cos’è? | Deep Learning & Neural Networks

Cos’è il Gradient Descent (Discesa del gradiente) ? Il Gradient Descent è un optimization algorithm (algoritmo di ottimizzazione) capace d’individuare il valore minimo di una cost function, consentendoti di sviluppare un modello dalle accurate previsioni.

Allineiamoci un attimo.

Oversimplifying… Una rete neurale sviluppa una funzione che mappa gli input agli output e viene generato un modello utile a fare previsioni.

Quella funzione contiene differenti parametri il cui valore deve essere in qualche modo appreso.

Dude, dov’è finito il vostro linguaggio forbito?

Siamo data scientst. Siamo mucche viola. Il nostro codice etico reclama un linguaggio forbito.

Prima di arrivare a una spiegazione tecnica, dobbiamo comprendere il concetto intuitivamente.

Dunque.

Calcolare valori randomici a ogni epoca, o iterazione, con il solo obiettivo di generare quelli perfetti è il modo stupido di procedere. Non ci piace.

In realtà conserviamo il metodo randomico per inizializzare i parametri.

Ora però dobbiamo valutare in che modo la loro variazione cambi la previsione finale.

Ci serve quindi una funzione che determini quanto il nostro modello sia bravo, o meno, a effettuare le previsioni: entra in gioco la cost function.

Piccola nota: loss function e cost function sono concetti differenti. In breve, senza scendere troppo nel tecnico, la loss function è relativa alle singole previsioni, quindi calcolata su ciascuna osservazione del dataset; la cost function è definita globalmente.

Quindi ora abbiamo:

  • Una funzione con il compito di mappare gli input e gli output: il nostro modello, con differenti parametri i weights.
  • Una cost function che calcola quale sia l’errore del modello per i parametri che lo definiscono.

Ecco la strada per arrivare in vetta: dobbiamo minimizzare la cost function, cioè trovare quei valori del modello, quei weights, tali per cui la cost function abbia il valore minimo.

Come facciamo?

Ancora una volta entra in gioco la matematica e come sempre con una soluzione brillante: optimization algorithm, ovvero gli algoritmi di ottimizzazione.

Abbiamo definito cosa siano, e chiuso la nostra introduzione con una carrellata di algoritmi.

“In realtà erano 4”

Abbiamo definito cosa siano, e chiuso la nostra introduzione con un cestino di algoritmi.

Honest

Gradient Descent algorithm

Finalmente iniziamo a parlare di Gradient Descent.

Ripetendoci, ma principalmente per motivi estetici:

Gradient Descent (Discesa del gradiente) è un optimization algorithm (algoritmo di ottimizzazione) generico capace d’individuare il valore minimo di una cost function, consentendoti di sviluppare un modello dalle accurate previsioni.

Gradient descent definition

Il cliché vuole che per descriverne il funzionamento si usi la metafora della montagna con la nebbia.

Ormai mucche viola al pascolo, un po’ di nebbia in montagna può farci solo che bene.

Nel problema della montagna vogliamo raggiungere il punto più basso, la valle. La difficoltà è data dall’impossibilità di vedere il tragitto. Quindi decidiamo di procedere a tentativi testando il terreno e la sua pendenza.

Quando inizieremo a salire, la nostra discesa sarà terminata e avremo raggiunto il punto di minimo.

fonte: medium

Come accennato poco fa, la best practice prevede l’inizializziazione in modo randomico dei weights ad un valore prossimo allo zero, ma non zero. (random initialization)

Ora introduciamo un termine: il gradiente.

Il gradiente indica la direzione di salita, quindi è nostro interesse ottenere un gradiente negativo, perché vogliamo scendere, vogliamo raggiungere il punto di minimo.

Quindi aggiorneremo (update) i weights nella direzione negativa del gradiente (negative gradient direction) per minimizzare la perdita (to minimize the loss).

Di quanto deve essere aggiornato il valore?

Lo stabilisce il learning rate.

In soldoni, Il learning rate è un hyperparameter che influenza il cambiamento dei weights in funzione del gradiente.

Approfondiremo insieme questo concetto in un altro post.

Ti basta sapere che il learning rate gestisce lo step di cambiamento dei parametri a ogni iterazione, e viene generalmente indicato con la lettera greca α :

  • Per α troppo piccolo, il tempo di convergenza (convergence) è grande, quindi la determinazione del punto di minimo impiega parecchie risorse computazionali.
  • Per α grande, potrebbe fallire la convergenza, superando il minimo, o arrivando persino a divergere mancando la determinazione della soluzione.
fonte

Minimo locale o globale?

Non tutte le funzioni di costo sono semplici archi.

Questo rende l’individuazione del minimo piuttosto complessa.

In merito alla metafora della montagna, potresti infatti obiettare affermando che la “valle” identificata, sia un minimo locale, ben lontana dal nostro ideale minimo globale.

fonte: medium

La nostra amata montagna ci tende un trabocchetto e la valle che crediamo di aver raggiunto è in realtà un ampio terreno pianeggiante: siamo ancora in alta quota, la pianura è altrove.

Prendiamo un esempio pratico.

La Mean Squared Error, una cost function spesso impiegata nel modello di Linear Regression, è una funzione convessa (convex function).

Una convex function ci piace per tre motivi:

  • Ha un minimo globale, senza alcun minimo locale
  • La random initialization non compromette la convergenza
  • È una funzione continua, questo implica che la sua derivata sia una funzione Lipshitziana.

Queste qualità, unite a un learning rate non troppo alto, garantiscono la convergenza al minimo globale. (dopo un tempo sufficiente).

In generale però, come può il gradient descent riconosce un minimo locale da uno globale?

Short answer non può.

Long answer lo rendiamo possibile.

Esistono infatti metodi alternativi per ovviare a questa insidiosa problematica.

Vediamoli nel prossimo post!

Un caldo abbraccio, Andrea.

Written by Andrea Provino - Ottobre 28, 2019
Tags | AI, deep learning, neural network, teoria

You Might Also Like

non-iid-distribution-spiegazione-italiano-non-indipendentemente-distributi

Non-IID ness: Non-independently and identically distributed data

Giugno 7, 2020
stochastic-gradient-descent-batch-gradient-descent-python-vguida-italiano-vs-gradient-descent

Stochastic Gradient Descent, Batch Gradient Descent Algorithm

Ottobre 29, 2019
ridge-regression-machine-learning-cross-validation-grid-search-data-science-data-scientist-course-italiano

Ridge Regression

Novembre 6, 2019
Next Post
Previous Post

Una pubblicità che non vedi se usi AdBlock

EXPAND YOUR KNOWLEDGE

  • Blockchain Developer

    Circuito aritmetico

    Novembre 1, 2022
  • machine-learning

    Un nuovo inizio

    Settembre 4, 2021
  • Zero Knwoledge Proof Article Privacy Preserving

    Zero Knowledge Proof: zk-SNARK e zk-STARK | Prova a conoscenza zero

    Luglio 8, 2021
  • oblivious-transfer-spiegazione-italiano-ot-explanation Privacy Preserving

    Oblivious Transfer (OT)

    Luglio 6, 2021
  • Aleo Studio Website Preview machine-learning

    Aleo Studio: un IDE per Zero-Knowledge Proofs Applications

    Luglio 1, 2021
  • privacy-enhancing-technologies-data-machine-learning-data-science Privacy Preserving

    Perché il Privacy Tech è un vantaggio competitivo micidiale

    Giugno 17, 2021
  • bloom-filter-spiegazione-italian Privacy Preserving

    Bloom Filter

    Giugno 3, 2021
  • trusted-execution-environment-tee-data-science-come-fuziona Data Science, Privacy Preserving

    Trusted Execution Environment | Cos’è un TEE?

    Giugno 2, 2021
  • Crypto Custody services machine-learning

    Crypto Custody: Guida alla custodia delle criptomonete

    Maggio 26, 2021
  • deep-q-learning-q-learning-reinforcement-learning machine-learning

    Deep Q-Learning

    Aprile 27, 2021

Quello che Google pensa ti possa piacere

Prodotti che i Cookie dicono potresti trovare interessanti

AI Blog - © 2019-2021 Andrea Provino