5

Recentemente ho iniziato a pensare di implementare l'algoritmo Levenberg-Marquardt per l'apprendimento di una rete neurale artificiale (ANN). La chiave per l'implementazione è calcolare una matrice Jacobiana. Ho passato un paio d'ore a studiare l'argomento, ma non riesco a capire come calcolare esattamente.Calcolo di matrice Jacobiana per reti neurali artificiali

Dire che ho una rete di feed-forward semplice con 3 ingressi, 4 neuroni nel livello nascosto e 2 uscite. I livelli sono completamente collegati. Ho anche un set di apprendimento lungo 5 righe.

  1. Che esattamente dovrebbe essere la dimensione della matrice Jacobiana?
  2. Che cosa dovrei mettere esattamente al posto dei derivati? (Esempi delle formule per gli angoli in alto a sinistra e in basso a destra lungo con qualche spiegazione sarebbe perfetto)

Questo in realtà non aiuta:

enter image description here

Quali sono F e x in termini di una rete neurale?

risposta

0

Quindi dalla mia esperienza di lavoro con ANN e backpropagation

  1. matrice Jacobiana organizza tutte le derivate parziali in un n matrice m x, dove m è il numero di uscita ed n è il numero di input. Quindi nel tuo caso dovrebbe essere 2x3

  2. Quindi diciamo che c'è un insieme tra il 1 e il numero k di uscita (F nella foto) e non vi è 1 e ho il numero di ingresso (x nella foto) così la formula dovrebbe essere come questo

     Fk 
    Jki = ---- 
         xi 
    

mi dispiace non so come scrivere un formato di formula in qui, ma spero che la mia risposta è abbastanza chiara.
Se avete qualche domanda sulla mia risposta si prega di chiedere nel commento!

+0

Quale dovrebbe essere la funzione F?Anche Abhinash nella sua risposta ha suggerito che la dimensione della matrice è diversa da quella che hai proposto (se ho capito bene). Forse se vedo la funzione F sarà più chiaro. – gisek

7

Lo Jacobiano è una matrice di tutte le derivate parziali del primo ordine di una funzione con valori vettoriali. Nel caso della rete neuronale, è una matrice N-by-W, dove N è il numero di voci nel nostro set di allenamento e W è il numero totale di parametri (pesi + bias) della nostra rete. Esso può essere realizzato prendendo le derivate parziali di ogni uscita rispetto a ciascun peso, e ha la forma:

enter image description here

Dove F (xi, w) è la funzione di rete valutata per l'ingresso i-esimo vettore del set di allenamento usando il vettore di peso w e wj è l'elemento j-esimo del vettore di peso w della rete. Nelle tradizionali implementazioni di Levenberg-Marquardt, il Jacobiano viene approssimato usando differenze finite. Tuttavia, per le reti neurali, può essere calcolato in modo molto efficiente utilizzando la regola della catena del calcolo e le prime derivate delle funzioni di attivazione.

+0

Quindi nell'esempio dalla mia domanda il numero di colonne di matrici = 3 * 4 + 4 * 2 = 20 (dimentichiamoci dei bias per un momento) e il numero di righe di matrici è uguale al numero di righe nei dati set (5)? Come dovrebbe essere la funzione F? – gisek

+0

@abhinash I gradienti e Jacobian sono gli stessi? Perché anche la matrice del gradiente sarebbe di dimensione NxW mentre la si inserisce in un'equazione di discesa del gradiente –