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
Introduksjon til nevrale nettverk med Python

Implementering 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 (f.eks. 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 ham (0).

Trinnvis:

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

Bias til nevronet er også en trenbar parameter.

Nevronklasse

En 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 viktige prinsipper.

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

Fremoverpropagering

Neuronets activate()-metode beregner vektet sum og anvender sigmoid. Den vektede summen bruker prikkproduktet av vektene og inputene:

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

Deretter anvendes aktiveringsfunksjonen for å få neuronets endelige output.

Prikkprodukt

Bruk av np.dot() unngår løkker og beregner hele den vektede summen på én linje. Sigmoid-funksjonen omformer 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-termen i et enkelt nevron?

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

question mark

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

Velg det helt riktige svaret

question mark

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

Velg det helt riktige svaret

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

Seksjon 2. Kapittel 1
some-alt