Miksi lineaarinen ohjelmointi malli on liian kankea tekoälyn ohjaamiseen?
Lineaarinen ohjelmointi tarkoittaa sitä, että tietokoneohjelmassa koodia suoritetaan siinä järjestyksessä, kuin miten se on kirjoitettu. Sellaisissa sovelluksissa jotka on kirjoitettu lineaarisilla ohjelmointikielillä koodi on ikään kuin taulukko, missä tietokone käy sen läpi rivi kerrallaan, ja tuon takia tietokoneohjelmisto on tietenkin tehokas.
Mutta jos ajatellaan esimerkiksi robottien sekä erityisesti itsenäiseen toimintaan kykenevän robotin ohjelmointi on vaikeaa johtuu siitä, että ohjelman pitäisi pystyä mukautumaan kaikkiin mahdollisiin tilanteisiin. Se että tietokone ei kykene soveltamaan saamiaan ohjeita tekee siitä vielä kömpelön toimijan.
Jos ajatellaan tilannetta, että meidän pitäisi luoda auto, joka kykenee itsenäiseen ajosuoritukseen, niin silloin meidän pitää tietenkin ohjelmoida kaikki mahdolliset muodot tietokoneen muistiin, ja sitten kun sen tunnistus-ohjelmisto tunnistaa esimerkiksi multakasan, niin silloin se lähettää tietokoneelle pyynnön käyttää tiedostoa mihin on ohjelmoitu prosessi, mitä tulee tehdä kun sensori havaitsee multakasan. Tietokoneen pitää tuolloin käydä jokainen rivi tästä aliohjelmasta läpi, ja sen takia kyseinen ohjelma on todella jäykkä, jos sitä verrataan ihmisen kykyyn tehdä päätöksiä.
Tietokone ei siis osaa hyppiä rivien yli, ja tuolloin syntyy ikäviä “väärinkäsityksiä”, koska vaikka auto osaisi väistää multakasaa, niin silti sen pitää huomioida esimerkiksi liikennesääntöjä. Ja kaikkein yksinkertaisinta olisi tehdä aliohjelma tai kooditaulu, mikä kertoo tietokoneelle, miten sen tulee missäkin tilanteessa toimia. Mutta jäykkien ohjelmointikielten kohdalla on ongelma siinä, että tuo toisen aliohjelman kutsu on tehtävä oikealta riviltä, tai seurauksena on katastrofi.
Jos noita kutsuja on liikaa, niin silloin ohjelmasta tulee hyvin kankea, ja jos kutsu viittaa väärään tauluun, aiheuttaa se varmasti ongelmia. Tätä asiaa voidaan havainnollistaa sellaisella esimerkillä, että tekoälyn avulla itsenäisesti toimiva auto on ohjelmoitu huomioimaan liikennevalojen punainen, keltainen sekä vihreä väri. Mutta erottaako kone todella värit, vai ainoastaan sen, mikä kolmesta valosta palaa on tärkeää. Nimittäin tietokoneen pitää tuolloin huomioida myös se, että autoissa on taaksepäin punaiset valot, ja tuolloin auto saattaa esimerkiksi pysähtyä keskelle moottoritietä, koska se ei erota punaista liikennevaloa punaisista takavaloista.
Tietenkin liikennevalot voidaan ohjelmoida näyttämään tiettyä koodia, ja tuolloin auto toimii ehkä oikein tällaisessa tilanteessa. Mutta mitä jos liikennevalo, mikä lähettää koodattuja ilmoituksia menee epäkuntoon saattaa tuollainen auto olla pulassa. Tai esimerkiksi lika tuon lampun edessä estää sitä lukemasta tuota koodia. Samoin tietokone voi vahingossa tulkita esimerkiksi vihreän takin tai paidan vihreäksi liikenne valoksi, ja silloin varmasti syntyy ongelmia. Eli tämän takia olisi tärkeää kehittää tietokoneita, jotka kykenevät soveltamaan saamiaan käskyjä, niin että myös odottamattomat asiat tulevat huomioiduiksi jollakin järkevällä tavalla, niin että esimerkiksi multakasa ei aiheuta sitä, että auto seisoo risteyksessä puoli päivää.
Image: https://en.wikipedia.org/wiki/Pontiac_GTO#/media/File:1966_&_1969_Pontiac_GTO_(34841847634).jpg
Kommentit
Lähetä kommentti