English

Hluboké učení pro každého? Neuronové sítě a spol.

Autor: Jan Matoušek, středa, 14. březen 2018

Neuronové sítě jsou všude kolem nás: kontrolují burzovní obchody, jsou zapečeny do běžné elektroniky i do mobilních telefonů. Neváhají lidem říci, na kolik let dnes vypadají, na letišti kontrolují teroristy a na burze obírají hejly o poslední úspory. Otázce, zda se do nich pustit se tedy již my datoví analytici nevyhneme. Má ale vůbec cenu pro analytika, rutinéra marketingových modelů, pouštět se do neznámých vod, které slibují vyšší přesnost, ale sakra více práce?
 
Každý, kdo začíná s hlubokými neuronovými sítěmi, by k tomu měl mít nějaký důvod, anebo to dělat alespoň pro srandu, pro svůj rozvoj a sebevzdělávání. Protože se je nenaučí za den, ani za dva, ale bude muset týden ležet v základech. Na druhou stranu, žádný data scientist nám z nebe nespadl, a celoživotní vzdělávání je v datové oblasti spíše nutností než luxusem. 
Protože nemám čas nazbyt, začal jsme nejprve hledat jednoduchou cestu, jak postavit první model. Můžete samozřejmě najít cestu vlastní, která vám bude lépe vyhovovat. Domnívám se však, že cesta, kterou naznačuji je jednou z nejsnazších.

Jak těžké je vybudovat hlubokou neuronovou síť?

Aby bylo v tomhle úplně jasno, nakreslil jsem pro všechny křivku, které se říká „learning curve“ (při překladu v grafu mi chyběl slovník). V prvé řade je třeba říci, že pokud si teprve čtete populární články nebo videa, vůbec jste nepokročili. Při výběru softwaru až zapojíte 10% mozkových buněk. Skutečně začnete pracovat až když se podíváte na odbornější články, videa nebo vezmete do ruky nějakou knihu. V případě knihy a většiny delších přednášek je však vaše vnitřní neuronová síť v pokušení bojkotovat výklad spánkem, stejně jako na akademických sezeních. Takže kratší kusy jsou obvykle stravitelnější. 
Napojení na data je trochu oříšek, protože lemplovství při studiu podkladů se naplno projeví až tady. Zde už je třeba trochu přemýšlet, kombinovat a experimentovat. Máte to? Pak už vás nic hrozného nečeká, ladění parametrů sice může trvat dlouhou dobu, ale je to jen měnění číslíček. Zapojit model do skoringu není těžké. Trochu se opět zapotíte až při změně architektury modelu. 
 
Obrázek: Učení se neuronovým sítím má různé fáze. 
Deep learning learning curve
 

Motivace - Kde nasadit neuronovou síť, a kde ne 

Pro běžné marketingové úlohy, jako je například poznání hodnoty zákazníka, je neuronová síť přeoptimalizované řešení, kde složitost modelu neodpovídá větší přesnosti. Neuronové sítě prvních generací nedělali v marketingu dobrotu, a i ty nové jsou občas příliš komplexní. 
Hluboké neuronové sítě jsou nejlepší tam, kde představují jediné řešení. Tam, kde to nejde dělat jednodušeji. V zásadě vám pro určení zda používat hluboké neuronové sítě postačí úvaha, zda máte na vstupu stovky až tisíce různých zdrojů signálu. Tím může být obrazový bod, čidlo ve fabrice, jedna frekvence zvukové vlny apod. Pak se dají dělat kouzla. 
Co tedy nutně potřebujete je o něco složitější problém, než kdo nakoupí příští měsíc ponožky nebo jaká je budoucí hodnota zákazníka. Já měl štěstí, že mi takováto motivace přišla zvnějšku.
Kamarád mi zavolal, že ho poptává průmyslová firma, která potřebuje nutně počítat konzervy na pásu včetně rozpoznání jejich druhu. Bez možnosti zasahovat do samotné výroby, bez možnosti přidat fyzické počítadlo. Jediná možnost v tom případě spočívá v rozpoznávání obrázků.  Ok, tady si s tradiční regresí nebo rozhodovacím stromem asi moc nepomůžeme, protože zároveň s počítadlem chceme i rozpoznat, jaký typ konzervy po pásu zrovna jede. To už je motivace pustit se do studia něčeho nového. 

Výběr nástroje pro hluboké učení – softwarového balíčku  

Nikdo si nepřidělává rád práci, obzvlášť, když mu stranou leží placené zakázky, které lze dělat jednodušeji, a vydělají jistojistě nám i klientovi. Proto se můj první pohled zaměřil na to, který softwarový balíček udělá nejvíce práce s co nejmenším úsilím. Samozřejmě chcete takový, který tu bude i za 5 let a bude mít podporu komunity nebo vývojáře. Takže klikadla s jepičím životem ani okrajové obskurnosti nepřichází v úvahu. Velmi rychle přijdete na to, že Keras v Pythonu je první volba. Spolupracuje s nejpopulárnějším balíčkem TensorFlow jako s podkladem, takže co napíšete pro Keras, půjde kdykoli přepsat pro TensorFlow s minimem úsilí, kdyby se náhodou někdo rozhodl přestat Keras psát. Hlavní přínos Kerasu je ovšem v tom, že dělá abstraktní vrstvu nad TensorFlow a není tak potřeba nastavovat všechny parametry, jen ty nejdůležitější. 
Při pohledu na jakoukoli statistiku ohledně softwarových balíčků na hluboké učení uvidíte jasně, kdo ovládl pole. Tensorflow od Googlu a Keras kralují jak v Google vyhledávání, tak na oborových serverech pro programátory – Githubu i Stack Overflow. 
Obrázek: Popularita jednotlivých balíčku pro Deep learning. Zdroj dat: The Data Incubator, měřítko je ve standardních odchylkách(!, pozn.: geekové pro geeky)

Hluboké učení nejde bez učení 

Celkem bezstarostně jsem tedy proplul až k volbě softwarového balíčku. A protože jde o balíček pro rozšířený Python, ani jeho instalace není nijak složitá, instaluje se jako kterýkoli jiný balíček do Pythonu. Cena 0 Kč je přímo ideální. Pracuje s GPU i CPU takže hardwarové starosti máme taky z krku. Jedna věc, co zadarmo ovšem není, je dozvědět se, co a jak se to vlastně dělá. Hluboké učení bez toho lidského prostě moc nefunguje, a tak je nutno přečíst i trochu teorie o jednotlivých vrstvách neuronových sítí. Ti šťastnější sehnali pod rukou svého času zveřejněné přednášky ze Stanfordu. Otevřených zdrojů jsou samozřejmě stovky, a celkem dobrý je v tomto směru i Keras blog, desítky videí na Youtube, nebo programovací portály pro datové analytiky jako je Data Camp. Minimální konfigurace sestává z asi 8-mi hodin učení, bez toho se to prostě zvládnout nedá. V první fázi tedy zapomeňte na učení bez učení a pár suchopárných hodin prostě přetrpte. Přece jen to bude trochu bolet. Nestačí vám přednášky z TEDu ani běžný Facebookový balast. Snažte se číst něco ne zarytě akademického (například ladění parametru fň pro počítače roku 2025 na 680 stránkách) a vyhněte se i povrchnostem typu „Jak vás topinkovač porazí v řízení auta“. 

Zkratka všech zkratek – Keras blog a hluboké učení

Nejlepší je, když vás do softwarových knihoven zaučuje ten, kdo je napsal. V minulosti jsem si dopřál ten luxus vidět Petra Šimečka, jak vyučuje svoji Keboolu, na Data Campu občas spatříte autory důležitých data science knihoven do Pythonu. Zde sice nemáme osobní přítomnost, ani video, ale je znát, že pisatelé Keras blogu jsou po krk ponoření v problému, jak zpřístupnit hluboké učení komukoli, kdo o to stojí, a dělají to dobře. 
Číst Keras blog k používání Kerasu je prakticky nutností. Všechny články blogu jsou v zásadě technickými klenoty, ovšem ten, který vás přivede rovnou k cíli odkazuji: 
Keras blog návod na tvorbu neuronové sítě
Legrace začíná, když  autor prohlásí, že neuronovou sít postavíte za 80 řádek kódu, které jsou tam uvedeny. Je to sice pravda, ale již nepíše, že to bude pořádně namáhavá cesta, těch 80 řádek kódu přeložit do normální řeči a zase zpět. 

Porno, psi a kočky - Nejlepší základ neuronové sítě 

Budeme rozpoznávat obrázky, protože to je základní úloha neurnových sítí a z hlediska tréninku na naše průmyslové konzervy nejlepší úloha.   
Keras blog hovoří jako o první vzorové úloze, kterou byste si měli zkusit, o rozpoznávat psů od koček, my jsme si ve firmě vymysleli slony oproti proti autům. 
Obrázek: Poznáme slona a zpětně propagujeme váhy kroků, které vedli k cíli. Hlavní vlastnost hlubokých neurnonových sítí je zpětné zvýšení váhy těm prvkům, které vedli nejspolehlivěji k rozpoznání. 
 
Dvě kategorie obrázků by měli mít určitě velmi odlišné, co se vzhledu týče, ale zase ne triviální. Příliš primitivní by byly například dvě barvy. Naopak „state-of-art“ úloha, kterou řeší Seznam.cz spočívá například v rozpoznávání porna od nevinných obrázků. Dlužno říci, že se tato firma hrabala hanbatými obrázky roky, než dospěla k uspokojivému výsledku.
Obrázek: S tímto autem má naše neuronová síť velký problém. Nemá prakticky kola, ale zato má hlavu a chobot, takže je klasifikováno jako slon. Čmáranice: autor (MS Paintbrush) 

Skoring hlubokou neuronovou sítí

Poslední cvičení, které byste si měli zkusit je skoring nových dat. Pokud se vám podaří uložit svůj první model, je načase zkusit ho zafixovat a posadit do kvazi-produkce.  Znamená to v zásadě, že pokud neuronová síť uvidí zcela nový obrázek, nelekne se ho, ale naopak ho správně zařadí do kategorie. Nic těžkého, ale touto dobou už musíte mít slušné porozumění „vašemu“ kódu.
 
Obrázek: Auta a sloni ke klasifikaci nejsou ani příliš triviální, ani příliš složití. 
Obrázky pro hlubokou neuronovu síť

Jak to předat dál - Učím se učit neuronové sítě 

Protože jsem se zavázal k mentoringu, předání jsme si vyzkoušeli s  výjimečně motivovanou slečnou Ksenii Sorokinou z projektu Czechitas, která měla zopakovat, a pokud možno vylepšit náš experiment s rozpoznáváním slonů od aut. Po třítýdenním domácím trápení náš úkol rekonstruovat a rozchodit neuronovou síť zvládla na jedničku. Na vylepšování modelu však již neměla dostatek času, protože vzdělávací cyklus Digitální akademie právě skončil. Ksenie však nejen rozpoznala Slony od aut, ale vytvořila i kvalitní článek, který se věnuje technické stránce věci. Ten tedy tvoří další doporučenou  četbu, protože perfektně popisuje technické patálie a konkrétní kroky, které je třeba udělat. Ksenia Blog Medium
Příběh má dobrý konec, Ksenia vyhrála nejen Jednorožce (nejvyšší metál v Czechitas), ale získala také vysněné místo v datové firmě Keboola a pokračuje v raketové kariéře datové analytičky. 
 
Blog
Oblíbené
2018201720162015201420132012201120102009
Zpět na hlavní menu
Kontakt:

Data Mind s.r.o.

Telefon: +420 720 705 639, +420 220 386 449
E-mail: info@datamind.cz
Sídlo: U Průhonu 22 / 466, Praha 7 – Holešovice, 170 00
IČO: 28953789

face.png, 26 kB Mgr. Jan Matoušek

Telefon: +420 720 705 639
E-mail: jan.matousek@datamind.cz


linkedin.com
Napište nám vzkaz:
captcha