- Terminologia (da A a D)
- Controllo delle capacità AI
- AIOps
- Albumetazioni
- Performance delle risorse
- Codificatore automatico
- backpropagation
- Teorema di Bayes
- Big Data
- Chatbot: una guida per principianti
- Pensiero computazionale
- Visione computerizzata
- Matrice di confusione
- Reti neurali involutive
- Cybersecurity
- Tessuto dati
- Narrazione dei dati
- Science Data
- Conservazione dei dati
- Albero decisionale
- Deepfakes
- Deep Learning
- Apprendimento di rinforzo profondo
- DEVOPS
- DevSecOps
- Modelli di diffusione
- Digital Twin
- Riduzione dimensionale
- Terminologia (da E a K)
- Bordo AI
- Emozione AI
- Ensemble Learning
- Ethical Hacking
- ETL
- AI spiegabile
- Apprendimento federato
- FinOps
- AI generativa
- Rete avversaria generativa
- Generativo vs. discriminatorio
- Aumento graduale
- Discesa a gradiente
- Apprendimento a pochi colpi
- Classificazione delle immagini
- Operazioni IT (ITOps)
- Automazione degli incidenti
- Ingegneria dell'influenza
- K-Means Clustering
- K-vicini più vicini
- Terminologia (da L a Q)
- Terminologia (da R a Z)
- Insegnamento rafforzativo
- AI responsabile
- RLHF
- Automazione di processo robotizzata
- Strutturato vs non strutturato
- Analisi del sentimento
- Supervisionato vs non supervisionato
- Supporto di macchine vettoriali
- Dati sintetici
- Media sintetici
- Classificazione del testo
- TinyML
- Trasferimento di apprendimento
- Trasformatore Reti Neurali
- Test di Turing
- Ricerca per similarità vettoriale
AI 101
Che cos'è la discesa del gradiente?
Sommario
Che cos'è un gradiente discendente?
Se hai letto come vengono addestrate le reti neurali, quasi sicuramente ti sei già imbattuto nel termine "discesa del gradiente". Discesa in pendenza è il metodo principale per ottimizzare le prestazioni di una rete neurale, riducendo il tasso di perdita/errore della rete. Tuttavia, la discesa del gradiente può essere un po' difficile da comprendere per chi è nuovo al machine learning e questo articolo cercherà di darti un'intuizione decente su come funziona la discesa del gradiente.
La discesa del gradiente è un algoritmo di ottimizzazione. Viene utilizzato per migliorare le prestazioni di una rete neurale apportando modifiche ai parametri della rete in modo tale che la differenza tra le previsioni della rete e i valori effettivi/previsti della rete (indicati come perdita) sia il più piccola possibile. La discesa del gradiente prende i valori iniziali dei parametri e utilizza operazioni basate sul calcolo per regolare i loro valori verso i valori che renderanno la rete il più precisa possibile. Non è necessario conoscere molto il calcolo per capire come funziona la discesa del gradiente, ma è necessario avere una comprensione dei gradienti.
Cosa sono i gradienti?
Supponiamo che esista un grafico che rappresenta la quantità di errori commessi da una rete neurale. La parte inferiore del grafico rappresenta i punti di errore più basso mentre la parte superiore del grafico è dove l'errore è più alto. Vogliamo spostarci dalla parte superiore del grafico verso il basso. Un gradiente è solo un modo per quantificare la relazione tra errore e pesi della rete neurale. Il rapporto tra queste due cose può essere rappresentato graficamente come una pendenza, con pesi errati che producono più errori. La pendenza della pendenza/del gradiente rappresenta la velocità di apprendimento del modello.
Una pendenza più ripida significa che vengono effettuate grandi riduzioni di errore e il modello sta imparando velocemente, mentre se la pendenza è zero il modello si trova su un plateau e non sta imparando. Possiamo scendere lungo la pendenza verso un errore minore calcolando un gradiente, una direzione di movimento (cambiamento nei parametri della rete) per il nostro modello.
Spostiamo leggermente la metafora e immaginiamo una serie di colline e valli. Vogliamo arrivare in fondo alla collina e trovare la parte della valle che rappresenta la minore perdita. Quando partiamo in cima alla collina, possiamo fare grandi passi giù per la collina ed essere sicuri che ci stiamo dirigendo verso il punto più basso della valle.
Tuttavia, man mano che ci avviciniamo al punto più basso della valle, i nostri passi dovranno ridursi, altrimenti potremmo superare il vero punto più basso. Allo stesso modo, è possibile che quando si regolano i pesi della rete, gli aggiustamenti possano effettivamente portarlo più lontano dal punto di perdita più bassa, e quindi gli aggiustamenti devono ridursi nel tempo. Nel contesto della discesa di una collina verso un punto di minor perdita, il gradiente è un vettore/istruzioni che descrivono in dettaglio il percorso che dovremmo prendere e quanto dovrebbero essere grandi i nostri passi.
Ora che sappiamo che i gradienti sono istruzioni che ci dicono in quale direzione muoverci (quali coefficienti dovrebbero essere aggiornati) e quanto sono grandi i passi che dovremmo fare (quanto i coefficienti dovrebbero essere aggiornati), possiamo esplorare come viene calcolato il gradiente.
Calcolo dei gradienti e discesa del gradiente
Per poter effettuare la discesa in pendenza occorre prima calcolare le pendenze. Al fine per calcolare il gradiente, dobbiamo conoscere la funzione perdita/costo. Useremo la funzione di costo per determinare la derivata. Nel calcolo, la derivata si riferisce solo alla pendenza di una funzione in un dato punto, quindi in pratica stiamo solo calcolando la pendenza della collina in base a la funzione di perdita. Determiniamo la perdita eseguendo i coefficienti attraverso la funzione di perdita. Se rappresentiamo la funzione di perdita come "f", allora possiamo affermare che l'equazione per calcolare la perdita è la seguente (stiamo solo eseguendo i coefficienti attraverso la nostra funzione di costo scelta):
Perdita = f(coefficiente)
Quindi calcoliamo la derivata o determiniamo la pendenza. Ottenere la derivata della perdita ci dirà quale direzione è in salita o in discesa, fornendoci il segno appropriato per aggiustare i nostri coefficienti. Rappresenteremo la direzione appropriata come "delta".
delta = derivata_funzione(perdita)
Ora abbiamo determinato quale direzione è in discesa verso il punto di minor perdita. Ciò significa che possiamo aggiornare i coefficienti nei parametri della rete neurale e, si spera, ridurre la perdita. Aggiorneremo i coefficienti in base ai coefficienti precedenti meno la variazione di valore appropriata determinata dalla direzione (delta) e un argomento che controlla l'entità della variazione (la dimensione del nostro passo). L'argomento che controlla la dimensione dell'aggiornamento è chiamato "tasso di apprendimento” e lo rappresenteremo come “alfa”.
coefficiente = coefficiente – (alfa * delta)
Quindi ripetiamo semplicemente questo processo fino a quando la rete non è convergente attorno al punto di perdita più bassa, che dovrebbe essere vicino allo zero.
È molto importante scegliere il giusto valore per il tasso di apprendimento (alfa). Il tasso di apprendimento scelto non deve essere né troppo piccolo né troppo grande. Ricorda che mentre ci avviciniamo al punto di minor perdita, i nostri passi devono diventare più piccoli, altrimenti supereremo il vero punto di minor perdita e finiremo dall'altra parte. Il punto di minor perdita è piccolo e se il nostro tasso di variazione è troppo grande l'errore può finire per aumentare di nuovo. Se le dimensioni del passo sono eccessive, le prestazioni della rete continueranno a rimbalzare attorno al punto di minor perdita, superandolo da un lato e poi dall'altro. Se questo accade la rete non convergerà mai sulla vera configurazione di peso ottimale.
Al contrario, se il tasso di apprendimento è troppo piccolo, la rete può potenzialmente impiegare un tempo straordinariamente lungo per convergere sui pesi ottimali.
Tipi Di Gradiente Discendente
Ora che abbiamo capito come funziona la discesa del gradiente in generale, diamo un'occhiata ad alcune delle differenze tipi di discesa del gradiente.
Discesa del gradiente batch: questa forma di discesa del gradiente attraversa tutti i campioni di addestramento prima di aggiornare i coefficienti. È probabile che questo tipo di discesa del gradiente sia la forma di discesa del gradiente più efficiente dal punto di vista computazionale, poiché i pesi vengono aggiornati solo dopo che l'intero batch è stato elaborato, il che significa che ci sono meno aggiornamenti totali. Tuttavia, se il set di dati contiene un numero elevato di esempi di addestramento, la discesa del gradiente batch può richiedere molto tempo per l'addestramento.
Stochastic Gradient Descent: in Stochastic Gradient Descent viene elaborato un solo esempio di addestramento per ogni iterazione della discesa del gradiente e dell'aggiornamento dei parametri. Ciò si verifica per ogni esempio di addestramento. Poiché viene elaborato un solo esempio di addestramento prima dell'aggiornamento dei parametri, tende a convergere più rapidamente rispetto a Batch Gradient Descent, poiché gli aggiornamenti vengono effettuati prima. Tuttavia, poiché il processo deve essere eseguito su ogni elemento del set di addestramento, il completamento può richiedere molto tempo se il set di dati è di grandi dimensioni, pertanto è preferibile utilizzare uno degli altri tipi di discesa del gradiente.
Mini-Batch Gradient Descent: Mini-Batch Gradient Descent funziona suddividendo l'intero set di dati di addestramento in sottosezioni. Crea mini-batch più piccoli che vengono eseguiti attraverso la rete e quando il mini-batch è stato utilizzato per calcolare l'errore, i coefficienti vengono aggiornati. Mini-batch Gradient Descent rappresenta una via di mezzo tra Stochastic Gradient Descent e Batch Gradient Descent. Il modello viene aggiornato più frequentemente che nel caso di Batch Gradient Descent, il che significa una convergenza leggermente più rapida e robusta sui parametri ottimali del modello. È anche più efficiente dal punto di vista computazionale di Stochastic Gradient Descent
Blogger e programmatore con specialità in machine Learning ed Deep Learning temi. Daniel spera di aiutare gli altri a usare il potere dell'intelligenza artificiale per il bene sociale.
Ti potrebbe piacere
Apprendimento profondo vs reti neurali
Il nuovo modello di cervello neurocomputazionale potrebbe far progredire la ricerca sull'IA
Il team sviluppa un approccio per confrontare le reti neurali
La tecnologia hardware AI imita i cambiamenti nella topologia della rete neurale
Autenticazione biometrica digrignando i denti
Il componente del computer imita le sinapsi del cervello umano