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

bookImplementazione di un Singolo Neurone

Note
Definizione

Un neurone è l'unità computazionale di base di una rete neurale. Elabora input multipli e genera un singolo output, consentendo alla rete di apprendere ed effettuare previsioni.

In questo esempio, costruiamo una rete neurale con un solo neurone per un compito di classificazione binaria (ad esempio, rilevamento di spam). Il neurone riceve caratteristiche numeriche e produce un valore compreso tra 0 e 1, che rappresenta la probabilità che un'email sia spam (1) o ham (0).

Passaggi:

  1. Moltiplicare ciascun input per il proprio peso;
  2. Sommare tutti gli input pesati;
  3. Aggiungere un bias per modificare l'output;
  4. Passare il risultato attraverso una funzione di attivazione sigmoide, che lo converte nell'intervallo ((0,1)) per l'output di probabilità.
Note
Nota

Bias del neurone è anch'esso un parametro addestrabile.

Classe Neurone

Un neurone deve memorizzare i propri pesi e bias, rendendo la classe un modo naturale per raggruppare queste proprietà correlate.

Note
Nota

Sebbene questa classe non farà parte dell'implementazione finale della rete neurale, illustra efficacemente i principi chiave.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: valori inizializzati casualmente (uno per ogni input);
  • bias: un singolo valore casuale. Entrambi sono estratti da una distribuzione uniforme in ([-1, 1]) utilizzando np.random.uniform() per rompere la simmetria.

Propagazione in avanti

Il metodo activate() del neurone calcola la somma pesata e applica la sigmoide. La somma pesata utilizza il prodotto scalare tra pesi e input:

input_sum_with_bias = np.dot(self.weights, inputs) + self.bias

Successivamente si applica la funzione di attivazione per ottenere l’output finale del neurone.

L’utilizzo di np.dot() evita i cicli e calcola l’intera somma pesata in un’unica riga. La funzione sigmoide trasforma poi questo valore grezzo in una probabilità:

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...
    return output

Attivazione Sigmoide

Dato un output grezzo (z), la funzione sigmoide è:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Mappa qualsiasi numero in ((0,1)), rendendola ideale per la classificazione binaria, dove l’output del neurone deve rappresentare una probabilità.

Utilizzando questa formula, la sigmoide può essere implementata come una semplice funzione in Python:

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

La formula per la funzione ReLU è la seguente, che sostanzialmente imposta l’output uguale a zz se è positivo e 0 altrimenti:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Qual è il ruolo del termine di bias in un singolo neurone?

2. Perché inizializziamo i pesi con piccoli valori casuali invece che con zeri?

question mark

Qual è il ruolo del termine di bias in un singolo neurone?

Select the correct answer

question mark

Perché inizializziamo i pesi con piccoli valori casuali invece che con zeri?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

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

Suggested prompts:

Can you explain why we use the sigmoid function for binary classification?

How does the dot product work in the context of neural networks?

What is the difference between sigmoid and ReLU activations?

bookImplementazione di un Singolo Neurone

Scorri per mostrare il menu

Note
Definizione

Un neurone è l'unità computazionale di base di una rete neurale. Elabora input multipli e genera un singolo output, consentendo alla rete di apprendere ed effettuare previsioni.

In questo esempio, costruiamo una rete neurale con un solo neurone per un compito di classificazione binaria (ad esempio, rilevamento di spam). Il neurone riceve caratteristiche numeriche e produce un valore compreso tra 0 e 1, che rappresenta la probabilità che un'email sia spam (1) o ham (0).

Passaggi:

  1. Moltiplicare ciascun input per il proprio peso;
  2. Sommare tutti gli input pesati;
  3. Aggiungere un bias per modificare l'output;
  4. Passare il risultato attraverso una funzione di attivazione sigmoide, che lo converte nell'intervallo ((0,1)) per l'output di probabilità.
Note
Nota

Bias del neurone è anch'esso un parametro addestrabile.

Classe Neurone

Un neurone deve memorizzare i propri pesi e bias, rendendo la classe un modo naturale per raggruppare queste proprietà correlate.

Note
Nota

Sebbene questa classe non farà parte dell'implementazione finale della rete neurale, illustra efficacemente i principi chiave.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: valori inizializzati casualmente (uno per ogni input);
  • bias: un singolo valore casuale. Entrambi sono estratti da una distribuzione uniforme in ([-1, 1]) utilizzando np.random.uniform() per rompere la simmetria.

Propagazione in avanti

Il metodo activate() del neurone calcola la somma pesata e applica la sigmoide. La somma pesata utilizza il prodotto scalare tra pesi e input:

input_sum_with_bias = np.dot(self.weights, inputs) + self.bias

Successivamente si applica la funzione di attivazione per ottenere l’output finale del neurone.

L’utilizzo di np.dot() evita i cicli e calcola l’intera somma pesata in un’unica riga. La funzione sigmoide trasforma poi questo valore grezzo in una probabilità:

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...
    return output

Attivazione Sigmoide

Dato un output grezzo (z), la funzione sigmoide è:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Mappa qualsiasi numero in ((0,1)), rendendola ideale per la classificazione binaria, dove l’output del neurone deve rappresentare una probabilità.

Utilizzando questa formula, la sigmoide può essere implementata come una semplice funzione in Python:

def sigmoid(z):
    return 1 / (1 + np.exp(-z))

La formula per la funzione ReLU è la seguente, che sostanzialmente imposta l’output uguale a zz se è positivo e 0 altrimenti:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Qual è il ruolo del termine di bias in un singolo neurone?

2. Perché inizializziamo i pesi con piccoli valori casuali invece che con zeri?

question mark

Qual è il ruolo del termine di bias in un singolo neurone?

Select the correct answer

question mark

Perché inizializziamo i pesi con piccoli valori casuali invece che con zeri?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 1
some-alt