Expertní systémy jsou asi nejznámější teorií umělé inteligence. Článek popisuje základní myšlenky těchto systémů zejména z pohledu jejich realizace v průmyslové praxi. V závěru je představen procedurální systém umístění pravoúhlých dílců na ploše, kde použití popsaných principů velmi zjednodušilo řešení úlohy a přineslo další příznivé vedlejší efekty.
Expertní systémy
Okruh úloh pro expertní systémy
Dosud jsme se v seriálech Inteligentní ekonomické systémy a Evoluční prognostické systémy seznámili se dvěma teoriemi umělé inteligence. Dnes se seznámíme s další významnou teorií, s expertními systémy.
Většina stávajících informačních systémů provádí takové výpočty, pro které existuje přesný postup řešení, kterému říkáme algoritmus. Stále častěji se na druhé straně setkáváme s úlohami, pro které postup řešení nejde najít. Můžeme sice navrhnout projekt s kvalitním interfacem, který bude zajišťovat rutinní funkce, a intuitivní rozhodování ponechat na odborníkovi, ale v současné době již můžeme vytvořit takový systém, který na základě poskytnutých znalostí najde řešení sám.
Protože takové systémy využívají vložených znalostí, říká se jim znalostní systémy. Speciálním případem znalostních systémů jsou expertní systémy. Využívají znalostí, které dodali odborníci – experti, z toho je odvozen jejich název.
Struktura expertního systému
Existuje zásadní rozdíl ve struktuře a způsobu práce klasických a expertních systémů.
- Klasický systém pracuje s určitou množinou dat, přičemž podle přesně stanoveného algoritmu, vloženého programu, transformuje vstupní data na výstupní.
- Znalostní systém naproti tomu tvoří tři složky
- Báze faktůodpovídá množině dat klasického programu, je uložena zpravidla na pevných discích nebo jiných externích paměťových zařízeních.
- Báze poznatků jsou struktury dat, které představují znalosti odborníků. Bývá uložena ve vnitřní paměti počítače a během hledání řešení mění bázi faktů.
- Inferenční mechanismus je odvozovací algoritmus, vlastní program, který s využitím báze znalostí modifikuje bázi faktů, až nalezne požadované řešení úlohy.
Již z tohoto pohledu vidíme jednu významnou vlastnost expertního systému, a to je snadná modifikovatelnost při změněných podmínkách.
- U klasického programu každá změna vyžaduje přeprogramování, což je pracné a časově náročné a navíc může vést k chybám a nežádoucím vedlejším efektům v již odladěném programu.
- U expertního systému modifikujeme pouze jedno nebo několik pravidel, program – inferenční mechanismus – zůstává stejný.
Poznámka: Jak poznáme dále, snadná modifikovatelnost neplatí tak docela u expertních systémů s procedurálními znalostmi, ty však mají jiné vlastnosti, pro které jsou používány.
Znalosti
Znalosti jsou pro znalostní systém rozhodující. Jsou to vzájemně související struktury poznatků. Jednotlivé poznatky můžeme vyjádřit:
- prostředky predikátové logiky
- produkčními pravidly
- pomocí asociativních sítí
- procedurálními metodami
- pomocí rámců
Predikátová logika
Predikátová logika umožňuje odvozovat pravdivé formule z axiomů nebo už odvozených pravdivých formulí.
Produkční pravidla
Jsou základem většiny expertních systémů. Definují se ve tvaru p1 ^ p2 ... pn → d
kde pi jsou předpoklady a d je důsledek, což znamená: jestliže platí předpoklady, platí také důsledek.
Takových pravidel mohou obsahovat expertní systémy i stovky. Je přitom nutné rozlišovat mezi logickou implikací a produkčním pravidlem. V logice může je implikace pravdivá, i když je předpoklad nepravdivý, u produkčního pravidla je důsledek platný jen tehdy, když je splněn předpoklad. Použitím produkčního pravidla dochází ke změně v bázi faktů. Navíc předpoklady i tvrzení mohou být zadány s jistou pravděpodobností a rovněž pravidlo samo může platit s jistou pravděpodobností. Pravděpodobnost důsledku se pak může zvyšovat nebo snižovat na základě verifikace jinými pravidly.
Tak jako u evolučních a učících se systémů je nutné nastavit počáteční parametry a teprve po delším provozu umožnit zkušenému uživateli některé z nich si podle potřeby upravit , také u expertních systémů je nutné v součinnosti s uživatelem připravit fungující systém se všemi pravidly a po určité době mu umožnit pravidla upravovat. To, že uživatel může sám měnit pravidla, podle nichž expertní systém hledá řešení, klade samozřejmě nároky na kvalitu kontrolních funkcí v systému. Dobře napsaný expertní systém by měl případnou nekonzistenci mezi pravidly odhalit a informovat o chybě.
Asociativní poznatky
Asociativní poznatky se vyjadřují pomocí asociativních sítí. Je to soubor vrcholů a orientovaných hran, které vrcholy spojují.
Procedurální znalosti
Typickým příkladem procedurálních znalostí je funkce v programu. Není si však možné plést znalostní systém s procedurálními znalostmi s běžným programem. Procedury v procedurálním systému jsou vyvolávány ke splnění určitého cíle a mění obsah báze faktů.
Procedurální poznatky mají proti produkčním pravidlům některé výhody a naopak nevýhody:
- Protože procedurální pravidla jsou vlastně funkce programu, při jakékoliv změně se musí přeprogramovat, což znamená vyšší časové nároky a možnost chyb.
- Na druhé straně při výpočtu jsou procedurální pravidla rychlejší.
Z tohoto důvodu byly v optimalizačních systémech zmiňovaných v předchozích seriálech použity výhradně procedurální poznatky. Jednak množství použitých znalostí nebylo příliš velké, na druhé straně byla kritická rychlost výpočtu, někdy bylo dokonce požadováno řízení v reálném čase.
Rámcová reprezentace poznatků
Rámce jsou struktury údajů, do kterých se dají uložit poznatky předchozích typů.
Prostor stavů
Jak produkční pravidla, tak procedury operují na určité množině stavů pomocí množiny operátorů. Aplikací znalostí měníme stavy z počátečního stavu do koncového. Počáteční stav je definován explicitně, koncový buď explicitně, nebo vyjmenováním vlastností. Úlohou inferenčního mechanismu je stanovit takové kroky, které vedou od počátečního stavu ke konečnému.
Například u známé úlohy myšky v bludišti jsou stavy umístění myšky, počáteční stav je myška u vchodu a koncový stav myška u východu. Inferenční algoritmus má nalézt cestu od vchodu k východu.
Naopak u šachové úlohy je počáteční stav základní postavení figurek na šachovnici ve dvou řadách bílých a dvou řadách černých figurek a konečný stav mat. Není možné jednoznačně popsat, kde má být která figurka při matu umístěna, jsou pouze popsány vlastnosti, které mat charakterizují. Inferenční mechanismus má dovést vlastní figurky k tomu, aby daly mat soupeři.
Závěrem si předvedeme příklad jednoduchého procedurálního expertního systému umísťování 2D objektů na ploše.
Praktický příklad - nová verze
Systém PlOpt, o kterém se zmiňuje tento článek, již není od roku 2015 dodáván. Aktuální informace obsahují mé další články na tomto serveru. Systém PlOpt byl nahrazen modernějším systémem DelProTab, jehož popis je v článku Analýza a optimalizace - Software 1 na www.programujte.com v sekci Ostatní, Umělá inteligence a robotika a stáhnout si jej můžete stejně jako další programy naší firmy na adrese http://optiintelligent.cz.
Původní verze
Systém PlOpt se již od roku 2015 nedodává, popis jsem ponechal pro ty čtenáře, kteří mají jeho demo verzi.
Systém PlOpt je demo verze praktického expertního systému s procedurálními poznatky. Z datového souboru přebírá informace o zdrojových tabulích a požadovaných dílcích, které se z nich mají nařezat, a určí optimální umístění těchto dílců na ploše tabulí tak, aby se ušetřilo co nejvíce materiálu, přičemž musí respektovat řadu technologických požadavků. Využití principů teorie expertních systémů zde významně zjednodušilo řešení poměrně složité problematiky.
Úvodní seznámení s programem
Obsah souboru PlOpt.zip rozbalte do adresáře na disku a odstartujte program PlOpt.exe. Zvolte Optimalizace
a vyberte připravený soubor data.txt. Po krátké době se objeví hlášení OK, optimalizace je ukončena, potvrďte klávesou Enter a můžete prohlížet výsledky.
Funkce Prohlížení
zobrazí umístění dílců na první tabuli, funkce Další
a Předchozí
zajišťují zobrazení další nebo předchozí tabule.
Funkce Příklad
vytvoří náhodně nový datový soubor, který pak můžete znovu optimalizovat. Vytvořený soubor obsahuje přibližně 2000 náhodně vygenerovaných dílců. Soubor můžete také upravovat v Excelu, pokud dodržíte podmínky uvedené v nápovědě.
Prostor stavů
Jednotlivé dílce jsou umísťovány do míst definovaných jako kontejnery. Na počátku je kontejnerem celá tabule. Po umístění každého dílce se množina kontejnerů mění. Cyklus končí, pokud již nejsou k dispozici buď tabule, nebo dílce.
Tímto obecným přístupem je zajištěno jednak snadné využití zbytků ze skladu – stačí pouze uchovat seznam kontejnerů v databázi, jednak operativní přeplánování v případě poruchy materiálu – definuje se místo, kam se nesmí ukládat a vyvolá funkce změny kontejnerů. Rovněž realizace změny technologických požadavků je jednodušší.
Báze faktů systému PlOpt
Vstupní data pro demo verzi PlOpt vytváří systém buď náhodně ve funkci Příklad
, nebo si je můžete připravit, nebo upravit v Excelu a exportovat pomocí Soubor → Uložit Jako → Text (oddělený tabulátory)
. V demo verzi musí rozměry ve vstupních datech mít některou ze stanovených velikostí uvedenou v nápovědě. V plné verzi jsou data uložena v databázi.
Struktura vstupního souboru:
- 1. řádek: Názvy parametrů (tyto údaje jsou informativní)
- 2. řádek: Hodnoty parametrů (tyto údaje neměňte)
- 3. řádek: Názvy položek popisující tabule
- 4. řádek: Rozměry tabule (tyto údaje neměňte)
- 5. řádek: Konec popisu tabulí (musí být *)
- 6. řádek: Názvy položek popisujících dílce
- 7. a další řádek: Rozměry dílců (můžete měnit rozměry, přidávat a ubírat řádky, pokud dodržíte podmínky demo verze)
- poslední řádek: Konec popisu dílců (musí být *)
Nová data můžete optimalizovat a prohlédnout si je a uvidíte, že systém dokáže maximálně optimalizovat různé množiny dílců. V praxi ovšem nebudou dílce tak přesně vyplňovat plochu, ale systém nalezne maximálně úsporné řešení. Plná verze navíc respektuje řadu technologických požadavků (umístění dílců malých rozměrů, místa, kam nelze dílce umísťovat, požadované okraje, využití zbytků ze skladu apod.). Obsahuje také genetickou optimalizaci (podrobněji o genetických algoritmech pojednává seriál Evoluční optimalizační systémy), v případě dostatečné variability velikosti dílců se však nedosahuje výrazně lepších výsledků.
Závěr
Seznámili jsme se dosud se třemi různými metodami umělé inteligence. Při vývoji inteligentních systémů je vždy důležité zvážit, která metoda je pro určitý typ úlohy vhodný a zda vůbec systém umělé inteligence použít. Následující přehled nám poskytuje alespoň základní vodítko.
- Pokud existuje přesný algoritmus řešení, umělou inteligenci vůbec nepoužijeme. Příkladem může být účetnictví, výpočet daní a pojistného apod.
- Evoluční systémy se vyznačují tím, že existuje obrovské množství alternativ a neexistuje předpis, jak najít tu nejlepší. Existuje však jednoznačná funkce, jak každou alternativu ohodnotit. Příkladem jsou optimalizační systémy.
- Učící se systémy využívají různé typy neuronových sítí a dokážou se učit z příkladů, generalizovat a zevšeobecňovat. Používají se tam, kde existuje rozsáhlá množina naměřených dat a kde tušíme, že mezi nimi existují souvislosti, ale nedokážeme je popsat. Vhodné jsou pro předpovědi ekonomických a technologických veličin, řízení procesů, které nelze popsat algoritmicky, ale probíhají podle jistých, nám neznámých nebo v čase proměnlivých zákonitostí.
- Expertní systémy, o kterých pojednává tento seriál, využijeme tam, kde se má informační systém samostatně rozhodovat a nalézt řešení, přičemž existuje zpravidla značný počet (až stovky) pravidel, která nám sdělili odborníci v dané profesi a která mohou při správném postupu k řešení vést. Příkladem jsou opět složité technologické procesy, kde ovšem pravidla nejen tušíme, ale dokážeme přesně popsat. Známým příkladem jsou programy hrající šachy, ale velký význam mají praktické aplikace v průmyslu, např. chemii, strojírenství apod.
Literatura
Popper, M., Kelemen, J.: Expertné systémy. Alfa, Bratislava 1989.