Standardní (ne)inteligentní stroje
V posledních desetiletích se obecně, hlavně prostřednictvím reklamy a marketingu, velmi začalo nadužívat výrazů jako chytrý, inteligentní, samoučící apod., snažící se vyvolat dojem, že právě nově vyvinuté senzory, stroje a zařízení mají výrazně vyšší schopnosti, než předchozí starší provedení. Hlavně mají tyto výrazy na první pohled vyvolat dojem, že použití, zprovoznění a údržba těchto nových produktů vyžaduje méně práce, méně času, méně nákladů a méně lidské pracovní síly.
Ano, sice nová zařízení mají nové funkce, některé i velmi užitečné, a i větší výkon, rychlejší funkci či zpracování dat, nicméně velké většina z nich doposud obvykle stále využívala stejný již dlouho zaběhnutý koncept tvořený řídící jednotkou s pevně navrženou hardwarovou strukturou a nahraným programem definované struktury, který byl vytvořený nějakým vývojářem / programátorem. Všechny provozní funkce a stavy stroje jsou tak pevně definovány touto výbavou, tedy tím, co konstruktéry při návrhu stroje napadlo a co do systému při jeho vývoji a následném testování vestavěli. V tomto systému prostě se stavy, které nejsou nějak zahrnuty a tzv. ošetřeny v řídícím programu stroje či zařízení, si stroj prostě neumí poradit a obvykle jej nějakým způsobem více či méně ochromí. V lepším případě je zařízení alespoň schopné hlásit nějaký obecný alarm (chybové hlášení), v horším případě se zasekne v nějakém mezi stavu a v nejhorším případě se začne chovat zcela nepředvídatelně.
Každý zkušenější programátor mi jistě dá za pravdu, že často náročnější než naprogramovat tzv. hlavní funkční / provozní cyklus zařízení, je následně vymyslet a ošetřit všechny více i méně pravděpodobné stavy systému, do kterých se stroj může dostat vlivem nestandarních provozních situací. Jde o to, že často prostě ani konstruktér / vývojář / programátor systému nemá šanci dohlédnout, co všechno v praxi může nastat. U automatických průmyslových strojů to komplikuje fakt, že jednak může nestandardní stavy vyvolat přísun nekvalitních či poškozených výrobních prostředků (materiály neočekávané struktury a tvarů, přepravou poškozené komponenty apod.), jednak nevhodným zásahem špatně vyškolené obsluhy stroje či linky, která často dnes pod velkým tlakem požadavku neustálé výroby může jedna zbrkle či nevhodně vzhledem k posloupností operací systému. Navíc často u průmyslových strojů vytvářených na míru zákazníkovy není obvykle dostatek času na dlouhodobé testování, protože dodací termíny se tlačí na co nejkratší mez. Velká výhoda konstruktérů a programátorů průmyslových strojů tak jsou vždy co největší provozní zkušenosti z dané oblasti výroby, tedy co největší zpětnou vazbu z jiných úspěšných i neúspěšných projektů. Větší konkrétní zkušenosti znamenají větší šanci postihnout v hardwarové i softwarové konstrukci stroje různé možné nestandardní provozní situace a tím funkci stroje na tyto momenty "nějak předem připravit". Někdy se říká "udělat stroj co nejvíce blbuvzdorný".
Stroj či zařízení může používat nové technologie, nové odolnější materiály, rychlejší procesory, rychlejší a spolehlivější přenos dat (komunikaci), ale pokud v jádru své koncepce stále je schopen dělat jen to, co do nějak konstruktéři předem pevně implementovali, na situaci to v zásadě nic nemění. Pořád si sám stroj nebude umět opakovaně poradit se situací, kterou nemá nějak "ošetřenou" v řídícím programu.
Co je umělá inteligence?
Správná umělá inteligence AI (z anglického Artificial Intelligence) by měla být schopna úplného nebo alespoň částečného samostatného učení, tedy mít schopnost automaticky samostatně přizpůsobit svojí funkci na nové, doposud jí neznámé situace. Klíčový je výraz "neznámé situace", protože až v tomto momentě lze začít mluvit o nějaké formě inteligence.
Systém umělé inteligence pracuje na zcela jiném principu, než bylo uvedeno výše. Řídící systém ("software") již netvoří pevně strukturovaný program obsahující přesně definované logické podmínky pro danou konkrétní aplikaci a rozhodovací situace typu "když nastane tento stav, udělat toto, když nastane jiný stav, udělej ono...". Řídící systém umělé inteligence je stručně řečeno tvořen nějakou obecnou funkční strukturou stejnou pro velké množství různých aplikací, která se až postupným učením začne profilovat na konkrétní provozní funkci / operaci. Je to podobné jako u lidských mozků, které jsou z pohledu základní stavby u všech lidí prakticky stejné (většina úplně malých dětí se chová zcela podobně) a chování či schopnost (znalost) vykonávat nějakou konkrétní činnost si postupně osvojí až učením. Různě zvolená základní obecná řídící struktura může mít sklon rozdílně (lépe či hůře) se vypořádat s různými aplikacemi, nicméně je vždy nutné do vývoje i zprovozňování stroje s umělou inteligencí zakomponovat prostředky a čas na proces učení. Ten je v případě AI systémů zcela zásadní.
Koncepce vývoje a výroby strojů s umělou inteligencí tedy požaduje zcela jiný přístup než návrh standardních "chytrých" systémů. Zatímco klasický systém s přesně definovaným řídícím programem stroje vyžaduje poměrně dlouhou vývojovou fázi, ale následné zprovoznění již vyvinutého stroje v konkrétním provozu uživatele již může být poměrně krátká, systém strojů s umělou inteligencí sice obecně umožňuje zkrátit fázi základního vývoje a výroby, protože se prostě do velkého množství různých strojů nahraje strukturou stejný software (struktura neuronové sítě). Ve většině případů ale vyžaduje velkou časovou náročnost na učení, tedy to, co má stroj pak konkrétně provádět a jak rozlišit správné a nesprávné materiály, komponenty či operace.
Jinak řečeno, stroj či linka klasické koncepce se dlouho vyrábí na dílně výrobce, ale následně zprovoznění u zákazníka bývá výrazně kratší (časově méně náročná), zatímco v případě strojů s umělou inteligencí (po obecném zvládnutí celé této technologie) bude pravděpodobně výrazně kratší vývoj a výroba na dílně výrobce, ale o to delší zprovoznění u uživatele.
Učení umělé inteligence
Zatímco u klasické koncepce strojů s přesně stavově definovaným logických řídícím programem je veškerá zodpovědnost za správnou funkci "na bedrech" programátora, který musel vymyslet a rozhodnout jaké funkce a reakce stroje do programu implementuje, u umělé inteligence realizované na nějaké formě tzv. neuronových sítí, se při učení předkládají standardní neuronové struktuře jednotlivé reálné vzorky či úkony, se kterými má pak stroj fyzicky pracovat. Ty definují ("předvádí") operace, co s nimi má provádět a společně s informací, zda daný úkon či předmět je žádoucí (správný) či nežádoucí (nesprávný). Neuronová struktura si již sama najde společné či rozdílové znaky mezi předkládanými předměty či definovanými operacemi a také si sama určí ideální posloupnost operaci, aby funkce systému byla co nejrychlejší a nejefektivnější. Jako dítěti ve škole se sice předkládají nějaké informace a úkony, které si má pamatovat a umět, nicméně správná výuka ponechává místo na kreativitu daného jedince, jak si nakonec požadované informace a úkony ve své hlavě utřídí a vyhodnotí. A obecně obdobné je to i v případě umělé inteligence strojů.
Celý takto nastínění koncept učení však má ke všem svým výhodám, jakými jsou flexibilita a nalezení nejefektivnějšího řešení operace, i jednu velkou nevýhodu. To je požadavek na velké množství informací / vzorků pro naučení stroje a to nejen těch správných (pozitivních), ale i těch nesprávných (negativních), aby systém měl možnost si dobře určit (nastavit) hranice, co dělat může a co již ne. V případě čistě softwarových aplikací například pro třídění dat či odpovídání na dotazy, to není až takový problém. Zde softwarových dat pro alespoň pro prvotní základní naučení stroje bývá dostatek, nebo je lze alespoň uměle vygenerovat. U průmyslových strojů, které mají například fyzicky manipulovat s nějakými předměty a materiály, řezat či obrábět, to již problém může být dost veliký. Každý, kdo někdy pracoval ve firmě navrhující a vyrábějící automatické průmyslové stroje, mi jistě dá za pravdu, že získat od koncového uživatele stroje před dodáním stroje mnoho signifikantních vzorků většiny předmětů či materiálů, které pak v provozu má stroj zpracovávat, jev mnoha případech téměř nepřekonatelný problém. Buď předměty ze své povahy složení rychle podléhají zkáze, nebo někdy je ani budoucí uživatel stroje nemá v dostatečném množství k dispozici (v případě, že se dodává hned celá výrobní linka na nějaký nový specifický produkt doposud nevyráběný).
Zatímco u klasické programové koncepce strojů může nedostatek testovacích vzorků do jisté míry nahradit zkušenost programátora s dřívějších nějak podobných projektů, u algoritmů umělé inteligence to není přímo možné, protože vlastně nikdo pořádně dopředu neví, jak bude nakonec naučená neuronová síť vypadat. Ta se sama generuje právě až právě procesem učení (tréninku). Nelze tedy nikdy přesně dopředu před naučením a následným otestováním systémů umělé inteligence definovat, jak přesně se bude chovat. I dva stejné systémy / stroje naučené na stejný soubor dat (vzorků) jen v jiném pořadí nebo za lehce jiných podmínek mohou ve výsledky mít rozdílnou naučenou strukturu programu z důvodu i jen mírně odlišných trénovacích podmínek. Podobně jako různí lidé si sice naučí stejné informace či úkony, ale v praxi je pak provádějí mírně odlišným způsobem či v odlišném pořadí, byť nakonec se stejným finálním výsledkem práce.
Učit systémy umělé inteligence v průmyslu tak bude v mnoha případech nutné až "za pochodu" během jejich rozběhu výroby koncového uživatele, což může ve výsledku při dostatečném vysvětlení dané situace na manažerské úrovni vytvářet různé stresové situace. Uživatel pořízeného stroje obvykle po jeho dodání chce co nejdříve najet jeho funkci na plný výkon, aby co nejdříve začal na jeho funkci vydělávat. Procesy učení algoritmů umělé inteligence však mohou potřebovat i několik dní na dostatečné nasbírání informací na doladění své funkce či adaptaci svého pohybu na co nejefektivnější a nejrychlejší režim. Během učení systém nemusí ani zdaleka pracovat efektivně a může zprvu provádět dost "chybných rozhodnutí". Při nich je pak stejně nutná lidská pomoc, která při případných prvotních chybách či špatných rozhodnutích systému mu "ručně" (například potvrzením na ovládacím panelu) definovat, jaký stav je žádoucí (správný) a jaký již nežádoucí (nesprávný). Prostě opět podobně jako výchova u dětí, která také nějakou dobu trvá.
Nahradí umělá inteligence ve všech strojích klasicky programovatelnou řídící jednotku?
S ohledem na výše v tomto článku nastíněné skutečnosti si nemyslím, že ani ve vzdálené budoucnosti budou všechny automatické systémy pracovat na bázi umělé inteligence. Stroje s umělou inteligencí sice mohou pracovat více efektivně než stroje klasické programové koncepce a hlavně mohou umět sami posoudit a vyhodnotit nestandardní situace (včetně těch, na které nebyly natrénovány), ale na druhou stranu prvotní proces správného naučení může být poměrně hodně časově zdlouhavý.
V mnoha případech a aplikacích, kde není nutná pozdější flexibilní rychlá změna funkce stroje nebo řešit nějaké nestandardní situace, pak dle mého názoru bude stále výhodnější používat pevně definovaný logický sekvenční program. Takový program si obvykle vystačí s výrazně menším výpočetním výkonem / rychlostí procesorů a může ve výsledku vykazovat výrazně jednodušší strukturu.
Závěr
Umělé inteligenci všeobecně ve všech aspektech automatizace jistě v budoucnu "svítí zelená". I když se již objevily zprávy o úžasných výsledních moderních AI algoritmů, kdy byly schopny sami se naučit ze sledování her jejich pravidla a následně předčit a porazit i skvělé hráče, nasazení v průmyslu nebo obecně v prostředí řídící nějaký reálný pohyb či výrobu je trošku jiná věc z pohledu náročnosti. V průmyslu je trvale velký tlak na spolehlivost provozu a výroby a v tomto směru musí být principy skutečné umělé inteligence provádějící již samostatná rozhodnutí opravdu hodně vyzkoušené, aby je bylo možné "s klidným svědomím" nasadit. Na druhou stranu již dnes i v ČR některé firmy nabízejí AI algoritmy pracující s neuronovými sítěmi pro průmyslové aplikace, i když zatím převážně pro oblast senzoriky, diagnostiky a vyhodnocení. V budoucnu však jistě budou neuronové algoritmy pevnou součástí i většiny průmyslových robotů.
Odkazy:
- Článek - Sanket Garbhe: "What is Artificial Intelligence (AI)"
- Článek - Yuichi Yoda: "Cloud Computing and AI"
- Článek - "Artificial intelligence (AI) and cognitive computing: what, why and where"