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
Practice
Projects
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

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