Selitys
Miten neuroverkko oikeasti toimii
Ei aivoja eikä taikuutta, vaan säädettäviä lukuja. Selitys ilman matematiikkaa, mutta ilman että asiaa yksinkertaistetaan vääräksi.

Sisällys (6)
Neuroverkko on tekoälyn se osa, joka useimmin jää mustaksi laatikoksi. Sanotaan, että se "matkii aivoja" ja "oppii itse", ja siihen selitys loppuu. Kumpikaan lause ei ole väärä, mutta kumpikaan ei myöskään kerro mitään.
Todellisuudessa neuroverkko on yksinkertaisempi kuin miltä se kuulostaa. Se on laskukaava, jossa on valtava määrä säädettäviä lukuja. Kaikki muu on toistoa.
Aloitetaan yhdestä päätöksestä
Kuvitellaan, että pitää päättää yksi asia: otanko sateenvarjon mukaan.
Käytettävissä on kaksi tietoa. Taivas on pilvinen, sanotaan arvolla 0,8 asteikolla nollasta yhteen. Sadeennuste on 0,9.
Kumpikaan tieto ei ole yhtä tärkeä. Sadeennuste kertoo enemmän kuin pilvisyys. Annetaan niille siis painoarvot: pilvisyydelle 0,4 ja ennusteelle 0,6.
Nyt lasketaan:
0,8 × 0,4 = 0,32
0,9 × 0,6 = 0,54
----
yhteensä 0,86
Sovitaan vielä raja: jos tulos ylittää 0,5, otetaan sateenvarjo. 0,86 ylittää sen, joten varjo mukaan.
Tässä oli juuri se, mitä yksi keinotekoinen neuroni tekee. Se ottaa vastaan lukuja, kertoo jokaisen sen omalla painoarvolla, laskee ne yhteen ja päättää tuloksen perusteella, päästääkö viestin eteenpäin vai ei.
Mitään sen kummempaa yksittäisessä neuronissa ei tapahdu.
Mistä painoarvot tulevat?
Edellä keksin luvut 0,4 ja 0,6 itse. Juuri tästä koko koneoppimisessa on kyse: painoarvoja ei keksitä, vaan ne etsitään esimerkeistä.
Ajatellaan, että käytettävissä on tuhat päivää, joista jokaisesta tiedetään sää ja se, kastuiko ihminen. Verkko voi aloittaa täysin satunnaisilla painoarvoilla ja katsoa, miten käy:
- Se tekee arvauksen: "ei tarvita varjoa".
- Verrataan siihen, mitä oikeasti tapahtui: satoi kaatamalla.
- Arvaus meni pieleen, ja pieleenmenon suuruus lasketaan. Tätä lukua kutsutaan virheeksi.
- Selvitetään, kuinka paljon kukin painoarvo vaikutti virheeseen.
- Painoarvoja siirretään hitusen siihen suuntaan, joka olisi tuottanut paremman vastauksen.
Sitten sama toistetaan seuraavalla päivällä. Ja seuraavalla. Ja miljoona kertaa lisää.
Yksittäinen säätö on tarkoituksella pieni. Jos verkko muuttaisi painojaan rajusti jokaisen virheen jälkeen, se heiluisi puolelta toiselle eikä asettuisi koskaan. Askelen pituutta kutsutaan oppimisnopeudeksi, ja se on yksi tärkeimmistä säädöistä koko opetuksessa.
Sumuinen mäenlasku
Tälle on hyödyllinen mielikuva. Ajattele, että seisot mäessä sakeassa sumussa ja tehtäväsi on päästä alas laaksoon. Et näe minne mennä, mutta voit tunnustella jalalla, mihin suuntaan maa laskee. Otat pienen askelen siihen suuntaan. Sitten tunnustelet uudelleen.
Näin neuroverkkoa opetetaan. "Korkeus" on virhe, ja laakso on se painoarvojen yhdistelmä, jolla verkko erehtyy mahdollisimman harvoin. Verkko ei näe kokonaiskuvaa kertaakaan. Se vain ottaa miljoonia pieniä askeleita alamäkeen.
Tästä seuraa kaksi asiaa, jotka selittävät paljon myöhemmin:
- Opetus on hidasta ja kallista, koska askeleita tarvitaan valtavasti.
- Lopputulos ei ole ainoa mahdollinen. Toinen laakso, hieman eri painoilla, olisi voinut toimia yhtä hyvin.
Yksi neuroni ei riitä
Sateenvarjopäätös oli helppo, koska siinä oli kaksi tietoa ja suora yhteys lopputulokseen. Useimmat oikeat tehtävät eivät ole sellaisia.
Siksi neuroneita laitetaan rinnakkain ja peräkkäin. Rinnakkaiset neuronit katsovat samaa syötettä eri näkökulmista. Peräkkäiset kerrokset ottavat syötteekseen edellisen kerroksen tulokset.
Kuvantunnistus on tästä havainnollisin esimerkki. Kun verkolle näytetään valokuva:
- Ensimmäiset kerrokset reagoivat hyvin karkeisiin asioihin: missä on vaaleaa, missä tummaa, missä kulkee raja niiden välillä.
- Seuraavat kerrokset yhdistelevät näitä rajoja kulmiksi ja kaariksi.
- Sitä seuraavat tunnistavat kaarista ja kulmista silmän, nenän tai renkaan.
- Viimeiset kerrokset tekevät päätöksen: kasvot vai auto.
Olennaista on, ettei kenenkään ole tarvinnut kertoa verkolle mikä silmä on. Kerrokset päätyvät tunnistamaan tällaisia asioita, koska se on tehokkain tapa vähentää virhettä. Kerrosten määrästä tulee nimi syväoppiminen.
Yksi tekninen yksityiskohta kannattaa mainita, koska ilman sitä koko rakenne romahtaisi: jokaisen kerroksen jälkeen tulokseen tehdään pieni epäsuora mutka, esimerkiksi katkaistaan negatiiviset arvot nollaan. Ilman tätä mutkaa sadan kerroksen verkko supistuisi matemaattisesti yhdeksi ainoaksi kertolaskuksi, eikä siitä olisi mitään hyötyä. Mutkaa kutsutaan aktivointifunktioksi.
Verkko ei opettele esimerkkejä ulkoa
Tämä on se kohta, joka useimmin ymmärretään väärin.
Opetuksen jälkeen niitä tuhatta säädataa ei ole missään erillisenä taulukkona. Jäljelle jää joukko lukuja, painoarvot, jotka on säädetty niin, että sama kaava tuottaa järkeviä vastauksia myös päiville, joita se ei ole koskaan nähnyt.
Tämä ei tarkoita, etteikö aineistosta jäisi jälkiä. Painoihin voi tallentua yksittäisiä esimerkkejä niin tarkasti, että malli toistaa niitä lähes sanatarkasti, ja tutkijat ovat saaneet suuria kielimalleja tuottamaan opetusaineistostaan kokonaisia katkelmia. Verkko ei siis ole hakukone, mutta se ei myöskään ole aineistostaan puhdas.
Juuri tämä tekee neuroverkosta hyödyllisen. Se ei hae vastausta taulukosta vaan laskee sen.
Ja juuri tästä seuraa neuroverkkojen tunnetuin ongelma. Malli ei säilytä tiedon lähdeviitettä eikä pysty luotettavasti kertomaan, mistä tieto on peräisin. Pyydetty lähde voi olla kokonaan keksitty.
Sama selittää hallusinaation. Malli tuottaa aina sen, mikä laskennan perusteella on uskottavin jatko. Uskottava ja tosi ovat useimmiten sama asia, mutta eivät aina. Kun ne eroavat, malli valitsee uskottavan eikä huomaa tehneensä niin.
Pänttääminen on eri asia kuin oppiminen
Neuroverkko voi myös epäonnistua toiseen suuntaan. Jos verkossa on hyvin paljon painoja ja opetusesimerkkejä vähän, se voi käytännössä opetella esimerkit ulkoa: se vastaa täydellisesti kaikkeen, mitä on nähnyt, ja surkeasti kaikkeen muuhun.
Tätä kutsutaan ylisovittamiseksi. Se on sama ilmiö kuin opiskelija, joka on päntännyt vanhat tenttikysymykset ulkoa mutta ei osaa vastata uudelleen muotoiltuun kysymykseen.
Siksi mallin yleistymistä ei pidä arvioida pelkällä opetusaineistolla. Osa esimerkeistä pannaan sivuun ja otetaan esiin vasta lopuksi. Vasta niillä nähdään, oppiko verkko asian vai vain esimerkit.
Miten tästä päästään kielimalliin?
Sama rakenne, isompi mittakaava ja yksi lisäkeksintö.
Ensin teksti muutetaan luvuiksi. Neuroverkko osaa käsitellä vain lukuja, joten teksti pilkotaan pieniin palasiin eli tokeneiksi, ja jokaista palasta vastaa joukko lukuja. Näitä lukuja ei anneta käsin: verkko säätää nekin opetuksen aikana, kunnes merkitykseltään läheiset sanat päätyvät lähelle toisiaan.
Tehtävä on koko ajan sama. Kielimallille näytetään tekstiä, josta puuttuu jatko, ja sen pitää arvata seuraava palanen. Arvaus vertautuu oikeaan jatkoon, virhe lasketaan, painoja säädetään. Täsmälleen sama silmukka kuin sateenvarjossa, vain toistoja on tähtitieteellisesti enemmän.
Lisäkeksintö on huomio. Vanhemmat verkot lukivat tekstiä sana kerrallaan ja unohtivat alun ennen loppua. Nykyinen rakenne, transformer, antaa verkon painottaa jokaista sanaa käsitellessään sitä, mitkä muut sanat ovat sille olennaisia. Kun lauseessa lukee "se ei mahtunut laukkuun, koska se oli liian iso", verkko oppii, että jälkimmäinen "se" liittyy esineeseen eikä laukkuun.
Yksi tarkennus on tässä tarpeen. Tekstiä tuottava malli ei näe kaikkia sanoja vaan ainoastaan edeltävät: tulevat sanat peitetään opetuksen ajaksi, koska muuten malli näkisi juuri sen vastauksen jota sen pitäisi ennustaa. Kääntämisen ja luokittelun kaltaisissa tehtävissä koko teksti voi olla näkyvissä kerralla. Tätä huomion keksintöä pidetään yleisesti suurimpana yksittäisenä syynä siihen, miksi kielimallit paranivat 2020-luvulla niin nopeasti.
Tämän voi kokeilla itse: sivustolla on pieni kielimalli, joka on rakennettu tämän sivuston teksteistä ja näyttää sanan todennäköisimmät jatkot.
Lopputulos ei ole lause vaan todennäköisyysjakauma: lista kaikista mahdollisista seuraavista palasista ja niiden todennäköisyyksistä. Järjestelmä valitsee niistä yhden, liittää sen tekstiin ja aloittaa alusta. Vastaus syntyy palanen kerrallaan, eikä malli tiedä lauseen alkaessa, miten se päättyy.
Mitä tästä kannattaa jäädä mieleen
| Väite | Miten se oikeasti on |
|---|---|
| Neuroverkko matkii aivoja | Nimi on peräisin löyhästä vertauksesta. Rakenne on laskukaava, ei hermosolu. |
| Malli osaa asioita | Malli on säädetty tuottamaan todennäköisin jatko. Osaaminen on tämän sivutuote. |
| Malli muistaa, mitä sille kerrottiin | Painot eivät muutu käytön aikana. Keskustelu unohtuu, ellei sitä erikseen talleteta. |
| Malli tietää, mistä tieto tuli | Esimerkit eivät ole tallessa. Lähde pitää hakea erikseen. |
| Isompi malli on aina parempi | Enemmän painoja auttaa vain, jos dataa ja laskentaa on vastaavasti. Muuten se pänttää. |
Tärkein yksittäinen oivallus on tämä: mekanismista ei löydy kohtaa, jossa ymmärtäminen tapahtuisi. On vain lukuja, jotka on säädetty niin että lopputulos on hyödyllinen. Tarkoittaako riittävän monimutkainen lukujen säätäminen jossain vaiheessa jonkinlaista ymmärtämistä, on avoin kiistakysymys, johon tämä artikkeli ei ota kantaa. Se, mitä voi sanoa varmasti, on se, että ymmärtämistä ei ole rakennettu sisään erillisenä osana.
Se ei tee neuroverkoista vähempiarvoisia. Se kertoo, mihin niihin voi luottaa ja mihin ei, ja se on ainoa kysymys, jolla on käytännössä väliä.
Lähteet
- Attention Is All You Need · Vaswani ym., arXivalkuperäinen transformer-artikkeli
- Extracting Training Data from Large Language Models · Carlini ym., arXivopetusaineiston toistuminen mallin tuotoksessa
- Learning representations by back-propagating errors · Rumelhart, Hinton ja Williams, Naturevastavirta-algoritmi
Harri Salomaa · 40 vuotta ohjelmistoalalla, siitä 20 Yhdysvalloissa ja Saksassa: prosessidatan keruusta ja verkkodatan analysoinnista immersiiviseen laskentaan ja viimeksi tekoälyyn.