Neuroni e funzioni di attivazione in Python
Un neurone artificiale è una funzione minuscola. Moltiplica ogni input per un peso, aggiunge un bias e passa il risultato a una funzione di attivazione che decide quanto forte si «attiva».
Il concetto in parole semplici
Un neurone artificiale è una funzione minuscola. Moltiplica ogni input per un peso, aggiunge un bias e passa il risultato a una funzione di attivazione che decide quanto forte si «attiva».
Costruisci un neurone artificiale in Python puro: una somma pesata degli input più un bias, passata attraverso sigmoid o ReLU.
Idee chiave
- I pesi indicano quanto conta ogni input; il bias sposta il risultato in alto o in basso.
- Senza attivazione, impilare neuroni darebbe comunque solo un modello lineare (una retta).
- Sigmoid restituisce un valore tra 0 e 1, quindi è adatta alle probabilità.
- ReLU è veloce ed è la scelta abituale per gli strati nascosti delle reti moderne.
Quando si usa?
- Capire cosa succede dentro le reti neurali e le librerie di IA.
- Imparare l'idea prima di implementarla nelle sfide corrispondenti.
- Prepararti a corsi di machine learning, colloqui e progetti.
Guardalo in azione
Sposta i cursori per cambiare input, pesi e bias. Guarda la somma pesata z muoversi lungo le curve sigmoid e ReLU.
Codice di esempio
import math
# A neuron multiplies each input by a weight, adds them up and adds a bias.
def dot(a, b):
return sum(x * y for x, y in zip(a, b))
def sigmoid(z):
return 1 / (1 + math.exp(-z)) # squashes any number into (0, 1)
def relu(z):
return max(0.0, z) # keeps positives, turns negatives into 0
inputs = [0.5, -1.0, 2.0]
weights = [0.8, 0.2, -0.5]
bias = 0.1
z = dot(inputs, weights) + bias # weighted sum
print("weighted sum z =", round(z, 3))
print("sigmoid(z) =", round(sigmoid(z), 3))
print("relu(z) =", relu(z))
# The activation decides how strongly the neuron "fires".
for value in [-2, 0, 2]:
print(f"z={value:>2} sigmoid={sigmoid(value):.3f} relu={relu(value)}")
Output previsto
weighted sum z = -0.7
sigmoid(z) = 0.332
relu(z) = 0.0
z=-2 sigmoid=0.119 relu=0.0
z= 0 sigmoid=0.500 relu=0.0
z= 2 sigmoid=0.881 relu=2
Come funziona
dot() calcola la somma pesata z. Sigmoid comprime z in un valore tra 0 e 1, mentre ReLU mantiene i valori positivi e trasforma quelli negativi in 0. Il ciclo mostra come ogni attivazione risponde a un input negativo, nullo e positivo.
Modifica i valori ed esegui il programma nel compilatore Python online CodeUtility senza installare Python.
Esercizi pratici
Modifica gli input e verifica i casi limite prima di usare dataset più grandi.
- Cambia gli input o i pesi e prevedi l'output prima di eseguire.
- Stampa i valori intermedi per seguire ogni passo del calcolo.
- Risolvi le sfide collegate qui sotto per implementare l'idea da solo.
Esercitati con una sfida
Usa ciò che questa lezione spiega per risolvere un problema reale. Ogni sfida gira nel browser, con test immediati e una revisione dell'IA.
- Prodotto scalare di due vettori Moltiplica due vettori elemento per elemento e somma i risultati, l'operazione alla base di ogni neurone. Facile
- Funzioni di attivazione Applica sigmoide, ReLU, Leaky ReLU o tanh a ogni valore di una lista. Facile
- Un singolo neurone artificiale Calcola l'output di un neurone: somma pesata degli input più un bias, passata attraverso la sigmoide. Facile