Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Perceptronikerrokset | Neuroverkon Rakentaminen Alusta Alkaen
Johdatus Neuroverkkoihin Pythonilla

bookPerceptronikerrokset

Perceptroni on yksinkertaisin neuroverkko—vain yksi neuroni. Monimutkaisempia tehtäviä varten käytetään monikerroksista perceptronia (MLP), joka sisältää yhden tai useamman piilokerroksen mahdollistaen verkon oppia monipuolisempia rakenteita.

MLP koostuu seuraavista:

  1. Syötekerros — vastaanottaa datan;
  2. Piilokerrokset — tunnistavat rakenteita;
  3. Ulostulokerros — tuottaa ennusteet.

Jokaisessa kerroksessa on useita neuroneita; yhden kerroksen ulostulo toimii seuraavan kerroksen syötteenä.

Kerroksen painot ja bias-termit

Aiemmin neuroni tallensi painonsa vektorina ja biasin skalaarina. Kerroksessa on kuitenkin useita neuroneita, joten painot muodostavat matriisin, jossa jokainen rivi sisältää yhden neuronin painot. Kaikkien neuronien bias-termit muodostavat vektorin.

Kerros, jossa on 3 syötettä ja 2 neuronia:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Tässä WijW_{ij} on paino jj:nnen syötteen ja ii:nnen neuronin välillä; bib_i on neuronin ii bias.

Eteenpäinlevitys

Eteenpäinlevityksessä jokainen neuroni aktivoituu laskemalla painotettu summa, lisäämällä bias ja soveltamalla aktivointifunktiota.

Aiemmin yksittäinen neuroni käytti:

[ z = W \cdot x + b ]

Nyt, koska jokainen (W):n rivi on yhden neuronin painovektori, painomatriisin ja syötevektorin matriisikertolasku laskee automaattisesti kaikkien neuronien painotetut summat kerralla.

Lisätäksemme biasit kunkin neuronin ulostuloihin, tulee lisätä myös bias-vektori:

Lopuksi tulokseen sovelletaan aktivointifunktio — sigmoid tai ReLU tässä tapauksessa. Kerroksen eteenpäinlevityksen kaava on seuraava:

a=activation(Wx+b)a = activation(Wx + b)

missä aa on neuronien aktivaatioiden (ulostulojen) vektori.

Layer-luokka

Koska MLP:t rakentuvat kerroksista, määritellään erillinen Layer-luokka. Sen attribuutit:

  • inputs: syötevektori (n_inputs alkiota);
  • outputs: neuronien raakaulostulot (n_neurons alkiota);
  • weights: painomatriisi;
  • biases: bias-vektori;
  • activation_function: kerroksessa käytetty aktivointifunktio.

Painot ja biasit alustetaan satunnaisarvoilla tasaisesta jakaumasta välillä ([-1, 1]). inputs ja outputs alustetaan nollilla täytetyiksi NumPy-taulukoiksi, jotta muoto pysyy yhtenäisenä myöhempää takaisinkuljetusta varten.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Huomio

inputs- ja outputs-muuttujien alustaminen nollilla estää muotovirheet ja varmistaa, että kerrokset pysyvät yhdenmukaisina sekä eteen- että taaksepäin suuntautuvissa vaiheissa.

Forward-metodi

Kerroksen eteenpäin suuntautuva laskenta tuottaa raakatulokset ja soveltaa aktivointia:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Syötteen muotoilu pylväsvektoriksi varmistaa, että se kerrotaan oikein painomatriisin kanssa ja vastaa verkon odotettuja mittoja.

Note
Huomio

Halutessasi voin myös tiivistää tätä lisää, tuottaa kaavion kerroksen rakenteesta tai luoda koko toimivan Layer-luokan koodin.

1. Mikä tekee monikerroksisesta perceptronista (MLP) tehokkaamman kuin yksinkertaisesta perceptronista?

2. Miksi tämä koodi on tarpeen suorittaa ennen kuin inputs kerrotaan painomatriisilla?

question mark

Mikä tekee monikerroksisesta perceptronista (MLP) tehokkaamman kuin yksinkertaisesta perceptronista?

Select the correct answer

question mark

Miksi tämä koodi on tarpeen suorittaa ennen kuin inputs kerrotaan painomatriisilla?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

bookPerceptronikerrokset

Pyyhkäise näyttääksesi valikon

Perceptroni on yksinkertaisin neuroverkko—vain yksi neuroni. Monimutkaisempia tehtäviä varten käytetään monikerroksista perceptronia (MLP), joka sisältää yhden tai useamman piilokerroksen mahdollistaen verkon oppia monipuolisempia rakenteita.

MLP koostuu seuraavista:

  1. Syötekerros — vastaanottaa datan;
  2. Piilokerrokset — tunnistavat rakenteita;
  3. Ulostulokerros — tuottaa ennusteet.

Jokaisessa kerroksessa on useita neuroneita; yhden kerroksen ulostulo toimii seuraavan kerroksen syötteenä.

Kerroksen painot ja bias-termit

Aiemmin neuroni tallensi painonsa vektorina ja biasin skalaarina. Kerroksessa on kuitenkin useita neuroneita, joten painot muodostavat matriisin, jossa jokainen rivi sisältää yhden neuronin painot. Kaikkien neuronien bias-termit muodostavat vektorin.

Kerros, jossa on 3 syötettä ja 2 neuronia:

W=[W11W12W13W21W22W23],b=[b1b2]W=\begin{bmatrix} W_{11} & W_{12} & W_{13} \\ W_{21} & W_{22} & W_{23} \end{bmatrix}, \qquad b=\begin{bmatrix} b_1 \\ b_2 \end{bmatrix}

Tässä WijW_{ij} on paino jj:nnen syötteen ja ii:nnen neuronin välillä; bib_i on neuronin ii bias.

Eteenpäinlevitys

Eteenpäinlevityksessä jokainen neuroni aktivoituu laskemalla painotettu summa, lisäämällä bias ja soveltamalla aktivointifunktiota.

Aiemmin yksittäinen neuroni käytti:

[ z = W \cdot x + b ]

Nyt, koska jokainen (W):n rivi on yhden neuronin painovektori, painomatriisin ja syötevektorin matriisikertolasku laskee automaattisesti kaikkien neuronien painotetut summat kerralla.

Lisätäksemme biasit kunkin neuronin ulostuloihin, tulee lisätä myös bias-vektori:

Lopuksi tulokseen sovelletaan aktivointifunktio — sigmoid tai ReLU tässä tapauksessa. Kerroksen eteenpäinlevityksen kaava on seuraava:

a=activation(Wx+b)a = activation(Wx + b)

missä aa on neuronien aktivaatioiden (ulostulojen) vektori.

Layer-luokka

Koska MLP:t rakentuvat kerroksista, määritellään erillinen Layer-luokka. Sen attribuutit:

  • inputs: syötevektori (n_inputs alkiota);
  • outputs: neuronien raakaulostulot (n_neurons alkiota);
  • weights: painomatriisi;
  • biases: bias-vektori;
  • activation_function: kerroksessa käytetty aktivointifunktio.

Painot ja biasit alustetaan satunnaisarvoilla tasaisesta jakaumasta välillä ([-1, 1]). inputs ja outputs alustetaan nollilla täytetyiksi NumPy-taulukoiksi, jotta muoto pysyy yhtenäisenä myöhempää takaisinkuljetusta varten.

class Layer:
    def __init__(self, n_inputs, n_neurons, activation_function):
        self.inputs = np.zeros((n_inputs, 1))
        self.outputs = np.zeros((n_neurons, 1))
        self.weights = ...
        self.biases = ...
        self.activation = activation_function
Note
Huomio

inputs- ja outputs-muuttujien alustaminen nollilla estää muotovirheet ja varmistaa, että kerrokset pysyvät yhdenmukaisina sekä eteen- että taaksepäin suuntautuvissa vaiheissa.

Forward-metodi

Kerroksen eteenpäin suuntautuva laskenta tuottaa raakatulokset ja soveltaa aktivointia:

def forward(self, inputs):
    self.inputs = np.array(inputs).reshape(-1, 1)
    # Raw outputs: weighted sum + bias
    self.outputs = ...
    # Apply activation
    return ...

Syötteen muotoilu pylväsvektoriksi varmistaa, että se kerrotaan oikein painomatriisin kanssa ja vastaa verkon odotettuja mittoja.

Note
Huomio

Halutessasi voin myös tiivistää tätä lisää, tuottaa kaavion kerroksen rakenteesta tai luoda koko toimivan Layer-luokan koodin.

1. Mikä tekee monikerroksisesta perceptronista (MLP) tehokkaamman kuin yksinkertaisesta perceptronista?

2. Miksi tämä koodi on tarpeen suorittaa ennen kuin inputs kerrotaan painomatriisilla?

question mark

Mikä tekee monikerroksisesta perceptronista (MLP) tehokkaamman kuin yksinkertaisesta perceptronista?

Select the correct answer

question mark

Miksi tämä koodi on tarpeen suorittaa ennen kuin inputs kerrotaan painomatriisilla?

Select the correct answer

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 2. Luku 3
some-alt