AI-For-Beginners/translations/fi/lessons/3-NeuralNetworks/04-OwnFramework
localizeflow[bot] 7a9b37f3b1 chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00
..
lab chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00
OwnFramework.ipynb Fallback snapshot commit due to git add failure 2026-01-15 12:40:29 +00:00
README.md chore(i18n): sync translations with latest source changes (chunk 1/1, 201 changes) 2026-01-30 02:07:34 +00:00

README.md

Johdanto neuroverkkoihin. Monikerroksinen perceptron

Edellisessä osiossa opit yksinkertaisimmasta neuroverkkonmallista yksikerroksisesta perceptronista, joka on lineaarinen kahden luokan luokittelumalli.

Tässä osiossa laajennamme tätä mallia joustavammaksi kehykseksi, joka mahdollistaa:

  • suorittaa moniluokkaluokittelua kahden luokan luokittelun lisäksi
  • ratkaista regressio-ongelmia luokittelun lisäksi
  • erottaa luokkia, jotka eivät ole lineaarisesti erotettavissa

Kehitämme myös oman modulaarisen Python-kehyksen, jonka avulla voimme rakentaa erilaisia neuroverkkorakenteita.

Ennakkokysely

Koneoppimisen formalisointi

Aloitetaan koneoppimisongelman formalisoinnista. Oletetaan, että meillä on harjoitusaineisto X ja sen luokat Y, ja meidän täytyy rakentaa malli f, joka tekee mahdollisimman tarkkoja ennusteita. Ennusteiden laatua mitataan tappiofunktiolla . Seuraavia tappiofunktioita käytetään usein:

  • Regressio-ongelmassa, kun meidän täytyy ennustaa luku, voimme käyttää absoluuttista virhettäi|f(x(i))-y(i)| tai neliöllistä virhettäi(f(x(i))-y(i))2
  • Luokittelussa käytämme 0-1 tappiofunktiota (joka on käytännössä sama kuin mallin tarkkuus) tai logistista tappiofunktiota.

Yksikerroksisessa perceptronissa funktio f määriteltiin lineaarisena funktiona f(x)=wx+b (tässä w on painomatriisi, x on syöteominaisuuksien vektori ja b on bias-vektori). Eri neuroverkkorakenteissa tämä funktio voi olla monimutkaisempi.

Luokittelussa on usein toivottavaa saada todennäköisyydet vastaaville luokille verkon ulostulona. Muuttaaksemme satunnaiset luvut todennäköisyyksiksi (esim. normalisoidaksemme ulostulon), käytämme usein softmax-funktiota σ, jolloin funktio f muuttuu muotoon f(x)=σ(wx+b).

Yllä olevassa f-määritelmässä w ja b kutsutaan parametreiksi θ=⟨w,b⟩. Kun aineisto ⟨X,Y⟩ on annettu, voimme laskea kokonaisvirheen koko aineistolle parametrien θ funktiona.

Neuroverkon koulutuksen tavoite on minimoida virhe muuttamalla parametreja θ

Gradienttimenetelmä optimointiin

On olemassa tunnettu optimointimenetelmä nimeltä gradienttimenetelmä. Ideana on, että voimme laskea derivaatan (moniulotteisessa tapauksessa gradientin) tappiofunktion suhteen parametreihin ja muuttaa parametreja siten, että virhe pienenee. Tämä voidaan formalisoida seuraavasti:

  • Alusta parametrit satunnaisilla arvoilla w(0), b(0)
  • Toista seuraava vaihe monta kertaa:
    • w(i+1) = w(i)-η∂ℒ/∂w
    • b(i+1) = b(i)-η∂ℒ/∂b

Koulutuksen aikana optimointivaiheet lasketaan yleensä koko aineistoa käyttäen (muista, että tappio lasketaan summana kaikkien harjoitusnäytteiden läpi). Käytännössä otamme kuitenkin pieniä osia aineistosta, joita kutsutaan minibatcheiksi, ja laskemme gradientit aineiston osajoukon perusteella. Koska osajoukko valitaan satunnaisesti joka kerta, menetelmää kutsutaan stokastiseksi gradienttimenetelmäksi (SGD).

Monikerroksiset perceptronit ja takaisinkuljetus

Yksikerroksinen verkko, kuten olemme nähneet, pystyy luokittelemaan lineaarisesti erotettavia luokkia. Rikkaamman mallin rakentamiseksi voimme yhdistää useita verkon kerroksia. Matemaattisesti tämä tarkoittaisi, että funktio f olisi monimutkaisempi ja laskettaisiin useassa vaiheessa:

  • z1=w1x+b1
  • z2=w2α(z1)+b2
  • f = σ(z2)

Tässä α on epälineaarinen aktivointifunktio, σ on softmax-funktio, ja parametrit ovat θ=<w1,b1,w2,b2>.

Gradienttimenetelmä pysyy samana, mutta gradienttien laskeminen on monimutkaisempaa. Ketjulaskusäännön avulla voimme laskea derivaatat seuraavasti:

  • ∂ℒ/∂w2 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂w2)
  • ∂ℒ/∂w1 = (∂ℒ/∂σ)(∂σ/∂z2)(∂z2/∂α)(∂α/∂z1)(∂z1/∂w1)

Ketjulaskusääntöä käytetään tappiofunktion derivaattojen laskemiseen parametrien suhteen.

Huomaa, että kaikkien näiden lausekkeiden vasemmanpuoleinen osa on sama, ja näin voimme tehokkaasti laskea derivaatat aloittaen tappiofunktiosta ja kulkemalla "taaksepäin" laskentakaavion läpi. Siksi monikerroksisen perceptronin koulutusmenetelmää kutsutaan takaisinkuljetukseksi tai 'backpropiksi'.

laskentakaavio

TODO: kuvan lähde

Käymme takaisinkuljetuksen paljon yksityiskohtaisemmin läpi esimerkkimuistikirjassamme.

Yhteenveto

Tässä oppitunnissa rakensimme oman neuroverkkokirjaston ja käytimme sitä yksinkertaiseen kaksiulotteiseen luokittelutehtävään.

🚀 Haaste

Mukana olevassa muistikirjassa toteutat oman kehyksen monikerroksisten perceptronien rakentamiseen ja kouluttamiseen. Näet yksityiskohtaisesti, miten modernit neuroverkot toimivat.

Siirry OwnFramework -muistikirjaan ja käy se läpi.

Jälkikysely

Kertaus ja itseopiskelu

Takaisinkuljetus on yleinen algoritmi tekoälyssä ja koneoppimisessa, ja sitä kannattaa tutkia tarkemmin.

Tehtävä

Tässä laboratoriossa sinun tulee käyttää tämän oppitunnin aikana rakentamaasi kehystä MNIST-käsinkirjoitettujen numeroiden luokitteluun.