Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Implementering av Enskild Neuron | Neuronnätverk Från Grunden
Introduktion till neurala nätverk

bookImplementering av Enskild Neuron

Note
Definition

En neuron är den grundläggande beräkningsenheten i ett neuralt nätverk. Den bearbetar flera indata och genererar ett enda utdata, vilket möjliggör för nätverket att lära sig och göra förutsägelser.

I detta exempel är målet att bygga ett neuralt nätverk med en enda neuron. Det ska användas för en binär klassificeringsuppgift, såsom skräppostdetektion, där 0 motsvarar ett ham (icke-skräppost) e-postmeddelande och 1 motsvarar ett skräppostmeddelande.

Neuronen tar emot numeriska egenskaper som extraherats från e-postmeddelanden som indata och producerar ett utdata mellan 0 och 1, vilket representerar sannolikheten att ett givet e-postmeddelande är skräppost.

Så här går det till steg för steg:

  1. Varje indata multipliceras med en motsvarande vikt; vikterna är lärbara parametrar som avgör betydelsen av varje indata;
  2. Alla viktade indata summeras;
  3. En bias-term läggs till summan av indata, vilket gör det möjligt för neuronen att förskjuta sitt utdata och ger modellen ytterligare flexibilitet;
  4. Summan skickas genom en aktiveringsfunktion. Eftersom en enda neuron direkt producerar det slutliga utdata (en sannolikhet), används sigmoidfunktionen för att komprimera värden till intervallet (0,1)(0, 1).
Note
Notering

Bias för neuronen är också en träningsbar parameter.

Neuronklass

En neuron behöver lagra sina vikter och bias, vilket gör en klass till ett naturligt sätt att gruppera dessa relaterade egenskaper.

Note
Notering

Även om denna klass inte kommer att ingå i den slutliga implementeringen av neurala nätverk, illustrerar den effektivt viktiga principer.

class Neuron:
    def __init__(self, n_inputs):  
        self.weights = ...
        self.bias = ...
  • weights: en lista med slumpmässigt initierade värden som avgör hur viktig varje indata (n_inputs är antalet indata) är för neuronen;
  • bias: ett slumpmässigt initierat värde som hjälper neuronen att fatta flexibla beslut.

Vikter och bias ska slumpmässigt initieras med små värden mellan -1 och 1, dragna från en likformig fördelning, för att bryta symmetri och säkerställa att olika neuroner lär sig olika egenskaper.

Sammanfattningsvis tillhandahåller NumPy funktionen random.uniform() för att generera ett slumpmässigt tal eller en array (genom att ange argumentet size) av slumpmässiga tal från en likformig fördelning inom intervallet [low, high).

import numpy as np

np.random.uniform(low, high, size=...)

Framåtriktad Propagering

Neuron-klassen bör inkludera en activate()-metod som beräknar den viktade summan av indata och sedan applicerar aktiveringsfunktionen (sigmoidfunktionen i detta fall).

När två vektorer av samma längd — weights och inputs — finns tillgängliga, kan den viktade summan effektivt beräknas med hjälp av skalärprodukten av dessa vektorer.

Detta gör det möjligt att beräkna den viktade summan i en enda kodrad med funktionen numpy.dot(), vilket eliminerar behovet av en loop. Bias kan sedan läggas direkt till resultatet för att få input_sum_with_bias. Utdata beräknas sedan genom att applicera sigmoid-aktiveringsfunktionen:

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

    return output

Aktiveringsfunktioner

Formeln för sigmoid-funktionen är följande, där zz representerar den viktade summan av indata med bias tillagd (råutgångsvärde) för denna specifika neuron:

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

Med denna formel kan sigmoid implementeras som en enkel funktion i Python:

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

Formeln för ReLU-funktionen är följande, vilket i princip sätter utgången lika med zz om den är positiv och 0 annars:

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

1. Vad är bias-termens roll i en enskild neuron?

2. Varför initierar vi vikter med små slumpmässiga värden istället för nollor?

question mark

Vad är bias-termens roll i en enskild neuron?

Select the correct answer

question mark

Varför initierar vi vikter med små slumpmässiga värden istället för nollor?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Suggested prompts:

Can you show me how to complete the Neuron class with the random initialization?

How do I use the activate method with some example inputs?

What is the difference between using sigmoid and ReLU in this context?

Awesome!

Completion rate improved to 4

bookImplementering av Enskild Neuron

Svep för att visa menyn

Note
Definition

En neuron är den grundläggande beräkningsenheten i ett neuralt nätverk. Den bearbetar flera indata och genererar ett enda utdata, vilket möjliggör för nätverket att lära sig och göra förutsägelser.

I detta exempel är målet att bygga ett neuralt nätverk med en enda neuron. Det ska användas för en binär klassificeringsuppgift, såsom skräppostdetektion, där 0 motsvarar ett ham (icke-skräppost) e-postmeddelande och 1 motsvarar ett skräppostmeddelande.

Neuronen tar emot numeriska egenskaper som extraherats från e-postmeddelanden som indata och producerar ett utdata mellan 0 och 1, vilket representerar sannolikheten att ett givet e-postmeddelande är skräppost.

Så här går det till steg för steg:

  1. Varje indata multipliceras med en motsvarande vikt; vikterna är lärbara parametrar som avgör betydelsen av varje indata;
  2. Alla viktade indata summeras;
  3. En bias-term läggs till summan av indata, vilket gör det möjligt för neuronen att förskjuta sitt utdata och ger modellen ytterligare flexibilitet;
  4. Summan skickas genom en aktiveringsfunktion. Eftersom en enda neuron direkt producerar det slutliga utdata (en sannolikhet), används sigmoidfunktionen för att komprimera värden till intervallet (0,1)(0, 1).
Note
Notering

Bias för neuronen är också en träningsbar parameter.

Neuronklass

En neuron behöver lagra sina vikter och bias, vilket gör en klass till ett naturligt sätt att gruppera dessa relaterade egenskaper.

Note
Notering

Även om denna klass inte kommer att ingå i den slutliga implementeringen av neurala nätverk, illustrerar den effektivt viktiga principer.

class Neuron:
    def __init__(self, n_inputs):  
        self.weights = ...
        self.bias = ...
  • weights: en lista med slumpmässigt initierade värden som avgör hur viktig varje indata (n_inputs är antalet indata) är för neuronen;
  • bias: ett slumpmässigt initierat värde som hjälper neuronen att fatta flexibla beslut.

Vikter och bias ska slumpmässigt initieras med små värden mellan -1 och 1, dragna från en likformig fördelning, för att bryta symmetri och säkerställa att olika neuroner lär sig olika egenskaper.

Sammanfattningsvis tillhandahåller NumPy funktionen random.uniform() för att generera ett slumpmässigt tal eller en array (genom att ange argumentet size) av slumpmässiga tal från en likformig fördelning inom intervallet [low, high).

import numpy as np

np.random.uniform(low, high, size=...)

Framåtriktad Propagering

Neuron-klassen bör inkludera en activate()-metod som beräknar den viktade summan av indata och sedan applicerar aktiveringsfunktionen (sigmoidfunktionen i detta fall).

När två vektorer av samma längd — weights och inputs — finns tillgängliga, kan den viktade summan effektivt beräknas med hjälp av skalärprodukten av dessa vektorer.

Detta gör det möjligt att beräkna den viktade summan i en enda kodrad med funktionen numpy.dot(), vilket eliminerar behovet av en loop. Bias kan sedan läggas direkt till resultatet för att få input_sum_with_bias. Utdata beräknas sedan genom att applicera sigmoid-aktiveringsfunktionen:

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

    return output

Aktiveringsfunktioner

Formeln för sigmoid-funktionen är följande, där zz representerar den viktade summan av indata med bias tillagd (råutgångsvärde) för denna specifika neuron:

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

Med denna formel kan sigmoid implementeras som en enkel funktion i Python:

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

Formeln för ReLU-funktionen är följande, vilket i princip sätter utgången lika med zz om den är positiv och 0 annars:

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

1. Vad är bias-termens roll i en enskild neuron?

2. Varför initierar vi vikter med små slumpmässiga värden istället för nollor?

question mark

Vad är bias-termens roll i en enskild neuron?

Select the correct answer

question mark

Varför initierar vi vikter med små slumpmässiga värden istället för nollor?

Select the correct answer

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 2. Kapitel 1
some-alt