Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Oppiskele Neuroverkon Toteutus | TensorFlow:n Perusteet
Johdanto TensorFlow'hun

Neuroverkon Toteutus

Perusnäkymä neuroverkosta

Olet nyt saavuttanut vaiheen, jossa sinulla on tarvittavat perustiedot TensorFlow'sta neuroverkkojen luomiseen itsenäisesti. Vaikka useimmat todellisen maailman neuroverkot ovat monimutkaisia ja rakennetaan yleensä korkean tason kirjastoilla kuten Keras, rakennamme tässä yksinkertaisen verkon käyttäen perustason TensorFlow-työkaluja. Tämä lähestymistapa tarjoaa käytännön kokemusta matalan tason tensorien käsittelystä, mikä auttaa ymmärtämään taustalla olevia prosesseja.

Aiemmilla kursseilla, kuten Johdatus neuroverkkoihin, saatat muistaa, kuinka paljon aikaa ja vaivaa vaadittiin jopa yksinkertaisen neuroverkon rakentamiseen, käsitellen jokaista neuronia erikseen.

single_neuron_calc

TensorFlow yksinkertaistaa tätä prosessia merkittävästi. Hyödyntämällä tensoreita voit kapseloida monimutkaiset laskutoimitukset, mikä vähentää monimutkaisen koodin tarvetta. Päätehtävämme on rakentaa johdonmukainen tensoritoimintojen ketju.

Tässä lyhyt kertaus vaiheista, joilla neuroverkon koulutusprosessi saadaan käyntiin:

Datan valmistelu ja mallin luominen

Neuroverkon koulutuksen alkuvaiheessa suoritetaan datan valmistelu, joka kattaa sekä syötteet että tulosteet, joista verkko oppii. Lisäksi määritellään mallin hyperparametrit – nämä ovat parametreja, jotka pysyvät muuttumattomina koko koulutusprosessin ajan. Painot alustetaan, yleensä normaalijakaumasta arvottuina, ja bias-termit asetetaan usein nollaksi.

Eteenpäinlevitys

Eteenpäinlevityksessä jokainen verkon kerros noudattaa tyypillisesti seuraavia vaiheita:

  1. Kerroksen syöte kerrotaan sen painoilla.
  2. Tulokseen lisätään bias.
  3. Tähän summaan sovelletaan aktivointifunktiota.
carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img

Tämän jälkeen häviö voidaan laskea.

Takaisinkytkentä

Seuraava vaihe on takaisinkytkentä, jossa painoja ja bias-arvoja säädetään niiden vaikutuksen perusteella häviöön. Tätä vaikutusta kuvaa gradientti, jonka TensorFlow'n Gradient Tape laskee automaattisesti. Päivitämme painot ja bias-arvot vähentämällä gradientin, kerrottuna oppimisnopeudella.

carousel-imgcarousel-imgcarousel-img

Koulutussilmukka

Neuroverkon tehokkaaseen kouluttamiseen koulutusvaiheet toistetaan useita kertoja samalla, kun mallin suorituskykyä seurataan. Ihanteellisesti häviön tulisi pienentyä epookkien myötä.

Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
single

single

Neuroverkon Toteutus

Pyyhkäise näyttääksesi valikon

Perusnäkymä neuroverkosta

Olet nyt saavuttanut vaiheen, jossa sinulla on tarvittavat perustiedot TensorFlow'sta neuroverkkojen luomiseen itsenäisesti. Vaikka useimmat todellisen maailman neuroverkot ovat monimutkaisia ja rakennetaan yleensä korkean tason kirjastoilla kuten Keras, rakennamme tässä yksinkertaisen verkon käyttäen perustason TensorFlow-työkaluja. Tämä lähestymistapa tarjoaa käytännön kokemusta matalan tason tensorien käsittelystä, mikä auttaa ymmärtämään taustalla olevia prosesseja.

Aiemmilla kursseilla, kuten Johdatus neuroverkkoihin, saatat muistaa, kuinka paljon aikaa ja vaivaa vaadittiin jopa yksinkertaisen neuroverkon rakentamiseen, käsitellen jokaista neuronia erikseen.

single_neuron_calc

TensorFlow yksinkertaistaa tätä prosessia merkittävästi. Hyödyntämällä tensoreita voit kapseloida monimutkaiset laskutoimitukset, mikä vähentää monimutkaisen koodin tarvetta. Päätehtävämme on rakentaa johdonmukainen tensoritoimintojen ketju.

Tässä lyhyt kertaus vaiheista, joilla neuroverkon koulutusprosessi saadaan käyntiin:

Datan valmistelu ja mallin luominen

Neuroverkon koulutuksen alkuvaiheessa suoritetaan datan valmistelu, joka kattaa sekä syötteet että tulosteet, joista verkko oppii. Lisäksi määritellään mallin hyperparametrit – nämä ovat parametreja, jotka pysyvät muuttumattomina koko koulutusprosessin ajan. Painot alustetaan, yleensä normaalijakaumasta arvottuina, ja bias-termit asetetaan usein nollaksi.

Eteenpäinlevitys

Eteenpäinlevityksessä jokainen verkon kerros noudattaa tyypillisesti seuraavia vaiheita:

  1. Kerroksen syöte kerrotaan sen painoilla.
  2. Tulokseen lisätään bias.
  3. Tähän summaan sovelletaan aktivointifunktiota.
carousel-imgcarousel-imgcarousel-imgcarousel-imgcarousel-img

Tämän jälkeen häviö voidaan laskea.

Takaisinkytkentä

Seuraava vaihe on takaisinkytkentä, jossa painoja ja bias-arvoja säädetään niiden vaikutuksen perusteella häviöön. Tätä vaikutusta kuvaa gradientti, jonka TensorFlow'n Gradient Tape laskee automaattisesti. Päivitämme painot ja bias-arvot vähentämällä gradientin, kerrottuna oppimisnopeudella.

carousel-imgcarousel-imgcarousel-img

Koulutussilmukka

Neuroverkon tehokkaaseen kouluttamiseen koulutusvaiheet toistetaan useita kertoja samalla, kun mallin suorituskykyä seurataan. Ihanteellisesti häviön tulisi pienentyä epookkien myötä.

Tehtävä

Pyyhkäise aloittaaksesi koodauksen

Luo neuroverkko, joka on suunniteltu ennustamaan XOR-operaation tuloksia. Verkossa tulee olla 2 syöteneuronia, piilokerros, jossa on 2 neuronia, sekä 1 ulostuloneuroni.

  1. Aloita alkuperäisten painojen ja biasien asettamisella. Painot tulee alustaa käyttäen normaalijakaumaa, ja biasit tulee alustaa kaikki nollaksi. Käytä hyperparametreja input_size, hidden_size ja output_size määrittääksesi tensorien oikeat muodot.
  2. Hyödynnä funktiokoristetta muuntaaksesi train_step()-funktion TensorFlow-grafiksi.
  3. Suorita eteenpäinlevitys sekä piilo- että ulostulokerroksen läpi. Käytä sigmoid-aktivointifunktiota.
  4. Määritä gradientit ymmärtääksesi, miten kukin paino ja bias vaikuttaa tappioon. Varmista, että gradientit lasketaan oikeassa järjestyksessä vastaamaan ulostulomuuttujien nimiä.
  5. Muokkaa painoja ja biaseja niiden vastaavien gradienttien perusteella. Ota huomioon learning_rate tässä päivitysprosessissa, jotta voit hallita kunkin päivityksen suuruutta.

Ratkaisu

Koodin kuvaus
expand arrow

Datan esikäsittely

  • X_data: tämä on XOR-funktion syötedata. Se on NumPy-taulukko, jonka muoto on (4, 2), ja se edustaa neljää mahdollista XOR-syötteiden yhdistelmää (0,0), (0,1), (1,0) ja (1,1);
  • Y_data: tämä on tavoitearvo jokaiselle syöteyhdistelmälle X_data:ssa. Se on myös NumPy-taulukko, mutta muodossa (4, 1), ja se edustaa XOR-tulosta jokaiselle syöteparille.

Verkon parametrit

  • input_size: syötekerroksen koko, asetettu arvoon 2, mikä vastaa kahta syötesolmua (XOR-funktion kaksi syötettä);
  • hidden_size: piilokerroksen koko, myös asetettu arvoon 2. Tämä valinta on osittain mielivaltainen, mutta riittää oppimaan XOR-funktion;
  • output_size: ulostulokerroksen koko, asetettu arvoon 1, mikä vastaa yhtä ulostulosolmua (XOR-operaation tulos);
  • learning_rate: oppimisnopeus optimointialgoritmille, joka määrittää, kuinka paljon painoja säädetään koulutuksen aikana.

Painot ja biasit

  • W1 ja b1: painot (W1) ja biasit (b1) yhteyksille syötekerroksesta piilokerrokseen. W1 on TensorFlow-muuttuja, joka alustetaan satunnaisarvoilla ja jonka muoto on (input_size, hidden_size), eli (2, 2). b1 on TensorFlow-muuttuja, joka alustetaan nollilla ja jonka muoto on (hidden_size), eli (2);
  • W2 ja b2: painot (W2) ja biasit (b2) yhteyksille piilokerroksesta ulostulokerrokseen. W2 alustetaan satunnaisarvoilla ja sen muoto on (hidden_size, output_size), eli (2, 1). b2 alustetaan nollilla ja sen muoto on (output_size), eli (1).

Koulutusfunktio

  • train_step(): tämä on varsinainen koulutusfunktio. Se käyttää tf.GradientTape()-toimintoa automaattiseen differentiaatioon. Eteenpäinlaskussa lasketaan piilokerroksen aktivoinnit (a1) ja ulostuloennusteet (Y_pred). Häviö lasketaan keskineliövirheenä Y_pred ja Y välillä. Funktio laskee gradientit ja päivittää painot ja biasit;
  • tf.sigmoid(): sigmoid-aktivointifunktio, joka muuntaa syötteen arvoksi välille 0 ja 1. Tätä käytetään sekä piilokerroksessa että ulostulokerroksessa.

Koulutussilmukka

  • Verkkoa koulutetaan 2500 epookin ajan. Jokaisessa epookissa kutsutaan train_step()-funktiota ja painot päivitetään. Häviö tulostetaan joka 500 epookin välein koulutuksen etenemisen seuraamiseksi.

Yhteenveto

Koska XOR-funktio on suhteellisen yksinkertainen tehtävä, tässä vaiheessa ei tarvita edistyneitä tekniikoita, kuten hyperparametrien säätöä, datan jakamista tai monimutkaisten dataputkien rakentamista. Tämä harjoitus on askel kohti monimutkaisempien neuroverkkojen rakentamista todellisiin sovelluksiin.

Näiden perusteiden hallinta on olennaista ennen siirtymistä edistyneisiin neuroverkkojen rakentamistekniikoihin tulevilla kursseilla, joissa käytetään Keras-kirjastoa ja tutkitaan tapoja parantaa mallin laatua TensorFlow'n monipuolisten ominaisuuksien avulla.

Switch to desktopVaihda työpöytään todellista harjoitusta vartenJatka siitä, missä olet käyttämällä jotakin alla olevista vaihtoehdoista
Oliko kaikki selvää?

Miten voimme parantaa sitä?

Kiitos palautteestasi!

Osio 3. Luku 4
single

single

Kysy tekoälyä

expand

Kysy tekoälyä

ChatGPT

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

some-alt