Padroneggiare il Deep Learning L’arte di approssimare non-linearità con stime a tratti Parte-3

L'arte di padroneggiare il Deep Learning Approssimare non-linearità con stime a tratti - Parte 3

Saluti a tutti! Benvenuti al terzo capitolo della mia serie Mastering Deep Learning. Questo articolo segna la conclusione delle prime due parti, intitolate L’arte di approssimare non-linearità con stime segmentate. Nei primi due articoli abbiamo approfondito la comprensione dei meccanismi interni delle reti neurali profonde. In questo ultimo segmento, concluderemo la nostra esplorazione comprendendo come le reti neurali gestiscono input e output multidimensionali, che rappresentano uno scenario più realistico. Prima di immergerci nel contenuto, ho ricevuto un suggerimento, ovvero tentare una visualizzazione migliore e più comprensibile della piegatura dello spazio dell’input di dimensione superiore. Esploriamo rapidamente questa idea e poi procediamo!

simple neural network to visualize latent representations

Consideriamo una semplice rete neurale, come mostrato sopra. Ogni neurone, indicato come hₖ’ nel secondo livello nascosto, stima un iperpiano utilizzando il seguente formato:

hₖ’ = θ’ₖ₁h₁ + θ’ₖ₂h₂ + β₁

L’equazione sopra rappresenta un iperpiano bidimensionale nello spazio h₁ e h₂. Allo stesso modo, possiamo ottenere l’output y come segue:

y = ∑ ₀¹⁰ Ωᵢhᵢ’ + β₂

Come abbiamo esplorato in precedenti post del blog, possiamo scomporre l’equazione sopra per comprendere la mappatura da x a y. Tuttavia, il nostro focus attuale non è sulla mappatura specifica; invece, miriamo a visualizzare come ognuno dei dieci neuroni contribuisce al processo di piegatura.

La rete neurale sopra è addestrata per stimare la seguente funzione: f(x) = sin(2x) + cos(x) + x. Ogni hₖ’ rappresenta una superficie bidimensionale che può essere visualizzata. Di seguito è riportata una figura che illustra le diverse superfici stimate da ciascuno dei dieci neuroni nel secondo livello nascosto.

Ten different neurons fold the surface defined over h₁, h₂, and hₖ in ten unique ways.

Ogni neurone ha piegato in modo univoco la superficie, fornendoci una comprensione dei diversi modi in cui questa piegatura può manifestarsi. La stima latente di hₖ’ in termini di x è essenzialmente una linea, che è un componente della superficie raffigurata sopra. Puoi pensare alla superficie come alla carta su cui disegniamo questa linea, e il processo è simile a fare tagli sulla carta piegata, piuttosto che tagliare direttamente la linea stessa.

Ora, esploriamo come le reti neurali gestiscono più input, considerando una semplice rete neurale poco profonda come mostrato nell’immagine seguente.

simple shallow neural network with two inputs

Invece di avere solo un peso nell’unità nascosta, ora abbiamo due pesi insieme a un bias. Con questo cambiamento, ogni neurone stima un piano anziché una linea, mentre i meccanismi complessivi rimangono simili. Proviamo ora a stimare la mappatura f(x₁, x₂) = sin(2x₁)sin(2x₂) + cos(x₁)cos(x₂) + x₁ + x₂ utilizzando reti neurali poco profonde con capacità diverse e visualizziamo le loro stime.

La stima di f(x₁, x₂) utilizzando una rete neurale superficiale con 12 unità nascoste.
La stima di f(x₁, x₂) utilizzando una rete neurale superficiale con 32 unità nascoste.
La stima di f(x₁, x₂) utilizzando una rete neurale superficiale con 64 unità nascoste.

Man mano che aumentiamo il numero di unità nascoste, le nostre stime della superficie che stiamo cercando di modellare continuano a migliorare. Con ogni neurone che stima un piano, la funzione ReLU può tagliare questi piani su uno qualsiasi dei loro quattro lati, creando superfici lineari a tratti. Come accennato in precedenza, più pezzi abbiamo, migliore sarà l’approssimazione della funzione target. È importante notare che la superficie stimata è rigorosamente lineare a tratti, anche se potrebbe dare l’impressione di essere non lineare. Se zoomassimo abbastanza, vedremmo chiaramente queste regioni lineari a tratti.

Dopo aver capito come gestire gli input multidimensionali, non c’è alcun limite che ci impedisca di utilizzare reti neurali profonde per tali stime. Le reti profonde possono creare un numero maggiore di queste regioni lineari rispetto alle reti superficiali con lo stesso numero di neuroni. Ad esempio, se consideriamo una rete superficiale con 100 neuroni e una rete profonda con due strati, ciascuno contenente 50 neuroni, la rete profonda ha più parametri solo tra i due livelli nascosti rispetto all’intera rete superficiale. Anche se entrambe le reti hanno lo stesso numero di neuroni, otteniamo una maggiore potenza di stima a scapito di più parametri.

La figura sottostante mostra la stessa stima effettuata da una rete profonda con 6 neuroni in ciascuno strato nascosto, e possiamo osservare che la stima è buona quanto quella ottenuta con una rete neurale superficiale con 32 neuroni.

La stima di f(x₁, x₂) utilizzando una rete neurale profonda con due strati nascosti, ognuno contenente 6 unità nascoste.

Continuiamo la nostra esplorazione su come le reti neurali stimano le uscite multidimensionali. Per capire meglio, consideriamo due funzioni, sin(x) e cos(x), entrambe funzioni di una variabile a valore reale x. Il nostro obiettivo è imparare contemporaneamente entrambe queste funzioni dall’input x. Alleniamo una semplice rete neurale superficiale, come raffigurato di seguito, per stimare y₁ e y₂. Nei precedenti esempi, abbiamo stimato una funzione con più variabili, ma ora stiamo stimando più funzioni.

Una semplice rete neurale superficiale che stima contemporaneamente due diverse funzioni, y₁ e y₂.
Le funzioni stimante f₁(x) e f₂(x) prodotte dal modello con 3 unità nascoste.

Possiamo osservare che la stima presenta 4 regioni lineari, corrispondenti ai 3 tagli effettuati da ciascuno dei 3 neuroni. Un aspetto interessante qui è che entrambe le funzioni stimate hanno tagli negli stessi punti. Questo fenomeno si verifica perché i neuroni dello strato finale stimano combinazioni lineari delle stime effettuate dai neuroni nello strato precedente, e queste combinazioni lineari passano attraverso ReLU, causando tagli prima della stima finale. Di conseguenza, la stima finale consiste in due diverse combinazioni lineari di queste funzioni, con tagli esattamente negli stessi punti per entrambe le funzioni

I valori stimati di y₁ e y₂ prodotti dal modello

I problemi reali spesso coinvolgono molteplici variabili sia dal lato di input che dal lato di output. La figura fornita di seguito rappresenta una rete neurale poco profonda generica in grado di accettare input multipli e restituire output multipli. Le reti neurali ci consentono di stimare contemporaneamente più funzioni multivariate, rendendole uno strumento notevolmente potente per stimare funzioni matematiche complesse.

Una rete neurale poco profonda generica che accetta input multivariati per stimare contemporaneamente più mappature.

Questo blog trae ispirazione significativa dal libro “Understanding Deep Learning” di Simon J.D. Prince (udlbook.github.io/udlbook/). Nelle prossime puntate, approfondiremo le funzioni di perdita e come queste sono derivate dall’estimazione della massima verosimiglianza. Il codice che ho utilizzato per generare i grafici può essere trovato di seguito. Se hai trovato interessante questo blog, apprezzerei molto il tuo supporto mettendo un like.

Understanding-Deep-Learning/Mastering_Deep_Learning_The_Art_of_Approximating_Non_Linearities_with_Pi…

Contribute to Raagulbharatwaj/Understanding-Deep-Learning development by creating an account on GitHub.

github.com