in English | suomeksi neokybernetiikastaluentoja – keskustelu

Pohdintoja (8)

  • Jälleen kerran toistettiin ajatusta siitä, kuinka empiria tarvitsisi tuekseen rationalismia maailman ymmärtämiseksi. Ihanan epistemologista. Antaako empiria kiintopisteen rationalismille, josta on hyvä ponnistaa kohti maailman ymmärtämistä? Pelkkä empiria on sarja kiintopisteitä ilman, että niiden välille luotaisiin yhteyksiä ajatusmallien avulla. Toisaalta voiko ajatusmallit suoraan emergoitua empiriasta?

    Luennolla esitettiin, kuinka järjestelmästä saatua dataa voitaisiin suoraan sellaisenaan ilman erillistä luokittelumenetelmää. Tarkoittaako tämä todella sitä, että luokittelu emergoituu itse datasta? Käy tavallaan järkeen. Siitä huolimatta tarvittiin datan prosessointia taajuustason ja logaritmien avulla, sillä ei data itse mitään luokittelua tee. Onko tämä kuitenkaan puhdasta emergenssiä? Lopulta kävi ilmi, että meidän on aina jollakin tavalla mentävä dataan ja systeemiin kiinni, jotta sieltä saataisiin jotakin ulos.

    Itse näen myös metafysiikan hyödyllisenä ajatusleikkinä. Voi löytää uusia hyödyllisiä näkökulmia irtautumalla nykyoletuksista maailman olemassa olosta. Näitä miettimällä ajatus kirkastuu parhaimmillaan. Näissä päästään aika nopeasti niin syvään systeemifilosofiaan, ettei vielä ole tarpeeksi valmiuksia käsitellä sitä.

    Matematiikka enformaation neliöllisyyteen oli vielä aivan ymmärrettävissä olevaa asiaa. Moni asia jäi vielä hämärän peittoon. Ajatus jousista oli jollakin tasolla ymmärrettävissä, mutta ajatus sen suhteen ei täysin vielä kirkastunut. Piirteitä kartoittavan evolutiivisen algoritmin toiminta selkiytyi pääpiirteittäin, mutta edelleen jäi epäselväksi, miten sitä todella käytetään. Tässä auttaisi, jos itse tekisi toteutuksen algoritmista ja kokeilisi hyödyntää sitä jonkin ongelman ratkaisuun.

    — Juho

  • Neljännellä luennolla päästiin ideatasolta käytännön neokyberneettisiin malleihin. Erityisesti keskityttiin neuronin mallintamiseen. Lähtökohtana mallinnuksessa oli, että neuronilla on käytössä ainoastaan lokaalia tietoa (aivan kuten tosielämän tapauksessa) ja että mallin on oltava lineaarinen.

    Luento selkeytti jonkin verran edellisessä kommentissani esittämääni pohdintaa top-down ja bottom-up lähestymistapojen suhteesta emergenssin mallintamiseen. Parhaaseen tulokseen päästään siis yhdistämällä näitä näkökulmia.

    Esimerkkinä neuroverkkomallin parametrien oppimiseen esiteltiin Hebbian-oppiminen, joka perustuu empiirisiin havaintoihin neuronien ja synapsien toiminnasta. Suoritin aikoinaan kurssin aiheesta Nature Inspired Computing, jossa käsiteltiin useita muita luonnon inspiroimia algoritmeja. Johtopäätöksenä oli, että luonto tarjoaa monia hyviä ideoita algoritmien kehittämiseen. Käytännön sovellutuksissa ei kuitenkaan ole aina järkevää pyrkiä pitäytymään tiukasti niissä säännönmukaisuuksissa, jotka voidaan havaita luonnon järjestelmissä. Sen sijaan voidaan kehittää keinotekoisia heuristiikkoja, jotka tuovat parannusta esim. muurahaisalgoritmeihin. Vastaavasti luennolla esiteltiin Erkki Ojan sääntö, jolle ei välttämättä voida löytää suoraa analogiaa luonnosta, mutta joka stabiloi mukavasti oppimisprosessin.

    – Eric

  • Neljäs luento toi kaipaamaani konkretiaa edellisellä luennolla melko villisti lennelleiden käsitteiden mylläkkään. Luentokysymyksissä tiedusteltiin vapaasti suomentaen opiskelijoiden näkemystä emergenttien hahmojen syvärakenteesta sekä kysyttiin miten kuvata attraktoreja, jotka sääntelevät muuttuvaa käyttäytymistä. Edellinen kysymys on melko filosofinen ja palauttaa keskustelun jälleen hierarkiatasoihin ja reduktionismiin. Määritelmällisesti emergenttejä ilmiöitä ei voida suoraan palauttaa alemman tason ominaisuuksiin, mutta silti ne jotenkin seuraavat alemman tason elementtien vuorovaikutuksista. Syvärakenteilla kaiketi tarkoitetaan jotakin pinnan alla piileviä rakenteita, jotka eivät suoraan ilmene tarkasteltavan ilmiön käyttäytymisessä. Kysymyksen asettelu antaa kuitenkin ymmärtää, että syvärakenteet ja hierarkian alempi taso halutaan pitää erillään, ne äkkiseltään voisivat kuulostaa samoilta asioilta. Näin ollen emergenttien ja determinististen tasojen väliltä oletetaan löytyvän vielä syvärakenteita, joiden perusteella emergenttejä ilmiöitä voidaan mahdollisesti ymmärtää paremmin. Tämä on ehkä vain yksi tapa jäsentää ongelmaa ja mahdollisesti kadottaa joitain olennaisia piirteitä. Syvärakenteen voidaan ajatella koostuvan piilevistä attraktoreista, jotka jollain tavalla määrittelevät kentän dynaamista käyttäytymistä. Toivottavasti kurssin aikana selviää, miten näitä attraktoreja voidaan mahdollisesti kuvata.

    Alussa tosiaan kerrattiin viime luennon ideamyrskyä ja luotiin siihen tervetullutta selkeyttä. Neokyberneettiset mallit siis pyrkivät yhdistämään holistisia ja reduktionistisia lähestymistapoja. Yksityiskohdat pyritään hävittämään keskiarvoistamalla ilmiöt aika-akselin yli. Tässä ilmeisesti viitataan eri aikaskaaloihin, sillä keskiarvoistamalla yli koko aika-akselin, dynaamiset ominaisuudet luonnollisesti häviävät. Myöhemmin puhuttiin emergenteistä hahmoista, jotka kuvauksena korvaavat prosessin kuvauksen. Lokaalien vuorovaikutusten merkitystä korostettiin sekä pyrkimystä jonkinlaiseen tasapainoon painotettiin jälleen. Lisäksi todettiin, että alla olevien vuorovaikutusten ja kytkentöjen täytyy olla jollain tavalla konsistentteja, jotta systeemin yhtenäisyys säilyy. Tällä viitataan ilmeisesti edellä mainittuun syvärakenteeseen. Jotain rakennetta täytyy olla, jotta voidaan ylipäätään puhua systeemistä.

    Loppuosa luennosta johdatteli systeemien mallinnukseen yksittäisen neuronin ja neuroniverkkojen kautta. Hebbiaanista opetusta sekä siihen yhdistettyä negatiivista takaisinkytkentää käsiteltiin tapana löytää pääkomponentteja datasta. Askel eteenpäin saatiin, kun takaisinkytkentä korvattiin resurssimallilla, jossa systeemin aktiivisuus kuluttaa ympäristön resursseja ja sitä kautta sääntelee systeemin käyttäytymistä. Tätä kutsuttiin tyhmäksi agentiksi, sillä se ei edellyttänyt mitään tietoa ympärillä olevista agenteista. Aavistuksen hankalien matemaattisten perustelujen jälkeen todettiin, että tällainen tyhmä ja itsekäs agentti oppii käyttäytymään kuin älykäs agentti. Tästä johdettiin yhteys ”mustaan kohinaan” sekä faktorianalyysiin sekä esiteltiin PCA:n ja neokyberneettisen mallin erilaisia tapoja kuvata dataa. Välissä havainnollistettiin systeemin toimintaa kotisivuilta löytyvällä java-sovelluksella, mutta se lähinnä sekoitti omia ajatuksiani lisää.

    Tässä vaiheessa putosin jälleen hieman kärryiltä, sillä lopussa meinasi aika loppua. Jonkinlaisena johtopäätöksenä kuitenkin todettiin, että neokyberneettisessä mallissa tyhmä agentti oppii käyttäytymään globaalin mallin edellyttämällä tavalla käyttämällä hyväkseen ainoastaan lokaaleja vuorovaikutuksia ilman mitään ylhäältäpäin tulevaa ohjausta. Tällä globaalilla mallilla tarkoitettiin ilmeisesti jotenkin harvakoodattua pääkomponenttiavaruutta. Pääkomponentit tai pääkomponenttiavaruus ovat kuitenkin mielestäni melko staattisia datan ominaisuuksia, eivätkä siten yksinään kuvaa mitään kovin emergenttiä. Toki on merkityksellistä, että niihin päädytään hyvin alkeellisista perusolettamuksista lähtien kuin itsestään. Ehkä tätä asiaa selvennetään vielä myöhemmin.

    — Antti

  • Luennolla esiteltiin taas tukku uusia käsitteitä ja käsitteiden yhdistäminen reaalimaailmaan sekä matematiikan yhdistäminen käsitteisiin on vaikeampaa kuin miltä se näyttää. Jälleen on suuri harppaus olettaa, että reaalimaailmassa on systeemeitä. Mitä enemmän asiaa pohtii, sitä vaikeampi on päästä itsensä kanssa yhteisymmärrykseen syvärakenteista.

    Kalvoissa esitetään kysymys muuttuvien käytösten attraktorien kiinniottamisesta. Wikipedia sano, että attraktori on joukko, johon päädytään riittävän pitkän ajan kuluttua. Eli tasapaino on ilmeisesti attraktori. Tasapainohan voidaan saavuttaa negatiivisella takaisinkytkennällä. Kaikki takaisinkytkennät ovat mielestäni selitettävissä adoptoimalla enemmän tai vähemmän tehokkaasti ympäristön takaisinkytkentöjä.

    — Ilari

    • Jälleen on suuri harppaus olettaa, että reaalimaailmassa on systeemeitä

      – Mitä tarkoitat tällä, kyllä kai systeemejä on … vai epäiletkö kuinka kyberneettisiä ne systeemit ovat?

      Käsitteiden yhdistäminen reaalimaailmaan sekä matematiikan yhdistäminen käsitteisiin on vaikeampaa kuin miltä se näyttää

      – Näin on, ja sen vuoksi onkin hyvä että vaikeillekin käsitteille on pelkistetyt (työ)määritelmät: esimerkiksi se vaikein reaalimaailman käsite ”emergenssi” on yhdistetty matematiikkaan yksinkertaisesti kaavalla ”E{xuT}”.

      Heikki

  • Hei,

    Ajatuksia tulikin tällä kertaa hieman enemmän, ja toivoakseni ne ovat hieman yhtenäisempiä suhteessa edelliskertaan. Tällä kertaa luennon aihepiireistä oli jo (ehkä) jonkinlaista tuntemusta pohjalla.

    Luennolla mainittu symbolinen tekoäly sisältää mielestäni paljon hankalia tilanteita. Ongelmat uskoakseni ratkeaisivat kuitenkin numeerisella neuroneihin pohjautuvalla tekoälyllä. Olen miettinyt mahdollisuutta yhdistää lokaalia koodausta (local coding) käyttäen symbolisen tekoälyn neuroverkkoon… käytännössä siis jonkin piirteen aktivoiduttua havaittaisiin yhden neuronin aktivaatio, jota käsiteltäisiin sellaisenaan. Tämä kuitenkin sisältää useita ongelmia.. Entä, jos on vain osa jostakin kappaleesta? On hankalaa poistaa jotakin ilman mutkikkaita rakenteita. Lokaali koodaus ei ole aivojen neuronien käyttämä ratkaisu myöskään… Jokin yhteys tarvittaisiin siis harvakoodauksen ja symbolien yhdistämiselle. Tällöin piirteiden yhdistäminen/poistaminen olisi helppoa.

    Syvärakenteet mielestäni käsittävät usean ”tason” neuroverkot, jotka tunnistavat yhden mallin sijaan useita malleja, ja kykenevät määrittämään rajan eri mallien välillä. Käytännössä malli siis oppii syvempiä rakenteita pelkän puhtaan korrelaation sijaan. Tätä voisi myös ajatella toimintapisteiden tunnistamisena ja niiden oppimisena pelkkien sisääntulojen pohjalta. Tämänkaltainen malli mahdollistaa useamman tason hierarkioiden oppimisen, mutta laajojen syvärakenteiden oppiminen edellyttää top-down -mallista oppimisen ohjaamista. Näitä algoritmeja on käsittääkseni hyvin paljon. Georfrey Hintonin artikkelissa Learning Multiple Layers of Representation kuvataan rajoitetun Boltzmannin koneen käyttämistä tähän tarkoitukseen. Hitaiden piirteiden analyysi (Slow feature analysis), Canonical correalation analysis ja piilotetut Markovin mallit (Hidden Markov Models) kykenevät käsittääkseni myös vastaavaan oppimiseen. Myös muita algoritmeja on olemassa.

    Lineaarisuus on mielestäni hyvin mielekäs oletus, ja vaikkei lineaaristen mallien joukko ole tietyssä mielessä yhtä suuri suhteessa kaikkiin malleihin, niin uskoakseni lineaariset mallit kykenevät neuronien (erityisesti neuroverkkojen) tapauksessa selittämään pääosan ilmiöistä. Perseptronit esimerkiksi kykenevät jo sellaisenaan tekemään mainiosti luokittelua (eräässä harjoitustyössä kokeilin roskapostisuodattimen tekemistä lineaarisella binääriperseptronilla. Malli pääsi alle 3% virheeseen). Usean tason perseptroneilla pääsisi taas huomattavasti parempaan luokittelutarkkuuteen. En myöskään usko esimerkiksi mutkikkaiden abstraktiohierarkioiden muodostumisen olevan mahdoton asia binääriperseptronilla. Muistin säilöminen lineaarisilla takaisinkytketyillä verkoilla on suhteellisen vanha temppu (Hopfieldin verkko). Uskoakseni voidaan hyvillä mielin käyttää lineaarisuutta niin pitkään kuin tarvitsee. On silti myös hyvä tunnustaa, ettei tämä vastaa täysin oikeaa biologista neuroniverkkoa, jossa voi teoriassa tapahtua hyvinkin outoja asioita.

    Lähtökohtaisesti koen neuroverkot hankalasti analysoitaviksi, jollei oppimismenetelmä ole täysin intuitiivinen. Tämän takia pelkkä verkko ei mielestäni kerro paljoa, vaan haluaisin aina tietää verkon muodostamiseen käytetyn oppimismenetelmän. Esimerkiksi SOMin ja Hopfieldin verkkojen tapauksissa opetusalgoritmit ja ideat tuntuvat intuitiivisilta. Muuten päädytään uskoakseni tilanteeseen, jossa voidaan vain simuloida verkkoja.

    Itse käsitän ongelman Hebbin oppimisessa usean neuronin verkossa olevan osittain saman piirteen oppimisessa (kaikki oppivat saman piirteen -> ei mitään iloa verkosta). Toisista neuroneista tulevat inhiboivat takaisinkytkennät kuulostavat kiinnostavalta ratkaisulta. Aivokuorella tapahtuu jatkuvasti vastaavaa kilpailuoppimista, jossa vierekkäiset neuronit inhiboivat lähellä olevien neuronien aktivaatitoa. Jos monen neuronin tapauksessa voidaan muotoilla lauseke, joka ilmaisee tasapainotilaa, niin voisiko tätä hyödyntää mahdollisesti työkaluna?

    En mielestäni huomannut päättelyssä mitään virheitä, mutta intuitiivisesti olisi vaikea ajatella neuroniverkon kykenevän muuhun kuin yleistävään ”ajatteluun”, mikäli neuronien määrän tulee olla pienempi kuin sisääntulevien signaalien määrä. Toisaalta tämä voi olla hyvä asia. Mielenkiintoisia ilmiöitä saatanee varmasti myös tutkittua, jos näitä verkkoja ”ketjuttaa”, laittaa neuronien tiloja aitoina sisääntuloina osalle neuroneista. Tämänkaltaisen järjetelmän tasapainon analysointi onkin taas mutkikkaampaa, mutta tällä saataisiin havaita uusia emergenssin tasoja.

    Yhdeksikköesimerkistä minulle tuli mieleen ”ominaiskasvot,” jotka ryhmittelivät samanlaisia kasvoja. Pitkälti kysymys oli hauskasta PCA:n sovelluksesta, jolla ei kuitenkaan käytännön merkitystä ole. Luennolla esitetyt tulokset olivat hyvin kiinnostavia (tämä on oikeastaan ensimmäinen kerta, kun näen pääkomponentit piirrettyinä värikoodattuina). Itse olen samaa mieltä PCA:n asemasta fysikaalisessa koodauksessa. Matemaattisesti PCA on tehokkain, mutta se ei kuitenkaan taivu keksittyyn kirjoitusjärjestelmään (periaatteessahan joku voisi keksiä kirjoitusjärjestelmän, josta pääkomponentit eivät voisi kertoa käytännössä mitään).

    Tietyllä tavoin pidän ”tyhmien agenttien” ideasta, vaikken sitä pitäisikään biologisesti korrektina (se tässä ei lienekään ideana..). Tietynlainen energian säilyminen huomioidaan, mitä pidän mielekkäänä. Järjestelmän stabiilius ja hakeutuminen tasapainoon vaikuttaa mielestäni myös hyvin kiinnostavalta.

    Matemaattisen ja kyberneettisen datan rakenteen vertailu vaikuttaa kiinnostavalta. Erityisesti harvakoodaukseen päätyminen vaikuttaa kiehtovalta, sillä nähdäkseni se on yksi avaintekijöistä datan esityksestä neuroverkossa (symbolisen tekoälyn ja neuroverkkotekoälyn ”silta”).

    Harvakomponentit vaikuttavat hyvin kiinnostavalta. En ehtinyt vielä katsoa matlab-koodia läpi, mutta ajatuksena luennolla esitetty ja esitellyt tulokset (kuvat) vaikuttivat kiinnostavilta.

    Minun täytyy myöntää, että monet matemaattiset yksityiskohdat jouduin hyppäämään tässä vaiheessa yli (kevään kannalta lokaalin ajanpuutteen takia), mutta luennolla esitetyt ajatukset ja ideat vaikuttivat kiehtovilta. Olen pohtinut vastaavia ajatuksia itsekseni käytyäni viime keväänä kurssin Information Processing in the Brain. Kurssilla tuli esille monia luennolla esitettyjä ajatuksia, ja olen niitä itsekseni sitten yrittänyt pohdiskella myöhemmin.

    — Nexton

    • Jokin yhteys tarvittaisiin siis harvakoodauksen ja symbolien yhdistämiselle.

      Sanopa muuta, symbolinen ja numeerinen tiedon esitys ovat yhteensopimattomia, eri tason ilmiöitä … tässä kehyksessä ajatuksena onkin ”emergenssi kesyttämällä” määritellä ylemmän tason ilmiöt stabiileina harvakoodautuneina attraktoreina, jotka muodostuvat datatason algoritmien konvergoidessa. Näihinhän palataan myöhemmin.

      laajojen syvärakenteiden oppiminen edellyttää top-down -mallista oppimisen ohjaamista.

      … Mutta ylemmän tason ohjaus edellyttää jonkinlaista ”ylemmän tason älykkyyttä”, ja tällaista emme halua olettaa! Kaiken on emergoiduttava alemmalta tasolta automaattisesti.

      Uskoakseni voidaan hyvillä mielin käyttää lineaarisuutta niin pitkään kuin tarvitsee. On silti myös hyvä tunnustaa, ettei tämä vastaa täysin oikeaa biologista neuroniverkkoa, jossa voi teoriassa tapahtua hyvinkin outoja asioita.

      Näinpä juuri. Lineaarisuus on hyvä olettamus, hyvä että olet samaa mieltä … kovin moni ei ole! Tässä kehyksessä epälineaarisuutta emergoituu automaattisesti, harvakoodautumisen mielessä. – Luentojen lopussa voidaan todeta, että lineaarisuudessa pitäytyminen saa kauniin palkinnon!

      Aivokuorella tapahtuu jatkuvasti vastaavaa kilpailuoppimista, jossa vierekkäiset neuronit inhiboivat lähellä olevien neuronien aktivaatitoa. Jos monen neuronin tapauksessa voidaan muotoilla lauseke, joka ilmaisee tasapainotilaa, niin voisiko tätä hyödyntää mahdollisesti työkaluna?

      Joo … tässä kehyksessä tuo onnistuu!

      intuitiivisesti olisi vaikea ajatella neuroniverkon kykenevän muuhun kuin yleistävään ”ajatteluun”, mikäli neuronien määrän tulee olla pienempi kuin sisääntulevien signaalien määrä.

      Niin kauan kuin puhutaan mielestä mallina, on mielekästä olettaa, että mieli tekee kompressiota, siis informaation tiivistämistä, kuten kaikki muutkin mallit! – Olet kyllä oikeassa siinä, että mielen tulkitseminen pelkkänä syötteiden ”suodattimena” on liian kapea.

      Tietyllä tavoin pidän ”tyhmien agenttien” ideasta, vaikken sitä pitäisikään biologisesti korrektina (se tässä ei lienekään ideana..). Tietynlainen energian säilyminen huomioidaan, mitä pidän mielekkäänä. Järjestelmän stabiilius ja hakeutuminen tasapainoon vaikuttaa mielestäni myös hyvin kiinnostavalta.

      No … kyllä myöhemmin (luento 5) oletetaan juuri tämän ”itsekkäiden agenttien” rakenteen olevan jonkinlainen varsin yleinenkin ajattelun kehys.

      Olen pohtinut vastaavia ajatuksia itsekseni käytyäni viime keväänä kurssin Information Processing in the Brain. Kurssilla tuli esille monia luennolla esitettyjä ajatuksia, ja olen niitä itsekseni sitten yrittänyt pohdiskella myöhemmin.

      Tuo mainitsemasi kurssi https://noppa.tkk.fi/noppa/kurssi/tfy-99.3730/etusivu vaikuttaa varsin kiinnostavalta, sitä voisi suositella muillekin. Outoa ettei siellä sanottu muuta kuin että ”Competition forces the neurons to specialize; [this] results in a sparse feature code” (Lec. 9 slides p22) … ei kai se mikään yleisesti tunnettu tosiasia ole!?

      Heikki

  • Neljännellä luennolla nostettiin esiin kysymys ongelmien top-down ja bottom-up -lähestymistapojen yhdistämisestä. Tämä siis tarkoittaa reduktionistisen ja holistisen tarkastelun symbioosia, tai humanistisemmin sanottuna rationalistisen ja intuitiivisen lähestymistavan kombinaatiota.

    Luen parhaillaan Malcolm Gladwellin kirjaa Blink, jota voin lämpimästi suositella. Siinä käsitellään lukuisin mielenkiintoisin esimerkein ihmisen intuitiivisen, salamannopean päättelyn (Gladwell kutsuu tätä slicing -tekniikaksi) ja rationaalisen tarkastelun eroja. Esimerkiksi tarina tennisopettajasta, joka huomasi tietävänsä lähes 100% tarkkuudella milloin huippupelaajat syöttävät kaksoisvirheen, ennen kuin kakkossyöttö oli edes lähtenyt, on mielestäni mielenkiintoinen. Hän siis onnistui ennakoimaan ne muutamat kaksoisvirheet, joita huippupelaajat ottelussa tekevät. Opettajaa itseään asia vaivasi niin paljon, että hän vietti asiaa pohtiessaan unettomia öitä. Gladwell kuitenkin toteaa, ettei ihminen aina pysty saamaan selville, kuinka alitajunta toimii — tässäkin tapauksessa opettajan ponnistelut ”logiikan” löytämiseksi olivat turhia.

    Kuten myös ihmismielessä, myös tieteen tasolla kahden erilaisen lähestymistavan — reduktionismin ja holistisen tarkastelun — linkki tuntuu toistaiseksi puuttuvan. Lähestymistavat ovat ikäänkuin yhteensopimattomia toistensa kanssa.

    Teleologinen tulkinta neuroneille — neuronit haluavat kytkeytyä sinne missä on paljon signaaleja — vaikuttaa periaatteessa järkevältä. Siinä kuitenkin mielestäni törmätään samaan ongelmaan kuin ”älykkäiden agenttien” tutkimuksessa; miten saadaan luotua agentille tai hermosolulle motivaatio edetä toiminnallaan jotain päämäärää kohti. Vahvistusoppiminen (reinforced learning) tarjoaa tietysti yhden, kuitenkin kovin keinotekoisen lähtökohdan. Siinä kaikki vahvistuskytkennät tulee käsittääkseni olla (asiaa sen enempää tuntematta) ihmisen ohjelmoimia. Se on siis vain muoto ohjatusta oppimisesta. (kommentoikaa jos olen jotenkin radikaalisti väärässä, tai matkassa liian kapeakatseisesti)

    — Tommi

Kirjoita pohdinta

Vapaaehtoisia lisätietoja jotka eivät tule julkisesti näkyviin.
Kiitos! Viestisi näkyy ylläpidon toimien jälkeen.