Implementering av Enkeltnevron
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:
- Multipliser hver inngang med sin vekt;
- Summer alle vektede innganger;
- Legg til en bias for å forskyve utgangen;
- Send resultatet gjennom en sigmoid-aktivering, som konverterer det til området ((0,1)) for sannsynlighetsutgang.
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å.
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 avnp.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)=1+e−z1Den 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 z hvis den er positiv og 0 ellers:
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?
Takk for tilbakemeldingene dine!
Spør AI
Spør AI
Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår
Fantastisk!
Completion rate forbedret til 4
Implementering av Enkeltnevron
Sveip for å vise menyen
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:
- Multipliser hver inngang med sin vekt;
- Summer alle vektede innganger;
- Legg til en bias for å forskyve utgangen;
- Send resultatet gjennom en sigmoid-aktivering, som konverterer det til området ((0,1)) for sannsynlighetsutgang.
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å.
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 avnp.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)=1+e−z1Den 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 z hvis den er positiv og 0 ellers:
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?
Takk for tilbakemeldingene dine!