Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Implementatie van een Enkele Neuron | Neuraal Netwerk Vanaf Nul
Quizzes & Challenges
Quizzes
Challenges
/
Introductie tot Neurale Netwerken met Python

bookImplementatie van een Enkele Neuron

Note
Definitie

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:

  1. Vermenigvuldig elke invoer met het bijbehorende gewicht;
  2. Tel alle gewogen invoerwaarden op;
  3. Voeg een bias toe om de uitvoer te verschuiven;
  4. Geef het resultaat door een sigmoid-activatie, die het omzet naar het bereik ((0,1)) voor een waarschijnlijkheidsuitvoer.
Note
Opmerking

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.

Note
Opmerking

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 van np.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)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Hiermee 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 zz als deze positief is en anders 0:

ReLU(z)=max(0,z)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?

question mark

Wat is de rol van de bias-term in een enkele neuron?

Select the correct answer

question mark

Waarom initialiseren we gewichten met kleine willekeurige waarden in plaats van nullen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 1

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

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?

bookImplementatie van een Enkele Neuron

Veeg om het menu te tonen

Note
Definitie

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:

  1. Vermenigvuldig elke invoer met het bijbehorende gewicht;
  2. Tel alle gewogen invoerwaarden op;
  3. Voeg een bias toe om de uitvoer te verschuiven;
  4. Geef het resultaat door een sigmoid-activatie, die het omzet naar het bereik ((0,1)) voor een waarschijnlijkheidsuitvoer.
Note
Opmerking

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.

Note
Opmerking

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 van np.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)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Hiermee 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 zz als deze positief is en anders 0:

ReLU(z)=max(0,z)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?

question mark

Wat is de rol van de bias-term in een enkele neuron?

Select the correct answer

question mark

Waarom initialiseren we gewichten met kleine willekeurige waarden in plaats van nullen?

Select the correct answer

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 2. Hoofdstuk 1
some-alt