ML - 23 - Neural Networks I


Lecture Info

  • Date: [2021-04-11 dom 20:30]

  • Lecturer: Giorgio Gambosi

  • Slides: (ml_11_neural-slides.pdf)


In questa lezione abbiamo introdotto il primo modello di rete neurale, i multi-layered percerptons, discutendone un caso particolare con tre layers (input, hidden, output).

1 Multilayer Networks

I modelli considerati fino a questo punto del corso sono tutti detti a single level of parameters. Questi modelli seguono infatti una struttura lineare, in generale esprimibile dalla relazione \(y = f(\mathbf{w}^T \phi(x))\), ovvero in cui i parametri del modello sono applicati direttamente ai valori di input.

Volendo generalizzare, è possibile definire dei modelli più generali in cui sequenze di trasformazioni vengono applicate ai dati. Questi modelli sono quindi rappresentabili da mutlilayered networks of functions. Una struttura di tipo multi-layered questo tipo prende il nome di neural network (rete neurale).

2 Multi-Layered Percerpton

Un caso particolare di rete neurale è detta multi-layered perceprton.


2.1 First Layer

Per un qualsiasi vettore di input di \(d\) elementi \(x = (x_1, \ldots, x_d)\), il primo layer di una rete neurale è caratterizzato da \(m_1 > 0\) valori \(a_1^{(1)}, \ldots, a_{m_1}^{(1)}\), detti activations, che sono ottenuti combinando con gli elementi di input tramite dei pesi attraverso una combinazione lineare

\[a_{j}^{(1)} = \sum\limits_{i = 1}^d w_{ji}^{(1)} x_i + w_{j0}^{(1)} = \overline{\mathbf{x}}^T \mathbf{w}_j^{(1)}\]

dove \(w_{ji}\) è il peso dell'arco che collega la feature \(i\) al nodo \(j\) e \(\overline{\mathbf{x}} = (1, x_1, \ldots, x_d)^T\).

Il totale dei coefficienti nel primo layer è quindi \((d+1) \cdot m_1\), dove \(m_1\) è un iperparametro del modello.

Ogni attivazione \(a_j^{(1)}\) è trasformata utilizzando una funzione di attivazione non lineare \(h_1\) per ottenere il valore \(z_j^{(1)}\).

Alla fine quindi l'output del layer è un vettore \(\mathbf{z}^{(1)} = (z_1^{(1)}, \ldots, z_{m_1}^{(1)})\) con

\[z_j^{(1)} = h_1(a_j^{(1)}) = h_1\big(\overline{\mathbf{x}}^T \mathbf{w}_j^{(1)}\big)\]

Tipicamente possiamo assumere che la funzione \(h_1\) è una funzione di tipo sigmoide, ovvero

\[\sigma(x) = \frac{1}{1 + e^{-x}}\]

oppure una tangente iperbolica

\[\tanh{(x)} = \frac{e^x - e^{-x}}{e^x + e^{-x}} = \frac{1}{1 + e^{-2x}} - \frac{1}{1 + e^{ex}} = \sigma(2x) - \sigma(-2x)\]


2.2 Second Layer

Continuando la nostra costruzione, possiamo utilizzare il vettore \(\mathbf{z}^{(1)}\) come input per il prossimo layer, in cui \(m_2\) hidden units sono utilizzate per calcolare un nuovo vettore \(\mathbf{z}^{(2)} = (z_1^{(2)}, \ldots, z_{m_2}^{(2)})\) andando prima a calcolare una combinazione lineare dei valori di inpu

\[a_k^{(2)} = \sum\limits_{i = 1}^{m_1} w_{ki}^{(2)} z_i^{(1)} + w_{k0}^{(2)} = (\overline{\mathbf{z}}^{(1)})^T \overline{\mathbf{w}}_k^{(2)}\]

e poi applicando una funzione non lineare \(h_2\)

\[z_k^{(2)} = h_2((\overline{\mathbf{z}}^{(1)})^T \overline{\mathbf{w}}_k^{(2)})\]

Graficamente,

Con l'introduzione di questo layer i coefficienti del modello sono divetanti \((d + 1)m_1 + (m_1 + 1)m_2\).


2.3 Inner Layers

La stessa costruzione di prima può essere iterata per ogni layer interno, dove il layer \(r\) ha \(m_r\) unità che utilizzando il vettore di input \(\mathbf{z}^{(r-1)}\) per ottenere il vettore di output \(\mathbf{z}^{(r-1)}\) tramite prima una combinazione lineare

\[a_k^{(r)} = (\overline{\mathbf{z}}^{(r-1)})^T \overline{\mathbf{w}}_k^{(r)}\]

e poi una trasformazione non lineare

\[z_k^{(r)} = h_r(a_k^{(r)}) = h_r((\overline{\mathbf{z}}^{(r-1)})^T \overline{\mathbf{w}}_k^{(r)})\]

Alla fine di tutti questi inner layers c'è poi un solo output layer.


2.4 Output Layer

Il layer di output è caratterizzato dal fatto che i valori in uscita da questo layer devono poter essere interpretati in funzione del problema che vogliamo risolvere attraverso la rete neturale.

Possibili differenze della struttura del layer di output a seconda del contesto di utilizzo:

  • Regressione: In questo caso l'ultimo layer ci deve fornire un valore, e quindi è costituito da un solo nodo.

  • Classificazione binaria: In questo caso l'ultimo layer avrà un solo elemento che ci darà il valore di probaiblità di appartenenza ad una classe.

  • Classicazione multiclasse: In questo caso, l'output layer dovrà avere un insieme di \(k\) valori, ciascuno dei quali rappresenta la probabilità di appartenenta dell'elemento alla particolare classe \(C_k\). In questo caso dobbiamo imporre che la somma di tali valori sia proprio \(1\).

In generale quindi il layer \(t\) (quello di output) fornisce un vettore di output \(\mathbf{y} = \mathbf{z}^{(t)}\) prodotto nuovamente da \(m_t\) output units (unità di output) che prima si occupa di calcolare una combinazione lineare

\[a_k^{(t)} = (\overline{\mathbf{z}}^{(t-1)})^T \overline{\mathbf{w}}_k^{(t)}\]

e poi applicano a quanto ottenuto una trasforamzione non lineare \(h_t\)

\[y_k = z_k^{(t)} = h_t((\overline{\mathbf{z}}^{(t-1)})^T \overline{\mathbf{w}}_k^{(t)})\]

dove la funzione \(h_t\) dipende dal particolare problema che si vuole risolvere. In particolare troviamo:

  • Regressione: \(h_t\) è la funzione identità.

  • Classificazione binaria: \(h_t\) è funzione sigmoide.

  • Classicazione multiclasse: \(h_t\) è la funzione softmax.

3 3-Layer Networks

Un modello abbastanza potente è un multi-layered percerpton a 3 livelli, in cui il primo livello sono i valori di input, il secondo livello è il valore della prima combinazione lineare delle features, e il terzo livello è layer di output.

Consideriamo il problema di classificare \(K\) classi diverse e utilizziamo un modello a 3 livelli. Esplicitando quello che succede nei vari layer, e assumendo che il numero di elementi nell'hidden layer sono \(M\), troviamo la seguente relazione

\[y_k = \sigma\Bigg(\sum\limits_{j = 1}^M w_{kj}^{(2)} h\Big(\sum\limits_{i = 1}^d w_{ji}^{(1)}x_i + w_{j0}^{(1)} \Big) + w_{k0}^{(2)} \Bigg)\]

La rete risultante può dunque essere vista come un caso particolare di un GLM (Generalized Linear Model), che in questo caso è una logistic regression, dove però le funzioni base non sono definite preventivamente rispetto ai dati \(x_i\) ma sono invece parametrizzate rispetto i coefficienti in \(\mathbf{w}^{(1)}\).

L'idea quindi è che in un GLM, la trasformazione delle features tramite le funzioni base è definita preventivamente e arbitrariamente. In questo caso la trasformazione delle features non è del tutto arbitaria, nel senso che la sua struttura è fissata, ma per poter essere calcolata dobbiamo fissare i valori dei coefficienti. In altre parole, non stiamo definendo come è fatta esattamente la trasformazione, ma stiamo definendo uno schema di possibili trasformazioni, che è parametrico rispetto ai coefficienti del primo layer, che sono ottenuti durante il training set, e quindi sono ottenuti in un approccio data-oriented.

Questo modello neurale quindi, a differenza di un GLM, la trasformazione delle features è un qualcosa che cambia rispetto ai dati del training set, e quindi essa stessa è appresa dal modello. Un modello di questo tipo quindi fa la miglior possibile regressione logistica utilizzando la miglior possibile trasformazione per rappresentare i dati iniziali.

Lo schema finale è quindi il seguente