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
Introductie tot Neurale Netwerken met Python

Implementatie 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 invoeren bij elkaar op;
  3. Voeg een bias toe om de output te verschuiven;
  4. Geef het resultaat door een sigmoid activatiefunctie, die het omzet naar het bereik ((0,1)) voor een waarschijnlijkheidsuitvoer.
Note
Opmerking

Bias van de neuron is ook een trainbaar 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 de belangrijkste principes.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: willekeurig geïnitialiseerde waarden (één per input);
  • 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 wordt de activatiefunctie toegepast om de uiteindelijke uitvoer van de neuron te verkrijgen.

Dotproduct

Met np.dot() worden lussen vermeden en wordt de volledige gewogen som in één regel berekend. De sigmoidfunctie zet deze ruwe waarde vervolgens om in 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 sigmoid als een eenvoudige functie in Python worden geïmplementeerd:

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

De formule voor de ReLU-functie is als volgt, die de output gelijk stelt 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?

Selecteer het correcte antwoord

question mark

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

Selecteer het correcte antwoord

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.

Sectie 2. Hoofdstuk 1
some-alt