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
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
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!