Agentit ja semanttinen web

Samankaltaiset tiedostot
Agentit ja semanttinen web. Pekka Halonen

arvostelija OSDA ja UDDI palveluhakemistoina.

Selainpelien pelimoottorit

The OWL-S are not what they seem

Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages

Ohjelmistojen mallintaminen, mallintaminen ja UML

Pro gradu -tutkielma Meteorologia SUOMESSA ESIINTYVIEN LÄMPÖTILAN ÄÄRIARVOJEN MALLINTAMINEN YKSIDIMENSIOISILLA ILMAKEHÄMALLEILLA. Karoliina Ljungberg

Aika/Datum Month and year Kesäkuu 2012

in condition monitoring

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

! #! %! & #!!!!! ()) +

Koht dialogia? Organisaation toimintaympäristön teemojen hallinta dynaamisessa julkisuudessa tarkastelussa toiminta sosiaalisessa mediassa

Maailman muutosta tallentamassa Marko Vuokolan The Seventh Wave -valokuvasarja avauksena taidevalokuvan aikaan

Luonnontieteiden popularisointi ja sen ideologia

9. Periytyminen Javassa 9.1

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

Järjestelmäarkkitehtuuri (TK081702)

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Kommunikaatio Visa Linkiö. MS-E2142 Optimointiopin seminaari: Peliteoria ja tekoäly

Älykkäät keltaiset sivut ( Intelligent Web Services ( IWebS ) )

1.3 Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

Katsaus korruption vaikutuksesta Venäjän alueelliseen talouskasvuun ja suoriin ulkomaisiin investointeihin

Java-kielen perusteita

Ohjelmoinnin perusteet Y Python

Tietotekniikan valintakoe

Vaatimusmäärittely Ohjelma-ajanvälitys komponentti

Epätäsmällisen tiedon esittäminen semanttisen webin ontologioissa

Etäkoulu Kulkurin tieto- ja viestintätekniikan opetussuunnitelma

Testausraportti. Orava. Helsinki Ohjelmistotuotantoprojekti HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

TIE Tietorakenteet ja algoritmit 1. TIE Tietorakenteet ja algoritmit

Hallintomallit Suomen valtionhallinnon tietohallintostrategioissa

Loppuraportti. Virtuaali-Frami, CAVE-ohjelmisto. Harri Mähönen projektiassistentti Seinäjoen ammattikorkeakoulu. Versio

Oppimateriaalin kokoaminen ja paketointi

Hajautettujen työvoiden hallinta

Ontologiat merkitysten mallintamisessa: OWL. Eeva Ahonen

Sisäilmaston mittaus hyödyntää langatonta anturiteknologiaa:

Alkuraportti. LAPPEENRANNAN TEKNILLINEN YLIOPISTO TIETOJENKÄSITTELYN LAITOS Ti Kandidaatintyö ja seminaari

Tutoriaaliläsnäoloista

1.3Lohkorakenne muodostetaan käyttämällä a) puolipistettä b) aaltosulkeita c) BEGIN ja END lausekkeita d) sisennystä

58131 Tietorakenteet ja algoritmit (syksy 2015)

Yksikkötestaus. import org.junit.test; public class LaskinTest public void testlaskimenluonti() { Laskin laskin = new Laskin(); } }

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Liite 1: KualiKSB skenaariot ja PoC tulokset. 1. Palvelun kehittäjän näkökulma. KualiKSB. Sivu 1. Tilanne Vaatimus Ongelma jos vaatimus ei toteudu

Rajapinta (interface)

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Semanttinen Web. Ossi Nykänen Tampereen teknillinen yliopisto (TTY), DMI / Hypermedialaboratorio W3C Suomen toimisto

Automaattinen semanttinen annotointi

Metodien tekeminen Javalla

Metodit. Metodien määrittely. Metodin parametrit ja paluuarvo. Metodien suorittaminen eli kutsuminen. Metodien kuormittaminen

TIETOKANNAT: MYSQL & POSTGRESQL Seminaarityö

Harjoitus Olkoon olemassa luokat Lintu ja Pelikaani seuraavasti:

Ohjelmoinnin perusteet, syksy 2006

Sisällys. 9. Periytyminen Javassa. Periytymismekanismi Java-kielessä. Periytymismekanismi Java-kielessä

Hankinnan problematiikka

812341A Olio-ohjelmointi Peruskäsitteet jatkoa

Eero Hyvönen. Semanttinen web. Linkitetyn avoimen datan käsikirja

Ohjelmassa henkilön etunimi ja sukunimi luetaan kahteen muuttujaan seuraavasti:

Mikä on WordPress? itse ylläpidettävä (self-hosted) WordPress.com: ilmainen 3. osapuolen ylläpitämä pilvipalvelu (Cloud-hosted)

Aalto Yliopisto T Informaatioverkostot: Studio 1. Oliot ja luokat Javaohjelmoinnissa

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Vuorekseen liittyvä tutkimusja kehitysprojekti. Langaton Vuores. Kotikatupalvelin

Kieli merkitys ja logiikka. 2: Helpot ja monimutkaiset. Luento 2. Monimutkaiset ongelmat. Monimutkaiset ongelmat

Prolog kielenä Periaatteet Yhteenveto. Prolog. Toni ja Laura Fadjukoff. 9. joulukuuta 2010

Älysopimusten kehittäminen. Sopimus suuntautunut ohjelmointi

Ohjelmistojen mallintaminen, sekvenssikaaviot

Sisällys. Metodien kuormittaminen. Luokkametodit ja -attribuutit. Rakentajat. Metodien ja muun luokan sisällön järjestäminen. 6.2

Olio-ohjelmointi Javalla

Integrointi. Ohjelmistotekniikka kevät 2003

Yhtälönratkaisusta. Johanna Rämö, Helsingin yliopisto. 22. syyskuuta 2014

Test-Driven Development

SEPA REFAKTOROINTI Antti Ahvenlampi, 57408L Erik Hakala, 57509T

Konsensusongelma hajautetuissa järjestelmissä. Niko Välimäki Hajautetut algoritmit -seminaari

Semantic Web käytännön sovelluksissa. TkT Janne Saarela Profium Oy

2. Olio-ohjelmoinnin perusteita 2.1

Tehtävä 2: Tietoliikenneprotokolla

Ohjelmointi 1. Kumppanit

Ohjelmointi 2 / 2010 Välikoe / 26.3

Ohjelmointi 2 / 2008 Välikoe / Pöytätestaa seuraava ohjelma.

Zeon PDF Driver Trial

Tiedonsiirto- ja rajapintastandardit

Action Request System

Arkkitehtuurinen reflektio

Seminaari: HL7 versio 2

Sisäänrakennettu tietosuoja ja ohjelmistokehitys

Agenttipohjaiset liikkuvan tietojenkäsittelyn sovellukset FIPA-arkkitehtuurissa

Semanttinen Web. Ossi Nykänen. Tampereen teknillinen yliopisto (TTY), Digitaalisen median instituutti (DMI), W3C Suomen toimisto

Sisällönhallinnan menetelmiä

Test-Driven Development

12. Javan toistorakenteet 12.1

arvostelija Turvallisuuskriittisissä, sulautetuissa järjestelmissä esiintyvien ohjelmistovaatimusten virheanalyysi Jarkko-Juhana Sievi

Concurrency - Rinnakkaisuus. Group: 9 Joni Laine Juho Vähätalo

Harjoitustyön testaus. Juha Taina

Julkaisuarkistojen käyttötilastot: Mitä tilastoidaan ja miksi?

Opintojakso TT00AA11 Ohjelmoinnin jatko (Java): 3 op Rajapinnat ja sisäluokat

Web-palvelu voidaan ajatella jaettavaksi kahteen erilliseen kokonaisuuteen: itse palvelun toiminnallisuuden toteuttava osa ja osa, joka mahdollistaa k

Propositiot: Propositiot ovat väitelauseita. Totuusfunktiot antavat niille totuusarvon T tai E.

Ohjelmistoarkkitehtuurit

Tiedekunta/Osasto Fakultet/Sektion Faculty Valtiotieteellinen tiedekunta

Transkriptio:

hyväksymispäivä arvosana arvostelija Agentit ja semanttinen web Pekka Halonen Helsinki 28.3.2011 HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos

HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen tiedekunta Tekijä Författare Author Tietojenkäsittelytieteen laitos Pekka Halonen Työn nimi Arbetets titel Title Agentit ja semanttinen web Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Seminaarityö Tiivistelmä Referat Abstract Aika Datum Month and year 28.3.2011 Sivumäärä Sidoantal Number of pages 14 sivua Tekstissä käsitellään semanttisen webin agentteja. Mitä agentit ovat, miten ne määritellään ja mihin niitä käytetään. Agenteista esitellään neljä pääryhmää ja tarkemmin näiden toimintaperiaatteet. Lisäksi käydään läpi agenttien välistä kommunikointia FIPA-standardin avulla sekä niiden määrittelyä JADEympäristön päälle. Lopuksi käsitellään agenttien ongelmia ja niiden yhteyttä semanttiseen webiin. ACM Computing Classification System (CCS): I.2.4 [ARTIFICIAL INTELLIGENCE]: Knowledge Representation Formalisms and Methods--- Semantic networks I.2.11 [ARTIFICIAL INTELLIGENCE]: Distributed Artificial Intelligence --- Intelligent agents I.2.11 [ARTIFICIAL INTELLIGENCE]: Distributed Artificial Intelligence --- Multiagent systems Avainsanat Nyckelord Keywords Semanttinen web, agentit, FIPA, JADE Säilytyspaikka Förvaringställe Where deposited Muita tietoja Övriga uppgifter Additional information

1 Johdanto... 1 2 Agentit... 2 2.1 Vaaditut ominaisuudet... 3 2.2 Erilaiset agentit... 4 2.2.1 Logiikka-agentit... 4 2.2.2 Toiminnalliset agentit... 5 2.2.3 Uskomus-halu-aikomus agentit... 5 2.2.4 Kerrosarkkitehtuuriin perustuvat agentit... 6 2.3 Agenttien välinen kommunikointi... 6 2.4 Agenttien toteuttaminen... 10 2.5 Ongelmat... 11 3 Semanttinen web ja agentit... 12 4 Yhteenveto... 12 Lähteet... 14

1 1 Johdanto Älykkäät agentit ovat tärkeässä osassa semanttisen webin hyödyntämisessä. Ennen semanttista webiä agenttien toiminta on perustunut ja perustuu yhä tänä päivänä ohjelmoijan ohjelmoimaan ohjelmaan, joka hakee tietoa www-sivulta tai www-palvelusta. Tiedon muoto kovakoodataan ohjelmaan, jolloin tiedon muodon muuttuessa ohjelma ei osaa reagoida siihen automaattisesti, vaan ohjelmoijan tulee muokata ohjelmakoodia tai ohjelman suoritusmääreitä. Esimerkki tällaisesta agentista on hakukone, joka indeksoi sivujen sisältöä tiettyjen parametrien mukaan ja tallettaa nämä tiedot tietokantaansa, josta käyttäjä voi hakea tietoa. Hakukone ei kykene yhdistämään useiden sivujen tietoa yhdeksi kokonaisuudeksi, eikä sopeutumaan esimerkiksi uusien indeksoitavien sivujen ilmestymiseen. Uudet sivut tulevat esille hakukoneeseen vasta indeksoinnin tapahduttua seuraavan kerran. Semanttista webiä hyödyntävä älykäs agentti kykenee sen sijaan toimimaan yhdessä muiden agenttien kanssa ja tarjoamaan yhdistettyjä tietoja useammasta eri lähteestä. Lisäksi sen sisältämä logiikka ja muiden palveluiden hyödyntäminen mahdollistaa esimerkiksi uusien sivujen lisäämisen hakutuloksiin heti, kun joku toinen agentti on sellaisen sivun löytänyt. Tänään Tulevaisuudessa käyttäjä käyttäjä esitetään selaimessa hakukone henkilökohtainen agentti älykäs palvelu www-sivut www-sivut Kuva 1 Älykkäät agentit

2 Ongelma on kuitenkin siinä, ettei hyviä agentteja kannata kehittää ennen kuin tarjolla on riittävästi kunnollista sisältöä määriteltynä agenttien ymmärtämässä muodossa. Tällä hetkellä OWL:n avulla määriteltyjä palveluita löytyy jo melkoisesti ja älykkäiden agenttien luomiseen on olemassa erilaisia työvälineitä ja standardeja. Ottamalla askeleita oikeaan suuntaan voidaan varmistaa tulevaisuus, jossa älykkäät agentit kykenevät toimimaan apunamme ja helpottamaan jokapäiväistä elämäämme. 2 Agentit Agentti määritellään Wikipediassa seuraavasti: Yleiskielessä agentti tarkoittaa asiamiestä, henkilöä, joka toimii toimeksiantajansa eli päämiehensä lukuun. Samoin tietotekniikassa agentti tarkoittaa ohjelmaa tai konetta, joka itsenäisesti tekee määrättyä tehtävää käyttäjän, eli ihmisen tai vaikkapa toisen agentin hyväksi. Semanttisen webin kannalta agentit toimivat samoin kuin agentit yleensä. Ne etsivät tietoa, suorittavat määrättyjä tehtäviä ja jopa neuvottelevat sopimuksia hyväksemme. Tässä määritelmässä agentti on tietotekninen ohjelma tai palvelu, joka toimii käyttäjänsä hyväksi jossain määritellyssä tietoverkossa, esimerkiksi yrityksen intranetissä tai koko Internetissä. Agentilla tarkoitetaan siis ohjelmaa, joka toimii itsenäisesti ja etsii verkosta käyttäjälleen hyödyllistä tietoa tai toimii käyttäjän haluamalla tavalla. Tällainen on luonnollisesti helppoa pienessä mittakaavassa, eli esimerkiksi tietyn yrityksen sisällä, missä ympäristö on tarkkaan valvottu ja määritelty. Suurempaa kokonaisuutta, esimerkiksi Internet, käsiteltäessä joudutaan agenttien toimivuuden suhteen tekemään kompromisseja, sillä kaikkien vaihtoehtojen hallinta on agenteille mahdotonta. Tämän aiheuttaa se, että tietoa on tarjolla monella eri tavalla määritettynä, eikä mitään kontrollia tiedon sisältöön tai sen käyttöön ole olemassa. Itsenäinen ja älykäs agentti yrittää saavuttaa tavoitteensa toimintaympäristössä, jota se ei voi kontrolloida, yksin tai toimien yhdessä muiden agenttien kanssa. Agentit ovat tavallaan löyhästi sidottuja (loosely coupled) ohjelmia, jotka toimivat lähettäen viestejä toisilleen ja keskittyen täysin omaan tehtäväänsä. Tämä on mahdollista vain, kun agentit kykenevät ymmärtämään muiden ohjelmien lähettämiä viestejä. Viestien ja viestinvälityksen tulee siis olla tavalla tai toisella määritelty niin, että kaikki osapuolet ymmärtävät toisiaan. Toimimalla yhdessä agentit voivat saavuttaa suurempia

3 tavoitteita, kuin mitä agenttikohtaiset tavoitteet antavat olettaa. Tämän vuoksi agenttien käyttäminen vaikeiden, mutta helposti ositettavien ongelmien ratkaisuun on usein järkevää. 2.1 Vaaditut ominaisuudet Hyvä agentti on itsenäinen, kommunikointikykyinen, toimintakykyinen ja mukautuva. Agentti on itsenäinen, kun se kykenee toimimaan ilman käyttäjän vuorovaikutusta tietyin osin. Hyvin harvat agentit toimivat täysin itsenäisesti, sillä tällainen toiminta vaatii tarkkaan mietityt tietoturva- ja käyttöoikeusmääritykset sekä toimintalogiikan, joka kykenee normaalin toiminnan lisäksi reagoimaan virheellisiin syötteisiin ja muihin yllättäviin tilanteisiin hyväksyttävällä tavalla. Täysin itsenäisiäkin agentteja voidaan kuitenkin määritellä. Esimerkiksi sähköisen kauppapaikan kauppiasagentti voisi periaatteessa toimia täysin itsenäisesti annettujen sääntöjen puitteissa. Se kykenisi antamaan tarvittaessa alennusta hyville asiakkaille, hoitaisi rahastuksen ja välittäisi tuotteen. Yksinkertaisessa virheistä toipumisessa voitaisiin lähes kaikissa virhetilanteissa tyytyä esimerkiksi keskeyttämään kauppatapahtuma ja tarpeen vaatiessa peruuttaa luottokortin veloitus. Suurin osa agenteista toimii kuitenkin enemmän tai vähemmän käyttäjän vuorovaikutuksessa. Käyttäjä pyytää esimerkiksi agenttia etsimään Internetistä tietyn palvelun ja valitsee sitten itse ehdotetuista ajoista sopivan. Toki tässäkin tapauksessa agentti tekee paljon työtä itsenäisesti, mutta ei varsinaisesti tee mitään, jos käyttäjä ei sitä ensin pyydä aloittamaan tehtävää. Kommunikointikykyä vaaditaan agenteilta, kun ne toimivat yhdessä muiden agenttien tai www-palveluiden (web service) kanssa. Agenttien tarkoituksenahan on kyetä toteuttamaan määrätty tehtävä, esimerkiksi matkan varaaminen, joka vaatii yleensä kommunikointia muiden agenttien ja/tai www-palveluiden kanssa. Agentti voi ottaa käyttäjältä vastaan pyynnön matkan varaamisesta sisältäen yksikertaisimmillaan tiedot matkan alku- ja loppupäivämääristä sekä kohteesta ja tämän jälkeen hoitaa kaikki lentojen, hotellin ja vaikkapa vuokra-auton varaamiset kommunikoimalla lentoyhtiön, hotellin ja vuokra-autoliikkeen agenttien tai palveluiden kanssa yhdessä. Tässä tapauksessa kummankin osapuolen tulee ymmärtää toisiaan riittävällä tasolla, jotta matkan varaaminen onnistuu. Toimintakyky on agentille määrittävä tekijä. Se erottaa agentin neuvonantajasta, sillä

4 neuvonantaja antaa käyttäjälle ohjeet siitä, miten käyttäjän tulee toimia saavuttaakseen haluamansa päämäärän, kun taas agentti näyttää käyttäjälle lopputulokset, joista käyttäjä valitsee haluamansa. Eli agentti toimii käyttäjän puolesta. Toki tässä voidaan törmätä tilanteisiin, jossa agentti kysyy käyttäjältä aivan yhtä paljon tietoa, kuin mitä käyttäjä olisi itse toimiessaan joutunut syöttämään sivustolle, eli esimerkiksi luottokortin numeron ja toimitusosoitteen. Seuraavalla kerralla älykäs agentti kuitenkin kykenee muistamaan nämä syötetyt tiedot ja pyytää kenties vain varmistuksen tilauksen tekemiseen. Hyvän agentin tulee olla mukautuva, sillä agenttien toimintaympäristö, varsinkin Internet, on täynnä tilanteita, joihin agentin pitää pystyä sopeuttamaan. Esimerkiksi käytöstä poistuneelle www-sivulle on turha mennä jatkossa ja käyttäjän toimintaan on hyvä mukautua. Jos käyttäjä hylkää aina tietyn sivun tulokset, ei näytetä niitä enää jatkossa ja muistetaan käyttäjän kerran syöttämät tiedot, eikä pyydetä käyttäjää turhaan syöttämään samoja tietoja uudestaan. 2.2 Erilaiset agentit Agentit voidaan luokitella niiden toiminnan perusteella neljään eri ryhmään. On logiikkaan pohjautuvia (logic based), toiminnallisia (reactive), uskomus-halu-aikomus (beliefdesire-intention, BDI) ja kerrosarkkitehtuuriin (layered architecture) perustuvia agentteja. Ontologioiden ja niiden päättelysääntöjen vuoksi logiikkaan perustuvat agentit ovat yksi sangen suoraan semanttisen webin kanssa yhteensopiva agenttiryhmä, mutta myös muun tyyliset agentit toimivat. Jokaisella erilaisella agenttiryhmällä on omat hyvät ja huonot puolensa semanttisen webin kanssa ja määräävimmät tekijät tulevatkin juuri agentin sopivuudesta kyseiseen ympäristöön ja niiden kyvystä kommunikoida muiden agenttien kanssa. 2.2.1 Logiikka-agentit Logiikkaan pohjautuvat agentit edustavat perinteistä tekoälyn mallia, jossa agenteilla on joukko todistuksia, johtopäätöksiä ja näihin liittyviä toimenpiteitä. Käyttämällä loogisia päättelysääntöjä, ne määrittävät väittämien olevan joko tosia tai epätosia. Kun päättelyn tulos on selvillä, agentti suorittaa tehtävänsä jonkin sille määritellyn johtopäätöksen mukaan. Esimerkiksi agentti voisi tarkkailla auton tilaa ja todeta auton nopeuden, suunnan ja kuljettajan liikkeiden perusteella auton olevan normaalissa tilassa ja kuljettajan hallinnassa. Tämän perusteella auto voisi toteuttaa tarvittaessa jotain sille määriteltyjä

toimenpiteitä. 5 Loogisilla agenteilla on myös ongelmia, joista ensimmäinen tulee siitä, ettei kaikki logiikan ongelmia voi ratkaista riittävän lyhyessä ajassa. Jos auton ajonhallintajärjestelmän tulee pystyä reagoimaan tilanteeseen millisekunneissa, ei logiikka-algoritmin mahdollinen useamman sekunnin toiminta-aika varmasti ole toivottavaa. Toinen ongelma tulee logiikkaan perustuvien ratkaisuiden joustamattomuudesta, sillä niiden on erittäin vaikea reagoida ennalta määräämättömiin ongelmiin. Kun lisäksi vielä elinympäristömme mallintaminen loogisiksi päättelysäännöiksi on hankalaa, voidaan loogisiin päättelyihin perustuvia agentteja todella hyödyntää pienissä, hyvin kontrolloiduissa ympäristöissä. 2.2.2 Toiminnalliset agentit Toiminnalliset agentit ovat oikeastaan logiikkaan perustuvien agenttien täydellinen vastakohta. Niissä ei ole lainkaan yhteisiä, ennalta määrättyjä sääntöjä, toimenpiteitä tai tavoitteita. Ne reagoivat tapahtumiin omien paikallisten sääntöjensä mukaan ikään kuin refleksinomaisesti. Ympäristön muutokset vaikuttavat suoraan tiettyyn agenttiin ja näiden muutoksien summana toiminnallinen agentti reagoi, eli toimii. Se myös kykenee paikallisesti oppimaan ja kehittämään toimintaansa. Tällä tavoin on esimerkiksi kyetty opettamaan roboteille seisomista ja kävelyä ilman, että näitä toimenpiteitä on ennalta ohjelmoitu robottiin. 2.2.3 Uskomus-halu-aikomus agentit Uskomus-halu-aikomus agentit ovat menestynein agenttien ryhmä tekoälyssä tähän päivään mennessä. Niiden sanotaan perustuvan käytännölliseen päättelyyn. Uskomus tarkoittaa agentin kuvaa maailmasta, halu sen tavoitteita ja aikomus sen suunnitelmia näiden tavoitteiden saavuttamiseksi sen toimintaympäristössä. Se kykenee ratkomaan ristiriitoja tavoitteiden ja toimintaympäristön välillä ja muuttamaan suunnitelmiaan tarvittaessa. Myös tavoitteet voivat muuttua. Suurimmat ongelmat näille agenteille tulevat tasapainoiluista tavoitteiden ja suunnitelmien välillä. Jos tavoitteet muuttuvat liian usein, ei agentti saa mitään aikaiseksi, kun se aloittaa aina uuden suunnitelman toteuttamisen. Toisaalta, jos suunnitelmia ei muuteta ajoissa, kun esimerkiksi ympäristöstä nousee esiin este sen hetkisen tavoitteen saavuttamiseksi, ei agentti pysty toteuttamaan sille annettua tehtävää. Tasapainon löytämien

sopeutumisen ja toimimisen välillä on siis tärkeää. 6 2.2.4 Kerrosarkkitehtuuriin perustuvat agentit Kerrosarkkitehtuuriin perustuvat agentit luetellaan omaksi ryhmäkseen, koska kerrosarkkitehtuurin voi toteuttaa kahdella eri tavalla, vaaka- ja pystysuorasti. Periaatteessahan minkä tahansa edellä esitellyistä agenteista voi toteuttaa kerrosarkkitehtuuriin perustuvana. Vaakasuorassa kerrosarkkitehtuurissa jokainen syöte analysoidaan erikseen ja niiden tuloksista tuotetaan yksi päätelmä. Tässä mallissa eri sensoreiden tulee olla hyvin tasapainotetut, jotta saadaan oikeellinen lopputulos. Pystysuorassa kerrosarkkitehtuurissa taas syöte kulkee vuoron perään jokaisen sensorin läpi ja ne vaikuttavat omalla tavallaan lopputulokseen. Päätelmä tehdään viimeisen sensorin tuloksen perusteella. Vaakasuuntainen Pystysuuntainen Syöte sensoreilta Kerros 1 Kerros 1 Syöte sensoreilta Kerros 2 Tulos Kerros 2 Kerros 3 Kerros 3 Tulos Kuva 1 Kerrosarkkitehtuurit 2.3 Agenttien välinen kommunikointi Agentit joutuvat kommunikoimaan toisten agenttien kanssa esimerkiksi suorittaakseen tehtäviään koordinoidusti, päättäessään tulevista toimenpiteistä, pitääkseen yllä yhteisiä tavoitteita, pyytäessään toisia agentteja toimimaan omasta puolestaan ja päivittääkseen omia suunnitelmiaan muiden agenttien toimintojen perusteella. Lisäksi semanttinen web asettaa agenttien kommunikoinnille vielä omat vaatimuksensa tietoturvan ja luottamuksellisuuden suhteen. Agenttien tulee kyetä varmistamaan saamien tietojensa oikeelli-

7 suus, varmistaa muiden agenttien turvallisuus ja kyetä vakuuttamaan muut agentit omasta identiteetistään. Lisäksi semanttisen webin määritelmien kirjavuus ja kontrolloimattomuus aiheuttavat omat haasteensa kommunikointiin esimerkiksi täysin projektiin liittymättömien agenttien kanssa, joiden käyttämät ontologiat voivat erota agenttien omista ontologioista. Agenttien kommunikointi tapahtuu usealla kerroksella. Ensimmäisellä kerroksella agentit välittävät viestejä toisilleen tiettyä protokollaa käyttäen. Toisella kerroksella määritellään välitettävien viestien muoto. Kolmannella määritellään viestintään käytettävät ontologiat ja tarvittaessa agenttien tulee selvittää toisen agentin käyttämän ontologian määritelmät jonkun kolmannen ontologian kautta. Neljäs kerros määrää käytetyn logiikan, jonka olisi tärkeä olla osallistuvilla agenteilla samanlainen. Esimerkiksi suoritettaessa jaettua ongelman ratkaisua, agentti voi joutua lähettämään osittain käsitellyn ongelman loogisena kaaviona eteenpäin seuraavalle agentille. Viides kerros määrittelee suoritettavat toimenpiteet. Jos kaksi edellistä kerrosta eivät tähän riitä, tarvitaan oma kerros ja oma määrittelykieli, jotta agentit kykenevät toimimaan yhteisen päämäärän saavuttamiseksi. Viimeinen kerros liittyy agenttien välisen luottamuksen ja turvallisuuden varmistamiseen. Esimerkiksi välittäjäagentin tulee pystyä vakuuttamaan lopullisen päätöksen tekevä agentti siitä, että välittäjäagentilla on pyynnön aloittaneen agentin luottamus esimerkiksi luottokortin laskuttamiseen. Kommunikoidessaan keskenään agentit joutuvat usein tilanteisiin, joissa niiden ontologiat eroavat toisistaan. Tällöin agenttien tulee kyetä selvittämään toisten käyttämien termien tarkoitus. A C A B Agentti 1 Agentti 2 Agentti 3 B Kuva 2 Agenttien välinen kommunikointi

8 Kommunikoidessaan keskenään kuvan 2 agentit 1 ja 3 eivät voi käyttää suoraan samaa ontologiaa, sillä sellaista ei ole. Kuitenkin agentin 2 avulla on mahdollista saada ontologioiden A ja B välille yhteys, mitä hyödyntämällä agentit 1 ja 3 pystyisivät ainakin osittain kommunikoimaan keskenään. Toki on oletettava, että ontologia A ja B sisältävät määritelmiä ainakin osittain samoista asioista. Agenttien väliseen viestintään on kehitetty vuosien saatossa useita määrityksiä, joista uusin on FIPA:n standardoima agenttien kommunikointikieli (Agent Communication Language, ACL). Siinä agenttien oletetaan olevan BDI-tyylillä toteutettuja, eikä mitään oletuksia tehdä käytetystä ontologiasta eikä viestien välitysmekanismista. Kieli on kehitetty erityisesti moniagenttikommunikaatioon (multi-agent communication), jolloin useat eri ontologioitakin käyttävät agentit kykenevät vaihtamaan viestejä keskenään. Semantiikan määrittämistä varten kielenä käytetään FIPAn standardoima FIPA-SL-kieltä. Muita agenttien viestintäkieliä ovat esimerkiksi FIPA ACL:n edeltäjä KQML ja KIF. FIPA ACL:n viesti sisältää tiedon toiminnallisuudesta, lähettäjästä, vastaanottajasta, käytetystä ontologiasta, semantiikkakielestä ja itse viestin sisällön. Seuraavassa on määrityksen mukainen viesti: (inform :sender agent1 :receiver agent2 :ontology hpl-auction :language fipa-sl :content (price item567 24.95) ) Kuva 3 FIPA ACL viesti FIPA ACL kielessä on kaksi perustoiminnallisuutta inform ja request, joiden avulla muut standardissa olevat n. 20 muuta toiminnallisuutta määritellään. Inform-viestissä lähettävä agentti uskoo lähettämänsä viestin sisällön olevan totta, ei usko vastaanottajan tietävän mitään viestin sisällön totuusarvosta ja aikoo saada vastaanottajan uskomaan, että viestin sisältö on totta. Request-viestissä lähettävä agentti pyytää vastaanottavaa agenttia suorittamaan jotain puolestaan ja uskoo vastaanottajan olevan tähän kykenevä, muttei oleta, että vastaanottaja ilmoittaa suorituksesta millään tavoin lähettäjälle.

9 Keskustellessaan keskenään agentit toteuttavat jonkun ennalta määritellyn protokollan mukaisen keskustelun. Esimerkiksi myyjä ja ostaja käyvät vuoropuhelun, joka joko päättyy kauppaan tai sitten ei. Protokollaan sisältyy tiedot siitä, millaisia viestejä voidaan välittää ja miten agenttien tulisi toimia tietyissä tilanteissa. Agenttien välinen keskustelu protokollaa noudattaen voidaan yleensä kuvata ääreellisellä tila-automaatilla, jossa tilat kuvaavat keskustelun eri vaiheita. Kuva 4 Protokolla tila-automaatti FIPA ACL määrittelee keskustelussa käytettävän protokollan viestin :protocol rivillä. Periaatteessa agentit voivat myös neuvotella käytettävän protokollan keskenään, jos esimerkiksi toiselta agentilta ei löydy juuri sitä parasta protokollaa tilanteeseen. Kuva 5 FIPA kyselyprotokolla

10 Oheisessa kuvassa 5 agentit suorittavat FIPA:n kyselyprotokollan. Ensin aloittaja pyytää osallistuvalta agentilta tietoa (query-if) tai pyytää tätä suorittamaan toimenpiteen (query-ref). Osallistuva agentti joko hyväksyy tai hylkää pyynnön ja ilmoittaa tämän aloittajalle. Jos osallistuva agentti hyväksyi pyynnön, suorittaa se pyynnön mukaisen tehtävän ja palauttaa tuloksesta tiedon aloittajalle. 2.4 Agenttien toteuttaminen Agentteja voidaan toteuttaa useilla eri ohjelmistoilla ja käyttäen erilaisia standardeja. Yksi FIPA standardin kanssa yhteensopiva toteutusympäristö on JADE (Java Agent DEvelopment Framework), joka toimii välikerroksena (middlelayer) agenttien toteuttamiseen Java-ohjelmointikielellä. JADE sisältää runsaasti työkaluja agenttien toteuttamiseen, mahdollistaen esimerkiksi agenttien välisten viestien seuraamiseen, jolloin monimutkaisempiakin moniagenttijärjestelmiä on mahdollista tutkia helposti kontrolloidussa import jade.core.agent; import jade.core.behaviours.*; public class myagent extends Agent { protected void setup() { addbehaviour( new mybehaviour( this ) ); } class mybehaviour extends SimpleBehaviour { public mybehaviour(agent a) { super(a); } public void action() { //...what agent really does! } private boolean finished = false; public boolean done() { return finished; } } // ----------- End mybehaviour }//end class myagent Kuva 6 Perus JADE agentti

ympäristössä. 11 Kuvassa 6 nähdään yksikertaisen agentin toteutus JADE-ympäristön avulla. Agentti itsessään on Java-luokka, joka sisältää metodin agentin luomiseen ja agentin toiminnallisuuden (behaviour). Toiminnallisuus toteutetaan omana luokkanaan. Toiminnallisuudessa määritellään agentin varsinainen toiminta, eli miten agentti kommunikoi, mitä se tekee milläkin syötteellä ja kaikki muu, mitä agentin halutaan tekevän. JADE antaa mahdollisuuden määritellä agenteille useita toiminnallisuuksia, jolloin näistä kaikista voidaan luoda omat luokkansa ja ohjelmointi voidaan suorittaa järkevän kokoisissa palasissa. JADE:n hyviin puoliin voidaan laskea sen pitkä kehitysikä, ensimmäinen versio on vuodelta 2000, avoin lähdekoodi, Telecom Italian panostus sen kehitykseen ja vahva FIPA tuki. JADE:n päälle on mahdollista kehittää agentteja erilaisista lähteistä. Esimerkiksi Protege-editoriin on olemassa lisäosa, jolla Protegen avulla määritellyt ontologia voidaan tuoda suoraan JADE:n käytettäviksi luokiksi, joita sillä määritellyt agentit voivat hyödyntää. 2.5 Ongelmat Agenttien määrittelyssä ja toiminnassa on myös useita ongelmakohtia, joita yritetään ratkaista. Ensimmäinen näistä on eri kielillä määriteltyjen agenttien yhteistoiminta. Kuten edellä todettiin, niin agenttien määrittelykieliä on käytössä useita erilaisia, eivätkä kaikki, keskenään erilaisilla kielillä toteutetut agentit kykene kommunikoimaan aina keskenään. Tästä seuraa, että agenttien väliseen kommunikointiin voidaan joutua kehittämään omia agenttejaan, jotka ainoastaan välittävät kahden eri kielillä kommunikoivan agentin viestit. Jos agentit ovat moderneja ja kykenevät viestimään FIPA:n määritysten mukaan esimerkiksi OWL-sanomin, niin silloin agenttien välinen viestintä on melkoisen helppoa. Vaikka viestintä ei käyttäisi suoraan samaa ontologiaa, niin käytetyt ontologiat voidaan mahdollisesti tulkita jonkin kolmannen ontologian kautta, johon kumpikin ainakin osittain pohjautuu. Tällöin viestintä agenttien välillä onnistuu, vaikka jotkin tarkasti agentin toimialueeseen liittyvät määritykset voidaankin joutua ohittamaan. Seuraava ongelma tulee agenttien oikeuksista toimia. Agenttien oikeuksien määrittämiseen on FIPA:n määrityksissä omat kohtansa, mutta siltikin ne ovat vain ohjeita. Mis-

12 sään ei tarkkaan kerrota, miten agenttien tulisi varmistaa muiden agenttien oikeudet esimerkiksi luottokortin veloittamiseen. Agenttien välinen luottamus ja niiden oikeuksien rajoittaminen kaikkien ymmärtämällä tavalla onkin yksi huomattavimmista haasteista agenttien kehityksessä. 3 Semanttinen web ja agentit Agenttien sujuva toiminta ei perustu ainoastaan hyvin määriteltyihin agentteihin ja niiden kykyyn kommunikoida ja toimia käyttäjien haluamalla tavalla, vaan myös niiden ympäristöön. Semanttinen web ja sen ontologiat määriteltynä OWL- tai DAML+OILkielten avulla mahdollistaa agenttien sujuvan toiminnan. Ne kykenevät kommunikoimaan keskenään ja www-palveluiden kanssa käyttäen samoja termejä ja mahdollisuuksien mukaan ratkomaan termien välisiä ristiriitoja muiden ontologioiden avulla. Agentit voivat olla ohjelmina pieniä ja yksinkertaisia, mutta niiden yhteistoiminta muiden agenttien kanssa aiheuttaa ongelmia agenttijärjestelmien suunnitteluun. Yksittäinen agentti kun ei esimerkiksi tiedä kokonaiskuvaa siitä järjestelmästä, missä se toimii, vaan ainoastaan oman tehtävänsä. Monien agenttien yhteistoiminnassa hyväkään suunnittelu ei takaa täysin ennalta arvattavaa lopputulosta. Tietyn agentin tehtävän suorittamisen keskeytyminen tai viivästyminen voi aiheuttaa ongelmia myöhempien agenttien tehtävien suorittamiseen ja agenttien määrän kasvaminen aiheuttaa entistä enemmän mahdollisuuksia sellaisten toimintojen syntymiseen, joita järjestelmän suunnittelija ei ole ottanut huomioon. 4 Yhteenveto Vaikka agentit ovat olleet semanttisen webin tutkimuskohteena jo yli vuosikymmenen, on niiden käyttö yritysmaailmassa jäänyt melkoisen vähäiseksi. Aluksi ongelmia aiheutti varmasti semanttisen sisällön puuttuminen, mutta nykyään ontologioita löytyy jo useita ja monet www-sivustojen kehittämiseen luodut ohjelmat kykenevät tuottamaan ja hyödyntämään myös ontologioita. Lisäksi agenttien kehittämiseen on useita työvälineitä saatavilla, joiden avulla perusohjelmointiosaamisella varustettu käyttäjä pystyy saamaan aikaan melko pienellä vaivalla toimivia agenttisovelluksia. Agenttien kehitystä tutkitaan edelleen yliopistoissa, mutta jostain syystä agenttien rantautuminen yritysmaailmaan on kestänyt, eikä mitään selkeää määränpäätä agenteille

13 ole vieläkään näkyvissä. Syitä tähän on varmasti monia, joista eräitä voivat olla turvallisuuteen ja luotettavuuteen liittyvät ongelmat. Yritysten välisessä liikenteessä kun useimmiten käsitellään rahaa ja sen kanssa ollaan opittu olemaan hyvin varovaisia. Lisäksi määrittelyjen monimutkaisuus tulee yritysten välillä helposti ongelmaksi, kun jo kahden yrityksen on vaikea saada kommunikointia toimimaan keskenään, niin miten se voisi onnistua ympäristössä, joissa on samalla pelikentällä useita eri toimijoita? Nähdäänkö agentteja tulevaisuudessa entistä enemmän? Varmasti, mutta missä muodossa ja mistä saadaan rahat niiden kehittämiseen? Kuluttajille kun on jo tarjolla paljon erilaisia sovelluksia, joiden käytössä esimerkiksi mainokset toimivat merkittävinä rahoittajina. Jos agentit toimivat itsenäisesti tietoa hakien, niin missä ja kenelle mahdolliset mainokset näytetään ja miten tuloutus hoidetaan? Näiden ongelmien kanssa painiminen on agenttien kehittäjien arkipäivää. Varmasti vähitellen ja pienessä mittakaavassa agenttien käyttö yleistyy. Esimerkiksi lääketieteessä potilaiden seuranta ja älykkäät sovellukset ovat sellaisia kehityskohteita, joille on selkeä tarve ja niiden rahoituskin pystytään varmistamaan. Jäämme odottamaan käytännön sovelluksia ja agenttien maailman valloitusta.

Lähteet 14 AGEN Agentti, Wikipedia. http://fi.wikipedia.org/wiki/agentti [28.3.2011] AnH07 G. Antoniou ja F. van Harmelen. A Semantic Web Primer, MIT Press, 2008 FIPA The Foundation for Intelligent Physical Agents. http://www.fipa.org/index.html [28.3.2011] Hen01 James Hendler. Agents and the Semantic Web. IEEE Intelligent Syst., 16, 2 (2001), sivut 30-37 Hen07 James Hendler Where Are All the Intelligent Agents. IEEE Intelligent Syst., 22, 3 (2007), sivut 2-3 JADE Java Agent DEvelopment Framework. http://jade.tilab.com/ [28.3.2011] JADET JADE Tutorial and Primer. http://www.iro.umontreal.ca/~vaucher/agents/jade/jadeprimer.html [28.3.2011]