torstai 29. marraskuuta 2018

Vuoden kohokohta - Pepper

En kestä, tänään tapahtui jotain todella mahtavaa, tapasin nimittäin idolini Pepper-robotin! Kävin IT-alan rekrytapahtumassa. Pääkohteeni johon tein täsmäiskun oli Solteq, joka työskentelee Pepper-robotin kanssa ja joka tuli minulle tutuksi Johdatus robotiikkaan-kurssilta. En vain arvannut, että itse Pepperkin olisi siellä! <3 Olin lopun aikaa hymy korvissa tästä yllättävästä kohtaamisesta. Katsokaa nyt, miten hienosti se osaa tanssia <3 Olisi pitänyt ottaa videotakin sen liikkeistä.


Ehkä vielä joskus näemme <3

tiistai 24. heinäkuuta 2018

Mitä robotiikka on?

Olen innolla odottanut, milloin yliopistossani järjestettäisiin robotiikaan liittyviä kursseja. On niitä varmasti ollutkin, ja osallistuinhan esimerkiksi tekoälystä kertovalle kurssille. Mutta kaipasin kuitenkin kokonaisvaltaisesti robotiikasta kertovaa kurssia, ja ilokseni huomasin, että sellainen järjestettiinkin! Innosta puhkuen ilmoittauduin Johdatus robotiikkaan -kurssille. Jo ensimmäinen luento oli todella mielenkiintoinen ja silmiä avaava: robotiikka todellakin on tulevaisuus. Mutta mitä robotiikka oikeastaan edes on, ja miksi se tulee olemaan niin tärkeä osa tulevaisuuden yhteiskuntaa? Sain luvan kirjoittaa blogitekstin pohjautuen ensimmäisen luennon teksteihin. Siinä oli mielestäni todella hyvin tiivistetty ja kerrottu, mitä robotiikka on.

Teksti siis pohjautuu Jyväskylän yliopiston Johdatus robotiikka -kurssin ensimmäiseen luentoon ja sen lähteisiin, sekä kurssin opettajien Toni Alhon, Pekka Neittaanmäen, Pasi Hännisen ja Olli Tammilehdon Jyväskylän yliopiston julkaisemaan raporttiin Palvelurobotit, joka koskee erityisesti palvelurobottiikaa SOTE-sektorilla. Käytän lähteenä myös Googlea, Gordon McCombin kirjaa Robot Builder's Bonanza sekä kirpputorilta löytämääni Robert Malonen Robotit-kirjaa. Eikö olekin söpö? <3>




Robotit ja robotiikka


Sana robotti on peräisin tšekin kielen sanasta 'robota', joka tarkoittaa pakkotyötä. Sen loi oletettavasti näytelmäkirjailija Karel Čapekin veli. Karel käytti sanaa vuonna 1920 näytelmässään R.U.R (Rossumonin univeraalit robotit). Tummasävytteinen näytelmä sijoittuu tulevaisuuteen, jossa robotit korvaavat työläisluokan. Kuulostaa tutulta uhkakuvalta; monet tuntuvat pelkäävän, että robotit vievät tulevaisuudessa kaiken työn. Näytelmän menestyksen on tulkittu heijastaneen ihmisissä syvällä kytevän uuden tekniikan pelkoa.

Sanaa robotiikka käytti luultavasti ensimmäisenä kirjailija Isaac Asimov, jota pidetään yhtenä merkittävimmistä tieteiskirjailijoista. Hän loi robotiikan kolma moraalisääntöä:

1. Robotti ei saa vahingoittaa ihmistä eikä toimimatta jättämisellään sallia tämän vahingoittuvan
2.  Robotin on toteltava ihmisen sille antamia määräyksiä, jos ne eivät ole ristiriidassa ensimmäisen lain kanssa
3. Robotin on varjeltava omaa olemassaoloaan, jos varjeleminen ei ole ristiriidassa ensimmäisen eikä toisen lain kanssa

Asimov lisäsi myöhemmin neljännen lain (nollas laki), jonka mukaan robotti ei saa vahingoittaa ihmiskuntaa eikä toimimatta jättämisellä sallia sen vahingoittuvan. Kyseisiin lakeihin viitataan monissa kirjoissa ja elokuvissa.

ISO-8373 -standardi (v. 2012) määrittelee robotin seuraavanlaisesti:

"actuated mechanism programmable in two or more axes with a degree of autonomy, moving within its environment, to perform intended tasks"

Määritelmän mukaan robotti on siis ohjelmoitava ja autonominen, ja se voi liikkua ympäristössään ja suorittaa tehtäviä. Robotiikka puolestaan määritellään tarkoittavan robottien suunnitteluun, valmistamiseen ja käyttämiseen liittyvää tiedettä ja toimintaa. Kansainvälinen robotiikan keskusjärjestö IRF (International Federation of Robotics) noudattaa myös kyseisiä määritelmiä.

Robotiikan historia


Robottien kehitykseen on vaikuttanut halu laatia älykkäitä koneita: ensimmäisenä keksittiin mekanismit, joilla voitiin kirjata tähtien liikkeet ja siten mitata aikaa. 1200-luvulle tultaessa monet kellosepät käyttivät taitojaan myös liikkuvien nukkejen rakentamiseen. Opittiin rakentamaan koneita, jotka huolehtivat tehtävistä ilman ihmistä tai hyvin pienellä ihmispanoksella. Vähitellen syntyi automaation ensiaskelet. Heron Aleksandrialainen kehitti jo parituhatta vuotta sitten koneita, jotka esimerkiksi avasivat temppelien ovia. Yksi ensimmäisiä dokumentoituja humanoidirobotin suunnitelmia on Leonardo da Vincin n. 1495 tekemät piirrokset. Ensimmäisiä nykyaikaisia robotteja oli tiedemies W.Grey Walterin v. 1948 ja 1949 kehittämät robottimaiset "kilpikonnat", jotka reagoivat valoon ja jotka hakeutuivat valoa kohti:

Walterin kehittämä robottimainen "kilpikonna. Kuvan lähde: http://www.extremenxt.com/elsie.jpg

Ensimmäinen teollisuurobotti puolestaan oli George Devolin ja Joseph Engelbergerin v. 1961 kehittämä Unimate. Se oli robottikäsivarsi, joka oli suunniteltu toimimaan General Motorsin kokoomalinjalla. 1970-luvun aikana teollisuusrobotit jo kokosivat autoja, hitsasivat ja maalasivat niitä ilman ihmisten apua. Niitä käytetään tehtävissä, jotka ovat raskaita, vaarallisia ja vaativat paljon toistoa. IFR:n sivuilla on robottien historian aikajana, jossa on myös kuvat kehitetyistä roboteista. Aikajana alkaa ensimmäisen teollisuusrobotin synnystä.

Robottien rakenne


Robotit koostuvat useista erilaisista osista: 

1.  Keho. Robotteja on eri muotoisia ja kokoisia. Robotin muodon määrittää komponentit,    joista robotti rakentuu, mutta monet robotit voidaan lajitella seuraaviin muodon kategorioihin:
  • Kilpikonnat (turtle). Nimitetään myös työpöytä (desktop) roboteiksi. Suurin osa amatööriroboteista kuuluu tähän kategoriaan. 
  • Mönkijät (rover). Nämä robotit vaativat hieman hevosvoimaa, esimerksi imurirobotit, ruohonleikkuurobotit ja taistelurobotit. Nämä ovat liian isoja liikkumaan pöydillä, toisin kuin kilpikonna-kategorian robotit.
  • Kävelijät (walking). Tähän kuuluvat robotit käyttävät liikkumiseen jalkoja pyörien sijaan. Useimmilla on kuusi jalkaa hyönteisten tapaan, koska kuusi jalkaa takaavat paremman tasapainon ja liikkuvuuden kuin kaksi jalkaa. Kävelijä-robottien rakentaminen vaatii suurempaa tarkkuutta, joten aloittelijoiden on helpompaa rakentaa pyörillä tai telaketjuilla liikkuvia robotteja.
  • Kädet ja pihdit (arms & grippers). Käsivarsia voi liittää liikkuviin robotteihin, tai ne voivat olla yksittäisiä, paikallaan olevia käsivarsia. Ihmisen kädessä on useita vapausasteita, joten se voi suuntautua melkein mihin suuntaan tahansa. Useimmissa robottikäsissä vapausasteiden lukumäärä on rajoitettu yhden ja kolmen välille.
  • Androidit ja humanoidit (android & humanoid). Nämä muistuttavat ihmistä: niillä on pää, keskivartalo, kaksi jalkaa ja käsivarsia. Tämän kategorian robotit on vaikein rakentaa, ja niiden luomisen monimutkaisuuden takia ne ovat usein myös muita malleja kalliimpia.
Tukirangan rakenne voi olla joko sisäinen tukiranka (endoskeleton) tai ulkoinen          tukiranka (eksoskeleton). Sisäisessä tukirangassa tukirakenne on sisäpuolella. Sisäinen tukiranka on selkärankaisten ominaispiirre: esimerkiksi ihmisillä ja eläimillä sisäelimet, lihakset ja iho ovat luiden ulkopuolella. Ulkoisessa tukirangassa "luut" ovat sisäelinten ja lihasten ulkopuolella. Luonnossa niitä näkee esimerkiksi ravuilla ja hämähäkeillä. Hoitorobotiikassa ulkoisen tukirangan mallisia robotteja on käytetty esimerkiksi kuntoutuksen apuna (siitä lisää myöhemmin).

Robotit rakennetaan yleensä metallista, mutta niiden rakentamiseen voidaan käyttää myös puuta, muovia ja kapalevyä (foamboard).

  2. "Lihakset" / Liikkuminen. Robottieilla ei ole lihaksia, mutta ne voivat kuitenkin liikkua. Niiden liikkeisiin vaikuttavat mm.
  • Aktuaattorit eli toimilaitteet. Toimilaitteiteet saavat aikaan robotin liikkeet. Robotshop.com määrittelee aktuaattorin laitteeksi, joka muuntaa energian fyysiseksi liikkeeksi. Suurin osa aktuaattoreista tuottaa joko pyörivän tai lineaarisen liikkeen. Tähän kuuluvat mm. erilaiset moottorit (servomoottorit, steppermoottorit jne.) sekä hydraulisella ja paineilmalla toimivat toimilaitteet. Robotshopin sivulla on hyvä ohje sopivan aktuaattorin valintaan.
  • Liikkumistapa. Robotti voi liikkua joko pyörien, telaketjujen tai jalkojen avulla.
  • Efektorit. Efektoreilla tarkoitetaan osia, jotka kohdistavat fysikaalista voimaa ympäristöön. Ne ovat laitteita tai työkaluja, jotka voidaan liittää robotin käsivarteen kohdalle, johon käsi normaalisti tulisi. Esimerkiksi kamera, pora ja pihdit voivat olla tällaisia laitteita.
3. Sensorit eli anturit. 
  • Sensorit ovat robottien aistinelimet: niiden avulla robotit keräävät tietoa ympäristöstään prosessoitavaksi. Mitä enemmän roboteilla on sensoreja, sitä enemmän ne voivat vuorovaikuttaa ympäristönsä kanssa. Se on tärkeää, mikäli robotin halutaan pystyvän toimimaan itsenäisesti. Sensoreja on erilaisia, mm. sellaisia, jotka pystyvät aistimaan kosketusta, ääntä, valoa, hajua, liikettä, paikkaa ja monia muita ärsykkeitä. Wikipedian sivuilla on pitkä listaus sensoreista. Sensorien antamaa tietoa käsittelee ohjauspiiri, joka toimii robotin aivoina.
4. Voimanlähde. 
  • Robottien voimalähteenä voi toimia esimerkiksi paristot, hydrauliset ja pneumaattiset systeemit ja aurinkovoima. 
5. Tekoäly.
  • Tekoäly on olennainen osa robotiikkaa, sillä sen avulla robotit mm. prosessoivat tietoa ja oppivat, sekä pystyvät sopeutumaan uusiin ja ennkoimattomiin tilanteisiin. Robotti vaatii arkkitehtuurin, joka pystyy säätelemään sen liikkeitä ja integroimaan sensoreista saatua dataa. Robottien aivoina toimivat mikrokontrollerit eli laitteet, jotka pystyvät suorittamaan ohjelman. Mikrokontrolleri vastaa kaikesta laskemisesta, päätöksenteosta ja kommunikoinnista. Robottien "älynä" voivat toimia mm. erilaiset neuroverkot, ohjelmistot, kongitiiviset arkkitehtuurit ja geneettiset algoritmit.

Robottien luokittelu

Robotiikka on kehittynyt vähäisen autonomian teollisuusroboteista itsenäisiin ja älykkäisiin palvelurobotteihin. Teollisuusympäristö on rajattu, yksinkertainen alue, jossa robotti suorittaa ennaltamäärättyjä tehtäviä. Teollisuusrobotit eivät siis vuorovaikuta paljoa ympäristönsä kanssa, eikä niiden siten tarvitse olla kovin älykkäitä. Ne vain suorittavat niille etukäteen määriteltyä ohjelmaa automaattisesti. Palvelurobotit puolestaan toimivat avoimessa ympäristössä ja vuorovaikuttavat ihmisten kanssa. Niiden pitää pystyä toimimaan epämääräisten havaintojen ja tietojen pohjalta, mikä vaatii älyä. 

Yksi yleinen tapa luokitella robotit onkin jaotella ne teollisuusrobotteihin ja palvelurobotteihin. Joissakin luokittelutavoissa sotilasrobotit ovat vielä oma luokkansa. Voidaan myös määritellä erikseen opetusrobotiikka ja ohjelmistorobotiikka, joka nimestään huolimatta ei tosin ole ns. tyypillistä robotiikkaa. Ohjelmistorobotiikka tarkoittaa tietokoneen sisällä toimivia ohjelmistoja. Se vapauttaa ihmisiä tuottavimpiin tehtäviin hoitamalla mm. yksinkertaiset rutiinitehtävät, kuten kirjaamisen.

Teollisuusrobotit


IFR perustaa teollisuusrobotin määritelmän ISO 8373 standardiin: teollisuusrobotti on automaattisesti ohjattu, uudelleenohjelmoitava eri käyttötarkoituksiin, ja sillä on kolme tai useampi akseli.Teollisuusrobotit luokitellaan niiden mekaanisen rakenteen perusteella. Ne pystyvät suorittamaan ihmisille liian raskaita tai vaarallisia teollisuustuotannon tehtäviä, kuten materiaalien liikuttelua ja juottamista. Niitä käytetään myös paljon toistoa vaativissa ja epämielyttävissä tehtävissä. Ne on suunniteltu toimimaan teollisessa ympäristössä. Niitä käytetään yleisesti mm. autoteollisuudessa, metallialalla ja elektroniikkateollisuudessa. Teollisuusrobottia voidaan ohjata joko manuaalisesti, tai se voidaan ohjelmoida perinteisin menetelmin tai graafisella simuloinnilla.

Teollisuusrobottien luokitellaan yleisesti seuraaviin luokkiin:

  • karteesiset robotit. Niiden liikkeet ovat lineaarisia.
Karteesinen robotti. Kuvan lähde: https://docplayer.fi/docs-images/27/9938659/images/13-0.png
  • sylinterimäiset ja SCARA-robotit. Sylinterimäisissä roboteissa on yksi koko rakennetta kääntävä pyörivä akseli, mutta muut liikkeet ovat lineaariset. SCARA-robottien nivelet ovat vaakatasossa ja pystysuuntainen liike on lineaarinen. Niillä on yleensä vain 4 vapausastetta.
SCARA-robotti. Kuvan lähde: https://www.allied-automation.com/wp-content/uploads/2017/07/rh-ch_robot-e1500509503571.jpg
  • delta-robotit eli rinnakkaisrakenteiset robotit. Niissä kolme käsivartta ovat liittyneet nivelakselilla alustaan. Voivat olla nopeita, joten niitä käytetään monesti tehtaissa pakkaamisessa.
Delta-robotti. Kuvan lähde: https://industrial.omron.us/en/media/Delta_robot_tcm849-100816.jpg
  • antropomorfiset robotit eli käsivarsirobotit. Niillä on yleensä kuusi vapaasti ohjelmoitavissa olevaa niveltä. Soveltuvuudeltaan monipuolisin robotti, koska nivelkäsivarren päässä oleva kappale voidaan asettaa robotin ulottuvuuden puitteissa kaikkiin mahdollisiin kulmiin.
Käsivarsirobotti. Kuvan lähde: http://www.rrrobotica.it/atom100g.jpg

Palvelurobotit


Käytännössä kaikki muut kuin teollisuusrobotit ovat palvelurobotteja. ISO 8373 määrittää palvelurobotin robotiksi, joka suorittaa ihmiselle hyödyllisiä tehtäviä poislukien teollisuuden sovellutukset. Standardin mukaan robotit vaativat tietyn tasoista autonomiaa, mikä tarkoittaa kykyä suorittaa tarkoituksenmukaisia tehtäviä ilman ihmisen väliintuloa. Palvelurobotit voidaan luokitella henkilökohtaisiin / ammattikäyttöisiin robotteihin ja edelleen käyttötarkoituksensa mukaisiin luokkiin. Palvelurobotteja voidaan käyttää apuna mm. kuntoutuksessa, kotiavussa, lääketieteessä, hoitotyössä, sosiaalisessa vuorovaikutuksessa ja opetuksessa. Olen käyttänyt tässä tekstissä samanlaista jaoittelua, kuin aiemmin lähteissä mainitussa Jyväskylän yliopiston Palvelurobotit -raportissa on käytetty. Tämä osio mukailee muutenkin paljon kyseistä julkaisua.

Omahoidon robotit - kuntoutusrobotit ja kotihoidon robotit


Omahoidon robotiikka voidaan Jyväskylän yliopistossa julkaistun Palvelurobotit -raportin mukaan jakaa kuntoutusrobotteihin ja kotihoidon robotteihin. Kuntoutusroboteilla tarkoitetaan vammautumisen tai operaation jälkeiseen hoivaan ja kuntoutukseen osallistuvia robotteja. Ne tehostavat parantamista tai toimivat menetetyn ruumiinosan korvikkeena. Erityisesti ikääntyneet, CP-vammaiset ja neurologisista sairauksista kärsivät potilaat hyötyvät kuntoutusroboteista, koska ne mahdollistavat yksilöllisiin tarpeisiin räätälöityjä harjoitteita ja pystyvät mahdollisesti avustamaan päivittäisessä liikkumisessa. Kuntoutusrobotteja ovat mm. robotisoidut proteesit, eksoluurangot, kävelyrobotit ja yläraajojen kuntoutusrobotit sekä välineet., jotka tukevat vammautumisen johdosta heikentyneitä toimintoja. Kirjoitan kuntoutusroboteista ehkä myöhemmin enemmän, alla olevista nimistä klikkaaminen vie niiden valmistajan / niistä kertovalle nettisivulle, jos kyseisten robottien tutkiminen kiinnostaa.  

1. Kuntoutusrobotteja siis ovat esimerkiksi:

Robotisoidut proteesit, kuten Modular Prosthetic LimbBeBionic, Open Bionics. Robotisoitujen proteesien avulla voidaan mukailla käden liikkeitä, kuten esineisiin tarttumista. Niissä on paljon niveliä ja sensoreita. Proteesit mittaavat useita lihasten biologisia signaaleja, joiden avulla proteesia liikutetaan.

Modular Prosthetic Limb. Kuvan lähde: https://libmagazine.com/wp-content/uploads/2015/01/image40-702x336.jpg

Be Bionic -käsi. Kuvan lähde: https://4.imimg.com/data4/BT/GB/MY-23855591/be-bionic-hand-500x500.jpg

Open bionics -käsivarsi. Kuvan lähde: https://all3dp.com/app/uploads/2016/06/open_bionics_deux_ex-1284x722.jpg

  • Eksoluurangot, kuten HALReWalk, WYSS -instituution Soft Exosuit ovat päällepuettavia teknologialla ja moottoroidulla nivelillä varustettuja bionisia tukisidoksia.Ne ovat hyviä kuntoutuksen apuvälineitä mm. neurologisille potilaille, halvaantuneille ja cp-vammaisille. Eksoluuranko on helposti liikuteltavissa erilaisissa ympäristöissä. Niiden avulla voidaan lisätä potilaan itsenäistä liikkumista ja kävelyttää esimerkiksi halvaantuneita omassa kodissaan. Niillä voidaan myös tukea fyysisiä suoritteita, jotka ovat raskaita, kuten pelastustehtävät.
HAL-eksoluuranko. Kuvan lähde: https://hothardware.com/newsimages/Item9378/hal-suit-big-tall.jpg

ReWalk -eksoluuranko. Kuvan lähde: https://exoskeletonreport.com/wp-content/uploads/2016/08/ReWalk-6-via-ReWalk.jpg

WYSSin Soft Exosuit. Kuvan lähde: https://wyss.harvard.edu/technology/soft-exosuit/

  • Kävelyrobotit, kuten Lokomat, ovat kuntoutukseen tai itsenäisen kävelyn avustamiseen tarkoitettuja laitteita. Ne voivat koostua joko eksoluurangosta tai kokonaisesta kuntoutuslaitteistosta. Ne auttavat potilasta kävelemään oikeanlaisella askellustyylillä, mikä vahvistaa oikeanlaisen kävelyn hermoratoja aivoissa, ja voivat olla paljon tehokkaampia kuin perinteinen fysioterapia. Roboteilla voidaan esimerkiksi korjata jalkojen virheasentoja, mikä hyödyttää cp-vammaisia.
Lokomat -kävelyrobotti. Kuvan lähde: http://img.medicalexpo.com/images_me/photo-g/68750-11939172.jpg
  • Yläraajojen kuntoutusrobotit, kuten Armeo ja MIT -Manus harjoittavat molempien käsien olka- ja kyynärnivelien, ranteiden tai koko käden liikkeitä. Niiden avulla voidaan tehdä oikeanlaisia toistoja yksilöllisellä kuormitusasteella. Yläraajojen kuntoutusrobotit koostuvat yleensä tuolista ja siihen kiinnitetystä liikuteltavasta robottikädestä. Jotkut sisältävät näytöllä pelattavia kuntoutuspelejä. 
Armeo -kuntoutusrobotti. Kuvan lähde: https://cdn.shopify.com/s/files/1/0251/9611/files/SPRING_small.jpg?15467

MIT -Manus -kuntoutusrobotti. Kuvan lähde: http://theinstitute.ieee.org/image/MTk4.jpeg
2. Kotiapurobotit mahdollistavat ihmisten suuremman itsenäisyyden kotona asuttaessa. Niiden avulla voidaan mm. tarkkailla elintoimintoja, muistuttaa asioista (esim lääkkeiden ottamisista, tapaamisista), ojentaa tavaroita, jakaa lääkkeitä, pitää seuraa ja tarjota hoitoammattilaisille etäyhteyden potilaan kotiin. Kotiapurobotteja ovat mm. sosiaaliset robotit, etäläsnäolorobotit, monitoimirobotit jne. Robotteja on suunniteltu moniin eri lähtökohtiin, joten ratkaisut eroavat toisistaan käyttötarkoituksen mukaan. Kotiapurobotit tulevat tulevaisuudessa toimimaan yhdessä älykotien kanssa. Älykodin laitteet on yhdistetty tietoverkkoon, ja erilaisten sensorien avulla voidaan mitata haluttuja asioita, kuten potilaan unta. Järjestelmät voivat olla ääniohjattavia.

  • Ruotsissa on testattu vanhusten apuna sosiaalista Hobbit-robottia, joka pystyy seuran pitämisen lisäksi jakaa lääkkeitä sekä kerätä ja ojentaa pieniä tavaroita.
Hobbit-kotiapurobotteja. Kuvan lähde: http://hobbit.acin.tuwien.ac.at/photo/hobbits.jpg
  • Euroopan unioni rahoittaa GiraffPlus-projektin Giraff-järjestelmää, joka tarkoittaa kotiin asennettavien sensorien ja etäläsnäolorobotista koostuvaa kokonaisuutta. Sen avulla voidaan seurata asukkaan terveystietoja, kuten verenpainetta ja verensokereita. Etäläsnäolorobotti voi ottaa yhteyttä terveydenhuollon ammattilaisiin, jos se havaitsee jotain akuuttia, kuten kaatumisen tai verensokerin liiallisen laskemisen.
Giraff-etäläsnäolorobotti. Kuvan lähde: https://telepresencerobots.com/sites/default/files/giraff-technologies-medical-robot_0.jpg
  • EU on rahoittanut myös CompanionAblen kehittämää robottia, joka pystyy käymän keskusteluja, liikkumaan asunnossa, tunnistamaan kasvoja ja hälyttämään apua.
CompanionAblen robotti. Kuvan lähde: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTyNEhd0uAa7gVyaiW6PFtCq7D2iHfP8irZ3XrJVopHqJD2CbqR

On myös olemassa esimerkiksi pyörätuoleihin kiinnitettyjä manipulaattoreita, robotisoituja suihkuja, syöttämiseen ja juottamiseen kykeneviä laitteita sekä älykkäitä rollaattoreja (kuten LEA) ja pyörätuoleja sekä sänkyjä, jotka muuttuvat tarvittaessa pyörätuoliksi. 

Lääketieteen robotiikka


Lääketieteen robotiikalla tarkoitetaan Palvelurobotit -raportin mukaan yleensä robotiikka-avusteista kirurgiaa. Siinä robotti toimii ihmisen avustajana ja on ihmisen jatkuvan valvonnan alaisena. Robottien käyttäminen kirurgiassa mahdollistaa mm. potilaiden lyhyemmät toipumisajat, koska esimerkiksi avoleikkauksia voidaan suorittaa tähystysleikkauksien kaltaisina leikkauksina. Kirurgilla on myös parempi toimintakyky, koska hänellä on robotin ansiosta parempi näkyvyys ja tarkemmat liikkeet. Myös etäkirurgia on mahdollista. Tunnetuin leikkaussalirobotiikan tuote on tällä hetkellä yhdysvaltalaisen Intuitive Surgicalin da Vinci -leikkausjärjestelmä, joka on ensimmäinen leikkauskäyttöön hyväksytty robotti.

Intuitive Surgicalin da Vinci -leikkausjärjestelmä. Kuvan lähde: https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcRW1pQcSwSLqk-vrxu86-0PD-VwOOHCNAqWdMtOJmrC9tS9MORf1Q

Hoitotyön robotiikka


Hoito- ja hoivatyön soveltuvat robotit toimivat yhteistyössä ja vuorovaikutuksessa ihmisten kanssa. Niillä on kehittyneet ohjaus- ja aistinjärjestelmät, ja ne voivat toimia joko ääni-, kuva- tai kosketusohjauksella. Japanilla on oma robottistrategia, jonka tarkoituksena on tuoda robotiikkaa teollisuuteen, palveluihin, hoitoalalle ja lääketieteeseen. Tavoitteena on mm. muuttaa kansalaisten asenteita myönteisemmiksi hoitoalan robotteja kohtaan, vähentää työntekijöiden työn kuormittavuutta ja terveysongelmia eli parantaa hoitotyöntekijöiden työtaakkaa robottien avulla.Tavoitteena on myös parantaa hoitotyön tehokkuutta ja laatua. YLE:llä on juttu robotiikan käytöstä Japanin hoivatyössä.

Hoitajarobottien avulla voitaisiin vähentää hoitajien työtaakkaa ja vapauttaa heidän resurssejaan ns. välillisestä hoitotyöstä välittömään hoitotyöhön.

Sosiaaliset robotit ovat yksi autonomisten robottien luokista. Ne pystyvät tunnistamaan toisensa, kommunikoimaan, ilmaisemaan tunteita ja sosialisoimaan. Robotti voi esimerkiksi vuorovaikuttaa lapsen kanssa tiettyjen sääntöjen kautta. Sosiaaliset robotit voidaan luokitella sosiaalisesti avustaviksi roboteiksi ja sosiaalisesti vuorovaikuttaviksi roboteiksi. Sosiaaliset robotit tulevat olemaan tärkeä osa tulevaisuuden hoiva- ja kotiapurobotiikassa. Esimerkkinä sosiaaliesta robotista on hyljerobotti PARO, joka mm. vähentää potilaiden stressiä, edistää potilaiden ja hoitajien välistä vuorovaikutusta ja rentouttaa potilaita. Tuollaisen kaverin minäkin haluaisin!

PARO -hyljerobotti. Kuvan lähde: https://images.thestar.com/content/dam/thestar/news/insight/2015/10/05/meet-paro-a-furry-friend-to-dementia-patients/paro-tab-1-or-2.jpg

Organisaation robotiikka


Organisaatioissa robotit suorittavat lähinnä logistisia tehtäviä. Esimerkiksi Seinäjoen keskussairaalassa on aloitettu logistiikkarobottikokeilu, jossa robotit kuljettavat tarvikkeita sairaalan käytävillä. Kysesssä on teknologian tutkimuskeskuksen VTT:n ROSE-hankkeeseen liittyvä kokeilu logistiikkarobottijärjestelmän käyttöönotosta. Tavoitteena on vähentää kuljetuskustannuksia, parantaa tarvikkeiden saatavuutta ja vähentää sairaalakäytävien ruuhkaa. Jo puolen vuoden jälkeen kokeilu tuotti positiivisia tuloksia: ruuhkat ja kuljetustyön fyysinen kuormittavuus vähenivät.

Logistiikkarobotti Seinäjoen keskussairaalassa. Kuvan lähde: https://www.vtt.fi/img/Media/Uutiset/2017/TUG_logistiikkarobotti_kuljetusautomaatti.jpg

Opetusrobotit


Koulutuksen alalla robotteja voidaan käyttää opettamiseen ja oppimiseen. Esimerkiksi Elias-robotti opettaa kieliä, ja ohjelmoinnin alkeita voi opetella mm. Beebotin tai Lego-robottien avulla.

Elias-robotin avulla opiskellaan kieliä. Kuvan lähde: https://i.dailymail.co.uk/i/newpix/2018/03/28/00/4A9A5E1D00000578-5549551-Elias_can_adjust_its_expectations_and_questions_to_match_certain-a-1_1522194729926.jpg

Beebot-robotti, jolla opetellaan ohjelmoinnin alkeita. Kuvan lähde: https://www.earlyyearsresources.co.uk/images/bee-bot-floor-robot-p10405-819905_medium.jpg

Lego-robotti. Kuvan lähde: https://www.lego.com/r/www/r/mindstorms/-/media/franchises/mindstorms%202014/redesign/learn%20to%20program/cta_learn-to-program_564x350_02a.jpg?l.r2=-1747531181

Robotiikkaan liittyviä haasteita


Roboteille on helppoa suorittaa ennalta määriteltyjä ja rutiininomaisia tehtäviä. Ne ovat tarkkoja ja kestäviä ja suoriutuvat helpommin ongelmista, jotka ovat purettavissa yksiselitteisiksi algoritmeiksi. Arkinen elämä ja vuorovaikutus ihmisten kanssa esimerkiksi hoivatyössä ei kuitenkaan ole ennalta määrättyä ja hallittua. Eteen tulee odottamattomia tilanteita, joissa ongelmat eivät enää ratkeakaan yksinkertaisten sääntöjen avulla. Robotin tulee toimia epämääräisten tietojen ja havaintojen pohjalta. Eteen saattaa tulla yllättäviäkin tilanteita, joihin ei ole ennalta osattu varautua. Tällaisten tilanteiden kohtaamiseen ja hoitamiseen tarvitaan älyä. Monet robotit ovatkin vielä prototyyppiasteella, eivätkä ne toimi kunnolla. 

Etenkin humanoidirobottien toimimaan saaminen sujuvasti on hankalaa: mikä on ihmiselle helppoa, ei ole robotille helppoa. Roboteille on esimerkiksi haasteellista käsitellä satunnaisia esineitä arkisessa ympäristössä, koska se vaatii aistitiedon, toiminnan ja reagoimisen jatkuvaa yhdistelyä. Roboteille myös semiotiikka on haastavaa, eli ymmärtää yhteisön erilaisia merkkejä asianmukaisella tavalla, ymmärtää asioiden välisiä kytköksiä ja sidoksia sekä oppia uusia käytäntöjä. Esimerkiksi jos robotin tulisi erottaa kuvasta kaikki pöydät, se saattaisi luulla pöydän muotoista varjoa tai pöydästä tehtyä maalausta oikeaksi pöydäksi, tai ei osaisi luokitella hieman erikoisen näköistä pöytää pöydäksi. Robotit eivät siis ymmärrä täysin, mikä tekee pöydästä pöydän. Roboteille käveleminen ja liikkuminen on hankalaa: miten nousta esimerkiksi portaat niin, että tasapaino säilyy? 

Robottien käyttöön liittyy myös eettisiä kysymyksiä: Kuinka kauan ihminen voi olla pelkästään robotin avustettavana? Kuka on vastuussa, jos robotti toimii väärin tai aiheuttaa vahinkoa? Millaisia eettisiä ratkaisuja robotin tulisi tehdä? Esimerkiksi jos itseohjautuvan auton kyydissä on kolme ihmistä ja sen hyppää yhtäkkiä yksi ihminen. Tuleeko auton ajaa yhden ihmisen päälle, vai väistää sitä ja mahdollisesti uhrata kyydissään olevat kolme ihmistä? 

Ihmisten asenteet voivat myös hankaloittaa robotiikkaan siirtymistä. Monet saattavat suhtautua robotteihin nihkeästi, koska pelkäävät niiden vievän ihmisten työpaikat. Robotit kuitenkin myös tuovat työpaikkoja, ja joissakin ammateissa robotit voivat vapauttaa työntekijöiden resursseja itse päätyöhön, kuten hoiva-alalla ihmisten hoitamiseen. Outo laakso -hypoteesin (uncanny valley -hypothesis) mukaan ihmisten suhtautuminen robotteihin tulee myönteisemmäksi ja empaattisemmaksi, mitä enemmän robotti muistuttaa ihmistä. Jossain vaiheessa saavutetaan kuitenkin piste, jossa suhtautuminen muuttuu torjuvaksi. Kun ihminen ja robotti ovat riittävän erilaisia, ihminen tunnistaa robotin robotiksi. Kun roboteista kehitetään yhä ihmismäisempiä, välissä on epäselvä vyöhyke eli outo laakso, jolloin ihminen ei ole varma onko kyseessä robotti vai ei. "Laakson" jälkeen, kun robotti muistuttaa yhä enemmän oikeaa ihmistä, empaattiset tunteet taas palaavat. Eli ihmistä hieman muistuttavan ja ihmistä paljon muistuttavan robotin välissä on ns. outo laakso, jossa robotti koetaan epämiellyttävänä. Tätä on hyödynnetty mm. kauhuelokuvissa, joissa katsojia pelotellaan esimerkiksi nukeilla tai ihmistä hieman muistuttavilla olennoilla.

Outo laakso -hypoteesi. Kuvan lähde: https://steemitimages.com/0x0/http://i.imgsafe.org/3d35b768e6.jpg

Miksi robotiikka on tärkeää?


Palvelurobotiikalla tulee olemaan mahdollisesti tärkeä rooli yhteiskunnallisten ongelmien ratkaisussa. Tulevaisuuden Suomessa tulee olemaan isoja muutoksia niin väestön rakenteessa kuin sosiaali-ja terveyspalvelujen rakenteessa. Palvelurobotiikka ja ohjelmistorobotiikka tulee vaikuttamaan melkein kaikkiin sosiaali- ja terveysalan toimintoihin ja voi auttaa ratkaisemaan tulevia ongelmia ja uhkakuvia. 

Vanhusten määrä tulee kasvamaan, kun taas työikäisten määrä vähenee. Tilastokeskuksen arvion mukaan v. 2040 yli 65-vuotiaiden osuus Suomen väestöstä tulee olemaan n. 27 %, kun taas työikäisten määrä vähenee 58 %:iin. Kotipalvelujen laadun parantamiseen ja tarjonnan turvaamiseen tulee lisää paineita. Kansallisena tavoitteena on, että yli 75-vuotiaista 92% asuisi kotona. Palvelujen tulisi olla kustannustehokkaita ja saatavilla kaikkialla.

Väestöllinen huoltosuhde v. 1865-2040. Lähde: http://www.stat.fi/til/vaenn/2009/vaenn_2009_2009-09-30_tie_001_fi.html

Palvelurobotit -raportissa todettiin, että robotiikkaa ja automatiikkaa hyödyntämällä hoitajien työtaakkaa voitaisiin vähentää, koska henkilöstän resursseja voidaan vapauttaa sinne, missä niitä tarvitaan. Hoitotyöhön liittyvät tehtävät voidaan jakaa välittömään ja välilliseen (toimenpiteiden valmistelu, hoitotarvikkeiden kuljettaminen jne) hoitotyöhön, sekä muihin hoitotehtäviin (potilaiden siirtäminen, hoidon dokumentointi jne). Robotiikka soveltuu erityisesti välillisiin hoitotehtäviin ja muihin tehtäviin. Nykyistä robotiikaa ja automaatiota hyödyntämällä hoitajien tehtävistä voidaan tehdä 20%. Robotiikkaa voidaan hyödyntää mm. kuljetuksessa, elintoimintojen seuraamisessa sekä lääkkeiden annostelussa ja niistä muistuttamisessa, jolloin hoitajilla jää enemmän aikaa itse hoitotyöhön. Robotiikan käyttöönotto ei vähentäisi itse hoitohenkilökuntaa, koska työvoimatarve lisääntyy väestön ikääntymisen myötä. Etäläsnäolorobottien myötä kotihoitoa voidaan tehostaa: jos hoitajia ei riitä kaikkialle, niiden avulla voidaan ainakin tarkkailla potilaan tilaa, ja ottaa hätätilanteissa yhteys terveysalan ammattilaiseen.



Riba-hoitorobotti. Kuvan lähde: https://www.ampronix.com/media/wysiwyg/press-images/Riba_Robot-1.jpg

Palvelurobotiikka voi siis mahdollistaa vanhusten ja liikuntarajoitteisten itsenäisemmän elämän kotona ja tarjota hoitoa ja palveluja yhä suuremmalle joukolle ihmisiä. Siten ne vapauttaisivat henkilöstön resursseja sinne, missä niitä tarvitaan.

Vaikka robotiikkaan liittyykin vielä monia haasteita, se on kuitenkin mahdollisesti avain tulevien yhteiskunnallisten haasteiden ratkaisemiseen. Robotteihin kannattaakin suhtautua avoimin mielin: ne voivat tulevaisuudessa olla tärkeimpiä ystäviämme! 

sunnuntai 6. toukokuuta 2018

Neuroverkoista - perseptronit ja sigmoid-neuronit


Olen kurssilla Johdatus tekoälyn taustalla olevaan matematiikkaan, ja siitä innostuneena päätin kirjoittaa hieman neuroverkoista. Todella mielenkiintoinen aihe ja kurssi! Olen jo pitkään haaveillut tekoälyyn liittyvistä kursseista, ja vihdoin se toteutui! Opin paljon paremmin silloin, kun kirjoitan aiheesta, joten päätin kirjoittaa tänne blogiini. Teksti on melko suoraan otettu sivulta http://neuralnetworksanddeeplearning.com/chap1.html, jota kurssilla tulee lukea. Kiinnostuneet voivat siis tutkailla aihetta enemmän sieltä! Sivusto on ilmainen nettikirja, mikä on todella hienoa. En siis väitä näitä tekstejä tai esimerkkejä omikseni, kaikki on kyseiseltä sivulta oppimistarkoituksessa suomennettuna. Olen ottanut myös hieman infoa kurssini luentomonisteesta, eli Jyväskylän yliopiston Johdatus tekoälyn taustalla olevaan matematiikkaan -kurssin Tim-sivuilta. P.s. jos tiedätte paremman suomennoksen jollekin termille, saa vinkata! :)

NEUROVERKOT


https://3c1703fe8d.site.internapcdn.net/newman/gfx/news/hires/2017/algorithmlev.jpg


Ihmisillä on näköaivokuoressa 140 miljoonaa hermosolua, joiden välillä on kymmeniä miljardeja yhteyksiä. Silti ihmisen näköön ja kuvien prosessointiin tarvitaan monia muitakin näköaivokuoria. Käsinkirjoitettujen numeroiden tunnistaminen ei siis ole helppoa, ja se tapahtuu ihmisillä alitajuisesti.

Visuaalisten kuvioiden tunnistamisen vaikeus tulee esille silloin, kun täytyy kirjoittaa tietokone-ohjelma, joka tunnistaisi käsinkirjoitettuja numeroita. Vaikka tunnistaminen on meille helppoa, se on todella vaikeaa ohjelmille. Ei ole helppoa ilmaista algoritmisesti muotojen tunnistamista. Esimerkiksi numerossa 9 tunnistamisen ohje voisi olla: "Numerossa 9 on silmukka ylhäällä ja pystysuuntainen veto oikealla alhaalla".

Neuroverkot lähestyvät ongelmaa eri tavalla. Ideana on ottaa suuri määrä käsinkirjoitettuja numeroita harjoitusesimerkkeinä ja kehittää siitä systeemi, joka voi oppia kyseisistä esimerkeistä. Toisin sanoen neuroverkko käyttää esimerkkejä apunaan tehdäkseen automaattisesti johtopäätöksiä, jotta se voi tunnistaa käsinkirjoitetut numerot. Mitä enemmän harjoitusesimerkkejä on, sitä paremman tarkkuuden verkko voi oppia käsinkirjoitetuista numeroista.

Keinotekoisia neuroneja on kahta tyyppiä, perseptroni (perceptron) ja sigmoid-neuroni (sigmoid neuron). Standardi oppimisalgoritmi neuroverkkoihin on stokastinen gradienttimenetelmä (stochastic gradient descent).

PERSEPTRONIT


Yksi keinotekoinen neuroni on perseptroni. Frank Rosenblatt kehitti perseptoronit 1950- ja 1960-luvulla Warren McCullochin ja Walter Pittsin töiden innoittamana. Nykyisin käytetään tavallisesti toisenlaisia keinotekoisten neuronien malleja, yleisesti sigmoid-neuroneja. Jotta voi kunnolla ymmärtää, miksi sigmaneuronit määritetään niin kuin ne määritetään, on hyvä ymmärtää perseptroneja.

Perseptroniin syötetään useita eri binäärisiä syötteitä (inputeja), ja se tuottaa yhden binäärisen ulostulon (outputin). Ulostulo, joka on arvoltaan 0 tai 1, lasketaan syötteiden painotuksien summan ∑jwjxj  avulla. Painotuksien summan tulee olla yli tai alle jonkin tietyn raja-arvon.

output = 0 jos ∑jwjxj ≤ threshold

output = 1 jos ∑jwjxj > threshold


Perspetronia voi ajatella laitteena, joka tekee päätökset painottamalla eri asioita. Esimerkiksi jos viikonloppuna on festarit, saatat painottaa eri asioita päättääksesi, menetkö sinne vai et. Päätökseen voi vaikuttaa 3 tekijää:

1. Millainen sää on 
2. Haluaako ystäväsi tulla mukaan 
3. Onko festivaaleille helppo päästä julkisilla kulkuvälineillä. 

Päätöksentekoa voi helpottaa mallintamalla sitä perseptroneilla. Näitä kolmea yllä mainittua tekijää voi vastata muuttujat x(sää), x(ystävä)ja x(julkinen liikenne). x1:n arvo voi olla 1, jos sää on hyvä ja 0, jos sää on huono. x2:n arvo voi olla 1, jos ystävä haluaa tulla mukaan ja 0, jos hän ei halua tulla mukaan. x3:n arvo on 1, jos festareille pääsee bussilla ja 0, jos sinne ei pääse bussilla. 

Eri tekijöille voi antaa erilaisia painotuksia. Pidät festareista niin kovasti, ettei päätöksentekoon vaikuta kovin paljon se, tuleeko ystäväsi mukaan vai ei tai se, onko sinne helppo päästä. Näissä painotukset ovat siis pienet ( w1 = 2 ja w3 = 2). Mutta et todellakaan haluaisi olla siellä sateessa, joten sää painaa vaakakupissa enemmän kuin seura ( w2 = 6). Valitset lopuksi perseptronin raja-arvoksi numeron 5. Näillä valinnoilla perseptroni toteuttaa päätöksenteon mallinnuksen tuottamalla ulostulon 1 jos sää on hyvä ja 0, jos sää on huono. Tulokseen ei vaikuta paljoakaan se, onko ystävä tulossa mukaan tai pääseekö sinne bussilla.

Painotuksia ja raja-arvoa muuttamalla saadaan erilaisia päätöksenteon malleja. Jos esimerkiksi raja-arvo olisi 3, halukkuus festareille menemiseen kasvaisi. Perseptronit voivat siis punnita erilaisia tekijöitä tehdäkseen päätöksiä. Mitä mutkikkaampia verkostoja, sitä hienovaraisempia päätöksiä tulisi.

Kuva on otettu osoitteesta http://neuralnetworksanddeeplearning.com/images/tikz1.png


Perseptroneja voi olla eri kerroksissa. Jokainen uusi kerros voi tehdä monimutkaisempia päätelmiä, koska se painottaa aiemman kerroksen syötteitä. Perspetronin kuvausta voidaan yksinkertaistaa esimerkiksi korvaamalla raja-arvo vaikotermillä (bias, b). En mene tässä postauksessa kovin paljon syvällisemmin matematiikkaan, kiinnostuneet voivat katsoa sitä alkuperäiseltä sivulta http://neuralnetworksanddeeplearning.com/chap1.html. Vakiotermi kertoo, miten helppo perseptronin on saada arvo 1, eli miten helppoa perseptronin on aktivoitua. Suurella vakiotermillä perseptronin on todella helppo tuottaa ulostulo 1.  Jos b on hyvin negatiivinen, perseptronin on vaikea saada arvoa 1.

Perseptroneja voidaan käyttää myös laskemaan loogisia funktioita, kuten AND, OR ja NAND-funktioita. NAND-portilla voi laskea mitä tahansa loogisia funktioita, koska se on universaali. Perseptronit ovat tavallaan vain uusi tyyppi NAND-porteista. 

Oppimisalgoritmien avulla voidaan kuitenkin automaattisesti säätää keinotekoisten neuroverkkojen painotuksia ja vakiotermejä. Kyseinen säätäminen tapahtuu vasteena ulkoiseen ärsykkeeseen ilman, että ohjelmoija vaikuttaa siihen suoraan. Oppimisalgoritmien avulla keinotekoisia neuroneja voidaan käyttää tavalla, joka on erilainen verrattuna loogisiin portteihin. Neuroverkot voivat oppia ratkaisemaan ongelmia, jotka olisi vaikea pala perinteisille virtapiireille, esimerkiksi loogisille porteille. Perseptronin ongelmana kuitenkin on, että pienet muutokset painotuksissa tai syötteissä aiheuttavat ison muutoksen tuloksessa (0 /1).


SIGMOID-NEURONIT


Miten oppimisalgoritmeja voi suunnitella neuroverkoille? Olkoon meillä perseptronien verkosto, jota haluaisimme käyttää ongelmanratkaisuun. Syötteet voivat olla esimerkiksi raakapikselidataa skannatusta, käsinkirjoitetusta numeron kuvasta. Verkoston halutaan oppivan painotukset ja vakiotermit niin, että verkoston ulostulo luokittelee luvut oikein. Jotta näemme, miten oppiminen voisi toimia, teemme pienen muutoksen joihinkin painotuksiin tai vakiotermeihin. Tämän pienen muutoksen painotusten suuruudessa tulisi muuttaa ulostuloa vain hieman. Verkosto voisi esimerkiksi virheellisesti luokitella numeron 8 numeroksi 9, jolloin voisimme selvittää, miten tehdä pieniä muutoksia painotuksiin ja vakiotermeihin, jotta verkosto osaisi paremmin luokitella kuvan numeroksi 9. Tätä toistettaisiin niin kauan, kunnes ulostulo olisi parempi, eli verkosto oppisi.

Näin ei kuitenkaan tapahdu, kun käytetään perseptroneja. Perseptroneja käytettäessä pienet muutokset painotuksessa tai vakiotermissä voi aiheuttaa verkon ulostulon ”flippaamisen” radikaalisti esimerkiksi nollasta ykköseen. Esimerkiksi 9 voidaan muutosten jälkeen tunnistaa oikein, mutta muiden kuvien tunnistaminen olisi tällöin luultavasti muuttunut vaikeasti kontrolloitavaksi. Tällöin on vaikea huomata, millä tavalla kannattaa vähitellen muokata painotuksia ja vakiotermejä, jotta verkosto pääsisi lähemmäksi haluttua lopputulosta. Ei siis ole täysin selvää, miten perseptronien verkko voidaan saada oppimaan.

Ongelma ratkeaa uuden tyyppisten keinotekoisten neuronien,  sigmoid-neuronien, avulla. Ne ovat samanlaisia kuin perseptronit, mutta pienet muutokset niiden painotuksissa ja vakiotermeissä aiheuttavat vain pienen muutoksen niiden ulostuloon. Se on tärkeä tekijä  sigmoid-neuronien kyvyssä oppia.

Kuva otettu osoitteesta http://neuralnetworksanddeeplearning.com/images/tikz11.png


Sigmoid-neuroneilla on sisääntulo, mutta ykkösen ja nollan sijaan ne voivat olla mitä tahansa arvoja 0:n ja 1:n väliltä. Sigmoid-neuroneilla on jokaiselle sisääntulolle painotus ja vakiotermi, mutta ulostulo ei ole 0 tai 1, vaan sigmoid-funktio σ(wx+b), joka määritellään σ(z)≡    1 / 1+e−z

Sigmoid-neuronin ulostulo syötteillä x1, x2,..., painotuksilla w1, w2,..., ja vakiotermillä b on

1 / 1+exp(−∑jwjxj−b)


Perseptronien ja sigmoid-neuronien väillä on kuitenkin monia yhtäläisyyksiä, sillä sigmoid-funktion algebrallinen muoto on lähinnä tekninen yksityiskohta. Havainnollistetaan sigmoid-funktion samankaltaisuutta perseptronimallin kanssa: olkoon z≡wx+b jokin suuri positiivinen luku. Tällöin e−z ≈ 0 ja σ(z) ≈ 1. Eli kun  z = w * x + b on suuri ja positiivinen luku, sigmoid-funktio on noin 1, kuten perseptronissa. Mutta jos z = w * x + b on hyvin negatiivinen, e−z → ∞ ja σ(z) ≈ 0, eli ulostulo on 0. Eli kun z = w * x + b on hyvin negatiivinen, sigmoid-neuronin käyttäytyminen on myös lähellä perseptronin käyttäytymistä. Vain silloin, kun z = w * x + b on maltillisen kokoinen, sigmoid-neuroni poikkeaa perseptronin mallista.

Sigmoid-funktion huono ominaisuus on se, että se kasvaa hyvin hitaasti kun x kasvaa ja vähenee hyvin hitaasti kun x vähenee. Sen derivaatta on hyvin lähellä nollaa kun x on suuri tai pieni. Tästä seuraa ongelmia, kun verkkoa opetetaan derivaattoihin perustuvilla menetelmillä. Koska virhefunktion osittaisderivaatat neuronin painotuksien ja vakiotermien suhteen riippuvat aktivointifunktion derivaatasta, ja painotuksien ja vakioiden muutokset koulutettaessa ovat pieniä jos osittaisderivaatat ovat pieniä, 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ä [0,1][0,1].

HERMOVERKKOJEN ARKKITEHTUURI


Kuva otettu osoitteesta http://neuralnetworksanddeeplearning.com/images/tikz11.png


Vasemmanpuoleisin kerros on syötekerros (input layer), jossa olevat hermosolut ovat syöteneuroneja (input neurons). Oikeanpuolimmaisin ulostulokerros (outputlayer) sisältää ulostuloneuronit (output neurons), joissain tapauksissa vain yhden. Keskimmäinen kerros on piilokerros (hidden layer), koska siinä olevat neuronit eivät ole syötteitä tai ulostuloja. Jos piilokerroksia on useita, niitä kutsutaan joskus perseptronien monikerrokseksi eli MLP:ksi, vaikka siinä olisikin sigmoja.

Syötekerroksen ja ulostulokerroksen verkon suunnittelu on yleensä suoraviivaista, mutta piilokerrosten suunnittelu on usein melkoista taiteilua: ei ole peukalosääntöjä, joilla niitä voisi suunnitella. Piilokerrosten suunnittelussa käytetäänkin apuna heuristiikkaa.

Eteenpäin kytketyiksi verkoiksi (feedforward neural networks) kutsustaan neuroverkkoja, joissa yhden kerroksen ulosotuloa käytetään seuraavan kerroksen syötteenä. Verkossa ei ole siis loopeja eli kiertoja, koska informaatio syötetään aina eteenpäin, ei ikinä taaksepäin.

Toistuviksi / uusiutuviksi keinotekoisiksi neuroverkoiksi (recurrent neural networks) kutsutaan verkkojen malleja, joissa kierto on mahdollista. Näiden mallien ideana on neuronit, jotka ovat aktiivisia tietyn osan ajasta, ennen kuin niistä tulee uinuvia. Aktivointi voi stimuloida muita neuroneja vaikka hieman myöhemminkin, mikä johtaa lopulta monien neuronien aktivoitumiseen. Loopit eivät aiheuta mallissa ongelmia, koska neuronin ulostulo vaikuttaa sen sisääntuloon vasta vähän myöhemmin eikä heti. Nykyisin toistuvien neuroverkkojen opettelualgoritmit ovat vielä vähemmän voimakkaita kuin eteenpäin kytkettyjen verkkojen. Mutta toistuvat neuroverkot ovat silti mielenkiintoisia, koska ne toimivat samankaltaisemmin kuin omat aivomme.

YKSINKERTAINEN VERKKO KÄSINKIRJOITETTUJEN KIRJAINTEN TUNNISTAMISEEN



Käsialan tunnistaminen voidaan jakaa kahteen alaongelmaan.  Ensin kuva lukusarjasta tulisi jakaa yksittäisiin kuviin, esim 456 olisi 4, 5 ja 6. Kuvan jakaminen on helppoa meille ihmisille, muta haasteellista tietokoneohjelmalle. Toiseksi, kun kuva on jaettu, jokainen yksittäinen numero tulee luokitella. Lukusarjan jakaminen yksittäisiin lukuihin onnistuu esimerkiksi siten, että numeroiden luokittelua käytetään lähestymistapana. Kannattaa siis keskittyä toiseen ongelmaan eli numeroiden luokitteluun.

Erottelu saa korkeat pisteet, jos yksittäisen numeron luokittelija on varma kaikkien numeroiden luokittelussa. Alhaisen numeron erottelu saa, jos luokittelijalla on ongelmia joidenkin numeroiden kohdalla. Ideana on, että jos luokittelijalla on jossain ongelma, sillä on luultavasti vaikeuksia siksi, että erottelu on valittu väärin perustein. Tätä ja muita vaihtoehtoisia tapoja voidaan käyttää ratkaisemaan erotteluongelma melko hyvin.

Kuva otettu osoitteesta http://neuralnetworksanddeeplearning.com/images/tikz12.png


Käsinkirjoitetun yksittäisen numeron tunnistamiseen tarvitaan kolmekerroksista neuroverkkoa (yllä). Syötekerros sisältää neuroneja, jotka koodaavat syötepikselien arvot. Verkoston harjoitteludata koostuu monesta 28 x 28 pikselin käsinkirjoitettujen numeroiden kuvista, joten syötekerros koostuu 784 = 28 x 28 neuronista. Syötteen pikselit ovat harmaaväriskaalattuja: arvo 0.0 esittää valkoista, arvo 1.0 esittää mustaa ja väliin jäävät arvot esittävät asteittain tummenevia harmaan sävyjä.

Piilokerroksen neuronien lukumäärää kuvataan n:llä. Ulostulokerros sisältää 10 neuronia. Jos ensimmäinen neuroni aktivoituu eli sen ulostulo on 1, se merkitsee, että verkko ajattelee numeron olevan 0. Jos toinen neuroni aktivoituu, se osoittaa, että verkko ajattelee numeron olevan 1 jne. Tarkemmin sanottuna ulostuloneuronit numeroidaan luvuilla 0-9 ja selvitetään, millä neuroneista on korkein aktivointiarvo. Jos se on kutosella, verkko arvaa, että syötekuva oli 6.

OPPIMINEN GRADIENTTIMENETELMÄN AVULLA


Miten neuroverkko voi oppia tunnistamaan numeroita? Sen täytyy ensin oppia ns. harjoitusdatasetistä.  Esimerkiksi MNIST datasetti sisältää kymmeniätuhansia skannattuja kuvia käsinkirjoitetuista numeroista sekä niiden oikeat luokittelut. MNIST data on kaksiosainen. Ensimmäinen osa sisältää 60 000 kuvaa, joita käytetään harjoitusdatana. Nämä kuvat on skannattu 250 ihmisen käsinkirjoitetuista näytteistä. Kuvat harmaaväriskaalataan ja asetetaan 28 x 28 pikselin kokoisiksi. Toinen osa MNISTin datasetistä sisältää 10 000 kuvaa, joita voi käyttää testidatana. Nekin ovat 28 x 28 harmaaväriskaalattuja kuvia. Testitataa käytetään arvioimaan, kuinka hyvin hermoverkko on oppinut tunnistamaan numeroita. Jotta saavutettaisiin mahdollisimman hyvä suoritus, testitdata otettiin 250 eri ihmiseltä kuin alkuperäinen harjoitusdata. Se varmistaa, että systeemi kykenee tunnistamaan numeroita ihmisiltä, joiden kirjoitusta se ei ole nähnyt harjoituksen aikana.

x:llä ilmaistaan harjoitusyötettä. Jokainen harjoitussyöte x on 28 x 28=784 -ulotteinen vektori. Jokainen vektorin alkio edustaa kuvan yksittäisen pikselin harmaa-arvoa (grey value). Haluttua ulostuloa merkitään y = y(x), missä y on 10-ulotteinen vektori. Halutaan algoritmi, mikä auttaisi löytämään painotukset ja vakiotermit niin, että verkon ulostulo vastaisi y(x):ää kaikilla harjoitussyötteillä x. Jotta voidaan arvioida, miten hyvin tämä tavoite on saavutettu, määrittetään virhefunktio C:


Virhefunktio C kertoo, miten hyvin verkon ulostulo vastaa y(x):ää kaikilla harjoitussyötteillä x. Jos C on lähellä nollaa, harjoitusalgoritmi on suoriutunut hyvin. Mikäli C:n arvo on suuri, se tarkoittaisi, ettei y(x) ole monilla syötteillä lähellä ulostuloa a. Halutaan siis löytää sellaiset painotukset ja vakioarvot, jotka tekevät C:n mahdollisimman pieneksi. Se onnistuu käyttämällä algoritmiä nimeltään gradienttimenetelmä.

Gradienttimenetelmän päämääränä on siis löytää painotukset ja vakiotermit, jotka minivoivat virhefunktio C(w,b):n arvon. Oppimisessa gradienttimentelmää käytetään korjaamaan neuronien parametrit. Tarkempaa tietoa gradienttimenetelmän matemaattisesta puolesta ja sen periaatteista voi lukea alkuperäiseltä sivulta http://neuralnetworksanddeeplearning.com/chap1.html
_________________________________________________________________________

Siinä oli hieman infoa ja käsitteitä neuroverkoista ja siitä, mihin koneoppiminen neuroverkkojen avulla perustuu. Hirmuisen mielenkiintoista!