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

bookStrati di Perceptron

Perceptron è la rete neurale più semplice—solo un neurone. Per compiti più complessi, si utilizza un percettrone 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 predizioni.

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

Pesi e Bias degli Strati

In precedenza, un neurone memorizzava i propri pesi come un vettore e il bias come uno scalare. Tuttavia, uno strato 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.

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) è il vettore dei pesi di un neurone, eseguire la moltiplicazione tra matrice e vettore tra la matrice dei pesi e il vettore di input calcola automaticamente tutte le somme pesate dei neuroni contemporaneamente.

Per aggiungere i bias agli output dei rispettivi neuroni, deve essere aggiunto anche un vettore di bias:

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 (output) dei neuroni.

Classe Layer

Poiché gli MLP sono composti da strati, 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 nello strato.

I pesi e i 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 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

Inizializzare inputs e outputs con zeri 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 le uscite grezze e applica l'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 il rispetto delle dimensioni attese in tutta la rete.

Note
Nota

Se desideri, posso anche abbreviare ulteriormente, 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?

Select the correct answer

question mark

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

Select the correct answer

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

bookStrati di Perceptron

Scorri per mostrare il menu

Perceptron è la rete neurale più semplice—solo un neurone. Per compiti più complessi, si utilizza un percettrone 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 predizioni.

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

Pesi e Bias degli Strati

In precedenza, un neurone memorizzava i propri pesi come un vettore e il bias come uno scalare. Tuttavia, uno strato 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.

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) è il vettore dei pesi di un neurone, eseguire la moltiplicazione tra matrice e vettore tra la matrice dei pesi e il vettore di input calcola automaticamente tutte le somme pesate dei neuroni contemporaneamente.

Per aggiungere i bias agli output dei rispettivi neuroni, deve essere aggiunto anche un vettore di bias:

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 (output) dei neuroni.

Classe Layer

Poiché gli MLP sono composti da strati, 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 nello strato.

I pesi e i 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 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

Inizializzare inputs e outputs con zeri 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 le uscite grezze e applica l'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 il rispetto delle dimensioni attese in tutta la rete.

Note
Nota

Se desideri, posso anche abbreviare ulteriormente, 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?

Select the correct answer

question mark

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

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 3
some-alt