Differenze tra le tecniche di backpropagation


17

Solo per divertimento, sto cercando di sviluppare una rete neurale.

Ora, per backpropagation, ho visto due tecniche.

Il primo viene utilizzato qui e anche in molti altri luoghi.

Quello che fa è:

  • Calcola l'errore per ciascun neurone di output.
  • Lo ripropaga nella rete (calcolando un errore per ciascun neurone interno).
  • Aggiorna i pesi con la formula: (dov'è la variazione di peso, la velocità di apprendimento, l'errore del neurone che riceve l'input dalla sinapsi e che è l'output inviato sulla sinapsi).
  • Si ripete per ogni voce del set di dati, tutte le volte che è necessario.

Tuttavia, la rete neurale proposta in questo tutorial (disponibile anche su GitHub) utilizza una tecnica diversa:

  • Utilizza una funzione di errore (l'altro metodo ha una funzione di errore, ma non la utilizza per l'allenamento).
  • Ha un'altra funzione che può calcolare l'errore finale a partire dai pesi.
  • Riduce al minimo quella funzione (attraverso la discesa del gradiente).

Ora, quale metodo dovrebbe essere usato?

Penso che il primo sia quello più utilizzato (perché ho visto diversi esempi utilizzarlo), ma funziona anche?

In particolare, non so:

  • Non è più soggetto ai minimi locali (poiché non utilizza funzioni quadratiche)?
  • Poiché la variazione di ciascun peso è influenzata dal valore di uscita del suo neurone di uscita, le voci del set di dati che producono appena valori più alti nei neuroni (non solo quelli di uscita) influenzano i pesi più di altre voci?

Ora preferisco la prima tecnica, perché trovo più semplice da implementare e più facile da pensare.

Tuttavia, se ha i problemi che ho menzionato (che spero non lo faccia), c'è qualche motivo reale per usarlo sul secondo metodo?

Risposte:


6

I due esempi presentano essenzialmente la stessa operazione:

  • In entrambi i casi, la rete viene addestrata con discesa gradiente utilizzando l'errore quadrato retropropagato calcolato in uscita.
  • Entrambi gli esempi usano la funzione logistica per l'attivazione del nodo (la derivata della funzione logistica sè s(1 - s). Questa derivata è ovviamente molto facile da calcolare, e questo è uno dei motivi per cui è stata così ampiamente usata ( oggigiorno la funzione di attivazione ReLU è più popolare , specialmente con reti convoluzionali).
  • Il primo metodo usa anche lo slancio .

La differenza principale che posso vedere è che nel primo caso la backpropagation è iterativa mentre nel secondo esempio viene eseguita in modalità batch.

L'ultimo video della serie di Welch Labs introduce un metodo quasi newtoniano che offre il vantaggio di trovare il minimo della funzione di costo calcolando l' Assia (matrice di derivati ​​del secondo ordine dell'errore rispetto ai pesi). Tuttavia, è come confrontare mele e arance: la discesa del gradiente di vaniglia non utilizza informazioni di secondo ordine.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.