AI notes #1: Úvodník
Jelikož se ve volném čase zabývám soukromým “výzkumem” umělé inteligence, testuji různé existující modely a vyvíjím vlastní, chtěl bych se s veřejností podělit o tyto poznatky. Proto jsem se rozhodl psát sérii příspěvků s názvem AI notes
- zápisky umělé inteligence.
Zaměřuji se na neuronové sítě, zpracování přirozeného jazyka (NLP) a mým cílem je příspět v oblasti AGI (obecná umělá inteligence) vytvořením osobního asistenta, který bude schopen porozumět zadání v lidském jazyce a vykonávat různé druhy úkolů. To vše pomocí postupného účení (gradual learning), a nikoliv pomocí hard-coded bota, což je aktuálně populární téma.
Abyste se v těchto příspěvcích orientovali, doporučuji mít nastudovaná následující témata. Ačkoliv se budu snažit co nejvíce věcí popsat laicky.
- Strojové účení / Machine learning
- Umělé neuronové sítě / Artifial neural networks
- Backpropagation learning
- Q-Učení / Q-Learning anglicky
- Zpracování přirozeného jazyka / Natural language processing
- Intelligent agent
#NLP - zpracování přirozeného jazyka
Natural language processing je odvěké téma v oboru umělé inteligence. Cílem je pochopení lidské řeči strojem a následná syntéza výstupu opět do lidské řeči. V této oblasti se používají jak statistické modely, tak neuronové sítě. U učících se modelů jde většinou o sequence-to-sequence mapping, tedy jakási forma překladače (např. Google translate používá strojové účení) z lidského jazyka do strojové reprezentace. Ale existuje i mnoho dalších přístupů k této problematice.
Já osobně jsem v této oblasti začínal s projektem N.I.K.I. už na střední škole. Jednalo se o chatovacího bota, který se jen učil na principu mapování vstupů na výstupy. Později jsem pokročil k analýza gramatiky, konkrétně větnému rozboru.
Dnes je tento postup již dávno rozvinutý a existuje mnoho algoritmů a knihoven na větný rozbor včetně normalizce slov. Osobně se však přikláním k jinému postupu, než-li analytickému rozboru. A to k principu učení se od základu. Tedy aby se algoritmus naučil chápat jazyk sám formou pozorování a interakce. Je to ekvivalent k malému dítěti, které se dokáže naučit mluvit bez znalosti gramatiky a dalších pravidel daného jazyka. Samozřejmě nelze se naučit chápat jazyk bez spojení s okolním prostředním, tudíž NLP musí být součastí sofistikovanějšího algoritmu, který se zároveň s jazykem učí chápat a poznávat okolní prostředí.
#Inteligentní agent
Další oblastí, nebo-li spíše metodou, kterou používám, je inteligentní agent. Jedná se o postup, kdy algoritmus představuje entitu - agenta v určitém prostředí a ten má v tomto prostředí možnost vykonávat určité akce. Například myš v bludišti - agent je myš a jeho akcemi je pohyb. Agent má určitý cíl a snaží se ho dosáhnout. Algoritmus poté každé rozhodnutí ohodnotí odměnou a cílem agenta je odměnu maximalizovat a tím dosáhnout stanoveného cíle. Jedná se tedy o formu reinforcement learningu, kdy akce vedoucí k vyšší odměně jsou kladně ohodnoceny a naopak. Nejčastěji se k výpočtu hodnoty akce používá Q-Learning.
#AGI - obecná umělá inteligence
Obecná umělá inteligence (artifical general intelligence) je definována jako inteligentní stroj, který je schopen úspěšně plnit intelektuální úkoly minimálně stejně dobře, jako člověk. Do toho spadá mnoho různých druhů úloh od rozpoznávání obrazu, zpracování a použití přirozeného jazyka, hledání řešení na logické problémy až například po schopnost vytvářet umění.
AGI je mnohdy také označována jako silná umělá inteligence (strong AI). Rozdíl oproti slabé / úzké AI je v tom, že úzká umělá inteligence řeší pouze specifický problém. Například rozpoznávání obrazu, hraní her, překlad mezi jazyky nebo detekce anomálií v datech. V dnešní době je uzká umělá inteligence na velmi dobré úrovni. Dokáže identifikovat a popsat obrázky, hrát logické hry lépe, jak člověk, a dokonce i syntetizovat lidskou řeč. Ovšem žadný z těchto modelů není schopen řešit jiný problém, než ke kterému byl vytvořen a naučen.
Oproti tomu cílem AGI je schopnost učit se různým dovednostem bez ztráty těch předchozích a schopnost tyto dovednosti používat dohromady k řešení komplexních problémů.
Vyvinutí AGI je mým snem od útlého věku, inspirované zřejmě mou zálibou ve sci-fi. Nesnažím se ovšem o vyvinutí inteligentního robota, jako spíše o vytvoření inteligentní entity, která existuje ve virtuálním prostředí. Takovým příkladem je osobní asistent, který je schopen komunikovat lidskou řečí a plnit komplexní úlohy. Jeho využití je ve zjednodušení práce a automatizaci různých úkonů včetně získávání a zpracování informací.
#Přínos AGI
Proč se vůbec snažíme vytvořit obecnou umělou inteligenci? Jaké by měla přínosy pro lidstvo?
-
Zjednodušení a zefektivnění práce - pokud by stroj měl stejné intelektuální schopnosti jako člověk, pak by mohl vykonávat stejné úlohy, a tudíž nahradit rutinní lidskou práci. Samozřejmě je zde riziko, že človek nebude mít co dělat, ale to je stejné jako s průmyslovou revolucí, jde jen o další technologický a evoluční krok.
-
Řešení velmi komplexních problémů - schopnosti člověka jsou velmi omezené, může se za život naučit jen určité množství znalostí a získat omezené zkušenosti. Oproti tomu stroj, který nemusí jíst, spát, starat se o základní lidské potřeby, se může učit mnohem rychleji včetně sebezdokonalování. Stačí mu poskytnout výpočetní zdroje. Díky tomu může dosáhnout dostatečné inteligence na to, aby byl schopen vyřešit problémy, na které jsou i týmy odborníků krátké. Což sebou samozřejmě přináší mnohá rizika - viz signularita.
-
Obrovský potenciální trh - téměř každá firma bude chtít “zaměstnat” AGI, nahradit běžné úkony strojem, jelikož platit výpočetní výkon bude značně levnější, než platit zaměstnance. Toto přináší obrovský prodejní potenciál pro výrobce AGI. Dalším faktem je, že cena každého “stroje” bude stoupat s jeho naučenými schopnostmi. Tudíž každá investovaná koruna bude mít mnohonásobnou návratnost a je velmi nepravděpodobné, že bude existovat jedna entita, která bude obsluhovat celý svět. Spíše bude každá firma vytvářet “specializované stroje”, stejně jako se lidé učí různým profesím.
#Mé zkušenosti a projekty
Vývojem AI se zabývám již přes 7 let a za to dobu jsem vyzkoušel různé techniky a modely. Každopádně jedná se hlavně o výzkum a vývoj, než o praktické využití - zatím :)
- Základy NLP - statistické modely, tagování vstupních slov dle kontextu
- Rozpoznávání obrazu - formou klasického perceptronu, výhledově se chystám na CNN
- Spiking neural networks (vlastní modely)
- Sequence-to-sequence mapping pomocí LSTM
- Sparse data representation (SDR)
- Word2vec (jako SDR vektor)
- Inteligentní agent a Q-learning
- Hledání řešení v prostředí reprezentovaném jako graf
- Asociativní neuronové sítě
- Použití NN jako indikátoru pro burzovní trhy
Většina těchto projektů je forma různých scriptů, které se snaží řešit specifické problémy v testovacím prostředí, tudíž nemá smysl je prezentovat bez dodatečného vysvětlení. To je i důvodem, proč jsem začal psát tuto sérii - abych mohl prezentovat svůj vývoj veřejnosti a získat zpětnou vazbu.
#Závěrem
Doufám, že jsem laiky uvedl do základní problematiky umělé inteligence (ačkoliv existuje mnoho lepších zdrojů) a podařilo se mi popsat to, čím se ve volném čase zabývám. V této sérii budu pokračovat už konkrétními a odbornějšími články, které budou popisovat mé modely, úvahy a výsledky, a budou určeny spíše pro ty, kteří již mají s AI zkušenosti.
Dále můžete pokračovat ve čtením AI notes #2: Architektura umělé mysli.
Na závěr bych rád uvedl různé zdroje, které se věnují AI, a které sleduji:
- Google DeepMind - divize Googlu věnující se vývoji AI
- Good AI - česká firma zabývající se vývojem AGI
- General AI challange
- Open AI
- TensorFlow - knihovna od Googlu pro strojové učení
- Numenta - teorie HTM, trochu jiný přístup k NN
- @marek_rosa - zakladatel GoodAI
- @ShaneLegg - spoluzakladatel DeepMind
- a více v mém AI follow listu na Twitteru