Software, který se učí praxí

Techniky strojového učení k vytvoření sebezdokonalujícího se softwaru se dostávají do popředí. Snahy vytvořit seb...


Techniky strojového učení k vytvoření sebezdokonalujícího se softwaru se
dostávají do popředí.
Snahy vytvořit sebezdokonalující se software se datují až do 60. let. Ale
"strojové učení", jak je často nazýváno, většinou zůstalo v působnosti
akademických výzkumných pracovníků, pouze s pár útržky aplikací v komerčním
světě, jako je rozpoznávání řeči a detekce zneužití kreditních karet. Nyní
výzkumníci tvrdí, že je lepší algoritmy, silnější počítače a pár chytrých triků
posunou blíže k hlavnímu dění. Jak se technologie vyvíjí, roste i její potřeba.
"V minulosti by se někdo podíval na problém, napsal by kód, otestoval ho, ručně
ho zdokonalil, znovu ozkoušel a tak dále," říká Sebastian Thrun, profesor
počítačových věd na Stanfordské univerzitě a ředitel Stanfordské laboratoře pro
umělou inteligenci. "Problém je, že se software stává stále větším a méně
řiditelným. Tak jsme svědky tendence vytvářet software, který se umí
zdokonalovat sám. To je opravdu velký úkol." Thrun použil několik nových
technik strojového učení v softwaru, který sám řídil auto 209 km přes poušť,
aby pro Stanford vyhrál cenu 2 miliony dolarů v nedávné soutěži vyhlášené
agenturou pro projekty pokročilého výzkumu obrany. "Auto se učilo
charakteristiky povrchu silnice při jízdě. Techniky strojového učení také
poskytly jeho týmu růst produktivity," říká Thrun a pokračuje: "Mohl jsem
naprogramovat kód, který by mi ručním psaním zabral polovinu měsíce, během
jednoho dne."
Počítačový vědec Tom Mitchell, ředitel Střediska pro automatizované učení a
vynálezy na Carnegie Mellon univerzitě, si myslí, že strojové učení je užitečné
pro ty druhy úkolů, které lidé dělají bezděčně a byl by problém vše explicitně
vysvětlit v softwarových pravidlech (například řeč a rozpoznávání obrazů). V
aplikacích strojového učení je software "školen" na testovacích případech
vymyšlených a označených lidmi, je bodován, tak aby věděl, co pochopil správně
a co špatně, a pak je vypuštěn do terénu, aby řešil případy reálného světa.
Mitchell testuje koncepci použití dvou tříd učících se algoritmů, které v
zásadě učí jeden druhý, takže si společně vedou lépe než jednotlivě. Například
jeden vyhledávací algoritmus klasifikuje webovou stránku podle slov, která se
na ní nacházejí. Ten druhý se dívá na obsah odkazů, s jejichž pomocí se lze na
stránku dostat. Algoritmy si navzájem poskytují výsledky svých šetření a určí
nakolik popisek stránky odpovídá jejímu obsahu. Experimenty pana Mitchella
ukázaly, že takovéto "společné školení" může redukovat chyby na méně než
polovinu. Průlomem, jak říká, je software, který se učí ze zkušebních případů
označených nikoliv lidmi, ale jiným softwarem. Stuart Russell, profesor
počítačové vědy na Kalifornské univerzitě v Berkeley, experimentuje s programy,
ve kterých programátoři napíší kód pro funkce, kterým dobře rozumějí, ale
vyhradí prázdný prostor pro nejasné a obtížně definovatelné oblasti. Do těchto
mezer se pak vloží nástroje strojového učení, jako jsou umělé nervové sítě.
Russell zavedl svoje koncepce "částečného programování" do jazyka zvaného
Alisp, rozšíření Lispu. "V těchto programech je vynecháno mnoho mezer, přesto
jsou mimořádně užitečné. Výzkumníci určují algoritmy učení u každé mezery,
mohly by však být vyvinuty techniky, které by nechaly na systému, aby si
vybral, který algoritmus kam vloží." Výpočetně intenzivní povaha strojového
učení inspirovala Yanna LeCuna, profesora Courantova institutu matematických
věd Univerzity v New Yorku, aby vyvinul "závitové sítě", určitý druh umělé
nervové sítě, která používá méně zdrojů a pracuje lépe než tradiční nervové
sítě, pro takové aplikace, jako je rozpoznávání obrazu. U většiny nervových
sítí musí být software školen na obrovském počtu případů, aby zvládl mnoho
eventualit (velikost a pozice objektu, úhel pohledu, pozadí a podobně) se
kterými se může v praxi setkat. LeCunova technika, která je dnes používána
například v bankách či v systémech letištního dohledu, rozděluje každý
příslušný obraz do malých oblastí (jednou z nich je například lidský nos) a pak
je kombinuje, aby vytvořila charakteristiky vysoké úrovně. Výsledkem je
pružnější systém, který vyžaduje méně školení.

Inteligentní design?
Těžko Mezitím se prosazuje výzkum v oblasti strojového učení nazývaného
genetické programování (GP), kde se software vyvíjí darwinovským způsobem.
Mnoho verzí programu často celé tisíce začne pracovat na problému. Většina z
nich si vede špatně, evoluční procesy vyberou dva z nejlepších a kombinují je
tak, aby se vytvořila nová generace programů. Tento proces pokračuje po stovky
generací bez lidského zásahu a výsledky se pokaždé zlepšují. Průkopník GP John
Koza, profesor elektrotechniky ve Stanfordu, použil tuto metodu pro návrh
okruhů, regulátorů, optických systémů a antén, které fungují stejně nebo lépe
než patentované konstrukční modely. Nedávno mu byl udělen patent na projekt
regulátoru zcela vytvořeného použitím GP. Je to, stejně jako biologická
evoluce, pomalý proces. Až donedávna byla počítačová kapacita příliš drahá, aby
bylo GP praktické pro komplexní problémy. Koza může řešit jednoduché problémy
na přenosných počítačích během několika hodin, projekt regulátoru si však
vyžádal jeden měsíc i na clusterovém řešení s tisíci procesory Pentium. "Začali
jsme s GP koncem osmdesátých let a nyní máme milionkrát více počítačové
kapacity," říká Koza. "Myslíme si, že asi tak během 10 let bychom měli být
schopni hrát významnou úlohu v reálném inženýrství."









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.