Implementatie van een Enkele Neuron
Een neuron is de basale computationele eenheid van een neuraal netwerk. Het verwerkt meerdere invoerwaarden en genereert een enkele uitvoer, waardoor het netwerk kan leren en voorspellingen kan doen.
In dit voorbeeld bouwen we een neuraal netwerk met één neuron voor een binaire classificatie-taak (bijvoorbeeld spamdetectie). Het neuron ontvangt numerieke kenmerken en geeft een waarde tussen 0 en 1 als uitvoer, wat de waarschijnlijkheid weergeeft dat een e-mail spam (1) of ham (0) is.
Stapsgewijs:
- Vermenigvuldig elke invoer met het bijbehorende gewicht;
- Tel alle gewogen invoerwaarden op;
- Voeg een bias toe om de uitvoer te verschuiven;
- Geef het resultaat door een sigmoid-activatie, die het omzet naar het bereik ((0,1)) voor een waarschijnlijkheidsuitvoer.
Bias van de neuron is ook een trainbare parameter.
Neuronklasse
Een neuron moet zijn gewichten en bias opslaan, waardoor een klasse een logische manier is om deze gerelateerde eigenschappen te groeperen.
Hoewel deze klasse geen onderdeel zal zijn van de uiteindelijke implementatie van het neuraal netwerk, illustreert het effectief belangrijke principes.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: willekeurig geïnitialiseerde waarden (één per invoer);bias: een enkele willekeurige waarde. Beide worden getrokken uit een uniforme verdeling in ([-1, 1]) met behulp vannp.random.uniform()om symmetrie te doorbreken.
Voorwaartse Propagatie
De activate()-methode van de neuron berekent de gewogen som en past de sigmoid toe.
De gewogen som gebruikt het dotproduct van de gewichten en invoerwaarden:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Daarna passen we de activatiefunctie toe om de uiteindelijke uitvoer van de neuron te verkrijgen.
Het gebruik van np.dot() voorkomt lussen en berekent de volledige gewogen som in één regel.
De sigmoidfunctie transformeert deze ruwe waarde vervolgens naar een waarschijnlijkheid:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Sigmoid-activatie
Gegeven de ruwe output (z), is de sigmoid:
σ(z)=1+e−z1Hiermee wordt elk getal omgezet naar ((0,1)), waardoor het ideaal is voor binaire classificatie, waarbij de output van het neuron een waarschijnlijkheid moet voorstellen.
Met deze formule kan de sigmoid eenvoudig als functie in Python worden geïmplementeerd:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
De formule voor de ReLU-functie is als volgt, waarbij de output gelijk wordt gesteld aan z als deze positief is en anders 0:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Wat is de rol van de bias-term in een enkele neuron?
2. Waarom initialiseren we gewichten met kleine willekeurige waarden in plaats van nullen?
Bedankt voor je feedback!
Vraag AI
Vraag AI
Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.
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?
Awesome!
Completion rate improved to 4
Implementatie van een Enkele Neuron
Veeg om het menu te tonen
Een neuron is de basale computationele eenheid van een neuraal netwerk. Het verwerkt meerdere invoerwaarden en genereert een enkele uitvoer, waardoor het netwerk kan leren en voorspellingen kan doen.
In dit voorbeeld bouwen we een neuraal netwerk met één neuron voor een binaire classificatie-taak (bijvoorbeeld spamdetectie). Het neuron ontvangt numerieke kenmerken en geeft een waarde tussen 0 en 1 als uitvoer, wat de waarschijnlijkheid weergeeft dat een e-mail spam (1) of ham (0) is.
Stapsgewijs:
- Vermenigvuldig elke invoer met het bijbehorende gewicht;
- Tel alle gewogen invoerwaarden op;
- Voeg een bias toe om de uitvoer te verschuiven;
- Geef het resultaat door een sigmoid-activatie, die het omzet naar het bereik ((0,1)) voor een waarschijnlijkheidsuitvoer.
Bias van de neuron is ook een trainbare parameter.
Neuronklasse
Een neuron moet zijn gewichten en bias opslaan, waardoor een klasse een logische manier is om deze gerelateerde eigenschappen te groeperen.
Hoewel deze klasse geen onderdeel zal zijn van de uiteindelijke implementatie van het neuraal netwerk, illustreert het effectief belangrijke principes.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: willekeurig geïnitialiseerde waarden (één per invoer);bias: een enkele willekeurige waarde. Beide worden getrokken uit een uniforme verdeling in ([-1, 1]) met behulp vannp.random.uniform()om symmetrie te doorbreken.
Voorwaartse Propagatie
De activate()-methode van de neuron berekent de gewogen som en past de sigmoid toe.
De gewogen som gebruikt het dotproduct van de gewichten en invoerwaarden:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Daarna passen we de activatiefunctie toe om de uiteindelijke uitvoer van de neuron te verkrijgen.
Het gebruik van np.dot() voorkomt lussen en berekent de volledige gewogen som in één regel.
De sigmoidfunctie transformeert deze ruwe waarde vervolgens naar een waarschijnlijkheid:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Sigmoid-activatie
Gegeven de ruwe output (z), is de sigmoid:
σ(z)=1+e−z1Hiermee wordt elk getal omgezet naar ((0,1)), waardoor het ideaal is voor binaire classificatie, waarbij de output van het neuron een waarschijnlijkheid moet voorstellen.
Met deze formule kan de sigmoid eenvoudig als functie in Python worden geïmplementeerd:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
De formule voor de ReLU-functie is als volgt, waarbij de output gelijk wordt gesteld aan z als deze positief is en anders 0:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Wat is de rol van de bias-term in een enkele neuron?
2. Waarom initialiseren we gewichten met kleine willekeurige waarden in plaats van nullen?
Bedankt voor je feedback!