MI-1 Szeredi Péter szeredi@cs.bme.hu BME Számítástudományi és Információelméleti Tanszék NJSZT Mesterséges Intelligencia Szakosztály 2011. május 27.
A gép és az ember vetélkedője MI-2 A vetélkedő: Jeopardy Magyarországon Mindent vagy semmit néven ismert 1964 óta sugározzák (megszakításokkal) A legnagyobb össznyeremények: Ken Jennings $2.520.700, Brad Rutter $3.455.102 A kihívó: a Watson számítógéprendszer Hardver: 90 db IBM Power 750 szerver, egyenként 4 chip, chipenként 8 db 3.5 GHz mag; 16 Terabyte RAM Szoftver: A DeepQA (mély kérdés-válasz) természetes nyelvű tudáskezelő rendszer SUSE Linux Enterprise Server 11 operációs rendszer fő programozási nyelvek: Java, C++, de fontos részekben Prolog is A meccs: 2011 február 14-16, résztvevők: Jennings, Watson, Rutter Az első forduló eredménye: Jennings $4.800, Watson $35.734, Rutter $10.400. Összesített végeredmény: Jennings $24.000, Watson $77.147, Rutter $21.600. (2011 február 28-án 5 kongresszusi képviselő ellen: Watson $40.300, a képviselők $30.000.) További információ: http://www.research.ibm.com/deepqa/deepqa.shtml
A DeepQA rendszer architektúrája MI-3
A kérdés-válasz rendszerekről általában MI-4 A megoldandó feladatok A tudás ábrázolása egyre inkább logikai alapokon (elsőrendű logika, leíró logika, stb.) Tények, adatok (adatdoboz): akár adatbázisban is tárolható Szabályok, háttértudás (terminológiai doboz): valamilyen logikai formalizmus Természetes nyelvi interfészek Szöveges információ nyelvtani elemzése elemzési fa logikai alak (mind az eltárolandó állítások, mind a kérdések esetén ) Eredmények szöveggé alakítása: logikai eredmény szöveg Válasz kinyerése logikai következtetés Példák az előadás fennmaradó részének tartalomjegyzéke Egy nagyon egyszerű magyar nyelvű kérdés-válasz rendszer Prologban ( Beszélgető ) Hogyan végzik a nyelvtani elemzést a Watson rendszerben Tudáskezelés és következtetés leíró logikákban
Egy kis RETRO: vissza 1977-be MI-5 A SZÁMOLÓGÉP c. folyóirat 1977. évi 3-4. számának 44. oldaláról:
Egy kis RETRO: vissza 1977-be MI-6 A SZÁMOLÓGÉP c. folyóirat 1977. évi 3-4. számának 45. oldaláról:
Egy párbeszéd a Prolog nyelvű Beszélgető rendszerrel MI-7?- párbeszéd. : Magyar legény vagyok én. Felfogtam. : Ki vagyok én? Magyar legény : Péter kicsoda? Nem tudom. : Péter tanuló. Felfogtam. : Péter jó tanuló. Felfogtam. : Péter kicsoda? tanuló jó tanuló : Boldog vagyok. Felfogtam. : Én vagyok Jeromos. Felfogtam. : Te egy Prolog program vagy. Felfogtam. : Ki vagyok én? Magyar legény Boldog Jeromos : Okos vagy. Felfogtam. : Ki vagy te? egy Prolog program Okos : Valóban? Nem értem : Unlak. Én is.
A Beszélgető rendszer Prologban a mondatszerkezet elemzése MI-8 Ez a kóddarab a teljes kód kb. 25%-a, három további dián elfér a program fennmaradó része. % mondat(alany, Áll, L0, L): L0-L kielemezhető egy Alany alanyból és Áll % állítmányból álló mondattá. Alany lehet első vagy második személyű % névmás, vagy egyetlen szóból álló (harmadik személyű) alany. mondat(alany, Áll) --> {én_te(alany, Ige)}, én_te_perm(alany, Ige, Áll). mondat(alany, Áll) --> szó(alany), szavak(áll). % én_te(alany, Ige): % Az Alany első/második személyű névmásnak megfelelő létige az Ige. én_te("én", "vagyok"). én_te("te", "vagy"). % én_te_perm(ki, Ige, Áll, L0, L): L0-L kielemezhető egy Ki % névmásból, Ige igealakból és Áll állítmányból álló mondattá. én_te_perm(alany, Ige, Áll) --> ( szó(alany), szó(ige), szavak(áll) ; szó(alany), szavak(áll), szó(ige) ; szavak(áll), szó(ige), szó(alany) ; szavak(áll), szó(ige) ).
Nyelvtani elemzés a Watson rendszerben egy példakérdés MI-9 Példa kérdésre a POETS & POETRY kategóriában: He was a bank clerk in the Yukon before he published Songs of a Sourdough in 1907. Az elemzési fa Prolog tényállítások formájában (a számok a fa csomópontjainak felelnek meg): lemma(1, "he"). lemma(2, "publish"). lemma(3, "Songs of a Sourdough"). partofspeech(1, pronoun). partofspeech(2, verb). partofspeech(2, noun). subject(2, 1). object(2, 3). A szerzője kapcsolat leírása Prolog szabályokkal (leegyszerűsítve): authorof(author, Composition) :- publishing(verb), subject(verb, Author), author(author), object(verb, Composition), composition(composition). % Az Author a Composition mű szerzője ha % Verb egy publikálást kifejező ige egy állításban, % Author ennek az állításnak az alanya, % Author egy szerző, % Composition ennek az állításnak a tárgya, % Composition egy szerzemény. publishing(verb) :- % Verb egy publikálást kifejező ige ha partofspeech(verb, verb), % Verb szófaja ige lemma(verb, VerbLemma), % Verb (lemmaként rögzített) szöveges alakja VerbLemma member(verblemma, ["write","publish",...]). % VerbLemma szerepel az adott listában.
Nyelvtani elemzés a Watson rendszerben a tények kezelése MI-10 Tegyük fel, hogy a Watson rendszer háttértudásában szerepel ez a mondat: Songs of a Sourdough by Robert W. Service. Az authorof Prolog predikátumhoz több szabály is tartozik, köztük ez: authorof(author, Composition) :- % Az Author a Composition mű szerzője ha composition(composition), % Composition egy szerzemény. argument(composition, Preposition), % Composition a Preposition argumentuma, lemma(preposition, "by"), % a Preposition szöveges alakja "by", objectofpreposition(preposition, Author), % Author ennek az elöljárószónak a tárgya, author(author), % Author egy szerző. A fenti példamondat elemzését ezzel a szabállyal elvégezve egy olyan állítást nyerünk, amellyel a "Robert W. Service" egy plauzibilis válasznak bizonyul. A keresési fák illesztésére az IBM-nél korábban többféle saját mintaillesztőt fejlesztettek. These frameworks tend to end up replicating some of the features of Prolog but lack the full feature set of Prolog or the efficiency of a good Prolog implementation. Using Prolog for this task has significantly improved our productivity in developing new pattern matching rules and has delivered the execution efficiency necessary in order to be competitive in a Jeopardy! game.
LEIRÓ LOGIKÁK
Leiró logikák mint a tudásreprezentáció eszközei MI-12 Leiro Nyelv TBox ABox Kovetkez tetesek Tudasbazis Tudásbázis (KB, knowledge base) = T-doboz (TBox) + A-doboz (ABox): T-doboz = terminológiai doboz = terminológiai axiómák halmaza: fogalmakról (és szerepekről) szóló állítások (anya az aki nőnemű és van gyereke) A-doboz = adatdoboz = adataxiómák halmaza: tudásunk az objektumokról (Éva anya)
Példa leiró logikai következtetésre MI-13 Tudásbázis T-doboz anya = ember és nõnemû és gyereke van A-doboz Éva ember Éva nõnemû Éva gyermeke Miklós Ki anya? Éva kicsoda? Következtetõ Éva ember nõnemû anya...
Példa tiszta T-doboz következtetésre MI-14 Tudásbázis T-doboz anya = ember és nõnemû és van gyereke. nõ = ember és nõnemû férfi = ember és nem nõnemû szülõ= ember és van gyereke apa = férfi és szülõ (1) Konzisztens-e a T-doboz? (2) Minden anya szülõ? (3) Minden szülõ férfi? (4) Lehet-e férfi anya? (5) Mi a fogalmak hierarchiája? Következtetõ Igen. Igen. Nem. Nem. ember nõ szülõ férfi anya apa (1) (2) (3) (4) (5)
Példák terminológiai axiómákra MI-15 Az Anya nem más, mint olyan Ember aki Nőnemű és van gyereke. Anya Ember Nőnemű gyereke. Minden Tigris Emlős. Tigris Emlős A boldog emberek gyerekei is boldogak. Boldog Ember gyereke.boldog A gyermektelen emberek boldogak gyermeke. Ember Boldog A gyereke viszonyban levők egyben leszármazottja viszonyban is vannak. gyereke leszármazottja A szülője kapcsolat a gyereke kapcsolat megfordítottja (inverze). szülője gyereke A leszármazottja reláció tranzitív Trans(leszármazottja)
Nyílt és zárt világ szemantikák MI-16 Legyen egy egyetlen adatállítást tartalmazó adatdobozunk: gyereke(péter,pál) Adatbázis esetén (zárt világ szemantika): Péternek egyetlen gyermeke van, Pál A-doboz esetén (nyílt világ szemantika): Péternek van egy Pál nevű gyermeke. Ha emellett még azt is közölni szeretnénk, hogy Pál az egyetlen gyermeke, akkor pl. kijelenthetjük, hogy Péternek pontosan egy gyermeke van. Az Oidipusz példa: gyereke(iokaszté,oidipusz) gyereke(iokaszté,polüneikész) gyereke(oidipusz,polüneikész) gyereke(polüneikész,therszandrosz) Apagyilkos(OIDIPUSZ) Apagyilkos(THERSZANDROSZ) Erre az A OI A-dobozra vonatkozóan az alábbi kérdést szeretnénk feltenni: azaz: Van-e Iokaszténak olyan gyermeke, aki apagyilkos, és akinek van egy gyermeke, aki nem apagyilkos? A OI = ( gyereke.(apagyilkos gyereke. Apagyilkos))(IOKASZTÉ)? A válasz: igen, de a bizonyításhoz eset-szétválasztás szükséges!
Összefoglalás MI-17 A jövő: intelligens, emberközeli, tudásalapú informatika a tudásábrázolás régen jelen levő formája: (matematikai) logika a tudáskezelés: (logikai) következtetés Logika a jelenben néhány példa: Logikai programozás magasszintű, jól párhuzamosítható (többmagos processzorok) korlát-kiterjesztései (constraint) kiugróan erős következtetést adnak (pl. ILOG IBM) Szemantikus technológiák Szemantikus világháló a keresők, ne csak olvassák, értsék is a világhálót! Szemantikus integráció alkalmazások automatikus összeépítése Tudásalapú (szakértő) rendszerek pl. az orvostudományban (Watson javasolt alkalmazása) Végül egy kis retro: hogyan is álltunk ez ügyben a 70-es években?
Összefoglalás - retro MI-18 Egy rövid idézet a KNOWLEDGE BASED SYSTEMS Overview and Selected Examples c. tanulmányból (E. Weigkricht és L. Winkeibauer, IIASA, December 1987)
Példa: természetes nyelvű beszélgetés szavak elemzése MI-19 % szó(sz, L0, L): L0-L egy Sz betűsorozatból álló (nem üres) szó. szó(sz) --> betű(b), szómaradék(szm), {illik([b SzM], Sz)}, köz. % szómaradék(sz, L0, L): L0-L egy Sz kódlistából álló (esetleg üres) szó. szómaradék([b Sz]) --> betű(b),!, szómaradék(sz). szómaradék([]) --> []. % illik(szó0, Szó): Szó0 = Szó, vagy a kezdő kis-nagy betűben különböznek. illik([b0 L], [B L]) :- ( B = B0 -> true ; abs(b-b0) =:= 32 ). % köz(l0, L): L0-L nulla, egy vagy több szóköz. köz --> ( " " -> köz ; "" ). % betű(k, L0, L): L0-L egy K kódú "betű" (különbözik a ".?" jelektől) betű(k) --> [K], {\+ member(k, ".?")}. % szavak(szl, L0, L): L0-L egy SzL szó-lista. szavak([sz Szk]) --> szó(sz), ( szavak(szk) ; {Szk = []} ).
Példa: természetes nyelvű beszélgetés párbeszéd-szervezés MI-20 % :- type mondás ---> kérdez(szó) ; kijelent(szó,list(szó)) ; un. % Megvalósít egy párbeszédet. párbeszéd :- repeat, read_line(l), % beolvas egy sort, L a karakterkódok listája ( menet(mondás, L, []) -> feldolgoz(mondás) ; write( Nem értem\n ), fail ), Mondás = un,!. % menet(mondás, L0, L): Az L0-L kielemzett alakja Mondás. menet(kérdez(alany)) --> {kérdő(szó)}, mondat(alany, [Szó]), "?". menet(kijelent(alany,áll)) --> mondat(alany, Áll), ".". menet(un) --> szó("unlak"), ".". % kérdő(szó): Szó egy kérdőszó. kérdő("mi"). kérdő("ki"). kérdő("kicsoda").
Példa: természetes nyelvű beszélgetés válaszok előállítása MI-21 :- dynamic tudom/2. % feldolgoz(mondás): feldolgozza a felhasználótól érkező Mondás üzenetet. feldolgoz(un) :- write( Én is.\n ). feldolgoz(kijelent(alany, Áll)) :- assertz(tudom(alany,áll)), write( Felfogtam.\n ). feldolgoz(kérdez(alany)) :- tudom(alany, _),!, válasz(alany). feldolgoz(kérdez(_)) :- write( Nem tudom.\n ). % Felsorolja az Alany ismert tulajdonságait. válasz(alany) :- tudom(alany, Áll), ( member(szó, Áll), format( ~s, [Szó]), fail ; nl ), fail. válasz(_).