Machine learning nie je ani mágia ani diabolský vynález: o predpovediach, umelých mozgoch a stromoch

Vždy keď šoférujete, venujete sa predpovedaniu budúcnosti — niekoľkokrát za každú jazdu. Prečo ste sa rozhodli brzdiť už teraz? Prečo nie o päť metrov? Prečo ste išli cez mesto a nie po obchvate? Pri každom takomto rozhodnutí nemáte 100% istotu, že sa rozhodujete správne. Pochybujeme, že pri brzdení počítate fyzikálne rovnice, aby ste presne našli tú ideálnu brzdnú dráhu. Ani pri výbere cesty neviete úplne dokonale, že na tom obchvate bude naozaj menej áut, že to pôjde rýchlejšie.

Viete však dostatok na to, aby ste urobili predpoveď, ktorej dôverujete natoľko, že jej zveríte vlastný život (lebo autá sú kovové stroje smrti a skazy — toto nakoniec vymažeme). Z čoho pramení tá istota?

Predovšetkým zo skúsenosti (ak teda naozaj nie ste geniálny fyzik, ktorý z hlavy zvláda počítať diferenciálne rovnice, alebo nepoužívate Sygic či Waze :)). Auto ste zabrzdili už toľkokrát, že ste sa naučili intuitívne odhadnúť, kedy začať pri akej rýchlosti brzdiť, aby ste nebrzdili príliš prudko, no zároveň nezdržovali premávku. A všetky tie cesty cez mesto aj po obchvate vám dali dobrý odhad toho, čo bude v aký čas dňa rýchlejšie.

Ľudský mozog je v tomto naozaj geniálny. Je však zároveň hrozne nedokonalý. Nechá sa ľahko vyrušiť. Zazvoní telefón, pri ceste stojí žiarivý megaboard, nezamyslí sa nad trasou a automaticky sa vyberie mestom, aj keď vlastne vie, že o pol ôsmej ráno v pondelok to naozaj nie je dobrý nápad.

Okrem toho existujú problémy, kde nemáme šancu zažiť dostatok priamych skúseností, aby bol náš úsudok aspoň trochu spoľahlivý. Napríklad, rozhodnúť sa, koho zo súčasných manažérov vybrať za šéfa pobočky, je úloha, ktorú robíme príliš zriedka a za príliš rozličných podmienok, aby sme sa ju dobre naučili. Alebo je to problém tak komplikovaný, že nemáme šancu ho obsiahnuť ani s veľa skúsenosťami. Dážď a búrky ste zrejme zažili veľmi veľakrát, no aj tak nedokážete predpovedať počasie lepšie ako to vie hod mincou. V takýchto prípadoch máme na výber dve možnosti — myknúť plecami a zmieriť sa s nekonečnou náhodnosťou univerza, alebo sa obrátiť na matematiku a počítače, nech to vyriešia za nás.

Tento článok je, podobne ako článok o grafoch, výstupom z našej internej prednášky v Quantopy. Motiváciou k tomu, aby sme sa tejto téme venovali, bol aj fakt, že názvy ako neurónové siete či machine learning spôsobovali viacerým členom nášho tímu hlavybôľ, ako aj fakt, že v relatívne blízkej budúcnosti sa tieto metódy stanú kľúčovou časťou našej práce. Ľudské správanie v práci (no i mimo nej) produkuje obrovské množstvo doteraz nevyužitých dát, ktoré netrpia podobným problémom ako popisuje dávno známy idiosyncratic rater effect. Faktom je, že v súčasnosti vieme viac o svojej športovej aktivite a tom, čo zjeme, ako o tom, ako pracujeme, napriek tomu, že prácou strávime tretinu našich životov.

Pekne od začiatku: Eugenika, výška a regresia

Slová, ktorá v súčasnosti znejú ako temná veda, či čierna mágia (štatistika, prediktívna analýza, strojové učenie, umelá inteligencia, neurónové siete), majú v skutočnosti veľmi skromné a jednoduché začiatky.

Sir Francis Galton (public domain)

Kedysi dávno (v 19. storočí) žil jeden pán s typicky viktoriánskou bradou. Volal sa Francis Galton. Dokonca to bol aj Sir. A veľmi rád veci meral. Meral kvetiny aj iné rastliny. A meral aj ľudí. Meral rodičov aj ich deti. Ako, v tom čase typického, zástancu eugeniky ho veľmi zaujímala dedičnosť rôznych ľudských čŕt. Jeden z jeho najznámejších počinov bola práca, v ktorej meral výšku rodičov a ich detí. Chcel totiž nájsť vzťah medzi výškou rodičov a výškou dieťaťa. Predpokladal, že výška je dedičná, a teda že výška rodičov bude nejako predpovedať výšku detí.

Ten vzťah, ktorý hľadal, by sa dal vyjadriť aj rovnicou, v tomto prípade lineárnou. Robil teda prvý raz v publikovanej histórii niečo, čo by sme dnes nazvali lineárnou regresiou. Alebo, ako to zvykol volať môj profesor ekonometrie: „kreslenie čiary cez bodky v grafe“. Iste, jeho metodológia bola veľmi primitívna (bol predsa len prvý, ktorý takéto niečo naozaj skúšal), no položil tým základy viac menej celej štatistiky.

Chudák Galton to vtedy celé počítal ručne (resp. na to mal ľudí), no postupne vznikli postupy, ako takéto problémy počítať matematicky a predovšetkým „automatizovane“.

Úplne obyčajné štvorce: Kiežby všetko bola rovná čiara

Čo to však naozaj znamená? Ako sa hľadá tá správna rovná čiara? Ako to ten Galton mohol spočítať — v 19. storočí!?

Najlepšie sa to dá vidieť na grafe s dvomi premennými. Povedzme, že chceme zopakovať ten Galtonov pokus a nájsť vzťah medzi premennou Y (výškou dieťaťa) a premennou X (výškou rodičov). Konkrétne: ak poznám výšku niekoho rodičov, viem predpovedať, aké vysoké bude dieťa?

Dáta o výškach rodičov a ich detí

Tie bodíky na grafe vyzerajú, ako keby boli usporiadané v priamke, ktorá ide približne z dolného ľavého rohu do horného pravého rohu. Skúsme tam tú čiaru teda nakresliť.

Skúšobne nakreslená čiara “trendu” (model)

Keď si teraz predstavíme, že netušíme, koľko tie deti naozaj merajú, mali by sme vedieť na základe výšky ich rodičov predpovedať, aké vysoké budú mať deti. Výšky rodičov sú tie bodky na X osi. A máme našu nakreslenú rovnú čiaru, ktorá nám udáva presný vzťah medzi výškou rodičov a ich detí. Môžeme predpovedať!

Iba “závislá” premenná (výška rodičov) a odhadnutý model

Ako však vieme, že je toto naozaj ten najlepší model? Nemohli by sme tú čiaru nakresliť aj ináč? Lepšie?

Aby sme túto otázku vedeli zodpovedať, musíme si povedať, čo to znamená lepšie. V takýchto lineárnych modeloch je „lepšie“ väčšinou rovné čo najpresnejšiemu odhadu. To znamená, že tú čiaru chceme nakresliť tak, aby predpoveď, ktorú nám ponúkne, bola čo najpresnejšia.

Čiara, ktorú sme nakreslil ako prvú, nie je úplne zlá, no dala by sa nakresliť oveľa presnejšie. Skúsme to teda.

Postupné zlepšovanie modelu až ak najlepšiemu riešeniu (OLS)

Pri dvoch premenných sa to dá aj skúšaním, no ak je tých premenných viac, už to asi nepôjde. Lebo, úprimne, nikto z nás nevie fungovať vo viac ako trojrozmernom priestore a snažiť sa na desať dimenzii napasovať deväťrozmernú hyperrovinu je presne také sci-fi ako to znie.

Našťastie, múdri ľudia zistili, že celý tento problém sa dá vyjadriť maticami, a keď človek tieto matice dobre poobracia a ponásobí, dostane optimálne riešenie. A keďže to, čo sme si povedali, že znamená „lepšie“, sa formálne definuje ako druhá mocnina odchýlky, tak sa to volá metóda najmenších štvorcov.

Nie je všetko rovná čiara

Problémom však je, že nie všetko je taká pekná rovná čiara. Sú problémy, ktoré síce vieme popísať lineárne, no tých možných premenných je tam tak veľa (stovky až tisíce), že nájsť tie správne (tie, ktoré majú nejaký vzťah) je nadľudským úsilím.

Alebo sú problémy, ktoré sa lineárne popísať nedajú — napríklad taká ľudská výkonnosť vyzerá ako obrátené U. Ako sa učíme a získavame skúsenosti, sme stále výkonnejší. No od nejakého veku sa začne ozývať staroba, únava, prestaneme sa orientovať v moderných technológiách a naša výkonnosť začne klesať.

Ilustračný graf vzťahu veku a výkonnosti

Hľadať správne matematické vyjadrenie takýchto komplexných vzťahov — keď nám nestačí sčítavať a odčítavať — je od istého relatívne malého počtu vstupov príliš zložité. Ak by sme mali hádať, či je ten vzťah medzi vekom a produktivitou kvadratický, logaritmický či odmocninový a všetky tieto možnosti skúšať, ďaleko by sme sa nedostali. Alebo by sme si zvolili niečo, čo vyhovuje našim predstavám (confirmation bias) a tomu, čo práve chceme z tých dát dostať.

Aby sme takéto problémy dokázali riešiť — napr. identifikovať zamestnancov s najväčším potenciálom, alebo práve s najväčším rizikom odchodu, zvykneme sa v súčasnosti obracať na počítačovú sestru klasickej štatistiky: machine learning.

Ukážeme si dva prístupy, ktoré sú v súčastnosti v machine learningu používané, aby sme raz a navždy pochopili, že to nie je žiadna veľká mágia či raketová veda, ani že sa z toho v dohľadnej dobe nevyvinie Skynet či iná umelá superinteligencia. Sú to len veľmi šikovné, no vo svojej podstate hlúpe algoritmy, ktoré sa dokážu naučiť jednu veľmi špecifickú úlohu, ak im ukážete veľké množstvo príkladov, vďaka čomu nám vedia osobne ako i firmám zásadným spôsobom zjednodušiť život.

Nech prehovoria lesy

Jedným z najkrajších algoritmov — a zároveň algoritmus, ktorý sa dá aj najlepšie vizuálne vysvetliť — je rozhodovací strom.

Vráťme sa k produktivite a povedzme, že chceme na základe údajov o tom, ako sa človek správa v práci (koľko a ako používa počítač, koľko telefonuje, koľko sa stretáva s klientami, koľko času trávi na poradách, v akom je tíme a s kým aj naozaj komunikuje…) predpovedať, či a ako sa zvyšuje riziko podania výpovede. To nás môže zaujímať napr. preto, aby sme tomu buď vedeli zabrániť (zistiť, kde je problém, ponúknuť lepšie podmienky, iný tím…), alebo sa na to aspoň pripraviť a začať hľadať čo najskôr náhradu.

Ako veľká firma máme dostatočne veľkú vzorku bývalých zamestnancov, o ktorých vieme, ako rýchlo po nástupe do práce z nej aj odišli. Zaraďme si ich do škatuliek: vysoké riziko (odišli do mesiaca), stredné riziko (odišli do 3 mesiacov) a nízke riziko (ostali dlhšie).

Tieto dáta použijeme, aby sme náš strom naučili predpovedať toto riziko. Strom si vezme údaje o produktivite a správaní v práci a pokúsi sa nájsť vzorce správania, ktoré sú spojené s takou či onakou úrovňou rizika.

Ako rastie strom

Prvá úroveň rozhodovacieho stromu (syntetické dáta)

Ako sa však takýto strom rozhoduje? Rozhodovací strom rastie — ako obyčajné stromy — z toho najhrubšieho kmeňa po tie najtenšie konáriky. Na začiatku hľadá premennú, podľa ktorej bude vedieť vzorku rozdeliť tak, aby výsledné dve skupiny boli čo najpodobnejšie. To znamená, že v jednej skupine bude čo najviac ľudí s rovnakým rizikom, a aj v druhej skupine bude čo najviac ľudí s rovnakým (zrejme iným) rizikom. Ten strom je vlastne taký socialista, ktorému sa nepáči, keď sú v spoločnosti príliš veľké rozdiely medzi ľuďmi — najradšej by bol, aby mali všetci rovnako.

Druhá úroveň rozhodovacieho stromu (syntetické dáta)

Postupne takto prechádza všetkými premennými, až nakoniec príde do bodu, kedy je na konci každej vetvičky skupina ľudí s rovnakým levelom rizika. V tom momente skončí a povie, že sa už všetko naučil.

Tretia úroveň rozhodovacieho stromu (syntetické dáta) — takto by sme mohli rásť ďalej a ďalej

Strom potrebuje záhradníka

Tam by sme mohli skončiť — ak by celý svet vyzeral presne ako tie dáta, na ktorých sme to trénovali. Tak to však samozrejme nie je. To, ako ľudia vo všeobecnosti pracujú, sa môže časom meniť a presné detaily produktivity už nebudú rovnaké ako doteraz. Alebo sme mohli mať smolu a mať akurát vzorku ľudí, ktorí boli výrazne iní ako priemerný človek. Napríklad všetko ľudia, čo nepoužívajú Facebook, alebo ľudia, čo nikdy nechodia za klientami, lebo sú to programátori.

Ak by sme potom takto nacvičenému stromu ukázali „normálnych“ ľudí, vôbec by ich nevedel dobre odhadnúť, pretože by nesedeli do vzorov, ktoré doteraz videl. Takémuto stromu hovoríme, že je pretrénovaný. Je to ako keby ste horolezcovi povedali, že jediné čo potrebuje, je mať silné prsty. A on by cvičil prsty od rána do večera každý deň, až by stratil všetku silu v nohách, zabudol by uviazať osmičku, aj istiť parťákov.

Tomu sa dá zabrániť napríklad tak, že stromu zakážete len tak rásť. Že ho po niekoľkých leveloch zastrihnete a poviete, stačí, už ďalej nejdeš. Alebo, že každú premennú môže použiť iba raz. Alebo si namiesto stromu necháte narásť les, v ktorom každý strom porastie z trochu inej vzorky. Predpovede každého stromu potom dáte dokopy a ten najpopulárnejší výsledok sa stane predpoveďou vášho lesa.

Miesto umelých lesov umelé mozgy

Druhý typ algoritmov je tiež inšpirovaný biológiou. No tentokrát faunou, nie flórou. Ak sa vôbec o nejakej machine learning metóde dá vôbec povedať, že je „cool“, tak ňou určite sú neurónové siete. Už ten názov samotný znie magicky a desivo. Ide však hlavne o šikovné pomenovanie relatívne jednoduchého princípu (áno, takto vznikajú buzzwords).

Aby sme zistili, ako takáto sieť funguje, treba sa najprv pozrieť na to, ako funguje taký obyčajný ľudský neurón. Ten prijíma impulzy z iných neurónov. Tie všetky prichádzajú do jadra neurónu, ktorý sa môže “aktivovať”, keď príde správna kombinácia impulzov. Keď sa aktivuje, pošle impulz ďalej. A tak sa v mozgu a po celom tele šíria informácie.

Zjednodušená ilustrácia neurónu

Umelé neuróny sú len jednoduchšou verziou toho istého. Každá neurónová sieť má tri časti (vrstvy). Vstup, výstup a „skryté“ vrstvy. Pod vstupom si predstavte niečo ako naše uši či oči. Jednoducho systém, ktoré nasáva informácie z „prostredia“. V tomto našom prípade to budú všetky tie informácie, ktoré máme o správaní človeka v práci (pre každú premennú jeden neurón).

Vstupná vrstva neurónovej siete — každá bodka predstavuje jeden neurón, jednu premennú z našich dát

Pod výstupom si môžete predstaviť tú záverečnú vedomú myšlienku, keď napr. uvidíte pred sebou stáť psa a v mozgu si uvedomíte, aha, labrador. V našom prípade to bude zaradenie človeka do správnej úrovne rizika odchodu.

Vstupná a výstupná vrstva neurónovej siete — niečo v strede chýba…

Aby sme nezabudli, medzi vstupom a výstupom sú skryté neuróny. Môžu byť aj vo viacerých vrstvách. A tým, že ich je viac ako vstupných neurónov, dokážu tieto vstupy rôzne pokombinovať a naučiť sa tak aj komplikované (nelineárne) vzťahy.

Kompletná neurónová sieť so vstupnou, výstupnu aj skrytou vrstvou (“synapsy” nie sú nakreslené všetky kvôli prehľadnosti)

Učenie umelých mozgov

Základ celého „učenia“ neurónových sietí tkvie v posielaní signálov tam a naspäť. Na začiatku uvidí náš „mozog“ vstup o jednom konkrétnom zamestnancovi. Tieto vstupné neuróny sú s tými skrytými spojené „synapsami“, čo sú v tomto umelom prípade len čísla, ktoré určujú silu spojení medzi danými neurónmi.

Samotné posielanie signálu je už len otázkou násobilky a aritmetiky. Vstupné neuróny pošlú svoj signál ďalej podľa toho, ako silné spojenie majú s neurónmi v skrytej vrstve (to je tá násobilka). A skryté neuróny svoj výsledný signál získajú sčítaním signálov zo všetkých vstupných neurónov (to je tá aritmetika).

Tieto skryté neuróny by však nemali len tak poslať toto číslo ďalej. Aj by príliš často niečo posielali, aj by sme sa obrali o možnosť naučiť sa komplexnejšie (nelineárne) vzťahy. Preto zvykneme dávať neurónom nejaké pravidlo, kedy sa môžu aktivovať, resp. ako zmeniť signál, ktorý dostali. Jedno z najjednoduchších a najčastejšie používaných pravidiel je toto: pošli svoj signál ďalej, ak je väčší ako nula, ináč nepošli nič.

Následne teda skryté neuróny spravia to isté, čo spravili tie vstupné. Pošlú podľa sily spojení svoje signály výstupu. Tie výstupné neuróny zase sčítajú to, čo im prišlo. A tento výsledný signál premenia na hodnotu medzi 0 a 1, ktorá udáva pravdepodobnosť toho, do akej kategórie rizika človek patrí.

Doteraz sme si ale nepovedali, ako sa sily tých spojení určili. Lebo to bude zrejme základom toho, aby táto sieť vedela presne predpovedať rizikovosť zamestnancov. Sú to práve sily týchto spojení (synáps), ktoré sa naša sieť musí naučiť. A učí sa to tak, že potom, čo jedného zamestnanca „spracuje“ a niekam ho zaškatuľkuje, pozrie sa, aké riziko naozaj mal a sily tých jednotlivých spojení upraví tak, aby tento konkrétny prípad určili nabudúce presnejšie. A keď tých príkladov uvidí dostatočne veľa, tak sily týchto spojení postupne začnú odrážať všeobecné vzorce správania v našej vzorke dát a sieť bude presnejšia a presnejšia.

Prečo sú mozgy niekedy lepšie ako stromy

V tomto spôsobe učenia spočíva aj jedna významná výhoda neurónových sietí oproti rozhodovacím stromom. Stromy sa totiž dajú trénovať len „v balíku“, zatiaľ čo neurónovú sieť môžete zlepšovať každým ďalším príkladom, ktorý uvidí.

To znamená, že ak si natrénujete neurónovú sieť na predpoveď rizikovosti odchodu zamestnanca a začnete ho používať vo firme, každý nový zamestnanec, ktorého sieť zhodnotí, môže byť následne použitý na jej spresnenie. Teda, ak sieť o nejakom novom zamestnancovi povie, že je vysoko rizikový, no on aj tak vydrží viac ako tri mesiace, táto jej predpoveď bola nepresná a môžeme na základe tejto chyby sieť neustále zlepšovať. Viete sa tak prispôsobovať zmenám v správaní mladšej generácie, v zmene používaných technológii vo firme, či akýmkoľvek iným nepresnostiam, ktoré ste pôvodne v modeli mohli mať.

Záver: machine learning v divočine

Tento článok neberte prosím ako učebnicu rozhodovacích stromov či neurónových sietí. Jeho cieľom nebolo vás naučiť presné detaily toho, ako takýto model naprogramovať. Chceli sme vám však ukázať nasledovné:

  1. Machine learning nie je až taká čierna mágia, ako sa môže na prvý pohľad zdať.
  2. Použitie komplexnejších modelov môže mať a aj má pre firmu reálny obchodný dopad.
  3. Bežne používané machine learning algoritmy naozaj nemajú za cieľ vytvorenie umelej inteligencie, ale len lepšie hľadanie komplikovaných vzorov a správania v dátach, kde ľudské oko nepostačuje.

Aj z týchto dôvodov sa momentálne machine learning používa naozaj všade. Siri či iné hlasové ovládania stavajú na neurónových sieťach. Google Photos organizuje vaše fotky „hlbokými“ neurónovými sieťami (deep learning) a vie v nich rozpoznať objekty, aj keď ste si tie fotky nijako neoznačili. Ak ste si všimli na vašom smartfóne, že vám klávesnica začala odporúčať slová a postupne sa učí aké slová používate — aj to je neurónová sieť. Automatické autá od Tesly a Google sú veľmi viditeľným a trochu desivým príkladom toho, kam až machine learning vie prísť bez toho, aby sme akokoľvek tvrdili, že ide o „vedomé“ stroje.

Odporúčané slová — technológia, ktorá sa učí podľa toho, ako píšete

Aj v oblasti ľudských zdrojov sa prediktívne algoritmy a machine learning začína používať stále častejšie. Veľké firmy ako Credit Suisse, AOL či Wal-Mart používajú algoritmy, ktoré rovnako ako naše „umelé“ dáta, predpovedajú riziko odchodu zamestnanca. Volometrix, nedávno kúpený Microsoftom, používa na modelovanie správania zamestnancov dáta z emailov či kalendárov. Mnoho firiem sa obracia na dáta v snahe znížiť striedanie zamestnancov či zvýšiť spokojnosť v práci (viď tento článok z Wall Street Journal). Nastáva čas zvážiť, či aj vaša firma nemôže z takéhoto prístupu profitovať.

Biznis zaujímajú výsledky. HR všetci ignorujú. Nastal čas zmeny. Staň sa jej súčasťou.

Komentár (6.1.2016)

Na článok reaguje Marek Rosa, CEO & CTO spoločnosti GoodAI vyvíjajúcej všeobecnú umelú inteligenciu:

Umelá inteligencia (AI) môže HR ovplyvniť dvoma smermi:
1. V hľadaní a hodnotení najvhodnejších kandidátov 
2. V príprave stratégii, ako ľudí v spoločnosti udržať spokojných a efektívnych
Skutočne vyspelá univerzálna umelá inteligencia (AGI) by však mala pristupovať k akémukoľvek problému kreatívne, zovšeobecňovať, hľadať súvislosti a vymýšľať nové riešenia. Teda podobne ako to robia ľudia.
Akonáhle však bude AGI schopná fungovať ako pokročilý HR konzultant, bude to znamenať, že dospela do fázy, kedy už ďalších kandidátov hľadať nepotrebuje. Proste ich sama nahradí vo všetkých odboroch, kde sa momentálne bez ľudí nezaobídeme — vo vede, technike, ekonomike či umení.
Ak dospejeme až do tejto fázy, môže sa bez problémov stať, že AGI sa stane HR manažérom “AGI zdrojov” — teda, že bude napríklad hľadať najvhodnejšieho AGI programátora. Umelá inteligencia bude jednoducho viesť, hľadať a pracovať s inými umelými inteligenciami. Úlohou človeka bude univerzálnu AGI motivovať a stanovovať jej ciele.
Ak AGI pochopí náš hodnotový systém, radikálne sa zmení trh práce, ako vlastne aj celý svet. Ľudia už nebudú musieť robiť všetky bežné, no ani kreatívne činnosti. Pomôže nám budovať svet, kde ľuďom nič nechýba, kde nemusia bojovať o prežitie, kde neexistujú choroby a raz možno ani smrť.

Ak nie je uvedené inak, ilustrácie sú vlastnou tvorbou autora.

Článok bol 6.1.2016 doplnený o komentár Mareka Rosu