Kirjautuminen

Haku

Tehtävät

Keskustelu: Yleinen keskustelu: Tekoälyn toimintatapa

trilog [28.10.2008 10:02:01]

#

Itse olen harrastanut webbisovellusten tekemistä jo jonkin aikaa ja noin vuosi sitten löysin Pythonin, jolla olen tehnyt muutamia ohjelmia. Nyt kiinnostuin tekoälystä ja sen ohjelmoinnista. Olen lueskellut Internetistä artikkeleita aiheesta, mutta ne ovat mielestäni jotekin epäselvän tuntuisia (eikä esimerkkikoodeja ole).

Onko tekoäly siis vain kasa if-else -lauseita ja algoritmien käsittelyä? Mielestäni näin ei voi tekoäly toimia, koska tällöinhän se olisi vain ohjelmoijan omaa älyä ohjelmoituna. Tässä tullaankin sitten siihen kysymykseen; miten se siis toimii?

Lebe80 [28.10.2008 10:19:30]

#

no siis tekoäly on juuri tuota. Tehdään haku esim. kaikista shakkilaudan nappien siirroista ja pisteytetään ne haluamalla tavalla. Lopuksi valitaan esim. suurimman pistemäärän saanut siirto.

Sama reitinhaussa, lasketaan vaikka kaikki mahdolliset siirrot ja valitaan se, mikä on paras reitti. Hieman satunnaisuutta mukaan, niin tekoäly tekee "pieniä virheitä".

edit:
Tietenkin "tekoäly" voi olla vaikka vain pelissä kuinka laaja tahansa. Se voi olla päinvastaisesti vaikka sellainen, että pelialueen viholliset menevät vain sivusuunnassa niin pitkälle kuin kuvaruudulla pääsevät, astuvat tämän jälkeen askeleen alaspäin ja vaihtavat suunnan toiselle kuvaruudun reunalle. Tätä jatketaan niin kauan kunnes päästään kuvaruudun alalaitaan.

hunajavohveli [28.10.2008 10:26:48]

#

Yleensä se, mitä tekoälyksi sanotaan, on juurikin jonkin tietyn ongelman ratkaisemiseen soveltuva algoritmi eli "ohjelmoijan omaa älyä ohjelmoituna", kuten itse hyvin ilmaisit. Tavalliset tekoälyt eivät siis ole mitään ihmeellisiä otuksia, jotka kykenisivät ihmisen kaltaiseen yleiskäyttöiseen älykkyyteen, luovuuteen ja oppimiseen. Ne osaavat toimia ainoastaan omassa rajoitetussa maailmassaan juuri niin hyvin, kuin ne on ohjelmoitu. Toki tekoälykin voi oppia, mutta oppimisprosessikin on tällöin ohjelmoijan tarkasti määrittelemä.

Kyllähän "oikeasti" älykkäitäkin ohjelmia on yritetty kehittää, mutta ilmeisesti mitään mullistavaa ei ole vielä saatu aikaan. Mielestäni yksi kiintoisa mahdollisuus, joka ei vaatisi ohjelmoijan suoraa suunnittelua, olisi ohjelmoida maailma, jossa evoluutio voisi vapaasti synnyttää erilaisia organismeja, joissa sitten mahdollisesti alkaisi syntyä älykkyyttä. Miten se sitten tapahtuisi, siihen on vaikeampi vastata, mutta näin on nähtävästi tapahtunut oikeassakin maailmassa. Muutenhan sitä "ohjelmoijan omaa älyäkään" ei olisi. :)

Antti Laaksonen [28.10.2008 11:12:01]

#

Ristinollassa, shakissa ym. peleissä tekoäly käy yleensä läpi suuren joukon erilaisia mahdollisia pelinkulkuja lähtötilanteesta. Sitten se pyrkii valitsemaan sellaisen siirron, joka johtaa mahdollisimman edulliseen tilanteeseen vastustajan jatkotoimista riippumatta.

Esim. ristinollassa tekoäly voi haarautua ensin tutkimaan tapauksia sen mukaan, mihin tyhjään ruutuun se asettaa oman merkkinsä. Sitten jokaisessa haarassa täytyy tarkastella kaikkia tyhjiä ruutuja, jotka vastustaja voi nyt merkitä. Sitten kolmannella tasolla on jälleen tekoälyn vuoro tehdä merkintä johonkin ruutuun.

Jos tekoälyn käytössä olisi rajattomasti aikaa, se voisi käydä läpi kaikki mahdolliset pelinkulut ja pelata parhaalla mahdollisella tavalla. Käytännössä kuitenkin haarautumisia tulee paljon ja tekoäly ei voi simuloida peliä kovin pitkälle. Jossain vaiheessa täytyy tyytyä arvioimaan pelitilanteen hyvyyttä kaikkien siitä jatkuvien pelinkulkujen tarkastamisen sijasta. Lisäksi haarautumista voi vähentää hylkäämällä selvästi huonot siirrot heti.

Tässä tapauksessa tekoäly voi olla ohjelmoijaansa tyhmempi, koska sen toiminta perustuu lähinnä pelinkulkujen järjestelmälliseen läpikäyntiin, mutta tekoäly voi kuitenkin voittaa ohjelmoijansa tietokoneen suuren laskentanopeuden ansiosta.

trilog [28.10.2008 13:26:35]

#

Kiitos paljon hyvistä vastauksista!

Löysin ohjelmointikielen Prolog, jota käytetään kuulemma loogiseen päättelyyn ja ongelmanratkaisuun. Esimerkiksi tämä esimerkki oli todella kiehtova. Tosin nopealla kokeilulla syntaksi ei ihan auennut ja kieli muutenkin vaikuttaa sekavalta, en löytänyt virallista dokumentaatiotakaan.

Voisin ottaa jonkun legendaarisen pelin, kuten em. ristinolla ja kokeilla ohjelmoida siihen jonkunlaisen tekoälyn. Kilpailut-osiosta näytti löytyvän oikein aiheeseen keskittyvä kilpailukin.

petrinm [28.10.2008 17:38:41]

#

Jos haluat älyn, joka ei olisi tekoäly, joka sisältää vain kasan ohjelmoijan itsensä äly, voisit olla kiinnostunut neuroniverkoista.
Ihmisen aivot tämän hetkisten tietojen perusteella koostuu neuroneista joiden välille syntyy yhteyksiä, ja kun näitä neuronejä yhdistetään miljardeja peräkkäinen ja jokainen niistä toimii tietyllä logiikalla, syntyy asia jota kutsumme älyksi. Tietokoneen on melkein mahdollista matkia tälläistä neuroniverkkoa, kun nykyajan supertietokoneet lähentelevät ihmisen aivojen suorituskykyä, mutta ongelmia on. Neuroniverkko tulee opettaa toimimaan (aivan kuin ihminenkin) ja sen toiminnan tutkiminen ja virheenetsintä eli debug on äärimmäisen vaikeaa. Voit siis saada tekoälyn joka toimii, mutta et tiedä miten se toimii.
Suosittelen että luet netistä artikkeleja tästä, koska en jaksa selittää asian kaikkia hienouksi ja se on hyvin kiehtova ja yksinkertaisuudessaan monimutkainen.

Päärynämies [28.10.2008 19:59:47]

#

Tosiaan netistä löytynnee melko paljon materiaalia tekoälytutkimuksesta. Onhan tuota tehty jo useampi vuosikymmen ja varmaan tehdä yhä vain kasvavassa määrin. Tietotekniikka ja laskentateho kumminkin kehittyvät jatkuvasti. Tekoälyhän on varsin poikkitieteellinen tutkimusala, siihen liittyy tietotekniikka, psykologia, filosofiaa ja ties mitä kaikkea. Näin siis ainakin, jos puhutaan tekoälyistä, jotka pyrkivät olemaan oikeasti "älykkäitä". Pelkän ristinollan ratkaisevaan tekoälyyn ei tietty niin paljoa vaadita.

Toinen varteen otettava tietolähde ovat tietenkin korkeakoulujen kirjastot, jos vain sellaisiin on pääsy. Niistä luulisi löytyvän tekoälyä käsitteleviä julkaisuita, enemmän tai vähemmän kattavasti.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta