Neuraalilaskennan harjoitustyö tehdään käyttäen MATLAB-ohjelmistoa [2,3,4] sekä MATLABiin tehtyjä laajennusfunktioita. Työn voi tehdä millä tahansa koneella, jossa on MATLAB-ohjelmisto sekä neuraalilaskennan töissä käytettävä MATLAB-funktioista koostuva Neural Network Toolbox [5]. Neural Network Toolbox on asennettu Maarintalon työasemille. Toolboxin manuaali löytyy Maarintalon työasemien luota sekä Informaatiotekniikan laboratoriosta.
Työssä tarvittavat tiedostot:
Työhön liittyy simulaattori, joka simuloi kahden auton käyttäytymistä ympyräradalla. Etummainen auto vaihtelee nopeuttaan tietyllä satunnaisuudella välillä 0-40m/s (0-144km/h) ja toisen auton tehtävänä on seurata johtaja-autoa (auto1) siten, että ei tapahdu törmäystä. Koska kyseessä on ympyrärata, ei seuraaja-auto (auto2) saa ajaa liian hiljaa eikä liian lujaa, vaan sen nopeuden on seurattava johtaja-auton nopeutta. Ympyräradan pituus on 1000m. Johtaja-auto kiihdyttelee ja jarruttelee satunnaisesti. Simulaattorissa on huomioitu seuraaja-auton reaktioaika (käytetty vakioarvoa 1.5s). Simulaation aika-askel on 0.1s. Autojen kiihtyvyys vaihtelee välillä -3m/s2 - 3m/s2. Seuraaja-auton nopeus voi liikkua samalla välillä kuin johtaja-auton (0-40m/s). Seuraaja-autolle on siis tuotettava sellainen säätö, että auto pystyy seuraamaan toista autoa törmäämättä. Säädöllä tässä yhteydessä tarkoitetaan seuraaja-auton kiihtyvyyttä.
Simulaattorin puute on se, että siitä puuttuu kunnollinen säätöfunktio. Simulaattorissa on olemassa vain funktio rcontrol, joka tuottaa satunnaisen säädön seuraaja-autolle.
Simulaattorissa voi olla tarpeen muutella seuraavia parametreja : simul_time (default 2000s) on haluttu simulointiaika sekunteina, show_loop (default 5s) on simulointitilanteen näyttämisväli simulointisekunneissa.
Simulaattori käyttää kahta erilaista vektoria päätietotyyppeinään. Nämä vektorit ovat parametrivektori pv sekä tilavektori v. Vektorit ovat seuraavaa muotoa :
![]() |
(1) |
missä ts on aika-askel (0.1s), rt on reaktioaika (1.5s), vmin on miniminopeus (0m/s), vmax on maksiminopeus (40m/s), amin on minimikiihtyvyys (-3m/s2), amax on maksimikiihtyvyys (3m/s2), bias on tässä törmäysmarginaali (2m) ja lentr on radan pituus (1000m).
![]() |
(2) |
missä p1, v1 ja a1 ovat johtaja-auton paikka radalla, johtaja-auton nopeus ja kiihtyvyys. p2, v2 ovat seuraaja-auton paikka ja nopeus. a2 on seuraaja-auton kiihtyvyys reaktioajan päästä.
Tiedostossa trset.mat on 800 tilavektoria eräästä toimivan säädön simuloinnista. Nämä tilavektorit ovat tiedoston sisältämän matriisin trset vaakarivit, jotka ovat tilavektorin v muotoisia.
Tilavektorina tietyllä hetkellä on säädön tapauksessa järkevää käyttää vektoria
![]() |
(3) |
missä d on autojen välinen etäisyys radalla (esimerkiksi autosta 2 autoon 1. Tämän voi laskea funktiolla distance). Muut vektorin komponenttien merkinnät ovat samat kuin edellä esitetyt.
Työssä tehtävänä on käyttää tiedoston trset.mat sisältämää dataa sopivien opetusnäytteiden aikaansaamiseksi ja opettaa (esimerkiksi yhden piilokerroksen omaava) MLP-neuraaliverkko (Multi-Layer Perceptron) opetusalgoritmina backpropagation [1] suorittamaan seuraaja-auton nopeuden säätöä näytevektorina 4-elementtinen tilavektori, joka sisältää autojen välisen etäisyyden (seuraaja-autosta johtaja-autoon), autojen nopeudet sekä johtaja-auton kiihtyvyyden (nämä viivästettynä reaktioajalla) ja tuottaa tuloksena senhetkisen kiihtyvyyden seuraaja-autolle. Etäisyyden voit laskea esimerkiksi käyttämällä funktiota
distance(v, pv), | (4) |
missä v on tilavektori ja pv simulaattorin parametrivektori.
Työssä opetetaan neuraaliverkko sopivalla määrällä trset-matriisin dataa tavoitearvona seuraaja-auton kiihtyvyys reaktioajan päästä. Tämän jälkeen toteutetaan säätöfunktio
a = ncontrol(painot, biasit, hlp, pv), | (5) |
missä hlp on reaktioajalla viivästetty nelielementtinen tilavektori ja pv on simulaattorin parametrivektori.
Kun neuraaliverkko on opetettu ja säätöfunktio tehty omaan m-tiedostoonsa, ajetaan ensin vähän aikaa simulaattoria kontrollifunktiolla
a = rcontrol(pv), | (6) |
joka tuottaa seuraaja-autolle satunnaisen kontrollin ja aiheuttaa törmäilyä. Simuloi rcontrolia käyttäen lyhyehkö simulointiaika (esim. 100s). Tämän jälkeen poistetaan rcontrol-funktio kommentoimalla käytöstä ja poistetaan kommentti ncontrol-funktiosta. Mikäli käytät yhden piilokerroksen sisältävää MLP-verkkoa säätöverkkona ja argumentit ovat samassa järjestyksessä, ei muita muutoksia kuin mahdollisesti nelikomponenttiseen tilavektoriin siirtyminen tarvita. Muussa tapauksessa muuta argumentit vastaamaan oman säätöfunktiosi argumentteja. Tätä simuloidaan riittävän pitkä simulointiaika (yli 1000 simuloitua sekuntia).
Työselostus alkaa kansilehdellä, jossa on kurssin koodi, kurssin nimi, oma nimesi, osastosi, email-osoitteesi, opintokirjan numero sekä työselostuksen palautuspäivämäärä. Työselostuksessa kuvataan lyhyesti valitut menetelmät ja käytetyt parametrit sekä perustellaan menetelmien ja parametrien valintaa lyhyesti. Tulokset tulee esittää selkeästi. Työselostuksessa tulee esittää valitun opetusnäytejoukon koko, suhteellinen virhe opetuksen jälkeen ja kuva neuraaliverkon tuottamasta säädöstä ja tavoitesäädöstä samassa kuvassa opetusjoukolla. Simuloinnista on selostuksessa esitettävä törmäysten määrä satunnaisella säädöllä (esim törmäyksiä/min arvo) ja neuraalisäädöllä. Työn liitteenä tulee olla omien MATLAB-ohjelmiesi listaukset, jotka on koodattu "hyvää ohjelmointitapaa" noudattaen , mikä tarkoittaa, että ohjelmat on asiallisesti kommentoituja ja muutoinkin luettavuudeltaan selkeitä.
You are at: CIS → T-61.5130 Machine Learning and Neural Networks
Page maintained by t615130@cis.hut.fi, last updated Wednesday, 28-Nov-2007 00:32:29 EET