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.
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:
- Kerroksen syöte kerrotaan sen painoilla.
- Tulokseen lisätään bias.
- Tähän summaan sovelletaan aktivointifunktiota.





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.



Koulutussilmukka
Neuroverkon tehokkaaseen kouluttamiseen koulutusvaiheet toistetaan useita kertoja samalla, kun mallin suorituskykyä seurataan. Ihanteellisesti häviön tulisi pienentyä epookkien myötä.
Kiitos palautteestasi!
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.
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:
- Kerroksen syöte kerrotaan sen painoilla.
- Tulokseen lisätään bias.
- Tähän summaan sovelletaan aktivointifunktiota.





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.



Koulutussilmukka
Neuroverkon tehokkaaseen kouluttamiseen koulutusvaiheet toistetaan useita kertoja samalla, kun mallin suorituskykyä seurataan. Ihanteellisesti häviön tulisi pienentyä epookkien myötä.
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.
- 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_sizejaoutput_sizemäärittääksesi tensorien oikeat muodot. - Hyödynnä funktiokoristetta muuntaaksesi
train_step()-funktion TensorFlow-grafiksi. - Suorita eteenpäinlevitys sekä piilo- että ulostulokerroksen läpi. Käytä sigmoid-aktivointifunktiota.
- Määritä gradientit ymmärtääksesi, miten kukin paino ja bias vaikuttaa tappioon. Varmista, että gradientit lasketaan oikeassa järjestyksessä vastaamaan ulostulomuuttujien nimiä.
- Muokkaa painoja ja biaseja niiden vastaavien gradienttien perusteella. Ota huomioon
learning_ratetässä päivitysprosessissa, jotta voit hallita kunkin päivityksen suuruutta.
Ratkaisu
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älleX_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
W1jab1: painot (W1) ja biasit (b1) yhteyksille syötekerroksesta piilokerrokseen.W1on TensorFlow-muuttuja, joka alustetaan satunnaisarvoilla ja jonka muoto on(input_size, hidden_size), eli(2, 2).b1on TensorFlow-muuttuja, joka alustetaan nollilla ja jonka muoto on(hidden_size), eli(2);W2jab2: painot (W2) ja biasit (b2) yhteyksille piilokerroksesta ulostulokerrokseen.W2alustetaan satunnaisarvoilla ja sen muoto on(hidden_size, output_size), eli(2, 1).b2alustetaan 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_predjaYvälillä. Funktio laskee gradientit ja päivittää painot ja biasit;tf.sigmoid(): sigmoid-aktivointifunktio, joka muuntaa syötteen arvoksi välille0ja1. Tätä käytetään sekä piilokerroksessa että ulostulokerroksessa.
Koulutussilmukka
- Verkkoa koulutetaan
2500epookin ajan. Jokaisessa epookissa kutsutaantrain_step()-funktiota ja painot päivitetään. Häviö tulostetaan joka500epookin 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.
Kiitos palautteestasi!
single
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme