Parametri, greška i spuštanje niz brdo
Veštačka inteligencija od nule
Lekcija 3 · Parametri, greška i spuštanje niz brdo
Prethodna lekcija je objasnila zašto se od pisanja pravila prešlo na učenje iz primera. Ostalo je neodgovoreno ono glavno: kako se, tačno, uči iz primera. Šta se u mašini pomera dok „uči"?
Odgovor je iznenađujuće jednostavan i, što je važnije, uvek isti. Postupak kojim se uči da se pogodi cena stana identičan je postupku kojim se treniraju modeli sa stotinama milijardi parametara. Razlika je u broju ručica, ne u principu.
Zato ovu lekciju vredi savladati temeljno. Ko razume ovih nekoliko strana, razume kostur svega što dolazi kasnije.
I. Model sa dve ručice
Uzmimo najmanji ozbiljan primer. Imamo podatke o prodatim stanovima — za svaki znamo kvadraturu i cenu — i želimo da za novi stan procenimo cenu.
Ako te podatke nacrtaš, dobićeš oblak tačaka koji se penje udesno: veći stanovi su skuplji. Kroz taj oblak može da se povuče prava. Ona neće proći kroz sve tačke, ali može da prođe kroz sredinu, i onda je procena cene za novi stan prosto očitavanje sa te prave.
Prava se opisuje sa dva broja:
cena = a × kvadratura + b
Broj a je nagib — koliko evra nosi svaki dodatni kvadrat. Broj b je početna visina — koliko bi po ovoj računici koštao stan od nula kvadrata, što nema fizički smisao ali pravu pomera gore-dole i time je bolje priljubljuje uz podatke.
To je ceo model. Dva broja, to jest dva parametra. Menjanjem ta dva broja prava se okreće i pomera, i negde postoji njihova kombinacija koja najbolje pogađa podatke. Pronaći tu kombinaciju — to je trening.
Obrati pažnju na jednu stvar. Model ne zna ništa o nekretninama. Ne zna šta je stan, šta je novac, ni da veće obično znači skuplje. Sve njegovo „znanje" o tržištu stane u dva broja koja su ispala iz podataka.
II. Kako se meri promašaj
Da bismo tražili najbolju pravu, moramo umeti da kažemo koliko je neka prava loša. Bez tog merila nema ni traženja.
Za svaki stan iz podataka model daje predviđanje, a mi znamo stvarnu cenu. Razlika između to dvoje je odstupanje na tom jednom stanu. Sada tih odstupanja imamo koliko i stanova i treba ih spojiti u jedan broj.
Prosto sabiranje ne valja: kod jednih stanova model precenjuje, kod drugih potcenjuje, pa se plus i minus poništavaju i užasno loša prava dobija ocenu nula. Zato se svako odstupanje prvo kvadrira — time svi postaju pozitivni — pa se uzme prosek.
greška = prosek svih (predviđeno − stvarno)²
To je srednja kvadratna greška, najpoznatija funkcija greške uopšte. Jedan broj koji za bilo koju pravu kaže koliko je loša. Nula znači savršeno pogađanje svih tačaka; veliki broj znači promašaj.
Kvadriranje, međutim, nije nevino. Odstupanje od deset hiljada evra ne doprinosi deset puta više od odstupanja od hiljadu, nego sto puta. Time smo, često i ne primetivši, rekli modelu: velike promašaje mrzim daleko više nego male. Model će zato izvrtati pravu da ublaži nekoliko ekstremnih stanova, po cenu toga da bude prosečan na svima ostalima.
Ako to nije ono što želiš, koristi se drugačija funkcija greške — na primer prosek apsolutnih odstupanja, koja ekstreme kažnjava blaže. Ovde se prvi put vidi ono što je nagovešteno u prvoj lekciji: izbor funkcije greške je izjava o tome šta za tebe znači „dobar model", i model će je poslušati doslovno.
III. Pejzaž greške
Sada imamo sve delove za jednu vrlo korisnu sliku.
Za svaki par brojeva a i b dobijamo jednu grešku. Zamisli ravan u kojoj je jedna osa vrednost a, druga vrednost b, a treća, uvis, veličina greške. Dobija se pejzaž — brda tamo gde je model loš, dolina tamo gde je dobar.
Trening je time postao potpuno konkretan zadatak: naći najnižu tačku tog pejzaža.
Prva pomisao je da se pejzaž jednostavno pretraži. Isprobaj hiljadu vrednosti za a, hiljadu za b, izračunaj grešku za svih milion kombinacija i uzmi najbolju. Za dva parametra to je izvodljivo.
Sa deset parametara isti pristup traži hiljadu na deseti stepen kombinacija, što nijedan računar neće završiti. Sa milion parametara je smešno i pomisliti. Pretraživanje otpada zauvek, i to već na sasvim malim modelima.
IV. Spuštanje niz brdo
Rešenje je ono iz prve lekcije: ne gledaj ceo pejzaž, nego samo tlo pod nogama.
Stojiš negde u magli. Ne vidiš gde je dolina, ali osećaš u kom smeru teren pada. Napraviš korak nizbrdo, pa opet opipaš, pa opet korak. Ako je pejzaž pristojan, pre ili kasnije si u dolini — a nikada ga nisi video u celini.
Ono što u ovoj priči zamenjuje osećaj pod nogama jeste izvod. Izvod odgovara na tačno jedno pitanje: ako parametar pomerim za dlaku naviše, da li greška raste ili pada, i koliko brzo. Kad se to izračuna za svaki parametar ponaosob, dobija se smer u kom pejzaž najstrmije pada. Taj smer se zove gradijent, a ceo postupak gradijentni spust.
Bitno je da se izvod računa, ne meri. Ne moramo isprobavati vrednosti da bismo videli šta se dešava — nagib se dobija direktno iz oblika funkcije greške. Zbog toga jedan korak košta jednako malo bez obzira na to koliko je pejzaž velik.
Ceo trening je onda petlja od tri koraka koja se vrti do umora:
1. Izračunaj grešku sa trenutnim parametrima.
2. Izračunaj u kom smeru bi svaki parametar trebalo pomeriti da greška opadne.
3. Pomeri ih malo u tom smeru. Vrati se na 1.
Koliko je „malo"
Veličina koraka zove se korak učenja i to je jedan od najvažnijih brojeva u celom poslu. Ne uči ga model — bira ga čovek.
Premali korak znači da se silazak vuče unedogled: greška opada, ali toliko sporo da bi trening trajao nedeljama umesto sati. Prevelik korak znači preskakanje doline — model doskoči na suprotnu padinu, više nego što je bio, pa se odbije nazad još jače. Greška tada ne opada nego skače i vrlo brzo ode u besmislene vrednosti. Trening je propao.
Zato se tokom treninga uvek crta kriva greške — grafik koji pokazuje kako greška pada iz koraka u korak. Glatko opadanje koje se postepeno smiruje znači da stvar radi. Kriva koja stoji ravno znači premali korak ili zaglavljivanje. Kriva koja skače ili leti uvis znači prevelik korak. Iskusan pogled na taj grafik kaže više o treningu nego bilo koji drugi podatak.
Šta ako dolina nije prava dolina
Očigledna zamerka: šta ako se spustimo u udubljenje koje nije najniže mesto na pejzažu? To se zove lokalni minimum i jeste stvarna opasnost.
Za našu pravu kroz tačke problema nema. Pejzaž srednje kvadratne greške kod linearnog modela ima oblik jedne jedine glatke činije — postoji tačno jedno dno i spust do njega uvek stiže.
Kod neuronskih mreža pejzaž je neuporedivo divljiji i takva garancija ne postoji. Ispostavilo se, međutim, da je to u praksi manji problem nego što se decenijama strahovalo: u prostorima sa milionima dimenzija je vrlo malo verovatno da je neko mesto istovremeno udubljenje u svim pravcima, pa se spust obično provuče dalje. Uz to, dobro dno je najčešće dovoljno dobro — savršeno se i ne traži.
V. Šta se menja kod velikih modela
Suštinski — ništa. Petlja od tri koraka je ista. Menjaju se dve praktične stvari.
Prva je da se greška ne računa na svim podacima. Kad ih ima milijardu, jedan jedini korak bi trajao predugo. Umesto toga se uzme mali slučajan uzorak — paket — i nagib se proceni na njemu. Procena je grublja, ali se koraka može napraviti hiljadu puta više u istom vremenu, pa se isplati. Prolazak kroz sve podatke redom, paket po paket, jeste ona epoha iz prve lekcije.
Zanimljivo je da nepreciznost tu čak pomaže. Nagib procenjen na uzorku malo poskakuje, i to poskakivanje ume da izbaci spust iz plitkog udubljenja u koje bi mirniji postupak zaglavio.
Druga je da korak učenja ne mora biti stalan. Postoje postupci koji ga sami podešavaju — usporavaju kad teren postane strm, ubrzavaju na zaravnima, i pamte pređeni pravac da bi zadržali zalet kroz duge blage padine. Nazive kao momentum ili Adam ćeš stalno sretati; svi rade istu stvar pametnije, ne drugu stvar.
Šta iz ovoga treba poneti
Učenje je traženje najniže tačke pejzaža greške, korak po korak, po osećaju nagiba pod nogama. Parametri su koordinate na tom pejzažu, funkcija greške je njegova visina, a korak učenja je dužina koraka.
Ta jedna slika pokriva ceo trening — i pravu kroz tačke i jezički model sa stotinama milijardi parametara. Kad kasnije budeš čitao da je neki model treniran mesecima na hiljadama grafičkih kartica, radilo se o ovoj istoj petlji, ponovljenoj neizrecivo mnogo puta.
Ostalo je, međutim, jedno neprijatno pitanje. Model koji savršeno pogađa podatke koje je video nije nužno dobar model — možda ih je samo zapamtio. Time se bavi sledeća lekcija.
Vežba · opciono
Prvi deo se radi olovkom, papirom i džepnim računarom. Uzmi pet stanova: 40 m² za 60.000, 55 m² za 75.000, 62 m² za 91.000, 78 m² za 105.000 i 90 m² za 128.000 evra.
Pretpostavi prvo da je a = 1300 i b = 5000. Za svaki stan izračunaj predviđenu cenu, oduzmi stvarnu, kvadriraj razliku i uzmi prosek. Dobio si jedan broj — visinu pejzaža na tom mestu.
Sada ponovi ceo račun sa a = 1400, pa sa a = 1200, oba puta ostavljajući b na 5000. Uporedi tri broja. Ono što si upravo uradio jeste opipavanje tla pod nogama, a smer u kome greška opada jeste smer u kom treba napraviti korak. Napravi ga i ponovi sve još jednom.
Drugi deo je za one koji rade kod. Napiši gradijentni spust za ovaj isti model, bez gotovih biblioteka za mašinsko učenje. Nacrtaj krivu greške kroz korake.
Zatim pokreni isti kod tri puta, sa korakom učenja 0,0000001, pa 0,000001, pa 0,1, i pogledaj tri krive. Prva puzi, druga se lepo spušta, treća eksplodira u par koraka. Tri slike koje ćeš prepoznavati do kraja života u ovom poslu.
SLEDEĆA LEKCIJA
4. Kako znamo da model zaista radi
Preprilagođavanje, podela podataka, i zašto tačnost od 99% ume da bude katastrofa.
Tekst je pisan uz pomoć jezičkog modela Claude Opus 5 kompanije Anthropic. Sadržaj, struktura i konačna redakcija su autorski.
Comments
Post a Comment