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
Quizzes & Challenges
Quizzes
Challenges
/
Introduktion till neurala nätverk med Python

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 bygger vi ett neuralt nätverk med en neuron för en binär klassificeringsuppgift (t.ex. skräppostdetektion). Neuronen tar emot numeriska egenskaper och ger ett värde mellan 0 och 1, vilket representerar sannolikheten att ett e-postmeddelande är skräppost (1) eller legitimt (0).

Steg-för-steg:

  1. Multiplicera varje indata med dess vikt;
  2. Summera alla viktade indata;
  3. Lägg till en bias för att justera utdata;
  4. Skicka resultatet genom en sigmoid-aktivering, som omvandlar det till intervallet ((0,1)) för sannolikhetsutdata.
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: slumpmässigt initialiserade värden (ett per indata);
  • bias: ett enskilt slumpmässigt värde. Båda dras från en uniform fördelning i ([-1, 1]) med hjälp av np.random.uniform() för att bryta symmetri.

Framåtriktad propagiering

Neuronens activate()-metod beräknar den viktade summan och applicerar sigmoid. Den viktade summan använder skalärprodukten av vikterna och indata:

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

Därefter appliceras aktiveringsfunktionen för att erhålla neuronens slutgiltiga utdata.

Genom att använda np.dot() undviks loopar och hela den viktade summan beräknas på en rad. Sigmoidfunktionen omvandlar sedan detta råvärde till en sannolikhet:

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

Sigmoidaktivering

Givet råutdata (z), är sigmoid:

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

Den avbildar vilket tal som helst till ((0,1)), vilket gör den idealisk för binär klassificering, där neuronens utdata måste representera en sannolikhet.

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 utdata lika med zz om det är positivt 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 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

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 bygger vi ett neuralt nätverk med en neuron för en binär klassificeringsuppgift (t.ex. skräppostdetektion). Neuronen tar emot numeriska egenskaper och ger ett värde mellan 0 och 1, vilket representerar sannolikheten att ett e-postmeddelande är skräppost (1) eller legitimt (0).

Steg-för-steg:

  1. Multiplicera varje indata med dess vikt;
  2. Summera alla viktade indata;
  3. Lägg till en bias för att justera utdata;
  4. Skicka resultatet genom en sigmoid-aktivering, som omvandlar det till intervallet ((0,1)) för sannolikhetsutdata.
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: slumpmässigt initialiserade värden (ett per indata);
  • bias: ett enskilt slumpmässigt värde. Båda dras från en uniform fördelning i ([-1, 1]) med hjälp av np.random.uniform() för att bryta symmetri.

Framåtriktad propagiering

Neuronens activate()-metod beräknar den viktade summan och applicerar sigmoid. Den viktade summan använder skalärprodukten av vikterna och indata:

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

Därefter appliceras aktiveringsfunktionen för att erhålla neuronens slutgiltiga utdata.

Genom att använda np.dot() undviks loopar och hela den viktade summan beräknas på en rad. Sigmoidfunktionen omvandlar sedan detta råvärde till en sannolikhet:

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

Sigmoidaktivering

Givet råutdata (z), är sigmoid:

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

Den avbildar vilket tal som helst till ((0,1)), vilket gör den idealisk för binär klassificering, där neuronens utdata måste representera en sannolikhet.

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 utdata lika med zz om det är positivt 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