Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering af Enkelt Neuron | Neuralt Netværk fra Bunden
Introduktion til neurale netværk med Python

bookImplementering af Enkelt Neuron

Note
Definition

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:

  1. Multiplicer hvert input med dets vægt;
  2. Læg alle vægtede input sammen;
  3. Læg en bias til for at forskyde outputtet;
  4. Send resultatet gennem en sigmoid aktivering, som konverterer det til intervallet ((0,1)) for sandsynlighedsoutput.
Note
Bemærk

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å.

Note
Bemærk

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

Den 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 zz, hvis det er positivt, og 0 ellers:

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

question mark

Hvad er bias-termens rolle i en enkelt neuron?

Select the correct answer

question mark

Hvorfor initialiserer vi vægte med små tilfældige værdier i stedet for nuller?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1

Spørg AI

expand

Spørg AI

ChatGPT

Spørg om hvad som helst eller prøv et af de foreslåede spørgsmål for at starte vores chat

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?

bookImplementering af Enkelt Neuron

Stryg for at vise menuen

Note
Definition

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:

  1. Multiplicer hvert input med dets vægt;
  2. Læg alle vægtede input sammen;
  3. Læg en bias til for at forskyde outputtet;
  4. Send resultatet gennem en sigmoid aktivering, som konverterer det til intervallet ((0,1)) for sandsynlighedsoutput.
Note
Bemærk

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å.

Note
Bemærk

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

Den 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 zz, hvis det er positivt, og 0 ellers:

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

question mark

Hvad er bias-termens rolle i en enkelt neuron?

Select the correct answer

question mark

Hvorfor initialiserer vi vægte med små tilfældige værdier i stedet for nuller?

Select the correct answer

Var alt klart?

Hvordan kan vi forbedre det?

Tak for dine kommentarer!

Sektion 2. Kapitel 1
some-alt