Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Yksittäisen Neuronin Toteutus | Neuroverkon Rakentaminen Alusta Alkaen
Quizzes & Challenges
Quizzes
Challenges
/
Johdatus Neuroverkkoihin Pythonilla

bookYksittäisen Neuronin Toteutus

Note
Määritelmä

Neuroni on neuroverkon peruslaskentayksikkö. Se käsittelee useita syötteitä ja tuottaa yhden ulostulon, mahdollistaen verkon oppimisen ja ennusteiden tekemisen.

Tässä esimerkissä rakennetaan neuroverkko, jossa on yksi neuroni binaarista luokittelua varten (esim. roskapostin tunnistus). Neuroni vastaanottaa numeerisia piirteitä ja tuottaa arvon välillä 0 ja 1, mikä kuvaa todennäköisyyttä, että sähköposti on roskapostia (1) tai normaalia postia (0).

Vaiheittain:

  1. Kerro jokainen syöte sen painolla;
  2. Laske kaikkien painotettujen syötteiden summa;
  3. Lisää bias tuloksen siirtämiseksi;
  4. Syötä tulos sigmoidin aktivointofunktion läpi, joka muuntaa sen ((0,1))-välille todennäköisyysulostuloa varten.
Note
Huomio

Neuronin bias on myös opetettava parametri.

Neuroni-luokka

Neuronin täytyy tallentaa painot ja bias, joten luokka on luonteva tapa ryhmitellä nämä ominaisuudet yhteen.

Note
Huomio

Vaikka tämä luokka ei kuulu lopulliseen neuroverkkototeutukseen, se havainnollistaa tehokkaasti keskeisiä periaatteita.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: satunnaisesti alustetut arvot (yksi kutakin syötettä kohden);
  • bias: yksi satunnainen arvo. Molemmat arvot arvotaan tasaisesta jakaumasta välillä ([-1, 1]) käyttäen np.random.uniform()-funktiota symmetrian rikkomiseksi.

Eteenpäinlevitys

Neuronin activate()-metodi laskee painotetun summan ja käyttää sigmoidia. Painotettu summa lasketaan pistetulolla painojen ja syötteiden välillä:

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

Tämän jälkeen aktivaatiotoiminto antaa neuronin lopullisen ulostulon.

np.dot()-funktion käyttö välttää silmukat ja laskee koko painotetun summan yhdellä rivillä. Sigmoidifunktio muuntaa tämän raaka-arvon todennäköisyydeksi:

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

Sigmoid-aktivointi

Annetulla raaka-arvolla (z) sigmoid-funktio on:

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

Se muuntaa minkä tahansa luvun välille ((0,1)), mikä tekee siitä ihanteellisen binääriluokitteluun, jossa neuronin ulostulon tulee edustaa todennäköisyyttä.

Tämän kaavan avulla sigmoid voidaan toteuttaa yksinkertaisena funktiona Pythonissa:

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

Kaava ReLU-funktiolle on seuraava; se asettaa ulostulon arvoksi zz, jos se on positiivinen, ja 0 muuten:

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

1. Mikä on bias-termen rooli yksittäisessä neuronissa?

2. Miksi painot alustetaan pienillä satunnaisilla arvoilla nollien sijaan?

question mark

Mikä on bias-termen rooli yksittäisessä neuronissa?

Select the correct answer

question mark

Miksi painot alustetaan pienillä satunnaisilla arvoilla nollien sijaan?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme

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?

bookYksittäisen Neuronin Toteutus

Pyyhkäise näyttääksesi valikon

Note
Määritelmä

Neuroni on neuroverkon peruslaskentayksikkö. Se käsittelee useita syötteitä ja tuottaa yhden ulostulon, mahdollistaen verkon oppimisen ja ennusteiden tekemisen.

Tässä esimerkissä rakennetaan neuroverkko, jossa on yksi neuroni binaarista luokittelua varten (esim. roskapostin tunnistus). Neuroni vastaanottaa numeerisia piirteitä ja tuottaa arvon välillä 0 ja 1, mikä kuvaa todennäköisyyttä, että sähköposti on roskapostia (1) tai normaalia postia (0).

Vaiheittain:

  1. Kerro jokainen syöte sen painolla;
  2. Laske kaikkien painotettujen syötteiden summa;
  3. Lisää bias tuloksen siirtämiseksi;
  4. Syötä tulos sigmoidin aktivointofunktion läpi, joka muuntaa sen ((0,1))-välille todennäköisyysulostuloa varten.
Note
Huomio

Neuronin bias on myös opetettava parametri.

Neuroni-luokka

Neuronin täytyy tallentaa painot ja bias, joten luokka on luonteva tapa ryhmitellä nämä ominaisuudet yhteen.

Note
Huomio

Vaikka tämä luokka ei kuulu lopulliseen neuroverkkototeutukseen, se havainnollistaa tehokkaasti keskeisiä periaatteita.

class Neuron:
    def __init__(self, n_inputs):
        self.weights = ...
        self.bias = ...
  • weights: satunnaisesti alustetut arvot (yksi kutakin syötettä kohden);
  • bias: yksi satunnainen arvo. Molemmat arvot arvotaan tasaisesta jakaumasta välillä ([-1, 1]) käyttäen np.random.uniform()-funktiota symmetrian rikkomiseksi.

Eteenpäinlevitys

Neuronin activate()-metodi laskee painotetun summan ja käyttää sigmoidia. Painotettu summa lasketaan pistetulolla painojen ja syötteiden välillä:

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

Tämän jälkeen aktivaatiotoiminto antaa neuronin lopullisen ulostulon.

np.dot()-funktion käyttö välttää silmukat ja laskee koko painotetun summan yhdellä rivillä. Sigmoidifunktio muuntaa tämän raaka-arvon todennäköisyydeksi:

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

Sigmoid-aktivointi

Annetulla raaka-arvolla (z) sigmoid-funktio on:

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

Se muuntaa minkä tahansa luvun välille ((0,1)), mikä tekee siitä ihanteellisen binääriluokitteluun, jossa neuronin ulostulon tulee edustaa todennäköisyyttä.

Tämän kaavan avulla sigmoid voidaan toteuttaa yksinkertaisena funktiona Pythonissa:

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

Kaava ReLU-funktiolle on seuraava; se asettaa ulostulon arvoksi zz, jos se on positiivinen, ja 0 muuten:

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

1. Mikä on bias-termen rooli yksittäisessä neuronissa?

2. Miksi painot alustetaan pienillä satunnaisilla arvoilla nollien sijaan?

question mark

Mikä on bias-termen rooli yksittäisessä neuronissa?

Select the correct answer

question mark

Miksi painot alustetaan pienillä satunnaisilla arvoilla nollien sijaan?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 1
some-alt