Neuroverkot: opittujen muunnosten ketju
Neuroverkko (neural network) soveltaa syötteeseen parametrisoitujen operaatioiden ketjua. Koulutus muuttaa parametreja niin, että lopputulos palvelee valittua tavoitetta. Kerros on laskennallinen rakennusosa, ei pienoiskokoinen ihmisen hermosolu.
Tavallinen kerros kertoo vektorin painomatriisilla, lisää vakiotermin ja soveltaa aktivaatiofunktiota. Jokainen tulos yhdistää tietoa useasta syötekomponentista. Myöhemmät kerrokset muuntavat näitä yhdistelmiä edelleen.
Miksi epälineaarisuutta tarvitaan
Jos jokainen kerros olisi vain affiininen muunnos, koko ketju voitaisiin yhdistää yhdeksi affiiniseksi muunnokseksi. Lisäkerrokset muuttaisivat parametrien esitystapaa mutta eivät esitettävien funktioiden luokkaa. Epälineaariset aktivaatiofunktiot rikkovat tämän rajoituksen.
Tässä NumPy-verkossa on yksi piilokerros. x sisältää syöterivit; w1 ja w2 kuvaavat syötteen piilokerroksen leveyteen ja siitä tulokseen. Vakiotermit lisätään jokaiselle riville. Funktio ottaa painot vastaan eikä kouluta niitä.
import numpy as np
def network(x, w1, b1, w2, b2):
hidden = np.maximum(x @ w1 + b1, 0)
return hidden @ w2 + b2
Pienikin verkko voi esittää riippuvuuden, jota yksi lineaarinen raja ei pysty erottamaan. Esimerkiksi kaksi sopivaa piiloyksikköä voi tunnistaa, onko täsmälleen toinen kahdesta binäärisestä syötteestä aktiivinen.
Sama periaate, eri kerrokset
Nykyiset kielimallit yhdistävät opittuja muunnoksia, attention-mekanismin, normalisointia ja jäännösyhteyksiä. Konvoluutioverkot käyttävät paikallisia suotimia uudelleen; takaisinkytketyt verkot kuljettavat tilaa askelten välillä. Rakenne määrää, millaiset laskennat on helppo esittää ja suorittaa.
Vastavirta-algoritmi yhdistää lopullisen häviön sen tuottaneisiin parametreihin. Arkkitehtuuri tarjoaa mahdolliset laskennat; koulutus valitsee niiden numeerisen toiminnan.