Johdatus tekoälyn taustalla olevaan matematiikkaan Informaatioteknologian tiedekunta Jyväskylän yliopisto 4. luento 24.11.2017
Neuroverkon opettaminen - gradienttimenetelmä Neuroverkkoa opetetaan syöte-tavoite-pareilla (x, y) eli opetusesimerkeillä. Neuronien parametrit alustetaan ja verkon syötteelle x antamaa tulosta t verrataan valitulla virhefunktiolla tavoitteeseen y. Virhefunktion arvo lasketaan valitulla opetusesimerkkoukolla. Tavoitteena on virhefunktion minimointi. Kaikkien neuronien vaikutus virheeseen ja virhefunktion E osittaisderivaatat E E w ja b verkon kaikkien painojen w ja vakiotermien b suhteen lasketaan esimerkiksi vastavirta-algoritmilla. Osittaisderivaatoista saadaan gradientti.
Neuroverkon opettaminen - gradienttimenetelmä Virhefunktion gradientti E kertoo nopeimman kasvun ja siten gradientin vastavektori E nopeimman vähenemisen suunnan. Sopivilla askelilla nopeimman vähenemisen suuntaan siirtymällä löydetään (menetelmään sopiville funktioille) lokaali minimi. Kun piilokerroksen parametreja on muutettu niin, että verkko toimii halutulla tavalla opetusesimerkeille, sen toimintaa tarkastetaan testiesimerkeillä. Seuraavaksi tutustutaan virhefunktion gradientin laskemiseen vastavirta-algoritmilla.
Vastavirta-algoritmi - ulostulokerros - esimerkki Esimerkki Ulostulokerroksessa on 2 ja viimeisessä piilokerroksessa 3 neuronia. Lasketaan virhefunktion osittaisderivaatat ulostulokerroksen painojen suhteen.
Vastavirta-algoritmi - ulostulokerros - esimerkki ulostulokerroksen aktivointifunktio ϕ(t) = t ulostulokerroksen vakiotermit b L 1 = bl 2 = 0 virhefunktio E = 1 2 y t 2 = 1 2 ( (t 1 y 1 ) 2 +(t 2 y 2 ) 2). ulostulokerroksen neuronien tulokset t j = ϕ(z j ) = z j = 3 k=1 w L kj al 1 k, j = 1, 2.
Vastavirta-algoritmi - ulostulokerros - esimerkki Lasketaan virhefunktion osittaisderivaatta ulostulokerroksen 1. neuronia vastaavien painojen w L i1 suhteen. Ulostulokerroksen 2. neuronin tulos on t 2 = z 2 = 3 k=1 w L k2 al 1 k. = Painot w 11, w 21 ja w 31 eivät vaikuta ulostuloon t 2. = Virhefunktiossa (t 2 y 2 ) 2 on vakio osittaisderivoinneissa painojen w 11, w 21 ja w 31 suhteen. = Kaikilla i = 1, 2, 3 on E w L i1 = 1 wi1 L 2 (t 1 y 1 ) 2 = (t 1 y 1 ) w L i1 (t 1 y 1 ).
Vastavirta-algoritmi - ulostulokerros - esimerkki Summan t 1 = z 1 = 3 k=1 w L k1 al 1 k termit, joissa on wk1 L, k i, ja y 1 ovat wi1 L :n suhteen vakiota. = wi1 L (t 1 y 1 ) = wi1 L = E w L i1 Vastaavasti saadaan E w L i2 3 k=1 w L k1 al 1 k = (t 1 y 1 )a L 1 i, i = 1, 2, 3. = (t 2 y 2 ) w L i2 = a L 1 i, i = 1, 2, 3 (t 2 y 2 )= (t 2 y 2 )a L 1 i.
Vastavirta-algoritmi - ulostulokerros Yleinen tilanne, osittaisderivaatat painojen w L suhteen Ulostulokerroksessa m neuronia, aktivointifunktio ϕ, virhefunktio Virhefunktiossa E = 1 2 y t 2 = 1 ( m (t k y k ) 2). 2 (t k y k ) 2 = ( ϕ ( N L 1 i=1 vakio painon w L suhteen kun j k = E w L k=1 ) ) 2 wik L al 1 i + bk L y k = 1 w L 2 (t j y j ) 2 = (t j y j ) w L (t j y j ).
Vastavirta-algoritmi - ulostulokerros Yleinen tilanne, osittaisderivaatat painojen w L suhteen Ketjusääntö = w L (t j y j ) = w L t j = w L ϕ(zj L ) = ϕ (zj L ) w L zj L. Summassa zj L = N l 1 k=1 w kj l al 1 k + bj L muut termit paitsi w LaL 1 i ovat vakioita painon w L suhteen = w L = E w L zj L = ( w L w L a L 1 i = (t j y j )ϕ (z L j )a L 1 i. ) = a L 1 i
Vastavirta-algoritmi - ulostulokerros
Vastavirta-algoritmi - ulostulokerros Yleinen tilanne, osittaisderivaatat painojen w L suhteen Osittaisderivaattakaavan indeksistä j riippuvaa osaa (t j y j )ϕ (z j ) merkitään usein δ L j, jolloin E w L Lasku kuten yllä ja ketjusääntö = δ L j a L 1 i. = δ L j = (t j y j )ϕ (z L j ) = E z L j = E a L j a L j z L j = E aj L ϕ (zj L ). δ L j on ulostulokerroksen neuroniin j liittyvä virhe.
Vastavirta-algoritmi - ulostulokerros Yleinen tilanne, osittaisderivaatat vakiotermien b L j Samaan tapaan kuin painoille w L, saadaan suhteen E b L j = (t j y j )ϕ (z j ) = δ L j. Neuroniin liittyvää virhettä δj L ja ketjusääntöä käyttämällä saadaan kaavat yleiselle virhefunktiolle E = E z L j E w L = E z L j z L j w L = δ L j a L 1 i ja E b L j = E z L j z L j b L j = δ L j.
Vastavirta-algoritmi - piilokerrokset Mieti, miksi osittaisderivaattoja painojen w l suhteen ei lasketa erotusosamäärien E(w i + he i ) E(w i ) h avulla? (Painot järjestetty jonoon, e i on i. kantavektori.) Vastavirta: Osittaisderivaatat kerroksen l suhteen saadaan laskettua rekursiivisesti kerroksen l + 1 osittaisderivaattojen avulla. Aloita ulostulokerroksesta ja jatka kerros kerrokselta kohti syötekerrosta.
Vastavirta-algoritmi - piilokerrokset - osittaisderivaatat painojen w l suhteen Muista: z l j = N l 1 i=1 Ketjusääntö = wa l l 1 i + bj l, aj l = ϕ(zj l ), δj l = E zj l. E w l = E z l j z l j w l = δ l j a l 1 i. Osittaisderivaattojen ketjusääntö ja ketjusääntö = δ l j = E z l j = N l+1 k=1 = N l+1 k=1 E z l+1 k δ l+1 k w l+1 jk ϕ (z l j ) z l+1 k z l j = N l+1 k=1 δ l+1 z l+1 a k j l k aj l zk l
Vastavirta-algoritmi - piilokerrokset - osittaisderivaatat painojen w l suhteen E w l N l+1 = a l 1 i ϕ (zj l ) k=1 δ l+1 k w l+1 jk.
Vastavirta-algoritmi - piilokerrokset - osittaisderivaatat vakiotermien b l j suhteen Samanlaisella laskulla saadaan osittaisderivaatat vakiotermien suhteen: E b l j = E z l j z l j b l j N l+1 = δj l 1 = ϕ (zj l ) δ l+1 k w l+1 jk. k=1 E w l N l+1 = a l 1 i δj l = a l 1 i ϕ (zj l ) k=1 δ l+1 k w l+1 jk Virhefunktion gradientti Virhefunktion gradientti koostuu termeistä E E b l j = δ l j. w l = a l 1 i δj l ja
Vastavirta-algoritmi - huomioita Jos kerroksen l 1 syöte a l 1 i on pieni, niin kerroksen l osittaisderivaatat E ovat pieniä. w l Jos osittaisderivaatta painojen suhteen on pieni, niin painot muuttuvat vastavirta-algoritmissa vähän ja neuroni oppii hitaasti. Aktivointifunktion derivaatat vaikuttavat virheen osittaisderivaattoihin ja siten neuroneiden parametrien muutokseen. Jos aktivointifunktion derivaatta on pieni, niin parametrit muuttuvat vähän ja neuronit oppivat hitaasti.
Vastavirta-algoritmi - huomioita Verkon käyttötarkoitukseen sopivan virhefunktion ja aktivointifunktioiden valinta on tärkeää. Kertaa aktivointifunktioiden ja niiden derivaattojen käyttäytyminen! Verkon eri kerroksissa voidaan käyttää eri aktivointifunktioita. (Käytä laskuissa ja kaavoissa verkon kerrosta vastaavia alaindeksejä ϕ l.)
Gradienttimenetelmä ja vastavirta-algoritmi - verkon opettamisen vaiheet 1 Syötä opetusesimerkkoukon A kaikki opetusesimerkit x verkolle. 2 Kaikille opetusesimerkeille x A: 1 Laske vastavirta-algoritmissa tarvittavat neuronikohtaiset summat z l j ja ulostulot a l j. 2 Laske virhefunktion osittaisderivaatat vastavirta-algoritmin avullla (ensin ulostulokerroksen painojen ja vakiotermien suhteen, sitten kerros kerrallaan alaspäin). 3 Korjaa neuronien parametrit gradienttimenetelmän avulla.
Gradienttimenetelmä ja vastavirta-algoritmi - korjatut parametrit Jos parametreja korjataan jokaisen syötteen jälkeen (stokastinen gradienttimenetelmä), niin yksittäisten neuronien uudet painot vastavirta-algoritmin jälkeen ovat w l w l α E w l = w l αa l 1 i δ l j ja b l j b l j α E b l j missä α on verkon oppimisnopeus. = b l j αδ l j,
Gradienttimenetelmä ja vastavirta-algoritmi - korjatut parametrit Jos koko opetusesimerkkoukko (tai yhtä syötettä isompi osa siitä) syötetään verkolle ennen päivitystä, niin uudet parametrit matriisa vektorimuodossa ilmoitettuna ovat w l w l α N x A δ l x(a l 1 x ) T ja b l b l α N δx, l x A missä α on verkon oppimisnopeus ja N opetusesimerkkoukon A alkioiden lukumäärä.
Gradienttimenetelmän eri versiot Stokastinen gradienttimenetelmä osittaisderivaatat lasketaan ja parametrit korjataan jokaisen syötteen jälkeen nopea tieto verkon oppimisesta helppo ymmärtää ja toteuttaa häiriöherkkyys voi häiritä lokaalin minimin löytymistä tiheä päivittäminen hidasta
Gradienttimenetelmän eri versiot (Satsi)gradienttimenetelmä - (batch) gradient descent, virhe lasketaan jokaisen opetusesimerkin jälkeen, parametrit päivitetään opetusesimerkkoukon jälkeen vähemmän päivityksiä - laskennallisesti tehokkaampi kuin stokastinen versio vähemmän päivityksiä - virheen pienenemisen suhteen vakaampi kuin stokastinen versio (saattaa supeta liian aikaisin ja huonommilla parametreilla kuin stokastinen versio) koko opetusesimerkkoukon tiedot kerralla muistissa, hidas oppimisnopeus isoilla opetusesimerkkoukoilla välimuoto minisatsigradienttimenetelmä!
Lineaarialgebraa Neuroverkon parametreihin liittyvät kaavat annetaan monesti vektorien- ja matriisien avulla. Kerroksen l parametrit ovat vakiotermit b l = (b l 1,..., bl N l ), painotetut summat z l = (z l 1,..., zl N l ) neuronien tulokset a l = (a l 1,..., al N l ) ja painot jolloin W l = w11 l w12 l... w1n l l w21 l w22 l... w2n l l... wn l l 1 1 wn l l 1 2... wn l l 1 N l, z l = a l 1 W l + b l ja a l = ϕ(z l ) = (ϕ(z l 1),..., ϕ(z l N l )).
Lineaarialgebraa Vastavirta-algoritmin, gradienttimenetelmän ja muiden algoritmien toteutus tehdään ohjelmistokirjastojen tehokkaiden vektori- ja matriisilaskentapakettien (esim. NumPy) avulla. Yksittäisiä parametreja ei kannata käsitellä silmukoilla. Lineaarialgebran opiskelu aloitetaan yleensä lineaarisen yhtälöryhmän ratkaisemista. Siitä on kyse myös neuroverkon parametrien etsinnässä.
Kahden lineaarisen yhtälön yhtälöryhmä Tarkastellaan yhtälöparia { a 11 x + a 12 y = b 1, a 21 x + a 22 y = b 2, missä a, b i R kaikilla i, j {1, 2}. Onko paria (x, y), joka toteuttaa yhtälöparin molemmat yhtälöt? Tällaisen parin, eli yhtälöparin ratkaisun olemassaolo ja yksikäsitteisyys riippuu kertoimista a.
Kahden lineaarisen yhtälön yhtälöryhmä Esimerkki Tutkitaan yhtälöpareja { { x y = 7, x y = 7, (a) (b) x + y = 5, 2x 2y = 14 (c) { x y = 7, 2x 2y = 13. (a): Laske puolittain yhteen ja jaa kahdella = x = 6. Soita x = 6 toiseen yhtälöön = y = 5 6 = 1. (6, 1) on yhtälöparin ainoa ratkaisu. (b): toinen yhtälö on ensimmäinen yhtälö kerrottuna 2:lla. Tämän yhtälön toteuttavat kaikki parit (x, y), joille y = x 7. Yhtälöparilla on äärettömän monta ratkaisua. (c): Kerro ensimmäinen yhtälö 2:lla. Uudessa yhtälöparissa molempien yhtälöiden vasen puoli on 2x 2y. Koska 14 13, niin yhtälöparilla ei ole ratkaisua.
Kahden lineaarisen yhtälön yhtälöryhmä - geometrinen tulkinta Parien yhtälöt ovat suorien yhtälöitä tasossa. Ne pisteet, jotka ovat molemmilla suorilla ovat yhtälöparin ratkaisuja. Kaksi suoraa ovat joko erisuuntaisia tai samansuuntaisia (eri tai sama kulmakerroin). Erisuuntaiset suorat leikkaavat toisensa täsmälleen yhdessä pisteessä.
Yhtälöryhmä, m lineaarista yhtälöä ja n tuntematonta Onko n luvun joukkoa x 1, x 2, x n, jotka toteuttavat kaikki m yhtälöä a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a 2n x n = b 2... a m1 x 1 + a m2 x 2 + + a mn x n = b m, missä a, b i R kaikilla i {1, 2,..., m}, j {1, 2,..., n}? Ratkaisemisessa käytetään kerroinmatriisia (Gauss-Jordan), a 11 a 12 a 1n b 1 a 21 a 22 a 2n b 2.... a m1 a m2 a mn b m jota muunnetaan rivioperaatioilla muotoon, josta ratkaisu (tai sen olemassaolemattomuus) saadaan peräkkäisillä soituksilla.
Vektorit Vektorit ja matriisit koostuvat järjestetyistä alkioista. Matriisien ja vektoreiden välisiä laskutoimituksia varten tarvitaan sekä pystyettä vaakavektorit. Vektori Olkoot x 1, x 2,..., x n R. Järjestetty joukko x = (x 1, x 2,..., x n ) on n-ulotteinen (rivi)vektori. Järjestetty joukko x 1 x 2 x =. x n on n-ulotteinen (sarake)vektori. Luvut x 1, x 2,..., x n ovat vektorin komponentteja.
Vektorit Vektoreiden samuus, kertominen vakiolla ja yhteenlasku Olkoot u = (u 1, u 2,..., u n ) ja v = (v 1, v 2,..., v n ) n-vektoreita. Olkoon c R. u = v jos ja vain jos u i = v i kaikilla i {1, 2,..., n} cu = (cu 1, cu 2,..., cu n ) u + v = (u 1 + v 1, u 2 + v 2,..., u n + v n ). Reaalilukujen laskusäännöt = u + v = v + u u + (v + w) = (u + v) + w c(u + v) = cu + cv kaikilla n-vektoreilla u, v ja w ja kaikilla c R.
Vektorit Sisätulo Jos a = (a 1, a 2,..., a n ) R n ja b = (b 1, b 2,..., b n ) R n, niin vektoreiden a ja b sisätulo/pistetulo on a b =< a, b >= n a i b i. i=1 Esimerkki 3-vektoreille a = (1, 2, 3) ja b = (3, 2, 1) on a + b = (1 + 3, 2 + 2, 3 1) = (4, 0, 2) a b = 1 3 + ( 2) 2 + 3 ( 1) = 3 4 3 = 4.
Matriisit Matriisi Olkoot m, n N. Olkoot a R kaikilla i {1, 2,..., m} ja j {1, 2,..., n}. Järjestetty taulukko a 11 a 12 a 1n a 21 a 22 a 2n A = (a ) =... a m1 a m2 a mn on m n-matriisi, jossa on m-riviä ja n-saraketta. a :t matrisin A alkioita/komponetteja rivivektorit (a i1, a i2,..., a in ), i {1, 2,..., m},rivejä ja sarakevektorit sarakkeita
Matriisit Jos m = n, niin A on neliömatriisi. rivivektori (x 1, x 2,..., x n ) on 1 n-matriisi ja n-komponentin sarakevektori on n 1-matriisi. Matriisien yhtäsuuruus, kertominen vakiolla ja yhteenlasku Olkoot A = (a i j) ja B = (b ) m n-matriiseja. Olkoon c R. A = B jos ja vain jos a = b kaikilla i {1, 2,..., m} ja j {1, 2,..., n} ca 11 ca 12 ca 1n ca 21 ca 22 ca 2n ca = (ca ) =... ca m1 ca m2 ca mn
Matriisit a 11 + b 11 a 12 + b 12 a 1n + b 1n a 21 + b 21 a 22 + b 22 a 2n + b 2n A + B =.... a m1 + b m1 a m2 + b m2 a mn + b mn Reaalilukujen ominaisuudet = Jos A, B ja C ovat m n-matriiseja, c R ja 0 mn on m n-nollamatriisi, niin 1 A + 0 mn = A, 2 0A = 0 mn, 3 A + B = B + A, 4 (A + B) + C = A + (B + C), 5 c(a + B) = ca + cb, 6 1A = A.
Matriisit Esimerkki Olkoot Nyt A = A + 2B = ( 1 2 ) 3 3 2 1 ja B = ( ) 1 + 2 2 + 0 3 + 2 = 3 + 0 2 + 2 1 + 0 ( 1 0 ) 1 0 1 0 ( ) 3 2 5. 3 4 1 Miten määritellään matriisien tulo? Kerrotaanko vastinalkiot keskenään? Tämä Hadamardin tulo/schurin tulo ei toimi laskutoimituksena halutulla tavalla mutta sitä käytetään neuroverkkojen algoritmien kaavoissa.
Matriisit Matriisien tulo Olkoon A = (a ) m n-matriisi ja B = (b ) n p-matriisi. Matriisien A ja B tulo AB on m p-matriisi C = (c ), jolle c = n a ik b kj. k=1 Matriisien A ja B tulon. alkio on matriisin A i. rivin ja matriisin B j. sarakkeen vektoreiden sisätulo. Jos A on m n- matriisi, B on n o-matriisi ja C on o p-matriisi, niin A(BC) = (AB)C ja tulo on m p-matriisi. oikeankokoisille matriiseille A(B + C) = AB + AC (A + B)C = AC + BC.
Matriisit Varo! Yleensä AB BA. Tulo ei ole edes määritelty paitsi jos sekä A että B ovat n n-matriiseja. Esimerkki Olkoot A = ( 1 2 ) 3 3 2 1 1 0 ja B = 0 1. 1 2 Koska A on 2 3-matriisi ja B on 3 2-matriisi, niin tulo AB on 2 2-matriisi, ( ) ( ) 1 1 + 2 0 + 3 1 1 0 + 2 1 + 3 2 4 8 C = AB = =. 3 1 + 2 0 + 1 1 3 0 + 2 1 + 1 2 4 4