Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Strati Percettrone | Rete Neurale da Zero
Introduzione alle Reti Neurali con Python

Strati Percettrone

Scorri per mostrare il menu

Perceptron è la rete neurale più semplice—solo un neurone. Per compiti più complessi, si utilizza un perceptron multistrato (MLP), che contiene uno o più strati nascosti che permettono alla rete di apprendere schemi più complessi.

Un MLP è composto da:

  1. Strato di input — riceve i dati;
  2. Strati nascosti — estraggono schemi;
  3. Strato di output — produce le previsioni.

Ogni strato ha più neuroni; l'output di uno strato diventa l'input del successivo.

Immagine semplificata di rete neurale

Pesi e Bias degli Strati

In precedenza, un neurone memorizzava i suoi pesi come un vettore e il bias come uno scalare. Uno strato, tuttavia, contiene molti neuroni, quindi i suoi pesi diventano una matrice, dove ogni riga memorizza i pesi di un neurone. I bias di tutti i neuroni formano un vettore.

Per uno strato con 3 input e 2 neuroni:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Qui, WijW_{ij} è il peso dall'input jj al neurone ii; bib_i è il bias del neurone ii.

Pesi del livello

Propagazione in avanti

La propagazione in avanti attiva ciascun neurone calcolando una somma pesata, aggiungendo il bias e applicando la funzione di attivazione.

In precedenza, un singolo neurone utilizzava:

[ z = W \cdot x + b ]

Ora, poiché ogni riga di (W) rappresenta il vettore dei pesi di un neurone, eseguendo la moltiplicazione tra matrice e vettore tra la matrice dei pesi e il vettore di input si calcolano automaticamente tutte le somme pesate dei neuroni contemporaneamente.

Moltiplicazione matrice-vettore per il livello

Per aggiungere i bias alle uscite dei rispettivi neuroni, è necessario aggiungere anche un vettore di bias:

Propagazione in avanti per lo strato

Infine, la funzione di attivazione viene applicata al risultato — sigmoid o ReLU, nel nostro caso. La formula risultante per la propagazione in avanti nello strato è la seguente:

a=activation(Wx+b)a = activation(Wx + b)

dove aa è il vettore delle attivazioni (uscite) dei neuroni.

Classe Layer

Poiché gli MLP sono costituiti da layer, definiamo una classe dedicata Layer. I suoi attributi:

  • inputs: vettore di input (elementi n_inputs);
  • outputs: output grezzi dei neuroni (elementi n_neurons);
  • weights: matrice dei pesi;
  • biases: vettore dei bias;
  • activation_function: funzione di attivazione utilizzata nel layer.

Pesi e bias sono inizializzati con valori casuali da una distribuzione uniforme in ([-1, 1]). inputs e outputs sono inizializzati come array NumPy riempiti di zeri per garantire forme coerenti durante la successiva retropropagazione.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Nota

L'inizializzazione di inputs e outputs a zero previene errori di forma e garantisce che i layer rimangano coerenti sia durante la propagazione in avanti che all'indietro.

Metodo Forward

La propagazione in avanti per un layer calcola gli output grezzi e applica la funzione di attivazione:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

La trasformazione dell'input in un vettore colonna garantisce la corretta moltiplicazione con la matrice dei pesi e la corrispondenza delle dimensioni attese in tutta la rete.

Note
Nota

Se desideri, posso anche abbreviare ulteriormente questo contenuto, produrre un diagramma della struttura del layer o generare il codice completo funzionante per la classe Layer.

1. Cosa rende un perceptrone multistrato (MLP) più potente di un perceptrone semplice?

2. Perché è necessario applicare questo codice prima di moltiplicare inputs per la matrice dei pesi?

question mark

Cosa rende un perceptrone multistrato (MLP) più potente di un perceptrone semplice?

Seleziona la risposta corretta

question mark

Perché è necessario applicare questo codice prima di moltiplicare inputs per la matrice dei pesi?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 3

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 2. Capitolo 3
some-alt