Hlavní navigace

Sensus communis

13. 2. 2014 18:56 (aktualizováno) zboj

CSR (common sense reasoning) je jednou z nejdůležitějších oblastí umělé inteligence. Jak sám název napovídá, CSR úzce souvisí s formální logikou. Z pohledu implementace vyvstává otázka, jak lze CSR adekvátně reprezentovat a vyhodnocovat.

Obecné znalosti (common knowledge) lidé získávají skrz jazyk a není důvod, proč by tomu mělo být v AI jinak. Jazyk je lineární reprezentací informací a jeho formální podobu lze interpretovat v duchu tzv. konjunktivismu, tj. adjacence se interpretuje jako (logická) konjunkce. Fráze „red flag“ znamená „red(x) & flag(x)“, „the dog barks“ znamená „dog(x) & bark(x)“ apod. Jakoukoliv větu lze zapsat jako monadický predikát zapsaný jako konjunkci atomických formulí (pozitivních literálů). Narozdíl od funkcionismu se tedy cíleně rezignuje na většinu toho, co nám nabízí logika prvního řádu—kvantifikaci, disjunkci, substituci atd.

Je tato simplifikace výhodou, nebo přílišným omezením? Vzhledem k charakteru jazyka, a tedy vědomostí obecně, jistě výhodou, pokud dokážeme, že se o nic podstatného nepřipravujeme. Můžeme totiž vše vyjádřit Hornovými klauzulemi, jejichž vyhodnocování je z pohledu vyčíslitelnosti velmi efektivní.

Složitější vztahy mezi predikacemi lze vyjádřit atomickými predikáty, místo „-come(John)“ píšeme „not(come(John))“ apod. To je ovšem problém, jak vnímavý čtenář jistě vidí—jde totiž o logiku vyššího řádu. Proto se ve většině ontologií používá tzv. reifikace, což je odborný výraz odpovídající v jazykovědě nominalizaci: místo „John came“ pracujeme s výrazem „John's coming“ apod. Výše uvedená negace proto bude „not(e) & come'(e, John)“, kde e je reifikovaná predikace. Zcela stejně lze reifikovat konjunkci, disjunkci, kvantifikaci, substituci atd.

Uvedený způsob reprezentace znalostí si vystačí s logikou prvního řádu a přitom nemá problém s okrajovými případy, jako například „donkey sentences“ a podobnými. Poznamenejme, že tento způsob ontologického zápisu využívá např. IBM Watson.

A nakonec malé upozornění: Komentáře pište, jen když aspoň trochu chápete souvislosti, ať je zachována určitá úroveň diskuze.

Edit: Malý příklad. „Tweety is a bird“ (1) se logicky zapíše „bird(Tweety)“. Nicméně někdo si (1) může jen myslet a přitom jde třeba o veverku. Proto predikace „bird'(e,tweety)“ vyjadřuje koncept, jejž lze kognitivně zachytit, aniž by nutně platil. Jeho pravdivost je jen jednou z jeho vlastností, řekněme „Real(e)“. Pro každou predikaci pak máme metaaxiom „P(x) iff P'(e,x) & Real(e)“. Negaci tedy například vyjádříme jako „not(e) & squirrel'(e,Tweety)“. Spolu s axiomem „not'(e1,e2) → (Real(e1) iff -Real(e2))“ pak dostaneme „-squirrel(Tweety)“. Podobně se reifikuje implikace, konjunkce atd. Matematicky vzdělanější jistě vidí, že z pohledu formální síly jsme nic nepřidali, odpovídající Lindenbaumova algebra se nijak neliší. Přesto jsme získali možnost pracovat se všemi predikacemi jako s Hornovými klauzulemi.

Tento způsob reprezentace znalostí je vskutku geniální, protože vše lze vyjádřit jako konjunkci literálů bez negace. A dokonce i bez proměnných, aniž bychom rezignovali na cokoliv z logiky prvního řádu. A nejde o žádnou šedou teorii, celé to má velký praktický význam. Pokud je mi známo, poprvé byl tento způsob reprezentace znalostí použit v rámci „commonsense summer“ na SRI.

Sdílet