Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Implementering av Enkeltnevron | Nevralt Nettverk fra Bunnen Av
Quizzes & Challenges
Quizzes
Challenges
/
Introduksjon til nevrale nettverk med Python

bookImplementering av Enkeltnevron

Note
Definisjon

En nevron er den grunnleggende beregningsenheten i et nevralt nettverk. Den behandler flere innganger og genererer en enkel utgang, noe som gjør det mulig for nettverket å lære og gjøre prediksjoner.

I dette eksemplet bygger vi et nevralt nettverk med én nevron for en binær klassifiseringsoppgave (for eksempel spamdeteksjon). Nevronen mottar numeriske egenskaper og gir en verdi mellom 0 og 1, som representerer sannsynligheten for at en e-post er spam (1) eller ikke-spam (0).

Steg-for-steg:

  1. Multipliser hver inngang med sin vekt;
  2. Summer alle vektede innganger;
  3. Legg til en bias for å forskyve utgangen;
  4. Send resultatet gjennom en sigmoid-aktivering, som konverterer det til området ((0,1)) for sannsynlighetsutgang.
Note
Merk

Bias til nevronet er også en trenbar parameter.

Nevron-klasse

Et nevron må lagre sine vekter og bias, noe som gjør en klasse til en naturlig måte å gruppere disse relaterte egenskapene på.

Note
Merk

Selv om denne klassen ikke vil være en del av den endelige implementasjonen av nevrale nettverk, illustrerer den effektivt sentrale prinsipper.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: tilfeldig initialiserte verdier (én per input);
  • bias: én enkelt tilfeldig verdi. Begge trekkes fra en uniform fordeling i ([-1, 1]) ved bruk av np.random.uniform() for å bryte symmetri.

Fremoverpropagering

Neuronens activate()-metode beregner den vektede summen og anvender sigmoid. Den vektede summen bruker skalarproduktet av vektene og inputene:

input_sum_with_bias = np.dot(self.weights, inputs) + self.bias

Deretter anvendes aktiveringsfunksjonen for å få neuronens endelige output.

Bruk av np.dot() unngår løkker og beregner hele den vektede summen på én linje. Sigmoid-funksjonen transformerer deretter denne råverdien til en sannsynlighet:

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...
    return output

Sigmoid-aktivering

Gitt råutgang (z), er sigmoid:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Den kartlegger ethvert tall til ((0,1)), noe som gjør den ideell for binær klassifisering, der nevronets utgang må representere en sannsynlighet.

Ved å bruke denne formelen kan sigmoid implementeres som en enkel funksjon i Python:

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

Formelen for ReLU-funksjonen er som følger, som i hovedsak setter utgangen lik zz hvis den er positiv og 0 ellers:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Hva er rollen til bias-leddet i et enkelt nevron?

2. Hvorfor initialiserer vi vekter med små tilfeldige verdier i stedet for null?

question mark

Hva er rollen til bias-leddet i et enkelt nevron?

Select the correct answer

question mark

Hvorfor initialiserer vi vekter med små tilfeldige verdier i stedet for null?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 1

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

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?

Awesome!

Completion rate improved to 4

bookImplementering av Enkeltnevron

Sveip for å vise menyen

Note
Definisjon

En nevron er den grunnleggende beregningsenheten i et nevralt nettverk. Den behandler flere innganger og genererer en enkel utgang, noe som gjør det mulig for nettverket å lære og gjøre prediksjoner.

I dette eksemplet bygger vi et nevralt nettverk med én nevron for en binær klassifiseringsoppgave (for eksempel spamdeteksjon). Nevronen mottar numeriske egenskaper og gir en verdi mellom 0 og 1, som representerer sannsynligheten for at en e-post er spam (1) eller ikke-spam (0).

Steg-for-steg:

  1. Multipliser hver inngang med sin vekt;
  2. Summer alle vektede innganger;
  3. Legg til en bias for å forskyve utgangen;
  4. Send resultatet gjennom en sigmoid-aktivering, som konverterer det til området ((0,1)) for sannsynlighetsutgang.
Note
Merk

Bias til nevronet er også en trenbar parameter.

Nevron-klasse

Et nevron må lagre sine vekter og bias, noe som gjør en klasse til en naturlig måte å gruppere disse relaterte egenskapene på.

Note
Merk

Selv om denne klassen ikke vil være en del av den endelige implementasjonen av nevrale nettverk, illustrerer den effektivt sentrale prinsipper.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: tilfeldig initialiserte verdier (én per input);
  • bias: én enkelt tilfeldig verdi. Begge trekkes fra en uniform fordeling i ([-1, 1]) ved bruk av np.random.uniform() for å bryte symmetri.

Fremoverpropagering

Neuronens activate()-metode beregner den vektede summen og anvender sigmoid. Den vektede summen bruker skalarproduktet av vektene og inputene:

input_sum_with_bias = np.dot(self.weights, inputs) + self.bias

Deretter anvendes aktiveringsfunksjonen for å få neuronens endelige output.

Bruk av np.dot() unngår løkker og beregner hele den vektede summen på én linje. Sigmoid-funksjonen transformerer deretter denne råverdien til en sannsynlighet:

def activate(self, inputs):
    input_sum_with_bias = ...
    output = ...
    return output

Sigmoid-aktivering

Gitt råutgang (z), er sigmoid:

σ(z)=11+ez\sigma(z) = \frac{1}{1 + e^{-z}}

Den kartlegger ethvert tall til ((0,1)), noe som gjør den ideell for binær klassifisering, der nevronets utgang må representere en sannsynlighet.

Ved å bruke denne formelen kan sigmoid implementeres som en enkel funksjon i Python:

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

Formelen for ReLU-funksjonen er som følger, som i hovedsak setter utgangen lik zz hvis den er positiv og 0 ellers:

ReLU(z)=max(0,z)ReLU(z) = max(0, z)
def relu(z):
    return np.maximum(0, z)

1. Hva er rollen til bias-leddet i et enkelt nevron?

2. Hvorfor initialiserer vi vekter med små tilfeldige verdier i stedet for null?

question mark

Hva er rollen til bias-leddet i et enkelt nevron?

Select the correct answer

question mark

Hvorfor initialiserer vi vekter med små tilfeldige verdier i stedet for null?

Select the correct answer

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 2. Kapittel 1
some-alt