Johdatus tekoälyn taustalla olevaan matematiikkaan (Heli Tuominen)

Yleistä tietoa kurssista ja luentokalvot löytyvät kurssin kotisivulta.

Kiinnostaako tekoäly? Miten koneet oppivat? Kurssilla tutustutaan koneoppimiseen, lähinnä neuroverkkoihin ja niiden toiminnan takana olevaan matematiikkaan. Neuroverkkojen opettamisessa käytetyn virhefunktion minimoinnissa tarvitaan differentiaalilaskentaa ja suurten datamäärien käsittelyssä matriisilaskentaa. Kurssilla opiskellaan näiden alojen perusasioita. Lisäksi kurssilla tutustutaan Python-kieleen.

Tekoälyn sanastoa
activation function aktivointifunktio
artificial intelligence (AI) tekoäly
artificial neural network (ANN) (keinotekoinen) neuroverkko
backpropagation vastavirta(-algoritmi)
bias vakiotermi
binary classification luokittelu kahteen luokkaan
classification luokittelu
clustering klusterointi, ryhmittely
cost function virhefunktio
cross-entropy ristientropia
decision tree päätöspuu
gradient descent gradienttimenetelmä
data maining tiedonlouhinta
decision boundary päätöspinta
deep learning syväoppiminen
feed forward network eteenpäin kytketty verkko
hidden layer piilokerros
input layer syötekerros
k-nearest neighbors algorithm (kNN) k:n lähimmän naapurin menetelmä
learning rate oppimisnopeus
logistic regression logistinen regressio
loss function tappiofunktio
machine learning koneoppiminen
mean squared error keskineliösumma
multiclass classification luokittelu moneen luokkaan
output leyer ulostulokerros
perceptron perseptroni
regression regressio
self-organizing Map itseorganisoituva kartta
supervised learning ohjattu oppiminen
support vector machine tukivektorikone
test example testiesimerkki
training example opetusesimerkki
unsupervised learning ohjaamaton oppiminen
validation example vahvistusesimerkki

Matematiikan sanastoa
assosiative liitännäinen
bounded rajoitettu
chain rule ketjusääntö
closed suljettu
coefficient kerroin
column sarake
commutative vaihdannainen
composite function yhdistetty funktio
continuos jatkuva
contour curve korkeuskäyrä
curve käyrä
decreasing vähenevä
derivative derivaatta
diagonal matrix diagonaalimatriisi
differentiable derivoituva, differentioituva
domain lähtöjoukko
dot/inner/scalar product sisätulo, pistetulo
eigenvalue ominaisarvo
eigenvector ominaisvektori
function funktio
gradient gradientti
graph kuvaaja, graafi
identity matrix yksikkömatriisi, identtinen matriisi
increasing kasvava
interval väli
inverse matrix käänteismatriisi
invertible kääntyvä
level curve, level set tasa-arvokäyrä, tasa-arvojoukko
limit raja-arvo
linearly separable lineaarisesti erotettavat
lower triangular matrix alakolmiomatriisi
matrix matriisi
partial derivative osittaisderivaatta
plane taso
range arvojoukko, kuvajoukko
row rivi
saddle point satulapiste
solution ratkaisu
tangent tangentti
target set maalijoukko
unbounded rajoittamaton
upper triangular matrix yläkolmiomatriisi
vector vektori
vector field vektorikenttä

1. Koneoppiminen (Machine learning)

Koneoppiminen on tekoälyn osa-alue, jossa kone/ohjelma oppii pohjatiedon ja käyttäjän toiminnan perusteella. Kaikkia erilaisia tilanteita varten ei ole erillistä ohjetta vaan oppiminen tapahtuu kokemuksen avulla.

Mitchell 1997: A computer program is said to learn from experience E with respect to some class of tasks T and performance measure P if its performance at tasks in T, as measured by P, improves with experience E.

Koneoppiminen voidaan jakaa kolmeen luokkaan oppimisen tyylin perusteella.

  • Ohjattu oppiminen: Konetta opetetaan luokitellun aineiston (syöte-tavoite-parit) avulla. Tavoitteena on, että kone osaa tehdä luokittelun samankaltaiselle aineistolle. Ohjattu oppiminen voidaan jakaa tavoitedatan luonteen perusteella kahteen luokkaan, luokittelu ja regressio. Jos syötteet voidaan luokitella erillisiin ryhmiin, niin kyse on luokittelusta, jos se on jatkuvaa, niin regressiosta. Esimerkki luokittelusta on käsinkirjoitettujen numeroiden tunnistus ja regressiosta jonkin tuotteen hinta.

  • Ohjaamaton oppiminen: Jäljittelee ihmisen oppimista. Opettamiseen käytetään raakadataa, josta kone pyrkii löytämään samankaltaisuuksia ja suhteita eri syötteiden välille. Syötteet pyritään ryhmittelemään niin, että yksittäisellä syötteellä on enemmän samanlaisia ominaisuuksia samaan ryhmään kuuluvien syötteiden kuin muihin ryhmiin kuuluvien syötteiden kanssa. Esimerkki ohjaamattomasta oppimisesta on akateemikko Teuvo Kohosen (1934) 1980-luvulla kehittämä itseorganisoituva kartta.

  • Vahvistettu oppiminen Kone oppii ympäristön antaman palautteen perusteella. Kone saa toiminnastaan dynaamisessa ympäristössä positiivista ja negatiivista palautetta ja oppii toimimaan niin, positiivisen palautteen määrä kasvaa ja negatiivisen vähenee. Esimerkkejä vahvistetusta oppimisesta ovat itseohjautuvat autot ja robotiikka.

Image
Image

Kuhunkin oppimistyyliin sopivia algoritmeja on useita. Ratkaistavana olevaan ongelmaan sopivan algoritmin valinta riippuu oppimistyylin lisäksi esimerkiksi datan koosta ja tyypistä, algoritmin oppimisnopeudesta ja opetuksessa tarvittavasta tallennustilasta ja siitä, kuinka tehokasta tai yleistettävää ratkaisua ollaan etsimässä. Paras algoritmi ei välttämättä löydy ensimmäisellä kokeilulla.

Tällä kurssilla käsitellään pääasiassa ohjattua oppimista neuroverkkojen avulla. Ennen neuroverkkoihin siirtymistä tutustutaan hyvin lyhyesti muutamaan muuhun ohjatun oppimisen algoritmiin.

Ohjatun oppimisen luokittelu voi olla binääristä luokittelua tai luokittelua useampaan luokkaan. Binäärisessä luokittelussa mahdollisia luokkia, joihin yksittäinen datan alkio voi kuulua, on kaksi. Esimerkiksi sähköposti on roskapostia tai oikeaa postia ja vain kissojen ja koirien kuvia sisältävässä joukossa jokainen kuva on joko kissan tai koiran kuva, ei molempia. Jotkut algoritmit, kuten logistinen regressio, on suunniteltu erityisesti binääriseen luokitteluun ja ne ovat tehtävässään tehokkaita. Useampaan luokkaan luokittelu vaatii monimutkaisemman algoritmin.

Luokittelualgoritmeja

  • Logistinen regressio: Sopii binääriseen luokitteluun. Malli kertoo, millä todennäköisyydellä datapiste kuuluu ongelmassa oleviin luokkiin. Se sopiii parhaiten tilanteisiin, jossa data voidaan erottaa lineaarisesti (suoralla, hypertasolla).
  • k:n lähimmän naapurin menetelmä: K:n lähimmän naapurin menetelmässä datapisteet (opetusesimerkit) ovat pisteitä -ulotteisessa avaruudessa. Jokaiselle datapisteelle etsitään euklidisen (tai muun) etäisyyden mielessä K lähintä pistettä ja datapiste luokitellaan naapureiden luokkien avulla käyttäen esimerkiksi keskiarvoa regression ja moodia luokittelun tapauksessa. Koko data on kerralla muistissa.
  • Tukivektorikone: Tukivektorikoneen perusversiota käytetään binääriseen luokitteluun. Se luokittelee dataa etsimällä lineaarista päätöspintaa (hypertasoa), joka erottaa kahteen eri luokkaan kuuluvat datapisteet toisistaan. Jos data on lineaarisesti erotettava, niin paras erotteleva hypertaso on se, joka erottelee luokat toisistaan suurimmalla marginaalilla. Jos data ei ole lineaarisesti erotettava, niin väärällä puolella hypertasoa oleville pisteille käytetään virhefunktiota.
  • Naiivi Bayes-luokittelija: Naiivi Bayes-luokittelija on yksinkertainen luokittelija, joka käsittelee alkioiden ominaisuuksia toisistaan riippumattomina. Luokittelu tehdään todennäköisyyksien avulla. Se on helppo toteuttaa ja hyvä menetelmä pienehkölle datalle, jossa on useita parametreja.
  • Diskriminanttianalyysi Diskriminattianalyysi luokittelee dataa etsimällä sellaisia ominaisuuksien lineaarikombinaatioita, jotka joko karakterisoivat tai erottavat eri luokkiin kuuluvia datapisteitä. Diskriminantissa analyysissä oletetaan, että eri luokat noudattavat normaalijakaumaa. Opetettaessa etsitään normaalijakauman parametreja eri luokille ja niiden avulla etsitään luokkia erottavat lineaariset tai kvadraattiset funktiot.
  • Päätöspuut Päätöspuu on helposti toteutettava ja vähän muistia käyttävä luokittelualgoritmi. Luokittelu tehdään valitsemalla luokiteltavan data-alkion ominaisuuksien perusteella binääripuun solmuissa vasen tai oikea haara. Datapiste viedään ensin juurisolmuun, josta se lopulta päätyy lehteen, joka kertoo luokan.
  • Neuroverkot Ihmisen aivojen toimintaa jäljitteleviä oppivia verkkoja käsitellään seuraavissa luvuissa tarkemmin.

2. Keinotekoiset neuroverkot (Artificial neural networks)

Keinotekoinen neuroverkko jäljittelee ihmisen aivoja. Se koostuu syöte- ja ulostulokerroksesta ja niiden välissä olevista piilokerroksista.

Neuroverkkoa voi ajatella funktiona ; syöte on -ulotteinen vektori , piilokerrokset hoitavat laskutehtävän ja funktion arvo saadaan ulostulokerroksesta. Verkon käyttötarkoitus määrää, miten funktion arvo tulkitaan.

Piilokerroksien ja ulostulokerroksen jokaisessa neuronissa lasketaan syötekerroksesta tai piilokerroksesta tulleiden syötteiden painotettu summa ja siihen lisätään neuronin vakiotermi. Ennen neuronin tuloksen lähettämistä seuraavalle neuronille summa viedään aktivointifunktioon. Aktivointifunktiot muuttavat lineaarisen (affiinin eli ensimmäisen asteen polynomin) syötteen epälineaariseksi.

Esimerkki

Verkossa on yksi piilokerros, jossa on neljä neuronia. Syöte on vektori . Ulostulokerroksessa on yksi neuroni.

Syötevektorin komponentit kerrotaan piilokerroksen neuroneiden painoilla , lasketaan yhteen ja summaan lisätään piilokerroksen neuronin vakiotermi : Nämä summat viedään piilokerroksen aktivointifunktiolle, jolloin piilokerroksen neuronien antamat syötteet ulostulokerrokselle ovat Verkon antama tulos saadaan käyttämällä piilokerroksen ja ulostulokerroksen välisiä painoja ja aktivointifunktiota (ulostulokerroksen vakiotermi on nolla):

2.1 Neuroverkkoihin liittyviä määritelmiä ja merkintöjä

Neuroneihin liittyvistä parametreistä käytetään seuraavia merkintöjä. Kerrosindeksi viittaa syötekerrokseen ja kerrosindeksi ulostulokerrokseen:

  • kerroksen neuronien lukumäärä,

  • kerroksen neuronin ja kerroksen neuronin välillä oleva paino,

  • kerroksen neuronin vakiotermi,

  • kerroksen neuronia vastaava summa

  • kerroksen neuronin tulos eli syöte seuraavaan kerrokseen

missä on aktivointifunktio (joka voi vaihdella kerroksesta toiseen).

Olisi kiva, jos tässä w:n indeksinä l käytettäisiin samaa indeksiä kuin edellisessä esimerkissä, tai päinvastoin.

18 Jun 18
# neuroni

Neuroni

Piilokerroksen neuronit voidaan tulkita funktioiksi , , missä on yleensä edellisen kerroksen painotettu summa lisättynä vakiotermillä eli ja on kerroksen aktivointifunktio. Ulostulokerroksen funktioille arvojoukko on .

# kaavat-vektorimuodossa

Kaavat vektorimuodossa

Merkintöjen yksinkertaistamiseksi kaavat kirjoitetaan monesti vektori- ja matriisimuodossa, joilloin kerroksen vakiotermejä vastaa vektori kerroksen neuronien painotettuja summia vektori ja kerroksen neuronien tuloksia vektori Kerroksen painoja vastaa -matriisi jolloin Huomaa, että jos vektorit , ja määriteltäisiin pystyvektoreina, niin olisi

W, ensimmäinen sarake, toinen rivi, ensimmäinen alkio: tulisiko indeksi olla 21 eikä 12?

19 Nov 17

Pitäisi. Kiitos.

21 Nov 17
Huomautus

Joissain lähteissä painojen neuroni-indeksit ja ovat päinvastaisessa järjestyksessä. Tällöin vastaava matriisi on -matriisi ja , missä on vektorin transpoosi.

2.1.1 Harjoitustehtäviä

  1. Tarkastellaan neuroverkkoa, jonka syöte on , jossa on yksi neljän neuronin piilokerros, jonka ulostulokerroksessa on kaksi neuronia ja jonka aktivointifunktio sekä piilo- että ulostulokerroksessa on . (Kuvassa vain osa painoista merkitty.)

Kirjoita verkkoon liittyvät neuronien painotetut summat ja neuronien tulokset vektoreiden ja painomatriisien avulla.

2.2 Perseptroni (Perceptron)

Perseptroni on syötekerroksen ja yhden neuronin muodostama "minimaalinen neuroverkko", jonka syöte on ja tulos on . Image Perseptonia, jonka painojen muodostama vektori on , vakiotermi on , ja aktivointifunktio on yksikköporrasfunktio (Heavisiden funktio) , vastaa funktio , missä on vektoreiden ja sisätulo.

Kysymykseen, millaiset funktiot voidaan esittää perseptronilla, on yksinkertainen vastaus nollan ja ykkösen alkukuvien lineaarisen erotettavuuden avulla.

Joukot ja ovat lineaarisesti erotettavat, jos on vakiot ja , joille ja

Tasossa tämä tarkoittaa sitä, että joukoja ja vastaavat pisteet voidaan erottaa suoralla ja :ssa sitä, että pistejoukot voidaan erottaa tasolla.

Lause

Funktio voidaan esittää perseptronilla jos ja vain jos alkukuvat ja ovat lineaarisesti erotettavat.

Esimerkki

Ensimmäisen kuvan pistejoukko ei ole lineaarisesti erotettava, toisen kuvan on. Funktio, jonka arvot vihreitä palloja vastaavissa tason pisteissä on 1 ja sinisiä palloja vastaavissa pisteissä on 0, voidaan siis toisessa tapauksessa esittää perseptronilla, ensimmäisessä ei.

Esimerkki

Looginen konnektiivi AND (JA) voidaan esittää yhdellä perseptronilla mutta konnektiivia XOR (poissulkeva TAI) ei voi. Konnektiiveja vastaavat funktiot ovat ja ja Nollan ja ykkösen alkukuvat ovat siis ja

Edellisen esimerkin looginen konnektiivi AND saadaan perseptronilla Muuttamalla painoiksi ja vakiotermiksi , saadaan AND-konnektiivin negaatio, NAND, jonka arvo parille on ja muille lukupareille . NAND konnektiivin esityksen olemassaolosta seuraa, että perseptronien avulla voidaan rakentaa verkko, joka tekee minkä tahansa halutun loogisen päättelyn.

Perseptronin ongelma on se, että pienet muutokset painoissa tai syötteissä aiheuttavat ison muutoksen tuloksessa . Tämä on huono asia verkon opettamisen kannalta. Perseptronin yksikköporrasfunktion sijaan käytetäänkin yleensä verkon opettamiseen paremmin soveltuvia aktivointifunktioita.

2.2.1 Harjoitustehtäviä

  1. Loogista konnektiivia OR (TAI) vastaa funktio ,
  • Määritä alkukuvat ja .
  • Voidaanko OR esittää perseptronilla? Jos voidaan, niin etsi kertoimet ja ja perseptronin vakiotermi .

(1,1)=1 OR

14 Nov 17

Joo. Kiitos.

22 Nov 17

2.3 Aktivointifunktiot (Activation functions)

Neuroverkon piilo- ja ulostulokerroksissa käytetään aktivointifunktioita. Ennen neuronin tuloksen lähettämistä seuraavalle neuronille tai ulostulokerroksesta ulos, edellisen kerroksen syötteistä laskettu painotettu summa viedään aktivointifunktioon . Aktivointifunktiot muuttavat lineaarisen (affiinin) syötteen epälineaariseksi ja niillä olisi toivottavaa olla seuraavia ominaisuuksia:

  • epälineaarisuus: Koska summa ja yhdistetty funktio lineaarisista funktioista on lineaarinen ja affiineista affiini ja neuroneiden summalausekkeet ovat affiineja, niin lineaarisilla (tai affiineilla) aktivointifunktioilla saadaan affiini kuvaus.

  • (jatkuvasti) derivoituvuus: Vastavirta-algoritmissa ja muissa virhefunktion minimointitavoissa tarvitaan aktivointivointifunktion derivaattaa. Jos aktivointifunktio ei ole derivoituva, niin virhefunktion minimoinnissa pitää käyttää muita kuin gradienttiin perustuvia keinoja.

  • identtisen funktion approksimointi: Jos aktivointifunktio on lähellä identtistä funktiota nollan lähellä, niin neuroverkko oppii tehokkaasti kun painot alustetaan satunnaisluvuilla. Muussa tapauksessa painot pitää alustaa huolellisesti.

Se, onko aktivointifunktio rajoitettu vai ei, vaikuttaa verkon oppimisnopeuteen ja oppimisen vakauteen. Rajoitetuilla aktivointifunktioilla oppiminen on yleensä vakaata ja rajoittamattomilla monesti tehokasta. Rajoittamattomia aktivointifunktioita käytettäessä kannattaa käyttää pieniä oppimisnopeuksia.

Esimerkkejä aktivointifunktioista ovat sigmoid-funktio, hyperbolinen tangentti ja ReLu-funktio.

# sigmoid-funktio-logistinen-funktio

Sigmoid-funktio (logistinen funktio)

Sigmoid-funktiolla ,

on seuraavat ominaisuudet:

  • rajoitettu, aidosti kasvava ja jatkuva

  • ,

  • eli funktiolla on kaikkien kertalukujen jatkuvat derivaatat ja

Sigmoid-funktio on (binäärisen) porrasfunktion (Heaviside step function) , kun , kun , silotettu versio. Sigmoid-funktion huono ominaisuus on se, että se kasvaa hyvin hitaasti kun kasvaa ja vähenee hyvin hitaasti kun vähenee. Sen derivaatta on hyvin lähellä nollaa kun on suuri tai pieni. Tästä seuraa ongelmia kun verkkoa opetetaan derivaattoihin perustuvilla menetelmillä. Vastavirta-algoritmia käsittelevässä luvussa nähdään, että virhefunktion osittaisderivaatat neuronin painojen ja vakiotermien suhteen riippuvat aktivointifunktion derivaatasta ja että painojen ja vakioiden muutoksen koulutettaessa ovat pieniä jos osittaisderivaatat ovat pieniä. Tällöin verkko oppii hitaasti. Toinen sigmoid-funktion huono puoli on se, että se ei ole symmetrinen nollan suhteen. Nykyisin sitä käytetään lähinnä ulostulokerroksessa varsinkin jos verkon tulokset ovat välillä .

# tanh

Hyperbolinen tangentti (tanh)

Hyperbolisella tangenttilla , on monia samoja ominaisuuksia kuin sigmoid-funktiolla mutta se on symmetrinen nollan suhteen ja se kasvaa nopeammin nollan lähellä, jolloin sen derivaatta on suurempi. Hyperbolinen tangentti on

  • rajoitettu, aidosti kasvava ja jatkuva

  • ,

  • ja .

Gradientin pienuus isoilla ja pienillä arvoilla on myös hyperbolisen tangentin ominaisuus, joten sen käyttö aktivointifunktiona saattaa aiheuttaa verkon oppimisen hitautta.

Hyperbolinen tangentti on -listan toisessa kohdassa pitäisi varmaan puhua tanh:sta.

11 Apr 18

Joo. Kiitos.

31 Aug 18
# relu

ReLu (Rectified Linear Unit)

Neuroverkkojen piilokerroksissa paljon käytetty aktivointifunktio on ReLu-funktio ,

Jotta verkon toimintaan saadaan epälineaarisuutta, niin ulostulokerroksessa käytetään jotain epälineaarista aktivointifunktiota. ReLu-funktio ei ole derivoituva nollassa. Sen toinen huono ominaisuus on se, että se on nolla ja sen derivaatta on nolla negatiivisilla arvoilla. Tästä syystä joidenkin neuronien painot saattavat päivittyä oppimisen aikana nollaksi jolloin neuronit kuolevat. Neuronien kuoleentumisongelmaa pyritään välttämään muuttamalla aktivointifunktiota hieman. Yksi ReLun variantti on "Leaky ReLu", ,

Toimivimpien aktivointifunktioiden valinta riippuu siitä, mitä verkolla ollaan tekemässä eli mitä funktiota sillä approksimoidaan. Jos verkkoa vastaavalla funktiolla on samoja ominaisuuksia kuin aktivointifunktiolla, niin oppiminen on nopeampaa. Esimerkiksi sigmoid-funktiota kannattaa käyttää ulostulokerroksessa jos verkkoa käytetään luokitteluun .

# universaali-approksimointilause

Universaali approksimointilause

Funktionaalianalyysin keinoin voidaan todistaa neuroverkkojen universaali approksimointilause, joka sanoo, että jos aktivointifunktio on rajoitettu, kasvava ja jatkuva, niin mille tahansa :n kompaktin joukon jatkuvalle funktiolle on tätä aktivointifunktiota käyttävä neuroverkko, joka approksimoi haluttua funktiota hyvin. (Joukko on kompakti, jos se on suljettu ja rajoitettu.)

Lause

Olkoon rajoitettu, kasvava ja jatkuva funktio. Olkoon kompakti joukko. Olkoon ja olkoon jatkuva funktio. Tällöin on , , ja , , siten, että kaikilla funktiolle

2.3.1 Harjoitustehtäviä

  1. Näytä, että jos aktivointifunktiona käytetään affiinia funktiota , , , niin neuroverkkoa vastaava kuvaus on affiini. Huomaa, että riittää todeta, että affiinien kuvausten summa ja yhdistetty kuvaus ovat affiineja.

  2. Laske sigmoid-funktion ja hyperbolisen tangentin derivaatat osamäärän derivointisäännön ja ketjusäännön avulla. Muista, että eksponenttifunktiolle , on kaikilla . (Derivointia käsitellään luvussa Analyysia.)

2.4 Neuroverkon opettaminen

Ohjattua oppimista käytettäessä neuroverkkoa opetetaan syöte-tavoite-pareilla eli opetusesimerkeillä (training examples). Verkon syötteelle antamaa tulosta verrataan valitulla virhefunktiolla tavoitteeseen . Opettamisen aikana yritetään minimoida virhefunktioita ja piilokerroksen parametreja muutetaan esimerkiksi vastavirta-algoritmin avulla. Kun verkko toimii halutulla tavalla opetusesimerkeille, sen toimintaa tarkastetaan testiesimerkeillä (test examples).

# vastavirta

2.4.1 Vastavirta-algoritmi (backpropagation)

Eteenpäin kytketyssä neuroverkossa syötekerroksen syötteen komponentit kerrotaan ensimmäisen piilokerroksen neuroneita vastaavilla painoilla, jokaista ensimmäisen piilokerroksen neuronia vastaavat tulot lasketaan yhteen ja summaan lisätään neuronin vakiotermi (bias). Tämä summa syötetään aktivointifunktioon, joka antaa kyseisen neuronin syötteen seuraavalle kerrokselle. Tämä kerros käyttää omia painojaan, vakiotermejään ja aktivointifunktioitaan. Näin jatketaan kaikkien kerrosten läpi.

Syötteen (tai syötejoukon) antamaa tulosta verrataan tavoitteeseen ja lasketaan virhefunktion arvo. Tavoitteena on minimoida opetusesimerkkijoukkoa vastaava virhefunktio ja löytää minimointia vastaavat painot neuroneille. Monissa virhefunktion minimointikeinoissa, esimerkiksi gradienttimenetelmässä (gradient descent), tarvitaan virhefunktion osittaisderivaatat ja verkon kaikkien painojen ja vakiotermien suhteen. Osittaisderivaatat ja jokaisen neuronin vaikutus virheeseen lasketaan usein vastavirta-algoritmilla (backpropagation). Gradienttimenetelmässä neuroneille saadaan uudet painot ja vakiotermit muuttamalla edellisiä arvoja neuronien parametrien osittaisderivaatoista koostuvan gradientin vastavektorin suuntaan (eli virhefunktion nopeimman pienenemisen suuntaan).

Monesti yksittäistä syötettä vastaavan tavoitteen ja verkon antaman tuloksen virhefunktiona käytetään erotuksen euklidisen normin neliötä ja opetusesimerkkijoukon virhefunktiona keskineliösummaa (mean squared error) missä on joukon opetusesimerkkien lukumäärä.

Seuraavaksi lasketaan virhefunktion osittaisderivaatat ja verkon kaikkien painojen ja vakiotermien suhteen vastavirta-algoritmilla. Derivaatan ja osittaisderivaattojen määritelmät esimerkkeineen ja lukuvinkkeineen löytyvät luvusta Analyysia.

Virhefunktion osittaisderivaatat ulostulokerroksen parametrien suhteen

Ulostulokerroksen parametreihin liittyvät osittaisderivaatat on helppo laskea. Aloitetaan esimerkillä.

Esimerkki

Ulostulokerroksessa (. kerros) on kaksi ja viimeisessä piilokerroksessa ( kerros) kolme neuronia. Virhefunktio on ja ulostulokerroksen neuronien tulokset ovat

Oletetaan, että aktivointifunktio on identtinen funktio ja että ulostulokerroksen vakiotermit ovat nollia. Tällöin ja .

Lasketaan virhefunktion osittaisderivaatat painojen suhteen. Koska kaavan perusteella painot , ja eivät vaikuta ulostuloon , niin virhefunktion termi on vakio osittaisderivoinneissa painojen , ja suhteen. Siten derivoinnin ketjusäännön avulla nähdään, että kaikilla on Koska summan termit, joissa on kertoimena , , ovat muuttujan suhteen vakiota, niin kaikilla on ja siten Vastaavasti saadaan, että ja

Palataan yleiseen tilanteeseen. Olkoon ulostulokerros verkon . kerros ja olkoon siinä neuronia.

Osittaisderivaatat painojen suhteen

Koska virhefunktiossa termit ovat vakioita painon suhteen kun , niin derivoinnin ketjusääntöä käyttämällä saadaan Huomaa, että syötteiden tulokset ovat vakioita kaikkien painojen suhteen ja siten niiden osittaisderivaatat ovat nollia. Siten kaikilla saadaan ketjusäännön avulla Koska ja muut termit summassa paitsi ovat vakioita painon suhteen, niin Yhdistämällä nämä laskut saadaan Tämän kaavan indeksistä riippuvaa osaa merkitään usein Laskemalla huomataan, että Siten on

Osittaisderivaatat vakiotermien suhteen

Ulostulokerroksen osittaisderivaatat vakiotermien suhteen saadaan laskettua samaan tapaan kuin painojen suhteen. Virhefunktiossa termit ovat vakioita termin suhteen kun , joten ketjusääntöä käyttämällä saadaan sillä viimeisessä osittaisderivoinnissa ainoastaan summan termi vaikuttaa derivointiin ja sen osittaisderivaatta :n suhteen on . Siten saadaan

# virhe
Huomautus

Ulostulokerroksen . neuroniin liittyvää virhettä , ketjusääntöä ja :n kaavaa käyttäen saadaan vastaavat kaavat myös muille virhefunktioille, joita merkitään tässä myös :llä,

Seuraavaksi lasketaan virhefunktion osittaisderivaatat piilokerroksien painojen ja vakiotermien suhteen. Laskun avulla nähdään, että osittaisderivaatat kerroksen suhteen saadaan laskettua rekursiivisesti kun tiedetään yhtä ylemmän kerroksen osittaisderivaatat. Osittaisderivaattoja laskettaessa lähdetään siis liikkeelle ulostulokerroksen osittaisderivaatoista ja niitä käytetään ensimmäisen piilokerroksen derivaattojen laskemiseen. Osittaisderivaatat viimeisen piilokerroksen painojen ja vakioiden suhteen antavat vastaavat osittaisderivaatat viimeistä edelliselle piilokerrokselle. Näin jatketaan kunnes virhefunktion kaikki osittaisderivaatat saadaan laskettua. Nimi vastavirta-algoritmi tulee siitä, että osittaisderivaattoja lasketaan takaperoisesti ulostuloskerroksesta syöttökerrosta kohti "vastavirtaan".

# osittaisderivaatat-piilokerroksen-painojen-w_ijl-suhteen

Osittaisderivaatat piilokerroksen painojen suhteen

Lasketaan virhefuntion osittaisderivaatat piilokerroksen painojen suhteen Huomatuksen tyylillä. Lasku on teknisesti hieman haastavampi sillä paino, jonka suhteen osittaisderivoidaan, vaikuttaa virheeseen yhden tai useamman piilokerroksen kautta. Siksi laskussa tarvitaan tavallisen ketjusäännön lisäksi osittaisderivaattojen ketjusääntöä. Käytetään tässäkin merkintää kerroksen neuroniin liittyvälle virheelle.

Ketjusääntöä ja kaavaa käyttäen saadaan Osittaisderivaattojen ketjusäännön, ketjusäännön ja kaavojen ja perusteella on ja siten

Osittaisderivaatat piilokerroksen vakiokertoimien suhteen

Samaan tapaan kuin painojen tapauksessa saadaan ja

# huomioita-osittaisderivaattojen-kaavoista

Huomioita osittaisderivaattojen kaavoista

Kaavasta nähdään, että jos edellisen kerroksen syöte on pieni, niin kerroksen painoa vastaava virheen osittaisderivaatta on pieni. Tällaiset painot muuttuvat vastavirta-algoritmin aikana vähän, monesti sanotaan, että ne oppivat hitaasti.

Kaavoista nähdään myös, että aktivointifunktion derivaatat vaikuttavat virheen osittaisderivaattoihin ja siten neuroneiden parametrien muutokseen. Jos derivaatta on hyvin pieni, niin parametrit muuttuvat vähän ja neuronit oppivat hitaasti. Tästä syystä verkon käyttötarkoitukseen sopivan virhefunktion valinta on tärkeää.

Verkon eri kerroksissa voidaan käyttää eri aktivointifunktioita. Jos näin on, niin äskeisissä laskuissa ja kaavoissa aktivointifunktioon lisätään verkon kerrosta vastaavat alaindeksit .

2.4.2 Harjoitustehtäviä

  1. Laske virhefunktion osittaisderivaatat piilokerroksen painojen suhteen samaan tapaan kuin ulostulokerroksen osittaisderivaatat. Mieti, mitkä painoista vaikuttavat ulostuloon .

  2. Koodissa on kätevää ja nopeaa käyttää vastavirta-algoritmin kaavojen vektori- ja matriisiversioita. Lue näistä esimerkiksi linkkilistan lähteestä. Lähteessä pohditaan myös sitä, miksi vastavirta-algoritmi on paljon nopeampi tapa laskea tarvittavat osittaisderivaatat kuin osittaisderivaattojen erotusosamäärien raja-arvomääritelmään pohjautuva tapa.

  3. Tarkastellaan neuroverkkoa, jonka syöte on , jossa ei ole piilokerroksia, jonka ulostulokerroksessa on yksi neuroni ja jonka ulostulokerroksen aktivointifunktio on derivoituva funktio . Käytetään syöte-tavoiteparin ja verkon antaman tuloksen vertailuun virhefunktiota Laske virhefunktion osittaisderivaatat painojen , ja suhteen.

# lisƤtietoa-vastavirta-algoritmista

Lisätietoa vastavirta-algoritmista

Vastavirta-algoritmista löytyy paljon monentasoista luettavaa, esimerkkejä ja koodia. Osassa selitetään matemaattinen tausta ja painojen muutoksen vaikutus verkon toimintaan hyvin, osan selitys on turhan monimutkaista. Kaavoissa indeksien käyttö on monesti epämatemaattista (osittaisderivaatan indeksit ja summausindeksit samoja).

# gradienttimenetelma

2.4.3 Gradienttimenetelmä (gradient descent)

Tavoitteena on minimoida verkon parametreista riippuvaa virhefunktiota eli syötteiden ja verkon antamien tulosten välistä virhettä. Virhefunktio on monen muuttujan (kaikkien neuronien painojen ja vakiotermien) funktio, jolle etsitään pienintä arvoa.

Matemaattisen analyysin keinoin monen muuttujan funktion ääriarvoja etsitään riittävän siistille funktiolle gradientin nollakohdista ja niistä pisteistä, joissa funktiolla ei ole osittaisderivaattaa.

Gradientin nollakohtien etsimisen sijaan virhefunktion minimoinnissa käytetään erilaisia algoritmeja kuten gradienttimenetelmää. Siinä minimin etsiminen aloitetaan laskemalla tarkasteltavan funktion arvo aloitusparametreilla. Funktion gradientti kertoo nopeimman kasvun ja siten gradientin vastavektori nopeimman vähenemisen suunnan. Sopivilla askelilla nopeimman vähenemisen suuntaan siirtymällä löydetään (menetelmään sopiville funktioille) lokaali minimi.

Minimin etsimistä gradienttimenetelmällä havainnollistetaan usein yhden tai kahden muuttujan funktiolla. Kahden muuttujan tilanteessa funktion kuvaajan voi ajatella kumpuilevaksi maastoksi, missä rinteellä seisova ihminen haluaa mennä laakson pohjalle jyrkkyydestä välittämättä. Gradienttimenetelmän keinolla alas mennään vähän matkaa jyrkintä rinnettä (gradientin vastavektorin suuntaan), pysähdytään ja valitaan taas jyrkin suunta. Näin jatketaan, kunnes päästään laakson pohjalle. Huomaa, että jos maastossa on useita laaksoja, niin liian pitkä siirtymä yhteen suuntaan voi johtaa väärän laakson pohjalle.

# verkon-opettamisen-vaiheet

Verkon opettamisen vaiheet

Vastavirta-algoritmia ja gradienttimenetelmää käytettäessä suoritetaan seuraavat tehtävät:

  1. Syötetään opetusesimerkkijoukon kaikki opetusesimerkit verkolle.

  2. Kaikille opetusesimerkeille :

  • Lasketaan vastavirta-algoritmissa tarvittavat neuronikohtaiset summat ja ulostulot .

  • Lasketaan syötettä vastaavan virhefunktion osittaisderivaatat vastavirta-algoritmin avulla (ensin ulostulokerroksen painojen ja vakiotermien suhteen, sitten kerros kerrallaan alaspäin).

  1. Korjataan neuronien parametrit gradienttimenetelmän avulla. Matriisi- ja vektorimuodossa ilmoitettuna uudet parametrit ovat missä on verkon oppimisnopeus ja opetusesimerkkijoukon alkioiden lukumäärä.

Huomaa, että jos opetusesimerkkijoukko koostuu yhdestä syötteestä, niin yksittäisten neuronien uudet painot vastavirta-algoritmin jälkeen ovat

Gradienttimenetelmän eri versioita

(Satsi)gradienttimenetelmä (Gradient descent/ batch gradient descent/ vanilla gradient descent)

Perinteisessä gradienttimenetelmässä yksittäistä opetusesimerkkiä vastaava virhe lasketaan jokaisen opetusesimerkin jälkeen ja minimoitavana virhefunktiona käytetään opetusesimerkkien virheiden summaa missä on opetusesimerkkijoukon alkioiden lukumäärä. Verkon parametrit päivitetään vasta, kun koko opetusesimerkkijoukko on käyty läpi. Jos parametrit laitetaan jonoon ja niistä muodostetaan vektori , niin päivitetyt parametrit ovat missä on verkon oppimisnopeus ja virhefunktion osittaisderivaatat parametrien suhteen ovat gradientissa samassa järjestyksessä kuin parametrit vektorissa .

Gradienttimenetelmässä koko opetusesimerkkijoukon tiedot ovat kerralla muistissa, ja verkko saattaa oppia hitaasti isoilla opetusesimerkkijoukoilla. Päivityksiä on vähän, joten menetelmä on virheen pienenemisen suhteen vakaa mutta se saattaa supeta liian aikaisin ja huonommilla parametreilla kuin stokastinen versio. Gradienttimenetelmällä löydetään globaali minimi konvekseille virhefunktioille (harvinainen tilanne) ja lokaali minimi ei-konvekseille virhefunktioille.

Stokastinen gradienttimenetelmä

Stokastisessa gradienttimenetelmässä virhe lasketaan ja neuronien parametrit päivitetään jokaisen opetusesimerkkijoukon syötteen jälkeen. Tällä menetelmällä saadaan nopea tieto verkon oppimisesta, sillä verkko oppii koko ajan. Menetelmä on helppo ymmärtää ja toteuttaa. Tiheä päivittäminen on kuitenkin hidasta, parametrien arvot saattavat heilua paljon päivittämisen aikana ja häiriöherkkyys voi hidastaa virhefunktion lokaalin minimin löytymistä. Joissain tilanteissa heiluminen on etu tavalliseen gradienttimenetelmään verrattuna - stokastinen versio saattaa päätyä pienempään lokaaliin minimiin.

Minisatsi gradienttimenetelmä (mini batch gradient descent)

Satsigradienttimenetelmä on perinteisen ja stokastisen gradienttimenetelmän välimuoto. Siinä opetusesimerkkijoukko jaetaan osajoukkoihin, jotka syötetään verkolle, lasketaan virhefunktio ja päivitetään parametrit. Tämä vähentää parametrien heiluntaa päivityksissä ja mahdollistaa paremman ja vakaamman suppenemisen lokaaliin minimiin kuin toisilla versioilla. Menetelmässä voidaan käyttää ohjelmakirjastojen tehokkaita lineaarialgebran laskurutiineja.

# virhefunktiot

2.4.4 Virhefunktiot

Verkon oppimisen kannalta on tärkeää, että pieni muutos neuronin painossa aiheuttaa vain pienen muutoksen ulostulossa. Vastavirta-algoritmin vaiheita tutkiessa huomataan, että jos opetusesimerkkijoukon virhe saadaan keskiarvona yksittäisten opetusesimerkkien virheistä, niin opetusesimerkkijoukon virheen osittaisderivaatat saadaan laskettua opetusesimerkkien virheiden avulla.

Vastavirta-algoritmin yhteydessä käytettiin yksittäisen syötteen tuloksen ja verkon antaman tuloksen välisenä virheenä erotuksen euklidisen normin neliötä ja opetusesimerkkijoukon virhefunktiona keskineliösummaa. Jos ulostulokerroksen arvot kuuluvat välille , niin voidaan käyttää myös logistisen regression virhefunktiota (ristientropian virhefunktio, cross-entropy cost function), missä vektorit ovat syötteiden tavoitteita ja vektorit verkon antamia tuloksia ja on opetusesimerkkijoukon koko.

Laskemalla nähdään, että Sigmoid-aktivointifunktiota käytettäessä tämän virhefunktion osittaisderivaatat neuroneiden painojen ja vakiotermien suhteen eivät riipu aktivointifunktion derivaatoista vaan pelkästään tavoitteiden ja tulosten erotuksista, ja Siksi Sigmoid-funktion derivaatan pienuus suurilla ja pienillä arvoilla ei hidasta verkon oppimista niissä tapauksissa, joissa tavoitteet erovat paljon syötteistä.

Joissain lähteissä syöte-tavoite-parin välisistä virhefunktioista käytetään nimeä tappiofunktio (loss function) ja opetusesimerkkijoukon virhefunktiosta virhefunktio/maksufunktio (cost function).

2.4.5 Yli- ja alisovittaminen (Overfitting/underfitting)

Neuroverkon ja yleisemmin koneoppimisen opettaminen suoritetaan opetusesimerkkien avulla, (toiminta varmistetaan ja oppimisnopeus- ja muita hyperparametreja säädetään vahvistusesimerkkijoukon (validation data) avulla) ja testataan testiesimerkkijoukolla. Tarkoitus on, että verkko osaa yleistää oppimansa ja toimii lopulta riittävän tarkasti tuntemattomalle datalle. Joskus käy niin, että verkko tuntuu oppivan hyvin mutta sitten tulee ongelmia:

  • Opettamisen edetessä virhefunktion pieneneminen hidastuu tai tarkkuus huononee.
  • Verkko toimii hyvin opetusesimerkeille mutta ei (opetusesimerkkien kaltaisille) vahvistus- tai testiesimerkeille.

Tätä ilmiötä sanotaan ylisovittamiseksi (overfitting). Siinä verkko on oppinut opetusesimerkkijoukon liian hyvin ja säätänyt parametrinsa sen erityisominaisuuksien ja häiriöiden mukaan. Ylisovittaminen on yleinen ongelma suurissa tuhansien parametrien neuroverkoissa joissa opetusesimerkkijoukko ei ole ole riittävän suuri suhteessa verkon kokoon.

Ylisovittamista voidaan estää seuraavilla tavoilla:

  • opetusesimerkkijoukon kasvattaminen
  • (verkon koon pienentäminen)
  • opettamisen lopettaminen riittävän aikaisin (early stopping)
  • neuroneiden osittainen poistaminen verkosta (dropout layer)
  • painojen pienentämien L2- ja L1- säännöstelyllä (regularization)
Opetusesimerkkijoukon kasvattaminen

Opetusesimerkkijoukon koon kasvattaminen saattaa olla vaikeaa mutta joissain tilanteissa kokoa voi kasvattaa olemassaolevan datan avulla. Esimerkiksi uusia tunnistettavia kuvia saadaan helposti kiertojen, siirtojen ja skaalauksen avulla.

Aikainen lopettaminen

Verkon toimintaa testattaessa vahvistusesimerkkijoukolla opetusesimerkkijoukon jälkeen tarkastetaan tulosten tarkkuus jokaisen osajoukon jälkeen. Kun tarkkuus pienenee, lopetetaan.

Osittainen poistaminen

Yksi tapa pienentää ylisovittamista on neuroneiden hetkellinen poistaminen verkosta. Tässä tekniikassa osa piilokerrosten neuroneista poistetaan väliaikaisesti. Vajaaseen verkkoon syötetään opetusesimerkkejä, käytetään vastavirta-algoritmia ja päivitetään verkon parametrit. Tämän jälkeen poistetut neuronit palautetaan, poistetaan uusi neuronijoukko ja jatketaan opettamista. Menetelmässä jälkeen verkko on tavallaan keskiarvo monesta samaa tehtävää tekevästä verkosta. Koska neuroneiden lähellä olevat neuronit eivät välttämättä ole mukana jokaisella opetuskierroksella niin neuroneista tulee itsenäisempiä ja verkosta robustimpi.

Säännöstely

Virhefunktion muuttaminen niin, että minimi löytyy pienillä painoilla perustuu siihen, että monesti verkot toimivat itseisarvoiltaan pienillä painoilla paremmin kuin suurilla. Säännöstelyssä virhefunktiota muutetaan niin, että minimi löytyy pienemmillä painoilla.

Jos verkossa on käytössä virhefunktio , niin L2-säännöstelyn virhefunktio on missä on opetusesimerkkijoukon koko, ovat neuroneiden painot ja on säännöstelyparametri. Neuroneiden vakiotermejä ei oteta mukaan säännöstelyosaan.

Virhefunktion jälkimmäinen osa on pieni kun painot ovat itseisarvoltaan pieniä. Minimoinnissa suuret painot ovat vain jos niillä saadaan alkuperäinen virhefunktio hyvin pieneksi.

Virhefunktion osittaisderivaatat painojen suhteen ovat ja vakiotermien suhteen samat kuin alkuperäisellä virhefunktiolla . Siten gradienttimenetelmän antamat uudet painot saadaan kaavalla missä on verkon oppimisnopeus.

Säännöstelyssä yritetään siis samanaikaisesti käyttää mahdollisimman pieniä painoja ja saada virhefunktio pieneksi.

L1-säännöstelyssä käytetään painojen neliöiden sijaan itseisarvoja. Virhefunktio on missä on alkuperäinen virhefunktion, on opetusesimerkkijoukon koko, ovat neuroneiden painot ja on säännöstelyparametri.

Virhefunktion osittaisderivaatat painojen suhteen ovat missä , kun , , kun ja nolla kun paino on nolla. Vakiotermien suhteen osittaisderivaatat ovat samat kuin alkuperäisellä virhefunktiolla .

Gradienttimenetelmän antamat uudet painot saadaan kaavalla missä on verkon oppimisnopeus.

L1-säännöstelyssä painot pienenevät askelilla, joiden pituus ei riipu painon koosta. L2-säännöstelyssä askeleen koko on paino kerrottuna vakiolla.

Alisovittamisessa verkon parametrit päivittyvät hyvin hitaasti ja verkko oppii huonosti.

2.4.6 Muita virhefunktion minimointikeinoja

Vastavirta-algoritmi ja muut osittaisderivaattoihin (gradientteihin) perustuvat menetelmät ovat monesti hitaita. Vastavirta-algoritmin tapauksessa hitaus johtuu paljosta laskemisesta: neuronien parametrien muutoksessa tarvittavia osittaisderivaattoja lasketaan koko ajan iteratiivisesti. Vastavirta-algoritmin erilaisilla muunnoksilla ja muilla verkon opetusmenetelmillä haetaan lisää nopeutta. Osassa menetelmiä käytettään ensimmäisen kertaluvun osittaisderivaattojen lisäksi toisen kertaluvun derivaattoja, joiden avulla saadaan tietoa ensimmäisen kertaluvun osittaisderivaattojen kasvusta.

3. Matematiikkaa

# analyysia

3.1 Analyysia

Tässä luvussa käydään läpi koneoppimisessa käytettävien menetelmien taustalla olevaa matemaattista analyysia ilman perinteistä määritelmä, lause, todistus-rakennetta. Aiheesta löytyy lisätietoa, esimerkkejä ja tehtäviä lukemattomista Calculus-nimisistä kirjoista.

Neuroverkkoja käsiteltäessä tarvitaan perustietoja funktioista ja niiden ominaisuuksista. Gradientteihin perustuvissa verkon opetusmenetelmissä kuten vastavirta-algoritmissa tarvitaan esimerkiksi monen muuttujan funktioiden osittaisderivaattoja laskusääntöineen ja jonkin verran ääriarvoteoriaa.

3.1.1 Funktio

Olkoot ja joukkoja. Funktio eli kuvaus joukosta joukkoon on sääntö, joka liittää jokaiseen joukon alkioon täsmälleen yhden joukon alkion .

Joukkoa sanotaan funktion lähtöjoukoksi (domain) ja joukkoa maalijoukoksi (target set). Tällaista funktiota merkitään Alkiota sanotaan alkion kuvaksi tai funktion arvoksi pisteessä . Joukko on funktion arvojoukko/kuvajoukko (range).

Jos , niin joukon alkukuva kuvauksessa on joukko

Joukko on -ulotteinen euklidinen avaruus. Sen alkiot ovat vektoreita , missä kaikilla .

Euklidisen avaruuden väli on karteesinen tulo reaaliakselin väleistä , , missä väli voi olla muotoa (suljettu), (avoin), tai . Väli on avoin/suljettu, jos kaikki välit ovat avoimia/suljettuja. Jos ja kaikilla , niin väli on .

Pisteiden ja välistä etäisyyttä mitataan euklidisesta normista saatavalla metriikalla

Tällä kurssilla käsitellään funktioita , missä on väli.

Funktion kuvaaja eli graafi on joukko ja reaalilukujen alkukuvat ovat funktion tasa-arvojoukkoja, joita tapauksessa kutsutaan myös tasa-arvokäyriksi. Tasa-arvokäyriä käytetään funktion graafien piirtämiseen ja funktion kasvuvauhdin ja -suunnan tutkimiseen gradientin avulla. Topografisen kartan korkeuskäyrät ovat korkeusfunktion tasa-arvokäyriä. Tasa-arvokäyriä määritettäessä voi ensin piirtää käyrät kolmiulotteiseen tasoon. Nämä käyrät saadaan tasojen ja funktion kuvaajan leikkauksina. Vastaavat tasa-arvokäyrät saadaan käyrien projektioina -tasoon.

Esimerkki

Olkoon , . Funktion kuvaaja on ylöspäin aukeava paraboloidi, jonka huippu on origossa. Kun , niin tasa-arvokäyrät ovat ympyröitä, joiden keskipiste on origo ja säde . (Jos , niin tasa-arvokäyrät ovat tyhjiä joukkoja sillä kaikilla .)

# geo

3.1.2 Harjoitustehtäviä

  1. Piirrä funktion , kuvaaja ja tasa-arvokäyrät.

  2. Piirrä funktion , kuvaaja ja tasa-arvokäyrät.

  3. Piirrä funktion , kuvaaja ja tasa-arvokäyrät.

  4. Yhdistä funktioiden kuvaajat ja tasa-arvokäyrät.

# affiini-funktio

Affiini funktio

Neuroverkon piilo- ja ulostulokerroksen neuroneissa lasketaan edellisestä kerroksesta tulleiden syötteiden painotettu summa ja lisätään siihen vakiotermi. Jokaista neuronia vastaa siis affiini funktio, joka viedään aktivointifunktiolle.

Olkoon -matriisi ja . Funktio , missä on matriisin ja vektorin tulo, on affiini funktio.

Affiini funktio voi kääntää, skaalata ja siirtää joukkoa. Se säilyttää joitakin geometrisia ominaisuuksia sillä se kuvaa suorat suoriksi, yhdensuuntaiset suorat yhdensuuntaisiksi ja säilyttää janojen osien suhteet. Kuvaus siis kuvaa pistejoukon uudelleen kääntäen, venyttäen, siirtäen joukon paikkaa tai skaalaten joukon kokoa. Jos , niin affiini funktio on lineaarikuvaus. Jos , niin , joten kuvaus ei ole lineaarinen. Huomaa, että monissa lähteissä affiinia funktiota sanotaan virheellisesti lineaariseksi.

Affiini funktio on yhdistetty funktio lineaarikuvauksesta , ja siirrosta , .

Esimerkki

Jos , niin affiinin funktion , kuvaaja on suora, jonka kulmakerroin on ja joka leikkaa -akselin pisteessä .

# kasvava-ja-vƤhenevƤ-funktio

Kasvava ja vähenevä funktio

Olkoon väli ja olkoon funktio. Jos aina kun , niin funktio on kasvava (increasing). Jos aina kun , niin funktio on vähenevä (decreasing).

Esimerkki

Funktio , on kasvava väleillä ja . Se on vähenevä välillä .

# yhdistetty-funktio

Yhdistetty funktio

Neuroverkkojen neuroninin syöte seuraavalle kerrokselle saatiin laskemalla painotettu summa edellisen kerroksen syötteistä, lisäämällä siihen neuronin vakiotermi ja viemällä summa aktivointifunktiolle . Tässä on kyse yhdistetystä funktiosta: aktivointifunktion arvo lasketaan summafunktion antamassa pisteessä. Yleisesti yhdistetty funktio määritellään seuraavasti.

Olkoot , ja joukkoja. Olkoot ja funktioita. Yhdistetty funktio (composite function) on funktio ,

Esimerkki

Olkoot , ja . Näiden funktioiden yhdistetty funktio on ,

3.1.3 Derivaatta

Vastavirta-algoritmissa laskettavissa virhefunktion osittaisderivaatoissa tarvitaan aktivointifunktion derivaattaa ja derivoinnin ketjusääntöä. Verkon oppimisen tarkastelussa on hyvä olla käsitys siitä, mitä derivaatta kertoo funktiosta: lähellä nollaa oleva derivaatta kertoo, että funktion arvot muuttuvat hitaasti ja derivaatan suuri itseisarvo kertoo, että funktio muuttuu nopeasti.

Funktion derivaatta määritellään erotusosamäärien raja-arvona. Tarkastellaan, paljonko funktion arvo muuttuu kun pistettä siirretään vähän, pienen luvun verran, joko oikealle tai vasemmalle. Muutosta tutkitaan keskimääräisenä muutoksena eli erotusosamääränä, jossa funktion arvojen erotus jaetaan siirtymällä ,

Geometrisesti tulkittuna erotusosamäärä kertoo pisteiden ja kautta kulkevan suoran eli näiden pisteiden kautta kulkevan sekantin kulmakertoimen. Image

Jos tällä erotusosamäärällä on äärellinen raja-arvo kun muutos lähestyy nollaa, niin kyseinen raja-arvo on funktion derivaatta (derivative) pisteessä ,

ja sanotaan, että on derivoituva (differentiable) pisteessä . Funktio on derivoituva, jos se on derivoituva jokaisessa pisteessä.

Huomautus
  • Erotusosamäärässä siirtymä voi olla myös negatiivinen.

  • Edellä määriteltiin derivaatta koko reaaliakselilla määritellyille funktioille. Jos on määritelty avoimella välillä , niin erotusosamäärää tutkittaessa otetaan mukaan pisteet ja ne siirtymät, joille .

  • Funktion derivaatalle käytetään monesti derivointimuuttujan sisältävää merkintää tai . Leibniziltä peräisin olevassa merkinnässä erotusosamäärää merkitään ja derivaattaa

# tangenttitulkinta

Tangenttitulkinta

Geometrisesti tulkittuna funktion derivoituvuus pisteessä kertoo, että funktion kuvaajalle voidaan piirtää pisteeseen yksikäsitteinen tangentti, jolla on äärellinen kulmakerroin. Derivaatan arvo on tangentin kulmakerroin ja tangentin yhtälö on missä .

Pisteessa derivoituvalle funktiolle muutoksen pienentyessä erotusosamääriä vastaavien sekanttien kulmakertoimien raja-arvo on siis tangentin kulmakerroin ja sekantit lähestyvät tangenttia. Mitä suurempi kulmakerroin on, sitä jyrkempi tangentti on. Positiivisilla kulmakertoimilla suora on nouseva ja negatiivisilla laskeva.

# geo2

Tangenttitulkinnalla on helppo huomata, että pisteessä epäjatkuva funktio ei ole derivoituva. Sen kuvaajalle ei voi piirtää tangenttia epäjatkuvuuskohdassa. Jos tangentti on pystysuora, sillä ei ole äärellistä kulmakerrointa, eikä funktio ole derivoituva kyseisessä pisteessä.

Esimerkki

Tarkastellaan itseisarvofunktiota , . Tangenttitulkinnan avulla voidaan päätellä, että ei ole derivoituva pisteessä . Itseisarvofunktion kuvaajalla ei ole pisteessä yksikäisytteistä tangenttia vaan niitä on äärettömän monta. (Samaan tapaan voi päätellä, että funktio, jonka kuvaajassa on kärki, ei ole derivoituva kärkeä vastaavassa pisteessä.)

Erotusosamäärää tutkittaessa huomataan, että nollassa vasemman- ja oikeanpuoleinen raja-arvo ovat erisuuret eli raja-arvoa ei ole olemassa. Kun , niin ja kun , niin Siten ei ole derivoituva nollassa.

# derivoituvien-funktioiden-ominaisuuksia

Derivoituvien funktioiden ominaisuuksia

Derivoituvilla funktioilla on seuraavia hyviä ominaisuuksia, joita ei todisteta tässä.

Olkoot ja derivoituvia funktioita ja .

  • Summa , vakiolla kerrottu funktio , tulo ja osamäärä ovat derivoituvia ja missä osamäärän derivaatta on olemassa niissä pisteissä, joissa .

  • Jos on derivoituva pisteessä , niin se on jatkuva pisteessä .

# joidenkin-funktioiden-derivaattoja

Joidenkin funktioiden derivaattoja

  • , kaikilla ,

  • ,

  • , ja ,

  • , kun .

Lause (Ketjusääntö)

Olkoot ja derivoituvia funktioita. Yhdistetetty funktio on derivoituva ja kaikilla .

Leibnizin derivaattamerkintä on joskus kätevä yhdistetyn funktion derivaattojen yhteydessä. Merkitään , ja . Funktioiden ja derivaatat Leibnizin merkinnöin ovat ja . Ketjusääntö tässä muodossa on

Esimerkki

Olkoon , Funktio on yhdistetty funktio kolmesta funktiosta , ja . Ketjusääntöä kahteen kertaan käyttämällä saadaan

# derivaatta-ja-funktion-kƤyttƤytyminen

Derivaatta ja funktion käyttäytyminen

Derivaatan merkki ja suuruus kertoo paljon funktion käyttäytymisestä. Jos funktion derivaatta on positiivinen avoimella välillä, niin funktio on kasvava tällä välillä. Jos derivaatta on negatiivinen jollain avoimella välillä, niin funktio on vähenevä. Derivaatta on nolla jos tangentin kulmakerroin on nolla eli tangentti on -akselin suuntainen.

Jos funktio saavuttaa pisteessä suurimman tai pienimmän arvonsa, niin tässä pisteessä on . Huomaa, että derivaatta voi olla nolla vaikka piste ei olisikaan funktion ääriarvopiste.

Esimerkki

Olkoon , Funktion derivaatta on . Derivaatan nollakohdat ovat ja . Derivaatan merkkiä tutkimalla nähdään, että on kasvava väleillä ja ja että se on vähenevä välillä .

# geo3

3.1.4 Harjoitustehtäviä

  1. Olkoot . Laske vakiofuntion , kaikilla ja affinin funktion , kaikilla , derivaatat erotusosamäärän avulla.

  2. Todista joku derivaatan laskusääntö ominaisuuksia -kohdasta.

# reaalifunktion-ƤƤriarvoista

Reaalifunktion ääriarvoista

Funktion suurimman tai pienimmän arvon etsiminen on optimointitehtävä, jonka ratkaisemisessa hyödyllisiä työkaluja ovat derivaatta ja raja-arvot.

Olkoon väli ja olkoon funktio. Olkoon .

  • Jos kaikilla , niin on funktion maksimipiste ja (globaali) maksimi eli suurin arvo.

  • Jos kaikilla , niin on funktion minimipiste ja (globaali) minimi eli pienin arvo.

Suurinta ja pienintä arvoa kutsutaan yhteisellä nimellä globaalit ääriarvot. Globaalien ääriarvojen lisäksi voidaan tutkia funktion käyttäytymistä pisteen lähellä ja määritellä funktion lokaalit eli paikalliset ääriarvot.

  • Jos on , siten, että kaikilla , niin on funktion lokaali maksimipiste ja lokaali maksimi eli suurin arvo.

  • Jos on , siten, että kaikilla , niin on funktion lokaali minimipiste ja lokaali minimi eli pienin arvo.

Huomaa, että funktiolla ei aina ole suurinta ja pienintä arvoa. Esimerkiksi funktio , , on rajoittamaton ja ja ja kaikilla . Siten funktiolla ei ole suurinta eikä pienintä arvoa. Suljetulla välillä määritellyille jatkuville funktioille ääriarvot ovat aina olemassa.

Lause (Ääriarvolause)

Olkoon jatkuva funktio. Tällöin funktio saavuttaa välillä suurimman ja pienimmän arvonsa.

Funktion derivaatta, mikäli se on olemassa, on hyödyllinen työkalu ääriarvojen etsimisessä. Derivaatan määritelmän avulla on helppo näyttää, että jos funktiolla on lokaali ääriarvo pisteessä ja on derivoituva pisteessä , niin . Suljetulla välillä määritellyn funktion ääriarvoja etsittäessä riittää siis selvittää funktion arvo niissä pisteissä, joissa derivaatta on nolla, niissä pisteissä, joissa derivaattaa ei ole olemassa ja välin päätepisteissä. Derivaatan nollakohtia ja pisteitä, joissa derivaattaa ei ole olemassa, sanotaan kriittisiksi pisteiksi (critical points). Muulla kuin suljetulla välillä määritellylle funktiolle pitää tutkia funktion käyttäytymistä välin päätepisteissä esimerkiksi raja-arvojen avulla.

Esimerkki

Edellisen esimerkin funktion derivaatan nollakohdat antavat lokaalit ääriarvot. Nollakohdista on lokaali maksimipiste ja lokaali minimipiste. Koska , niin funktiolla ei ole globaaleja ääriarvoja.

Esimerkki

Derivaatta voi olla nolla, vaikka nollakohta ei olisikaan ääriarvopiste. Funktiolle on ja funktio ei ole derivoituva nollassa, joten on molempien funktioiden kriittinen piste. Se ei kuitenkaan ole ääriarvopiste sillä ja kun ja ja kun . Funktioilla ei ole globaaleja ääriarvoja sillä . Jos rajoitutaan suljetulle välille , niin on molempien funktioiden globaali minimipiste ja globaali maksimipiste.

3.1.5 Harjoitustehtäviä

  1. Etsi funktion , ääriarvot. Etsi funktion ääriarvot välillä .
# lisƤtietoa-derivaatoista

Lisätietoa derivaatoista

3.1.6 Osittaisderivaatat ja gradientti

Verkkoa opetettaessa minimoidaan virhefunktiota, jonka arvo riippuu verkon parametreista eli neuronien painoista ja vakiokertoimista. Virhefunktio on siis funktio useampiulotteisesta avaruudesta reaaliluvuille, , missä on verkon parametrien lukumäärä. Useammasta kuin yhdestä parametrista riippuvan funktion ääriarvojen etsiminen on yhden muuttujan funktion minimiointia/maksimointia haastavampi tehtävä. Lausetta vastaava ääriarvolause on totta korkeampiulotteisessakin tilanteessa: kompaktissa (suljettu ja rajoitettu) joukossa jatkuva funktio saavuttaa suurimman ja pienimmän arvonsa.

Useamman muuttujan funktion osittaisderivaatta kertoo, miten funktio muuttuu yhden muuttujansa funktiona. Osittaisderivaatta saadaan pitämällä muita muuttujia vakiona ja laskemalla derivaatta tutkittavan muuttujan suhteen kuten tavallinen derivaatta kaavassa.

Osittaisderivaatta

Olkoon , olkoon ja olkoon . Jos erotusosamäärällä on äärellinen raja-arvo, niin se on funktion . osittaisderivaatta eli osittaisderivaatta muuttujan suhteen pisteessä ,

# osittaisderivaattojen-geometrinen-tulkinta

Osittaisderivaattojen geometrinen tulkinta

Tarkastellaan osittaisderivaattojen geometrista tulkintaa kahden muuttujan funktiolle . Olkoon . Pystysuoran tason ja funktion kuvaajan muodostaman pinnan leikkaus on käyrä Tämä käyrä on funktion kuvaaja tasossa . Funktion osittaisderivaatta muuttujan suhteen pisteessä on käyrän tangentin kulmakerroin pisteessä . Osittaisderivaatta antaa siis funktion arvojen muutosvauhdin muuttujan suhteen kun muuttuja pidetään vakiona.

Esimerkki

Olkoon , . Funktion osittaisderivaatat ovat Kuva havainnollistaa osittaisderivaattaa pisteessä . Äskeisen tulkinnan taso ja ja tangentin kulmakerroin pisteessä on .

# geo4

Yhden muuttujan funktiolle derivaatta on kuvaajan tangentin kulmakerroin. Tasossa määritellylle funktiolle osittaisderivaatat ja ovat kuvaajan tangenttitason kaltevuuskertoimia. Olkoon . Funktion kuvaajan tangenttitaso pisteessä saadaan yhtälöstä

Funktion kuvaajan tangenttitaso pisteessä on taso, joka sisältää kaikki ne pisteen kautta kulkevat suorat, jotka ovat tangentteja jollekin kuvaajalla sijaitsevalle pisteen kautta kulkevalle käyrälle. Tangenttitaso sivuaa kuvaajaa pisteessä ja kaikista pisteen kautta kulkevista tasoista se on se, jolla on pisteessä samat osittaisderivaatat kuin funktiolla .

Esimerkki

Olkoon , Etsitään funktion tangenttitaso pisteessä (ja kerrataan samalla trigonometrisia funktioita). Nyt , joten ja Siten tangenttitaso pisteessä saadaan yhtälöstä

# geo5

3.1.7 Harjoitustehtäviä

  1. Olkoon , Laske funktion osittaisderivaatat ja pisteessä . Piirrä kuvia.

  2. Olkoon ,
    Laske funktion osittaisderivaatat ja .

  3. Olkoon , Määritä funktion kuvaajan tangenttitaso pisteessä .

Onko 3. tehtävän funktio f(x,y)=x cos (y-ye^x) vai f(x,y) = x cos (y) -ye^x ?

06 May 18

siis mikä on olevinaan piste (0,0,f(0,0)) ?

08 Jun 18
  1. tehtävässä ei ole sulkuja, joten jälkimmäinen vaihtoehto. f on kahden muuttujan funktio, jolle f(0,0)=0-0=0. Piste on siis (0,0,0).
05 Sep 18

Gradientti ja sen geometrinen tulkinta

Olkoon funktio, jolla on osittaisderivaatat kaikkien muuttujien , suhteen. Osittaisderivaatoista muodostettu vektori on funktion gradientti.

Funktion gradientti voidaan ajatella funktioksi , Tällaista funktiota voidaan havainnollistaa vektorikentällä, jossa jokaiseen tason pisteeseen piirretään vektori, jonka suunta ja pituus saadaan funktion arvosta kyseisessä pisteessä. Monesti pituus skaalataan tai ilmaistaan väreillä.

Esimerkki

  • Olkoon , . Funktion gradientti on

  • Olkoon , . Funktion gradientti on

Funktioiden ja gradientteja voidaan havainnollistaa vektorikentillä.

Osittaisderivaatat kertovat funktion kasvunopeuden koordinaattiakseleiden suuntiin ja funktion gradientti pisteessä kertoo suunnan, johon funktio kasvaa nopeimmin. Gradientin pituus eli vektorin normi kertoo funktion kasvuvauhdin. Se, että gradientti antaa nopeimman kasvun suunnan, todistetaan suuntaisderivaattojen avulla. (Ne määritellään samaan tapaan kuin osittaisderivaatat mutta erotusosamäärässä käytetään kantavektoreiden sijaan vektoria , jonka suuntaan funktion kasvunopeus halutaan määrittää.)

Gradientin geometrisessa tulkinnassa käytetään vektorikentän lisäksi apuna tasa-arvokäyriä.

Esimerkki

Esimerkistä tutun funktion , tasa-arvokäyrät ja gradienttien vektorikenttä piirrettynä samaan kuvaan.

Esimerkin kuvassa funktion gradienttivektorit ovat kohtisuorassa tasa-arvokäyriä vastaan. Tämä ei ole sattumaa vaan gradienttivektorit ovat aina kohtisuorassa tasa-arvojoukkoja vastaan. Funktioiden tapauksessa tätä ominaisuutta voi pohtia seuraavasti: olkoon funktion jokin tasa-arvokäyrä ja olkoon piste tällä käyrällä. Halutaan, että funktion arvo kasvaa annetun määrän ja etsitään suuntaa, jossa tämä muutos saavutetaan siirtämällä pistettä vähiten. Pienin siirto tulee siihen suuntaan, jossa isompia arvoja vastaavat tasa-arvokäyrät ovat tiheimmässä. Toisaalta gradientti osoittaa suurimman kasvunopeuden suuntaan. Pienessä mittakaavassa katsottuna eli pienellä arvon lisäyksellä tasa-arvokäyrät ovat suoria ja kahden samansuuntaisen suoran välisen lyhimmän matkan antaa suora, joka on kohtisuorassa edellisiä suoria vastaan.

# ƤƤriarvoista

Ääriarvoista

Neuroverkkoa koulutettaessa halutaan minimoida monesta parametrista riippuvaa virhefunktiota. Yhden muuttujan funktioiden ääriarvojen etsiminen derivaatan nollakohtien avulla yleistyy useamman muuttujan funktion tilanteeseen niin, että mahdolliset ääriarvopisteet ovat ne pisteet, joissa kaikki osittaisderivaatat ovat nollia.

Olkoon väli.

  • Jos on , siten, että kaikilla , joille , niin on funktion lokaali maksimipiste ja lokaali maksimi eli suurin arvo.

  • Jos on , siten, että kaikilla , joille , niin on funktion lokaali minimipiste ja lokaali minimi eli pienin arvo.

Globaalit ääriarvot ja ääriarvopisteet määritellään kuten yhden muuttujan funktion tapauksessa.

Yhden muuttujan jatkuvan funktion ääriarvojen olemassaolotulos pätee myös yleisemmässä tapauksessa. (Tulos on totta yleisemmällekin määrittelyjoukolle kuin suljetuille väleille. Riittää, että joukko on kompakti eli suljettu ja rajoitettu.)

Lause (Ääriarvolause)

Olkoon suljettu ja rajoitettu väli. Olkoon jatkuva funktio. Tällöin funktio saavuttaa välillä suurimman ja pienimmän arvonsa.

Funktioiden kuvaajia katsottaessa on intuitiivisesti selvää, että funktion lokaaleissa ääriarvopisteissä tangettitaso on vaakasuorassa eli -tason suuntainen. Tällaisten tasojen yhtälöt ovat muotoa , joten tangenttitason yhtälön perusteella nähdään, että funktion osittaisderivaatat muuttujien ja suhteen ovat nollia ja että kuvaajan tangenttitason yhtälö pisteessä on .

Osittaisderivaattojen nolluus ääriarvopisteissä yleistyy myös useamman muuttujan funktioille. Derivaatan määritelmän ja yhden muuttujan funktion tulosten avulla on helppo näyttää, että jos funktiolla , , on lokaali ääriarvo pisteessä ja funktiolla on osittaisderivaatat pisteessä , niin kaikilla eli

Suljetulla välillä määritellyn funktion ääriarvoja etsittäessä riittää siis selvittää funktion arvo niissä pisteissä, joissa gradientti on nolla, niissä pisteissä, joissa jotain osittaisderivaattaa ei ole olemassa ja välin reunapisteissä. Gradientin nollakohtia ja pisteitä, joissa jotain osittaisderivaattaa ei ole olemassa, sanotaan kriittisiksi pisteiksi (critical points). Muulla kuin suljetulla välillä määritellylle funktiolle pitää tutkia funktion käyttäytymistä välin reunapisteissä esimerkiksi raja-arvojen avulla.

Esimerkki

Olkoon , . Nyt Yhtälöparin ainoa ratkaisu on , joten piste on funktion ainoa kriittinen piste ja funktion kuvaajan tangenttitaso siinä pisteessä on . Se, että on funktion globaali maksimipiste selviää tutkimalla funktion raja-arvoja kun .

Esimerkki

Funktiolla , on useita maksimi- ja minimipisteitä. Sillä on globaali maksimi pisteessä . Image

Ääriarvopisteissä funktion gradientti on nolla, mutta gradientin nolluus ei takaa sitä, että piste on funktion ääriarvopiste. Pistettä, jossa mutta kaikilla on piste ja , joille , , ja , sanotaan funktion satulapisteeksi. Funktion kriittisten pisteiden laatua eli sitä, ovatko ne lokaaleja maksimi- tai minimipisteitä vai satulapisteitä voidaan tutkia esimerkiksi toisen kertaluvun osittaisderivaattojen merkin avulla.

Esimerkki

Piste on funktioiden , satulapiste. Image Image

# osittaisderivaattojen-ketjusƤƤntƶ

Osittaisderivaattojen ketjusääntö

Vastavirta-algoritmissa virhefunktion osittaisderivaattoja piilokerroksen painojen suhteen laskettaessa huomattiin, että muuttuja, jonka suhteen halutaan derivoida, riippuu edellisen kerroksen parametreista. Tämän takia tarvittiin osittaisderivaattojen ketjusääntöä.

Tarkastellaan ensin yksinkertaista tilannetta. Olkoon funktio, jonka parametrit ja ovat muuttujan funktioita . Funktioiden välistä yhteyttä voi havainnollistaa puumaisella kaaviolla. Funktion osittaisderivaatan kaavan muuttujan suhteen (tässä tapauksessa tavallisen derivaatan) voi muistaa siitä, että kuvassa edetään funktion ja derivointimuuttujan väli kaikkia reittejä pitkin, kerrotaan matkalla olevat osittaisderivaatat keskenään ja lasketaan eri reittien osittaisderivaattojen tulot yhteen.

Jos funktiolla on jatkuvat osittaisderivaatat muuttujien ja suhteen ja funktiot ja ovat derivoituvia, niin funktion derivaatta muuttujan suhteen on josta Leibnizin merkinnöin kirjoitettu versio on

Esimerkki

Olkoot , ja , Lasketaan funktion derivaatta muuttujan suhteen. Muuttujia on vain yksi ja osittaisderivaatta on funktion tavallinen derivaatta. Tässä tapauksessa derivaatta osattaisiin laskea ilman ketjusääntöäkin sijoittamalla funktioiden ja lausekkeet funktion lausekkeeseen joten Osittaisderivaattojen ketjusääntöä käyttämällä saadaan

Yleinen versio osittaisderivaattojen ketjusäännöstä on seuraava. Olkoon , missä on funktio , kaikilla . Jos funktiolla on jatkuvat osittaisderivaatat kaikilla ja funktioilla on osittaisderivaatat kaikilla ja kaikilla , niin funktion osittaisderivaatat muuttujien suhteen saadaan kaavalla

Laskettaessa osittaisderivaattaa muuttujan suhteen funktio siis osittaisderivoidaan kaikkien muuttujiensa suhteen ja muuttujat muuttujan suhteen. Nämä osittaisderivaatat kerrotaan keskenään ja lasketaan yhteen. Puukaavion lisäksi kaavan voi muistaa miettimällä, että muuttujan muuttaminen vaikuttaa funktioiden arvoihin ja siten muutos funktion arvossa saadaan laskemalla nämä muutokset (osittaisderivaatat) yhteen.

Esimerkki

Olkoot , Nyt Funktion osittaisderivaatat muuttujien ja suhteen ovat ja Halutut osittaisderivaatat voi laskea myös sijoittamalla funktioiden ja lausekkeet funktioon ja osittaisderivoimalla muuttujien ja suhteen.

3.1.8 Harjoitustehtäviä

  1. Olkoon , , Laske funktion derivaatta sekä sijoittamalla funktioiden ja lausekkeet funktioon että osittaisderivaattojen ketjusäännön avulla.

  2. Olkoon , , Laske funktion osittaisderivaatat ja .

# lag

3.2 Lineaarialgebraa

Neuroverkon rakennetta esiteltäessä verkon parametreille ja niihin liittyville kaavoille annettiin myös vektori- ja matriisiesitykset. Ohjelmistokirjastoissa on paljon vektori- ja matriisilaskentaan sopivia paketteja, joiden avulla neuroverkon syötteiden tuloksen laskeminen ja parametreihin liittyvien laskujen tekeminen esimerkiksi virhefunktion minimoinnin yhteydessä on paljon nopeampaa kuin yksittäisten parametrien käsittely silmukoiden avulla.

Tässä luvussa käydään läpi vektoreihin ja matriiseihin liittyviä peruskäsitteitä, laskusääntöjä ja ominaisuuksia. Niihin liittyvää materiaalia löytyy Linear Algebra -nimisistä kirjoista. Motivointi lineaarialgebraan tehdään monesti lineaarisen yhtälöryhmän ratkaisemisen kautta.

3.2.1 Kahden lineaarisen yhtälön yhtälöryhmä

Tarkastellaan johdatuksena kahden muuttujan lineaarisista yhtälöistä muodostuvan yhtälöparin missä kaikilla , ratkaisemista. Paria , joka toteuttaa yhtälöparin molemmat yhtälöt, sanotaan yhtälöparin ratkaisuksi. Yhtälöparin ratkaisujen olemassaolo ja yksikäsitteisyys riippuu kertoimista .

Esimerkki

Tutkitaan yhtälöpareja Yhtälöparista (a) saadaan laskemalla yhtälöt puolittain yhteen ja jakamalla kahdella että . Sijoittamalla tämä toiseen yhtälöön saadaan . Tästä seuraa, että on yhtälöparin ainoa ratkaisu.

Yhtälöparin (b) toinen yhtälö on ensimmäinen yhtälö kerrottuna luvulla . Tämän yhtälön toteuttavat kaikki lukuparit , joille . Siten yhtälöparilla on äärettömän monta ratkaisua.

Kerrottaessa yhtälöparin (c) ensimmäinen yhtälö kahdella, saadaan yhtälöpari, jonka molempien yhtälöiden vasen puoli on . Koska oikeat puolet eivät ole samat, niin yhtälöparilla ei ole ratkaisua.

Yhtälöparien geometrinen tulkinta tehdään suorien avulla. 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). Jos ne ovat erisuuntaisia, niin ne leikkaavat toisensa täsmälleen yhdessä pisteessä. Tapauksessa (a) yhtälöparin ratkaisu on yhtälöitä vastaavien suorien yksikäsitteinen leikkauspiste. Tapauksessa (b) suorat ovat samat eli kaikki suoran pisteet ovat leikkauspisteitä. Tapauksessa (c) suorat ovat samansuuntaisia eri suoria, joten ne eivät leikkaa toisiaan.

# geo6

Kertomalla yhtälöparin ensimmäinen yhtälö puolittain luvulla ja toinen luvulla ja vähentämällä yhtälöt toisistaan nähdään, että jos , niin sijoittamalla luku yhtälöpariin saadaan ja ratkaisu . Erotusta sanotaan yhtälöparin determinantiksi.

Tämä liittyy yhtälöparin geometriseen tulkintaan sillä yhtälöparin ensimmäisen suoran kulmakerroin on ja toisen . Yhtälöparilla on siis täsmälleen yksi ratkaisu jos ja vain jos sen determinantti ei ole nolla (erisuuret kulmakertoimet). Sillä ei ole ratkaisuja tai niitä on äärettömän monta jos ja vain jos determinantti on nolla (samat kulmakertoimet).

3.2.2 Yhtälöryhmä, jossa on lineaarista yhtälöä ja tuntematonta

Yleisessä tapauksessa on yhtälöä ja muuttujaa missä kaikilla , ja tavoitteena on löytää luvun joukot , jotka toteuttavat kaikki ryhmän yhtälöä.

Tällaisen yhtälöryhmän ratkaisemisessa voidaan käyttää matriiseja. Tunnetussa Gauss-Jordan-menetelmässä yhtälöiden kertoimista muodostetaan kerroinmatriisi, jota muunnetaan kerto-, yhteen- ja vähennyslaskuja sisältävillä rivioperaatioilla sellaiseen muotoon, josta ratkaisu (tai sen olemassaolemattomuus) saadaan helposti selville peräkkäisillä sijoituksilla.

3.2.3 Vektorit ja matriisit

Vektorit

Vektorit ja matriisit koostuvat järjestetyistä alkioista, jotka voivat olla mitä tahansa (reaalilukuja, vektoreita, funktioita). Keskitytään tässä tilanteeseen, jossa alkiot ovat reaalilukuja. Vektoreista tarvitaan sekä pysty- että vaakaversiot, jotta matriisien ja vektoreiden keskenäiset laskutoimitukset saadaan hoidettua muodollisesti oikein.

Olkoon . Olkoot , , . Järjestetty joukko on -ulotteinen (rivi)vektori. Järjestetty joukko on -ulotteinen (sarake)vektori. Luvut , , ovat vektorin komponentteja.

Vektoreiden samuus, vektorin kertominen vakiolla ja (samanulotteisten) vektoreiden yhteenlasku määritellään luonnollisella tavalla.

Olkoot ja -vektoreita. Olkoon . Nyt jos ja vain jos kaikilla , ja

Reaalilukujen laskusäännöistä seuraa, että vektoreiden yhteenlasku on vaihdannainen, liitännäinen ja distributiivinen (osittelulaki) eli jos , ja ovat -vektoreita ja , niin Jos ja , niin vektoreiden ja sisätulo/pistetulo on

Esimerkki

Olkoot ja . Nyt ja ja samat laskut Pythonin NumPy-kirjaston avulla:

# py0

Matriisit

Olkoot . Olkoot kaikilla ja . Järjestetty taulukko on -matriisi, jossa on riviä ja saraketta.

Luvut ovat matrisin alkioita/komponetteja, rivivektorit , , sen rivejä (row) ja sarakevektorit , sen sarakkeita (column).

Jos , niin matriisi on neliömatriisi (square matrix).

Huomaa, että rivivektori on -matriisi ja -komponentin sarakevektori on -matriisi.

Matriisien yhtäsuuruus, vakiolla kertominen ja yhteenlasku määritellään samaan tapaan kuin vastaavat ominaisuudet vektoreille.

Olkoot ja -matriiseja. Olkoon . Matriisit ja ovat yhtäsuuret jos ja vain jos kaikilla ja , ja

Huomaa, että jos matriisit ja ovat erikokoisia, niin niitä ei voi laskea yhteen.

Reaalilukujen ominaisuuksista ja matriisien summan ja vakiolla kertomisen määrittelystä seuraa, että matriisien laskutoimitukset käyttäytyvät seuraavasti.

Olkoot , ja -matriiseja. Olkoon . Olkoon -matriisi, jonka kaikki alkiot ovat nollia. Tällöin

  • ,

  • ,

  • ,

  • ,

  • ,

  • .

Esimerkki

Matriiseille on ja samat laskut Pythonin NumPy-kirjaston avulla:

# py1

3.2.4 Harjoitustehtäviä

  1. Olkoot ja . Laske summa ja sisätulo .

  2. Olkoot , ja -vektoreita. Olkoon -ulotteinen nollavektori. Olkoon . Osoita, että

  3. Olkoot Laske matriisit , , ja .

Pitäisi varmaan olla (cu)dot v eikä (cvu)dot v tehtävässä 2

15 Apr 18 (edited 15 Apr 18)

Joo. Kiitos.

05 Sep 18

Pikaisesti ajateltuna kahden matriisin tulo olisi matriisi, jossa tekijämatriisien saman indeksin alkiot kerrottaisiin keskenään samoin kuin ne lasketaan yhteen matriisien summassa. Tämän määritelmän antamalla tulolla ei ole riittävästi matriisien tulolta haluttavia ominaisuuksia. Sitä kuitenkin käytetään joissain yhteyksissä, esimerkiksi neuroverkon parametrien kaavoissa.

Olkoot ja -matriiseja. Matriisien ja Hadamardin tulo/Schurin tulo on

Yleisemmin käytettävä matriisien tulo määritellään vektoreiden sisätulon avulla. Matriisien ja tulon . alkio on matriisin . rivin ja matriisin . sarakkeen vektoreiden sisätulo.

Olkoon -matriisi ja -matriisi. Matriisien ja tulo on -matriisi , jolle

Matriisitulo on liitännäinen eli jos on - matriisi, on -matriisi ja on -matriisi, niin ja tulo on -matriisi. Osittelulaki (yhteen- ja kertolaskun suhteen oikean kokoisille) on myös voimassa eli ja Matriisitulo ei yleensä ole vaihdannainen eli . Tulo ei ole edes määritelty paitsi jos sekä että ovat -matriiseja jollain .

Esimerkki

Olkoot ja

Koska on -matriisi ja on -matriisi, niin tulo on -matriisi,

3.2.5 Harjoitustehtäviä

  1. Näytä, että matriisien Hadamard-tulo on vaihdannainen, liitännäinen ja distributiivinen: Jos ja ovat -matriiseja, niin , ja .

  2. Olkoot Laske tulot ja .

Olkoon -matriisi. on diagonaalimatriisi, jos aina, kun .

on yksikkömatriisi, jos se on diagonaalimatriisi ja kaikilla .

Matriisi on ylä(ala)kolmiomatriisi, jos kaikki komponentit diagonaalin ala(ylä)puolella ovat nollia.

Laskutoimitusten helpottamiseksi yleinen matriisi pyritään monesti esittämään kahden tai kolmen matriisin tulona, jossa tulon matriisit ovat diagonaali- tai kolmiomatriiseja.

Esimerkki

Olkoot Matriisit ja ovat diagonaalimatriiseja ja on myös yksikkömatriisi. Matriisi on yläkolmiomatriisi ja on alakolmiomatriisi.

Yksikkömatriisi käyttäytyy matriisien kertolaskussa kuten luku reaalilukujen kertolaskussa. Jos on -matriisi ja on -yksikkömatriisi, niin Muista, että kaikilla reaaliluvuilla on käänteisluku , jolle . Osalla neliömatriiseista on vastaava käänteisalkio.

Olkoot ja -matriiseja. Jos niin on matriisin käänteismatriisi, jota merkitään usein . Tällöin sanotaan, että matriisi on kääntyvä.

Käänteismatriisin käsin laskeminen on yleensä työlästä. Se onnistuu Gauss-Jordan menetelmällä; kaavan oikean puolen vektori korvataan yksikkömatriisilla . Jos saadaan rivioperaatioilla muunnettua yksikkömatriisiksi, niin on kääntyvä ja käänteismatriisi löytyy viivan oikealta puolelta. Käänteismatriisin etsinnässä riittää löytää , jolle tai . Tällöin voidaan näyttää, että .

Esimerkki

Olkoon Jos matriisilla on käänteismatriisi , niin , eli on oltava Koska nyt myös , niin on itsensä käänteismatriisi.

Determinantti

Neliömatriisin kääntyvyyttä voidaan testata determinantin avulla. -matriisin determinatti on reaaliluku

Käänteismatriisin määritelmän avulla on helppo näyttää, että jos , niin on kääntyvä ja

Esimerkki

Lasketaan matriisin käänteismatriisi kahdella tavalla.

Jos on matriisin käänteismatriisi, niin on Vastaavan yhtälöryhmä hajoaa kahdeksi yhtälöryhmäksi ja jotka ratkaisemalla saadaan , , , .

Siten on .

Determinantin avulla käänteismatriisin laskeminen on helppoa. Koska , niin

Kun , niin determinantti määritellään alimatriisien determinanttien avulla.

-matriisille on Summassa on kolmen matriisin alimatriisin determinantit: matriisi saadaan poistamalla matriisista . sarake ja . rivi. Näiden matriisien determinantit kerrotaan matriisin komponentilla vaihtuvin etumerkein eli

Yleiselle -matriisille determinantti lasketaan samaan tapaan, missä alimatriisi saadaan poistamalla matriisista . rivi ja . sarake.

Determinantti voidaan laskea myös muun kuin ensimmäisen sarakkeen tai minkä tahansa rivin ja vastaavien alimatriisien avulla, Jos matriisin joku rivi tai sarake sisältää pelkkiä nollia, niin laskemalla determinantti tämän rivin tai sarakkeen avulla nähdään, että determinantti on nolla.

Jos on ylä- tai alakolmiomatriisi, erityisesti siis jos se on diagonaalimatriisi, niin determinantti on diagonaalialkioiden tulo

Jos ja ovat -matriiseja, niin

Kääntyvyydellä ja determinantilla on yhteys yleisilläkin neliömatriiseilla: -matriisi on kääntyvä jos ja vain jos . Tällöin

Geometrisesti -matriisin determinantti kertoo vektoreiden ja virittämän suunnikkaan pinta-alan ja vastaavasti -matriisin determinantti kertoo vektoreiden , ja virittämän suuntaissärmiön tilavuuden.

Esimerkki

Matriisin determinantti on

3.2.6 Harjoitustehtäviä

  1. Todista kaava .

  2. Miksi käänteismatriisi määritellään vain neliömatriiseille?

  3. Olkoon kääntyvä neliömatriisi. Osoita, että käänteismatriisi on yksikäsitteinen. (Oleta, että matriisilla oli kaksi käänteismatriisia ja ja näytä, että on .)

  4. Näytä, että kaava antaa -matriisin käänteismatriisin.

  5. Olkoon . Onko kääntyvä? Jos on, niin etsi .

  6. Olkoot ja . Laske matriisien ja determinantit.

  7. Todista determinantin tulokaava -matriiseille.

Symmetriset matriisit ja ortogonaaliset matriisit

Joissain tilanteissa tarvitaan matriisia, jossa alkuperäisen matriisin rivit vaihdetaan sarakkeiksi ja päinvastoin eli matriisi heijastetaan diagonaalinsa suhteen.

Olkoon -matriisi. Matriisi , on matriisin transpoosi.

Jos on neliömatriisi eli ja , niin on symmetrinen.

Esimerkki

Olkoot ja .

Matriisin transpoosi on ja . Matriisi on siis symmetrinen.

Rivivektorin transpoosi on sarakevektori, jolla on samat komponentit. Vastaavasti sarakevektorin transpoosi on rivivektori, jolla on samat komponentit kuin alkuperäisellä sarakevektorilla. Vektoreiden transpooseja käytetään erityisesti siihen, että vektoreiden ja matriisien väliset laskutoimitukset saadaan muodollisesti oikeiksi.

Jos on -matriisi ja on -matriisi, niin transpooseille pätee Jos , niin Jos , niin Jos on kääntyvä, niin myös on kääntyvä ja

Myöhemmin nähdään, että symmetrisillä matriiseilla on hyödyllisiä ominaisuuksia. Siksi niitä pyritään käyttämään matriisihajotelmissa.

Olkoon -matriisi. Matriisi on ortogonaalinen, jos on kääntyvä ja

Ortogonaaliselle matriisille siis . Matriisi on ortogonaalinen jos ja vain jos sen sarakevektorit , , muodostavat ortonormaalin joukon.

Olkoot -ulotteisia vektoreita. Joukko on ortonormaali, jos kaikilla kun ja kaikilla (eli vektorit ovat kohtisuorassa toisiaan vastaan ja niiden pituus on .)

3.2.7 Harjoitustehtäviä

  1. Olkoot Etsi matriisien ja ja tulon transpoosit. Onko tai symmetrinen?

  2. Olkoot ja . Miten sisätulo voidaan esittää transpoosien avulla?

  3. Olkoon -matriisi. Osoita, että on symmetrinen.

# matriisit-ja-lineaariset-yhtƤlƶryhmƤt

Matriisit ja lineaariset yhtälöryhmät

Jatketaan yhtälön ja muuttujan yhtälöryhmän tarkastelua. Kun yhtälöiden kertoimista muodostetaan matriisi ja muuttujista ja yhtälöiden oikeista puolista vektorit, niin yhtälöryhmä voidaan kirjoittaa muodossa

Jos yhtälöitä ja tuntemattomia on yhtä monta, kappaletta, niin on neliömatriisi. Jos matriisi on kääntyvä, niin yhtälöryhmän ratkaisu löydetään käänteismatriisin avulla. Käänteismatriisin ominaisuuksien perusteella on eli yhtälöryhmällä on yksikäsitteinen ratkaisu jos ja vain jos matriisi on kääntyvä eli jos ja vain jos .

Teoriassa yhtälöryhmän ratkaisu löydetään siis käänteismatriisin avulla mikäli se on olemassa. Käänteismatriisin laskeminen on kuitenkin raskasta, joten kääntämisen sijaan ratkaisussa käytetään erilaisia matriisihajotelmia.

Esimerkki

Yhtälöryhmää vastaava matriisiyhtälö on , missä Matriisi on kääntyvä, joten

3.2.8 Harjoitustehtäviä

  1. Opiskele Gauss-Jordan menetelmä yhtälöryhmien ratkaisemiseksi.

3.2.9 Ominaisarvot ja ominaisvektorit

Olkoon -matriisi. Luku (reaali- tai kompleksiluku) on matriisin ominaisarvo, jos on , joka ei ole nollavektori, jolle Tällöin on ominaisarvoa vastaava ominaisvektori.

Ominaisarvon ja -vektorin määritelmistä nähdään, että on matriisin ominaisarvo ja vastaava ominaisvektori jos ja vain jos . Tällä yhtälöllä on nollavektorista poikkeava ratkaisu jos ja vain jos Yhtälöä sanotaan karakteristisekssi yhtälöksi ja sen vasenta puolta karakteristiseksi polynomiksi.

Matriisin ominaisavot löydetään siis ratkaisemalla karakteristinen yhtälö. Algebran peruslause sanoo, että . asteen polynomilla on nollakohtaa kompleksilukujen joukossa. Siten karakteristisella polynomilla on juurta ja matriisilla ominaisarvoa, joista osa voi olla moninkertaisia.

Ominaisarvot ja -vektorit etsitään siis seuraavalla tavalla:

  • Muodosta karakteristinen yhtälö =0.

  • Etsi ominaisarvot eli karakteristisen yhtälön juuret .

  • Etsi ominaisarvoja vastaavat ominaisvektorit ratkaisemalla yhtälöt

Jos matriisilla on eri ominaisarvoa , , , niin vastaavat ominaisvektorit , , ovat lineaarisesti riippumattomia.

Lineaarinen riippumattomuus tarkoittaa sitä, että jos on luvut , , , joille niin kaikilla . Tämä on yhtäpitävää sen kanssa, että vektoreista muodostetun matriisin determinantti ei ole nolla.

Esimerkki

Olkoon Karakteristinen yhtälö on Sen ratkaisut ovat eli matriisin ominaisarvot ovat ja .

Ominaisarvoa vastaava ominaisvektori toteuttaa yhtälön eli Ominaisvektoreita ovat siis vektorit , joille , esimerkiksi .

Ominaisarvoa vastaava ominaisvektori toteuttaa yhtälön eli Ominaisvektoreita ovat siis vektorit , joille , esimerkiksi .

# py9

3.2.10 Harjoitustehtäviä

  1. Etsi matriisien ja ominaisarvot ja -vektorit.

3.2.11 Matriisihajotelmia

Matriisit pyritään monesti esittämään kahden tai kolmen matriisin tulona, jossa tulon matriisit ovat symmetrisiä tai diagonaali- tai kolmiomatriiseja. Esimerkiksi yhtälöryhmiä ratkaisevat ja käänteismatriiseja tai determinantteja laskevat algoritmit tehdään hajotelmien avulla.

LU-hajotelma

LU-hajotelmassa neliömatriisi esitetään ala- ja yläkolmiomatriisien tulona , missä alakolmiomatriisin diagonaalialkiot ovat ykkösiä.

"LU-hajotelmassa neliömatriisi esitetään ala- ja yläkolmiomatriisien tulona A=LUA=LUA=LU, missä alakolmiomatriisin LLL diagonaalialkiot ovat nollia." tulisi olla "LU-hajotelmassa neliömatriisi esitetään ala- ja yläkolmiomatriisien tulona A=LUA=LUA=LU, missä alakolmiomatriisin LLL diagonaalialkiot ovat ykkösiä. "

05 Feb 18

Ykkösiä pitää olla. Kiitos.

05 Sep 18

Jokaisella kääntyvällä matriisilla on LU-hajotelma mutta matriisille joudutaan joskus tekemään rivioperaatioita ennen hajotelmaa: Huomaa, että koska , niin jos , niin joko tai . Koska kolmiomatriisin determinantti on diagonaalialkioden tulo, niin tästä seuraa, että joko tai . Siten olisi . Kuitenkin kääntyvälle matriisille on mutta voi olla .

Esimerkki

Etsitään matriisin LU-hajotelma eli matriisit ja , joille Vastaava yhtälöryhmä on ja sen ratkaisu , , , .

Siten

3.2.12 Harjoitustehtäviä

  1. Olkoon . Etsi matriisin -hajotelma.

3.3 Harjoitustehtäviä Pythonilla

Kurssin yhteydessä tutustutaan myös Python-kieleen ja sen matematiikkaan liittyviin kirjastoihin.

Lineaarialgebraa NumPyn avulla

Käy läpi NumPy-kirjaston lineaarialgebran rutiineja.

Ota NumPy käyttöön komennolla

import numpy 

tai kaikki rutiinit komennolla

from numpy import *

Edellisessä tapauksessa rutiineja käytettäessä rutiiniin nimen eteen pitää lisätä numpy. jälkimmäisessä riittää pelkkä rutiinin nimi. Esimerkiksi alla ensimmäisessä tehtävässä numpy.dot(u,v)tai dot(u,v).

Ota lineaarialgebrarutiinit käyttöön komennolla

from numpy import linalg

Jos haluat käyttää harjoituksissa lyhyempiä komentoja, joissa linalg-osan voi korvata haluamallaan kirjainyhdistelmällä, niin ota rutiinit käyttöön esimerkiksi komennolla

from numpy import linalg as la

jolloin esimerkiksi 6. tehtävän komento on la.norm(v).

Ohjeita löytyy SciPy-sivulta.

Tehtävissä on tarkoituksella sellaiset matriisit ja vektorit, että tulokset on helppo laskea paperillakin. Kokeile eri toimintoihin suurempiakin matriiseja.

3.3.1 Harjoitustehtäviä

  1. Laske vektoreiden ja sisätulo. numpy.dot(u,v) dot(u,v)
  2. Laske matriisien ja tulo.
```
A=numpy.array([[1,2],[3,1]])
...
numpy.dot(A,B)
```
  1. Laske edellisen tehtävän matriisin kolmas potenssi.
```
linalg.matrix_power(A,3)
```
  1. Etsi matriisin käänteismatriisi ja determinantti.
```
linalg.inv(A)
linalg.det(A) 
```
  1. Laske matriisin transpoosi. numpy.transpose(A)

  2. Laske vektorin ja matriisin normit. Ilman parametrja lasketaan standardinormi eli komponenttien itseisarvojen neliöiden summan neliöjuuri.

```
linalg.norm(v)
linalg.norm(A)
```

Parametreilla saadaan selville esimerkiksi vektorin itseisarvoltaan suurin 
komponetti ja matriisin suurin rivien itseisarvojen summa.

```
linalg.norm(v,numpy.inf) 
linalg.norm(A,numpy.inf)
```
  1. Luo nollamatriisi, pelkkiä ykkösiä sisältävä matriisi, pelkkiä ykkösiä kokonaislukuina sisältävä matriisi sekä yksikkömatriisi.
```
numpy.zeros((3,4))
numpy.ones((5,4))
numpy.ones((4,5),dtype=numpy.int)
numpy.matlib.identity(5)
```
  1. Laske matriisin ominaisarvot ja vastaavat ominaisvektorit. linalg.eig(A)

  2. Ratkaise yhtälöryhmä Yhtälöryhmää vastaava matriisiyhtälö on , missä ja . numpy.linalg.solve(A,b)

  3. Opiskele pienimmän neliösumman esimerkki ja etsi sitä muokkaamalla pienimmän neliösumman suora pistepareille , , ja

Lineaarialgebraa SymPyn avulla

Käy läpi symbolisen matematiikan kirjaston SymPyn lineaarialgebran rutiineja. Ota SymPy käyttöön komennolla

import sympy 

tai kaikki rutiinit komennolla

from sympy import *

Edellisessä tapauksessa rutiineja käytettäessä rutiiniin nimen eteen pitää lisätä numpy. jälkimmäisessä riittää pelkkä rutiinin nimi.

3.3.2 Harjoitustehtäviä

  1. Luo matriisi sekä riveittäin että rivi- ja sarakekokojen avulla.

    Matrix([[1,2,3],[4,5,6]]) 
    Matrix(2,3,[1,2,3,4,5,6])
  2. Luo nollamatriisi, vain ykkösiä sisältävä matriisi, yksikkömatriisi ja diagonaalimatriisi, jonka diagonaalilla ovat luvut .

```
zeros(2,3)
ones(5,4)
eye(5)
diag(1,2,3,4,5)
```
  1. Laske matriisien ja tulo. A*B

  2. Pyydä äskeisen tehtävän matriisin rivejä ja sarakkeita (ensimmäinen 0, viimeinen -1). A.row(0) A.col(0)

  3. Poista ja lisää edellisien tehtävien matriisista rivejä ja sarakkeita. Palauta alkuperäinen matriisi poistamisten jälkeen tai muuta tarvittaessa lisäystehtävien dimensioita. Huomaa, että lisäykset eivät muuta alkuperäistä matriisia.

```
A.row_del(0)
A.col_del(0)
A.row_insert(1,Matrix([[0,1,1]]))
A.col_insert(1,Matrix([[0],[1]]))
```
  1. Laske matriisien ja tulo ja summa.
```
a,b,c,d,e,f,g,h=symbols('a b c d e f g h') 
A=Matrix([[a,b],[c,d]])
```
  1. Laske edellisen tehtävän matriisin tulo itsensä kanssa, käänteismatriisi ja determinantti.
```
A**2
A**-1
A.det()
```
  1. Laske matriisin transpoosi. A.T

  2. Muunna matriisi Gauss-Jordan menetelmässä tavoiteltuun muotoon (reduced row echelon form).

```
A.rref()
```
  1. Laske matriisin ominaisarvot ja niiden kertaluvut, ominaisvektorit ja karakteristinen polynomi.
```
A.charpoly()
A.eigenvals()
A.eigenvects()
lamda=symbols('lamda')
p=A.charpoly(lamda)
factor(p)
```
  1. Diagonalisoi edellisen tehtävän matriisi eli etsi diagonaalimatriisi ja matriisi , joille . Muista matriisien ja yhteys ominaisarvoihin ja -vektoreihin.
```
P,D=A.diagonalize()
```

Matrix(2,3[1,2,3,4,5,6]) on väärin, ei voi ottaa hakasulkeilla 3:sta mitään. Pitäisi olla Matrix(2,3,[1,2,3,4,5,6])

24 Nov 17

Kiitos!

27 Nov 17

Analyysia SymPyn avulla

Harjoittele SymPyn analyysiin liittyviä rutiineja. Kokeile rutiineja muihinkin kuin tehtävissä mainittuihin funktioihin ja yhtälöihin ja tutustu rutiineihin liittyvään dokumentaatioon. Ota SymPyn rutiinit käyttöön komennolla

from sympy import *

SymPy-kirjastoa voi testata myös SymPy Liven avulla. Siinä SymPy toimii Google App Enginen avulla.

3.3.3 Harjoitustehtäviä

  1. Symbolisen ja numeerisen laskennan ero: Vertaa Pythonin math-kirjaston ja SymPyn neliöjuurifunktioiden toimintaa. Ota math-kirjasto käyttöön komennolla import math. Testaa komentoja math.sqrt(8) ja sympy.sqrt(8)

  2. symbols, *, expand, factor: Tarkastele SymPyn laskutoimituksia ja symbolisten lausekkeiden käsittelyä. Esittele symboliset muuttujat ja testaa laskuja ja tekijöihin jakoa. x,y,z=symbols('x y z') a=2*x+y-z a-y y*a ea=expand(y*a) ea factor(ea)

  3. simplify, exp, : Harjoittele lausekkeiden sieventämistä. simplify((x**2-x-2)/(x-2)) simplify((x-1)*(x+1)) simplify(exp(x)*exp(y))

  4. diff: Laske funktioiden , ja , derivaatat. h=exp(x**4) diff(h,x)

  5. Osittaisderivaatat: Laske esimerkin funktion (osittais)derivaatta muuttujan suhteen.

  6. Osittaisderivaatat: Laske funktioiden , , , osittaisderivaatat muuttujien , ja suhteen.

  7. limit: Laske edellisen tehtävän funktioiden raja-arvoja, esimerkiksi limit(f,x,0) Huomaa, että ääretön kirjoitetaan kahdella pienellä o-kirjaimella "oo".

  8. solveset: Harjoittele yhtälöitä algebrallista ratkaisemista. Ratkaise toisen asteen yhtälö sekä yhtälöt ja . solveset(x**2+x-2,x) solveset(exp(x)-1,x,domain=S.Reals) Huomaa, että oletuksena yhtälön oikea puoli on . solveset(x**2+x-2,x) on sama kuin solveset(Eq(x**2+x-2,0),x)

  9. Piirtäminen: Harjoittele 2- ja 3-ulotteisten funktioiden kuvaajien piirtämistä. Piirrä sigmoid-funktio ja funktiot ja . Testaa piirtämiseen liittyviä parametreja. plot((1+exp(-x))**(-1),(x,-4,4),axis_center='center') plotting.plot3d(f,(x,-1,1),(y,-1,1)) plotting.plot3d(g,(x,-1,1),(y,-1,1)) plotting.plot3d(f,g,(x,-1,1),(y,-1,1))

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.