Implementering af Enkelt Neuron
En neuron er den grundlæggende beregningsenhed i et neuralt netværk. Den behandler flere input og genererer et enkelt output, hvilket gør det muligt for netværket at lære og lave forudsigelser.
I dette eksempel bygger vi et neuralt netværk med én neuron til en binær klassifikationsopgave (f.eks. spam-detektion). Neuronen modtager numeriske egenskaber og returnerer en værdi mellem 0 og 1, som repræsenterer sandsynligheden for, at en e-mail er spam (1) eller ham (0).
Trin-for-trin:
- Multiplicer hvert input med dets vægt;
- Læg alle vægtede input sammen;
- Læg en bias til for at forskyde outputtet;
- Send resultatet gennem en sigmoid aktivering, som konverterer det til intervallet ((0,1)) for sandsynlighedsoutput.
Bias for neuronet er også en trænelig parameter.
Neuron-klasse
En neuron skal gemme sine vægte og bias, hvilket gør en klasse til en naturlig måde at gruppere disse relaterede egenskaber på.
Selvom denne klasse ikke vil indgå i den endelige neurale netværksimplementering, illustrerer den effektivt centrale principper.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: tilfældigt initialiserede værdier (én pr. input);bias: en enkelt tilfældig værdi. Begge trækkes fra en uniform fordeling i ([-1, 1]) ved brug afnp.random.uniform()for at bryde symmetrien.
Fremadrettet Propagering
Neuronens activate()-metode beregner den vægtede sum og anvender sigmoid.
Den vægtede sum bruger prikproduktet af vægte og input:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Derefter anvendes aktiveringsfunktionen for at opnå neuronens endelige output.
Brug af np.dot() undgår løkker og beregner hele den vægtede sum på én linje.
Sigmoidfunktionen transformerer derefter denne rå værdi til en sandsynlighed:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Sigmoid-aktivering
Givet et råt output (z), er sigmoid:
σ(z)=1+e−z1Den omformer ethvert tal til ((0,1)), hvilket gør den ideel til binær klassifikation, hvor neuronens output skal repræsentere en sandsynlighed.
Ved brug af denne formel kan sigmoid implementeres som en simpel funktion i Python:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
Formlen for ReLU-funktionen er som følger, hvilket grundlæggende sætter output lig med z, hvis det er positivt, og 0 ellers:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Hvad er bias-termens rolle i en enkelt neuron?
2. Hvorfor initialiserer vi vægte med små tilfældige værdier i stedet for nuller?
Tak for dine kommentarer!
Spørg AI
Spørg AI
Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat
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
Implementering af Enkelt Neuron
Stryg for at vise menuen
En neuron er den grundlæggende beregningsenhed i et neuralt netværk. Den behandler flere input og genererer et enkelt output, hvilket gør det muligt for netværket at lære og lave forudsigelser.
I dette eksempel bygger vi et neuralt netværk med én neuron til en binær klassifikationsopgave (f.eks. spam-detektion). Neuronen modtager numeriske egenskaber og returnerer en værdi mellem 0 og 1, som repræsenterer sandsynligheden for, at en e-mail er spam (1) eller ham (0).
Trin-for-trin:
- Multiplicer hvert input med dets vægt;
- Læg alle vægtede input sammen;
- Læg en bias til for at forskyde outputtet;
- Send resultatet gennem en sigmoid aktivering, som konverterer det til intervallet ((0,1)) for sandsynlighedsoutput.
Bias for neuronet er også en trænelig parameter.
Neuron-klasse
En neuron skal gemme sine vægte og bias, hvilket gør en klasse til en naturlig måde at gruppere disse relaterede egenskaber på.
Selvom denne klasse ikke vil indgå i den endelige neurale netværksimplementering, illustrerer den effektivt centrale principper.
class Neuron:
def __init__(self, n_inputs):
self.weights = ...
self.bias = ...
weights: tilfældigt initialiserede værdier (én pr. input);bias: en enkelt tilfældig værdi. Begge trækkes fra en uniform fordeling i ([-1, 1]) ved brug afnp.random.uniform()for at bryde symmetrien.
Fremadrettet Propagering
Neuronens activate()-metode beregner den vægtede sum og anvender sigmoid.
Den vægtede sum bruger prikproduktet af vægte og input:
input_sum_with_bias = np.dot(self.weights, inputs) + self.bias
Derefter anvendes aktiveringsfunktionen for at opnå neuronens endelige output.
Brug af np.dot() undgår løkker og beregner hele den vægtede sum på én linje.
Sigmoidfunktionen transformerer derefter denne rå værdi til en sandsynlighed:
def activate(self, inputs):
input_sum_with_bias = ...
output = ...
return output
Sigmoid-aktivering
Givet et råt output (z), er sigmoid:
σ(z)=1+e−z1Den omformer ethvert tal til ((0,1)), hvilket gør den ideel til binær klassifikation, hvor neuronens output skal repræsentere en sandsynlighed.
Ved brug af denne formel kan sigmoid implementeres som en simpel funktion i Python:
def sigmoid(z):
return 1 / (1 + np.exp(-z))
Formlen for ReLU-funktionen er som følger, hvilket grundlæggende sætter output lig med z, hvis det er positivt, og 0 ellers:
ReLU(z)=max(0,z)def relu(z):
return np.maximum(0, z)
1. Hvad er bias-termens rolle i en enkelt neuron?
2. Hvorfor initialiserer vi vægte med små tilfældige værdier i stedet for nuller?
Tak for dine kommentarer!