"Skvelý dátový vedec dostane zaplatené ako generálny riaditeľ priemernej spoločnosti." Expert na strojové učenie Yandex.Taxi na to, ako dáta predpovedajú budúcnosť a formujú svet
Od chvíle, keď na FIVT odštartoval nezvyčajný predmet – inovatívny workshop, uplynul takmer rok. Jeho podstatou je vytváranie IT startupov študentskými tímami pod vedením skúsených mentorov. Dopadlo to dobre: niekto vďaka kurzu strávil časť leta v Cream Valley, niekto získal grant vo výške 800 000 rubľov na vývoj projektu a ABBYY je pripravená projekt od niekoho kompletne odkúpiť. A to nie sú všetky výsledky workshopu!
Začiatkom roka 2011 sa študenti tretieho ročníka FIVT zišli v aule a povedali im: v priebehu budúceho roka si budete musieť vytvoriť svoj vlastný startup. Študenti túto myšlienku neprijali nejednoznačne: vôbec nebolo jasné, ako to urobiť, a zodpovednosť bola nezvyčajná - napokon bolo potrebné vytvoriť technologický podnik, a nie len ďalší vzdelávací projekt. Tu je to, čo si o tom myslí víťaz študentskej olympiády MIPT vo fyzike, študent katedry Yandeska, Viktor Kantor:
Keď som si pri prijatí vybral FIVT, dúfal som, že budeme mať niečo podobné. Takže som rád, že moje nádeje neboli márne. Počas roka bolo cítiť, že kurz sa stále formuje, veľa je v ňom nového, mnohé problémy boli kontroverzné nielen pre študentov, ale aj pre organizátorov, ale vo všeobecnosti si myslím, že trendy sú pozitívne. Tento kurz sa mi páčil.
Na uľahčenie práce študentov boli pozvaní rôzni kurátori, aby ponúkli svoje nápady na budovanie inovatívnych podnikov. Boli medzi nimi úplne iní ľudia: od vysokoškolákov a postgraduálnych študentov MIPT po inovačného poradcu Ernst&Young Jurija Pavloviča Ammosova (bol vedúcim celého kurzu) a Michaila Batina, ktorý sa zaoberá problematikou regeneratívnej medicíny a predlžovania života. Výsledkom bolo, že študenti fyziky a techniky si vybrali nápady, ktoré ich najviac zaujali, do tímov sa pripojili kurátori a začala sa náročná, ale vzrušujúca práca.
Za takmer rok, ktorý odvtedy prešiel, chalani čelili mnohým problémom, z ktorých niektoré sa podarilo vyriešiť. Teraz môžeme zhodnotiť ich výsledky – napriek ťažkostiam si chalani poradili. Študentom MIPT (okrem filozofickej fakulty sa do procesu zapojili aj študenti z filologickej fakulty a iných fakúlt) sa podarilo pripraviť niekoľko celkom zaujímavých a životaschopných projektov:
Askeroid (predtým Ask Droid) – vyhľadávanie smartfónov ( Anastasia Uryasheva)
Android aplikácia, ktorá umožňuje pohodlné vyhľadávanie vo veľkom množstve vyhľadávačov. Niektorí odborníci prejavili záujem o vývoj a výsledkom bolo, že Anastasia strávila celé uplynulé leto v jednom z najznámejších inkubátorov v Silicon Valley – Plug&Play. naučiť sa základy podnikania v oblasti technológií a rozprávať sa s medzinárodnými odborníkmi na podnikanie.
1minute.ru – jedna minúta k dobru (Lev Grunin)
Tento projekt dáva každému príležitosť vykonávať charitatívnu prácu jednoducho, rýchlo a úplne zadarmo. Model je jednoduchý: inzerenti ponúkajú na stránke určitý súbor aktivít, používatelia sa na nich dobrovoľne zúčastňujú a všetky peniaze z reklamy sa prevedú na charitatívnu nadáciu. Za týždeň od spustenia projekt zhromaždil viac ako 6 500 používateľov a nezastaví sa tam. Vďaka Levovi a jeho tímu tak 600 detí z detských domovov dostane na Nový rok vzácne darčeky od Santa Clausa. Strávili ste už minútu dobrým skutkom?!
Embedded Desktop - počítač vo vašom telefóne (Alexey Vukolov)
Aplikácia, ktorá umožňuje spojiť možnosti počítača a mobilitu telefónu v jednom balení - mimoriadne užitočný produkt pre zaneprázdnených ľudí, ktorí často cestujú na služobné cesty. Stačí si ho nainštalovať do smartfónu a používateľ si svoj počítač „zaobstará“ v každom hoteli, kancelárii a vlastne všade, kde nájde monitor (vhodný je aj televízor), klávesnicu a myš. Projekt získal grant na rozvoj myšlienky a bol prezentovaný na výstave Technovation Cup a za získané peniaze už tím aktívne nakupuje vybavenie. Americký výrobca procesorov MIPS sa o vývoj mimoriadne zaujíma.
Smart Tagger – sémantické vyhľadávanie v dokumentoch (Victor Kantor)
Čo by ste mali robiť, ak si spomeniete, že niekde vo vašej schránke bol veľmi dôležitý list, ktorý hovoril o najnovšej epizóde Teórie veľkého tresku, no nepamätáte si žiadne kľúčové slová z textu? Yandex a vyhľadávanie Google sú bezmocné. Na záchranu príde vývoj Smart Tagger - „inteligentný“ program, ktorý využíva sémantické vyhľadávanie, vám poskytne všetky texty, ktorých význam je prepojený s populárnym televíznym seriálom. Projekt získal grant na súťaži U.M.N.I.K. spolu 400 000 rubľov!
MathOcr – rozpoznávanie vzorcov (Viktor Prun)
ABBYY navrhla zaujímavú úlohu na implementáciu – vytvoriť program, ktorý by rozpoznal matematické vzorce akejkoľvek zložitosti. Študenti FIVT po spolupráci so zainteresovanými študentmi úlohu splnili - modul skutočne rozpoznáva vzorce naskenované z učebníc matematiky alebo fyziky. Výsledok: ABBYY je pripravená kúpiť tento produkt za veľa peňazí.
V rámci spoločného projektu “ABC of AI” s MIPT sme už písali o takzvaných, ktoré umožňujú “pestovať” programy podľa princípov a zákonov darwinovskej evolúcie. Zatiaľ je však tento prístup k umelej inteligencii určite „hosťom z budúcnosti“. Ako však dnes vznikajú systémy umelej inteligencie? Ako sú vyškolení? Victor Kantor, docent na Katedre algoritmov a programovacích technológií na MIPT a vedúci skupiny analýzy správania používateľov v Yandex Data Factory, nám pomohol zistiť to.
Podľa nedávnej správy výskumnej spoločnosti Gartner, ktorá pravidelne aktualizuje svoj „cyklus zrelosti technológií“, je strojové učenie v súčasnosti na vrchole očakávaní vo všetkých IT. To nie je prekvapujúce: strojové učenie sa za posledných niekoľko rokov vymanilo zo sféry záujmov úzkeho okruhu matematikov a špecialistov na teóriu algoritmov a preniklo najskôr do slovníka IT obchodníkov a potom do sveta. obyčajných ľudí. Teraz každý, kto použil aplikáciu Prisma, hľadal skladby pomocou Shazamu alebo videl obrázky prechádzajúce cez DeepDream, vie, že existuje niečo ako neurónové siete s ich špeciálnym „kúzlom“.
Jedna vec je však používať technológiu a druhá pochopiť, ako funguje. Všeobecné slová ako „počítač sa dokáže naučiť, ak mu dáte tip“ alebo „neurónová sieť pozostáva z digitálnych neurónov a je štruktúrovaná ako ľudský mozog“, môžu niekomu pomôcť, ale častejšie iba zamotajú situáciu. Tí, ktorí sa chystajú vážne študovať matematiku, nepotrebujú populárne texty: existujú pre nich učebnice a vynikajúce online kurzy. Pokúsime sa ísť strednou cestou: vysvetlíme, ako sa učenie skutočne deje na veľmi jednoduchej úlohe, a potom ukážeme, ako možno rovnaký prístup použiť pri riešení skutočných zaujímavých problémov.
Ako sa stroje učia
Na začiatok, aby sme presne pochopili, ako strojové učenie prebieha, definujme pojmy. Ako definoval jeden z priekopníkov tejto oblasti, Arthur Samuel, strojové učenie sa týka metód, ktoré „umožňujú počítačom učiť sa bez ich priameho programovania“. Existujú dve široké triedy metód strojového učenia: učenie pod dohľadom a učenie bez dozoru. Prvý sa používa, keď napríklad potrebujeme naučiť počítač vyhľadávať fotografie s obrázkami mačiek, druhý, keď potrebujeme, aby stroj napríklad vedel samostatne zoskupovať správy do príbehov, ako sa to stáva v službách ako Yandex.News alebo Google News. To znamená, že v prvom prípade máme čo do činenia s úlohou, ktorá predpokladá existenciu správnej odpovede (mačka na fotke tam buď je alebo nie je), v druhom prípade neexistuje jediná správna odpoveď, ale existujú rôzne spôsoby na vyriešenie problému. Zameriame sa konkrétne na prvú triedu problémov ako na najzaujímavejšie.
Takže musíme naučiť počítač robiť nejaké predpovede. Okrem toho je žiaduce, aby boli čo najpresnejšie. Predpovede môžu byť dvojakého typu: buď si musíte vybrať medzi niekoľkými možnosťami odpovede (či je na obrázku mačka alebo nie je na výber jedna z dvoch možností, schopnosť rozpoznávať písmená na obrázkoch je na výber z jednej možnosti z niekoľkých desiatok atď.), alebo urobte číselnú predpoveď . Predpovedajte napríklad hmotnosť človeka na základe jeho výšky, veku, veľkosti topánok atď. Tieto dva typy problémov len vyzerajú odlišne, no v skutočnosti sa riešia takmer identicky. Pokúsme sa presne pochopiť, ako.
Prvá vec, ktorú potrebujeme na vytvorenie predikčného systému, je zozbierať takzvanú tréningovú vzorku, teda údaje o hmotnosti ľudí v populácii. Druhým je rozhodnúť sa pre súbor znakov, na základe ktorých môžeme vyvodiť závery o hmotnosti. Je jasné, že jedným z „najsilnejších“ takýchto znakov bude výška osoby, takže ako prvé priblíženie stačí vziať len toto. Ak hmotnosť závisí lineárne od výšky, potom bude naša predpoveď veľmi jednoduchá: hmotnosť človeka sa bude rovnať jeho výške vynásobenej nejakým koeficientom plus nejaká konštantná hodnota, ktorá je napísaná najjednoduchším vzorcom y=kx+b. Všetko, čo musíme urobiť, aby sme trénovali stroj na predpovedanie hmotnosti človeka, je nejakým spôsobom nájsť správne hodnoty pre k a b.
Krása strojového učenia je v tom, že aj keď je vzťah, ktorý študujeme, veľmi zložitý, na našom prístupe sa v podstate nič nezmení. Stále sa budeme zaoberať rovnakou regresiou.
Povedzme, že hmotnosť človeka je ovplyvnená jeho výškou nie lineárne, ale až do tretieho stupňa (čo sa všeobecne očakáva, pretože hmotnosť závisí od objemu tela). Aby sme vzali do úvahy túto závislosť, jednoducho zavedieme do našej rovnice ďalší člen, a to tretiu mocninu rastu s vlastným koeficientom, čím dostaneme y=k 1 x+k 2 x 3 +b. Teraz, aby sme trénovali stroj, budeme musieť nájsť nie dve, ale tri množstvá (k 1, k 2 a b). Povedzme, že v našej predpovedi chceme brať do úvahy aj veľkosť topánok človeka, jeho vek, čas strávený pozeraním televízie a vzdialenosť od jeho bytu k najbližšiemu fastfoodu. Žiaden problém: tieto vlastnosti jednoducho pridáme ako samostatné pojmy do tej istej rovnice.
Najdôležitejšie je vytvoriť univerzálny spôsob hľadania požadovaných koeficientov (k 1, k 2, ... k n). Ak existuje, bude nám takmer ľahostajné, ktoré vlastnosti použiť na predikciu, pretože samotný stroj sa naučí prikladať veľkú váhu dôležitým a malú váhu nedôležitým vlastnostiam. Našťastie, takáto metóda už bola vynájdená a úspešne na nej funguje takmer všetko strojové učenie: od najjednoduchších lineárnych modelov až po systémy rozpoznávania tvárí a analyzátory reči. Táto metóda sa nazýva gradientný zostup. Ale predtým, ako vysvetlíme, ako to funguje, musíme urobiť malú odbočku a porozprávať sa o neurónových sieťach.
Neurónové siete
V roku 2016 vstúpili neurónové siete do informačnej agendy tak tesne, že sa takmer stotožnili s akýmkoľvek strojovým učením a pokročilým IT vo všeobecnosti. Formálne povedané, toto nie je pravda: neurónové siete sa nie vždy používajú v matematickom učení, existujú aj iné technológie. Vo všeobecnosti je však takáto asociácia pochopiteľná, pretože práve systémy založené na neurónových sieťach v súčasnosti poskytujú „najmagickejšie“ výsledky, ako napríklad schopnosť vyhľadať osobu podľa fotografie, vznik aplikácií, ktoré prenášajú štýl jedného obrazu k druhému, alebo systémy na generovanie textov na spôsob reči určitej osoby.
Spôsob, akým sú štruktúrované neurónové siete, sme už... Tu chcem len zdôrazniť, že sila neurónových sietí v porovnaní s inými systémami strojového učenia spočíva v ich viacvrstvovej povahe, ale to z nich nerobí niečo zásadne odlišné v spôsobe ich fungovania. Viacvrstvové vytváranie skutočne umožňuje nájsť veľmi abstraktné všeobecné funkcie a závislosti v zložitých súboroch funkcií, ako sú pixely na obrázku. Je však dôležité pochopiť, že z hľadiska princípov učenia sa neurónová sieť radikálne nelíši od súboru konvenčných vzorcov lineárnej regresie, takže rovnaká metóda zostupu gradientu funguje skvele aj tu.
„Sila“ neurónovej siete spočíva v prítomnosti medzivrstvy neurónov, ktoré v súhrne kombinujú hodnoty vstupnej vrstvy. Z tohto dôvodu môžu neurónové siete nájsť v údajoch veľmi abstraktné prvky, ktoré je ťažké zredukovať na jednoduché vzorce, ako je lineárny alebo kvadratický vzťah.
Vysvetlíme si to na príklade. Vychádzali sme z predpovede, v ktorej hmotnosť človeka závisí od jeho výšky a kubickej výšky, ktorá je vyjadrená vzorcom y=k 1 x+k 2 x 3 +b. S určitým úsekom, ale v skutočnosti aj takýto vzorec možno nazvať neurónovou sieťou. V ňom, ako v bežnej neurónovej sieti, existuje prvá vrstva „neurónov“, ktorá je tiež vrstvou funkcií: sú to x a x 3 (dobre, „jednotkový neurón“, ktorý máme na pamäti a pre ktorý je zodpovedný koeficient b). Horná alebo výsledná vrstva je reprezentovaná jedným „neurónom“ y, teda predpokladanou hmotnosťou osoby. A medzi prvou a poslednou vrstvou „neurónov“ sú spojenia, ktorých pevnosť alebo hmotnosť je určená koeficientmi k 1, k 2 a b. Trénovať túto „neurónovú sieť“ jednoducho znamená nájsť tie isté koeficienty.
Jediný rozdiel od „skutočných“ neurónových sietí je v tom, že nemáme jedinú medzivrstvu (alebo skrytú) neurónov, ktorej úlohou je kombinovať vstupné vlastnosti. Zavedenie takýchto vrstiev vám umožňuje nevymýšľať možné závislosti medzi existujúcimi funkciami „z hlavy“, ale spoliehať sa na ich už existujúce kombinácie v neurónovej sieti. Napríklad vek a priemerný čas pred televízorom môžu mať synergický vplyv na hmotnosť človeka, ale keďže máme neurónovú sieť, nemusíme to vedieť vopred a zadávať ich produkt do vzorca. V neurónovej sieti bude určite neurón, ktorý kombinuje vplyv akýchkoľvek dvoch vlastností, a ak je tento vplyv na vzorke skutočne viditeľný, potom po tréningu tento neurón automaticky dostane veľkú váhu.
Gradientný zostup
Máme teda trénovaciu sadu príkladov so známymi údajmi, teda tabuľku s presne nameranou hmotnosťou človeka a nejakú hypotézu vzťahu, v tomto prípade lineárnu regresiu y=kx+b. Našou úlohou je nájsť správne hodnoty k a b nie ručne, ale automaticky. A pokiaľ možno, univerzálna metóda, ktorá nezávisí od počtu parametrov zahrnutých vo vzorci.
Vo všeobecnosti to nie je ťažké. Hlavnou myšlienkou je vytvoriť funkciu, ktorá bude merať aktuálnu celkovú chybovosť a „vyladiť“ koeficienty tak, aby celková chybovosť postupne klesala. Ako môžem znížiť úroveň chýb? Musíme vyladiť naše parametre správnym smerom.
Predstavte si naše dva parametre, ktoré hľadáme, rovnaké k a b, ako dva smery v rovine, ako sú os sever-juh a západ-východ. Každý bod na takejto rovine bude zodpovedať určitej hodnote koeficientov, určitému špecifickému vzťahu medzi výškou a hmotnosťou. A pre každý takýto bod v rovine môžeme vypočítať celkovú chybovosť, ktorú táto predpoveď dáva pre každý z príkladov v našej vzorke.
Na rovine sa ukáže niečo ako konkrétna výška a celý okolitý priestor začína pripomínať horskú krajinu. Hory sú miesta, kde je chybovosť veľmi vysoká, údolia sú miesta, kde je chýb menej. Je jasné, že trénovať náš systém znamená nájsť najnižší bod na zemi, bod, kde je chybovosť minimálna.
Ako môžete nájsť tento bod? Najsprávnejší spôsob je neustále sa pohybovať nadol z bodu, kde sme sa pôvodne ocitli. Takže skôr či neskôr prídeme na miestne minimum – bod, pod ktorým v bezprostrednej blízkosti nič nie je. Okrem toho je vhodné robiť kroky rôznych veľkostí: keď je svah strmý, môžete ísť do širších krokov, keď je svah malý, je lepšie sa plížiť po miestne minimum „po špičkách“, inak môžete prestreliť.
Presne takto funguje metóda gradientového zostupu: meníme váhy znakov v smere najväčšieho poklesu chybovej funkcie. Meníme ich iteratívne, teda s určitým krokom, ktorého hodnota je úmerná strmosti svahu. Zaujímavé je, že keď sa počet prvkov zvýši (pripočítaním kocky výšky človeka, jeho veku, veľkosti topánok atď.), v podstate sa nič nezmení, len sa naša krajina nestane dvojrozmernou, ale viacrozmernou.
Chybovú funkciu možno definovať ako súčet druhých mocnín všetkých odchýlok, ktoré súčasný vzorec umožňuje ľuďom, ktorých hmotnosť už presne poznáme. Zoberme si nejaké náhodné veličiny k a b, napríklad 0 a 50. Potom nám systém predpovedá, že hmotnosť každej osoby vo vzorke sa vždy rovná 50 kilogramom y=0×x+50 Na grafe je napr. závislosť bude vyzerať ako priamka rovnobežná s horizontálou. Je jasné, že to nie je veľmi dobrá predpoveď. Teraz zoberme odchýlku hmotnosti od tejto predpovedanej hodnoty, umocnime ju (takže sa zohľadnia aj záporné hodnoty) a zhrnieme ju - v tomto bode bude chyba. Ak poznáte začiatky analýzy, môžete dokonca objasniť, že smer najväčšieho poklesu je daný parciálnou deriváciou chybovej funkcie vzhľadom na k a b a krok je hodnota, ktorá je zvolená pre praktické dôvody: malé kroky si vyžadujú veľa času na výpočet a veľké môžu viesť k tomu, že prekĺzneme za minimum.
Dobre, čo ak nemáme len komplexnú regresiu s mnohými funkciami, ale skutočnú neurónovú sieť? Ako v tomto prípade použijeme zostup gradientu? Ukazuje sa, že gradientný zostup funguje úplne rovnako s neurónovou sieťou, len trénovanie prebieha 1) krok za krokom, z vrstvy na vrstvu a 2) postupne, od jedného príkladu vo vzorke k druhému. Metóda, ktorá sa tu používa, sa nazýva backpropagation a bola nezávisle popísaná v roku 1974 sovietskym matematikom Alexandrom Galuškinom a matematikom z Harvardskej univerzity Paulom Johnom Webrosom.
Aj keď pre striktnú prezentáciu algoritmu bude potrebné zapísať parciálne derivácie (ako napr.), na intuitívnej úrovni sa všetko deje celkom jednoducho: pre každý z príkladov vo vzorke máme na výstupe určitú predpoveď. neurónovej siete. Po správnej odpovedi môžeme správnu odpoveď od predpovede odčítať a získať tak chybu (presnejšie množinu chýb pre každý neurón výstupnej vrstvy). Teraz musíme túto chybu preniesť na predchádzajúcu vrstvu neurónov a čím väčší je príspevok tohto konkrétneho neurónu tejto vrstvy k chybe, tým viac musíme znížiť jeho váhu (v skutočnosti opäť hovoríme o prevzatí čiastočného derivát, o pohybe po maximálnej strmosti našej imaginárnej krajiny) . Keď to urobíme, rovnaký postup sa musí zopakovať pre ďalšiu vrstvu, ktorá sa pohybuje v opačnom smere, teda od výstupu neurónovej siete k vstupu.
Prechádzaním neurónovou sieťou týmto spôsobom pri každom príklade trénovacej vzorky a „stáčaním“ váh neurónov do požadovaného smeru by sme nakoniec mali dostať trénovanú neurónovú sieť. Metóda spätného šírenia je jednoduchou modifikáciou metódy gradientového zostupu pre viacvrstvové neurónové siete, a preto by mala fungovať pre neurónové siete akejkoľvek zložitosti. Hovoríme tu „mali by ste“, pretože v skutočnosti existujú prípady, keď zostup gradientu zlyhá a neumožní vám urobiť dobrú regresiu alebo trénovať neurónovú sieť. Môže byť užitočné vedieť, prečo takéto ťažkosti vznikajú.
Ťažkosti gradientového zostupu
Nesprávny výber absolútneho minima. Metóda gradientového zostupu pomáha hľadať lokálny extrém. Nemôžeme ho však vždy použiť na dosiahnutie absolútneho globálneho minima alebo maxima funkcie. Stáva sa to preto, že pri pohybe po antigradiente sa zastavíme v momente, keď dosiahneme prvé lokálne minimum, na ktoré narazíme, a algoritmus prestane fungovať.
Predstavte si, že stojíte na vrchole hory. Ak chcete zostúpiť na najnižší povrch v oblasti, metóda gradientového zostupu vám nie vždy pomôže, pretože prvý nízky bod na vašej ceste nemusí byť nevyhnutne najnižším bodom. A ak v živote dokážete vidieť, že ak pôjdete trochu hore a potom môžete ísť ešte nižšie, tak sa algoritmus v takejto situácii jednoducho zastaví. Často sa tejto situácii dá vyhnúť, ak zvolíte správny krok.
Nesprávny výber kroku. Metóda gradientového zostupu je iteratívna metóda. To znamená, že my sami si musíme zvoliť veľkosť kroku - rýchlosť, ktorou klesáme. Výberom príliš veľkého kroku môžeme preletieť za extrém, ktorý potrebujeme, a nenájdeme minimum. To sa môže stať, ak sa ocitnete pred veľmi ostrým zostupom. A výber príliš malého kroku riskuje, že algoritmus bude extrémne pomalý, ak sa ocitneme na relatívne rovnom povrchu. Ak si opäť predstavíme, že sme na vrchole strmej hory, tak môže nastať situácia, že ju kvôli veľmi strmému klesaniu blízko minima jednoducho preletíme.
Sieťová paralýza. Niekedy sa stáva, že gradientová metóda zostupu nedokáže nájsť minimum vôbec. To sa môže stať, ak sú na oboch stranách minima ploché oblasti - algoritmus, keď zasiahne rovnú oblasť, zníži krok a nakoniec sa zastaví. Ak stojíte na vrchole hory a rozhodnete sa presťahovať k svojmu domovu v nížinách, cesta môže byť príliš dlhá, ak sa náhodou zatúlate na veľmi rovnú oblasť. Alebo, ak sú pozdĺž okrajov plochých plôch takmer zvislé „svahy“, algoritmus, ktorý si zvolil veľmi veľký krok, preskočí z jedného svahu na druhý, prakticky sa nepohne smerom k minimu.
Všetky tieto zložité problémy treba brať do úvahy pri navrhovaní systému strojového učenia. Napríklad je vždy užitočné presne sledovať, ako sa chybová funkcia mení v priebehu času – či klesá s každým novým cyklom alebo časom značky, ako sa mení charakter tohto pádu v závislosti od zmeny veľkosti kroku. Aby ste sa nedostali do zlého lokálneho minima, môže byť užitočné začať z rôznych náhodne vybraných bodov krajiny – potom je pravdepodobnosť uviaznutia oveľa nižšia. Existuje mnoho ďalších veľkých a malých tajomstiev používania gradientového zostupu a existujú aj exotickejšie spôsoby učenia, ktoré sú slabo podobné gradientovému zostupu. To je však téma na ďalší rozhovor a samostatný článok v rámci projektu ABC of AI.
Pripravil Alexander Ershov
- Môžete použiť úplne primitívny príklad, aby ste nám povedali, ako funguje strojové učenie?
Can. Existuje príklad techniky strojového učenia s názvom strom rozhodovania, ktorý je jednou z najstarších vecí. Poďme na to teraz. Povedzme, že abstraktná osoba vás pozve na rande. čo je pre teba dôležité?
- V prvom rade, či ho poznám alebo nie...
(Victor to napíše na tabuľu.)
...Ak neviem, musím odpovedať na otázku, či je atraktívny alebo nie.
A ak vieš, tak to nevadí? Myslím, že to chápem, toto je vlákno priateľskej zóny! Vo všeobecnosti píšem, že ak to neviete a je to neatraktívne, odpoveď je „nie, pravdepodobne“. Ak viete, odpoveď je „áno“.
- Ak viem, je to tiež dôležité!
Nie, toto bude pobočka priateľskej zóny.
Dobre, potom tu uvedieme, či je to zaujímavé alebo nie. Napriek tomu, keď človeka nepoznáte, prvou reakciou je vzhľad so známym, už sa pozeráme na to, čo si myslí a ako.
Urobme to inak. Či je ambiciózny alebo nie. Ak je ambiciózny, bude ťažké ho friendzone, pretože bude chcieť viac. Neambiciózny však vydržia.
(Victor dokončí kreslenie rozhodujúceho stromu.)
Pripravený. Teraz môžete predpovedať, s ktorým chlapom pôjdete s najväčšou pravdepodobnosťou na rande. Mimochodom, niektoré zoznamovacie služby takéto veci predpovedajú. Analogicky môžete predpovedať, koľko tovaru si zákazníci kúpia a kde budú ľudia v tom čase.
Odpovede môžu byť nielen „áno“ a „nie“, ale aj vo forme čísel. Ak chcete presnejšiu predpoveď, môžete urobiť niekoľko takýchto stromov a spriemerovať ich. A pomocou takejto jednoduchej veci môžete skutočne predpovedať budúcnosť.
Teraz si predstavte, bolo pre ľudí ťažké vymyslieť takúto schému pred dvesto rokmi? Vôbec nie! Táto schéma nenesie žiadnu raketovú vedu. Strojové učenie ako fenomén existuje už asi pol storočia. Ronald Fisher začal robiť predpovede založené na údajoch na začiatku 20. storočia. Zobral kosatce a rozdelil ich podľa dĺžky a šírky sepalov a okvetných lístkov, pomocou týchto parametrov určil druh rastliny.
V priemysle sa v posledných desaťročiach aktívne využíva strojové učenie: nie tak dávno sa objavili výkonné a relatívne lacné stroje, ktoré sú potrebné na spracovanie veľkého množstva údajov, napríklad pre takéto rozhodovacie stromy. Ale stále je to vzrušujúce: tieto veci kreslíme pre každú úlohu a používame ich na predpovedanie budúcnosti.
- No, rozhodne nie lepšie ako ktorýkoľvek chobotnicový prediktor futbalových zápasov...
Nie, čo nás zaujímajú chobotnice? Aj keď máme väčšiu variabilitu. Teraz môžete pomocou strojového učenia ušetriť čas, peniaze a zlepšiť pohodlie života. Strojové učenie porazilo ľudí pred niekoľkými rokmi, pokiaľ ide o klasifikáciu obrázkov. Napríklad počítač dokáže rozpoznať 20 plemien teriérov, ale bežný človek nie.
- A keď analyzujete používateľov, je pre vás každá osoba súborom čísel?
Zhruba povedané, áno. Keď pracujeme s údajmi, všetky objekty vrátane správania používateľov sú opísané určitým súborom čísel. A tieto čísla odrážajú charakteristiky správania ľudí: ako často berú taxík, akú triedu taxíkov používajú, na aké miesta zvyčajne chodia.
Teraz aktívne vytvárame podobné modely, aby sme ich mohli použiť na identifikáciu skupín ľudí s podobným správaním. Keď uvádzame novú službu alebo chceme spropagovať starú službu, ponúkame ju tým, ktorí by mali záujem.
Napríklad teraz máme službu – dve detské sedačky v taxíku. Touto novinkou môžeme spamovať každého, alebo o nej cielene informovať len určitý okruh ľudí. V priebehu roka sa nám nazbieralo množstvo užívateľov, ktorí do komentárov napísali, že potrebujú dve detské sedačky. Našli sme ich a im podobných ľudí. Zvyčajne sú to ľudia starší ako 30 rokov, ktorí pravidelne cestujú a milujú stredomorskú kuchyňu. Aj keď tých znakov je samozrejme oveľa viac, toto je len príklad.
- Aj také jemnosti?
Toto je jednoduchá záležitosť. Všetko sa vypočítava pomocou vyhľadávacích dopytov.
Mohlo by to nejako fungovať v aplikácii? Napríklad, viete, že som žobrák a odoberám skupiny ako „Ako prežiť za 500 rubľov mesačne“ – ponúkajú mi iba ošľahané lacné autá, odoberám novinky SpaceX – a z času na čas predávajú ja som Tesla?
Môže to takto fungovať, ale v Yandexe takéto veci nie sú schválené, pretože ide o diskrimináciu. Keď personalizujete službu, je lepšie ponúknuť nie tú najprijateľnejšiu, ale najlepšiu dostupnú a to, čo sa danej osobe páči. A distribúcia podľa logiky „toto potrebuje lepšie auto a toto menej dobré“ je zlo.
![](https://i0.wp.com/knife.media/wp-content/uploads/2018/04/YAndeks-taksi-3-1024x683.jpg)
Každý má zvrátené túžby a niekedy potrebujete nájsť nie recept na stredomorské jedlo, ale napríklad obrázky o koprofílii. Bude personalizácia fungovať aj v tomto prípade?
Vždy existuje súkromný režim.
Ak nechcem, aby niekto vedel o mojich záujmoch alebo, povedzme, priatelia za mnou prišli a chceli si pozrieť nejaký odpad, potom je lepšie použiť režim inkognito.
Môžete sa tiež rozhodnúť, ktorú službu spoločnosti použijete, napríklad Yandex alebo Google.
- Je v tom rozdiel?
Je to ťažká otázka. Neviem ako ostatní, ale Yandex je prísny pri ochrane osobných údajov. Monitorovaní sú najmä zamestnanci.
- To znamená, že ak sa rozídem s chlapom, nebudem môcť zistiť, či šiel do tejto dachy alebo nie?
Aj keď pracujete v Yandex. To je, samozrejme, smutné, ale áno, neexistuje spôsob, ako to zistiť. Väčšina zamestnancov k týmto údajom ani nemá prístup. Všetko je zašifrované. Je to jednoduché: nemôžete špehovať ľudí, ide o osobné informácie.
Mimochodom, mali sme zaujímavý prípad na tému rozchod s chlapmi. Keď sme urobili predpoveď pre bod „B“ - cieľový bod v taxíku, zaviedli sme rady. Tu, pozri.
(Victor sa prihlási do aplikácie Yandex.Taxi.)
Napríklad taxík si myslí, že som doma. Navrhuje, aby som šiel buď do práce, alebo na univerzitu RUDN (prednášam tam v rámci kurzu strojového učenia Data Mining in Action). A v určitom momente pri vývoji týchto tipov sme si uvedomili, že sa musíme vyhnúť ohrozeniu používateľa. Bod B môže vidieť každý. Z týchto dôvodov sme odmietli navrhovať miesta na základe podobnosti. Inak si sadnete na slušné miesto so slušnými ľuďmi, objednáte si taxík a oni vám napíšu: "Pozri, v tomto bare si ešte nebol!"
- Čo sú tie modré bodky, ktoré blikajú na tvojej mape?
Toto sú odberné miesta. Tieto body ukazujú, kde je najvýhodnejšie zavolať si taxík. Koniec koncov, môžete zavolať na miesto, kde by bolo úplne nepohodlné ísť. Vo všeobecnosti však môžete volať kdekoľvek.
- Áno, kedykoľvek. Nejako som s tým preletel dva bloky.
V poslednej dobe sa vyskytli rôzne problémy s GPS, čo viedlo k rôznym vtipným situáciám. Ľudia napríklad na Tverskej boli prepravení navigáciou cez Tichý oceán. Ako vidíte, niekedy sa vyskytnú miss a viac ako dva bloky.
- A ak reštartujete aplikáciu a znova kliknete, cena sa zmení o niekoľko rubľov. prečo?
Ak dopyt prevyšuje ponuku, algoritmus automaticky generuje zvyšujúci sa koeficient – to pomáha tým, ktorí potrebujú čo najrýchlejšie odísť, využiť taxík, a to aj v obdobiach vysokého dopytu. Mimochodom, pomocou strojového učenia viete predpovedať, kde bude väčší dopyt napríklad za hodinu. To nám pomáha povedať vodičom, kde bude viac objednávok, aby ponuka zodpovedala dopytu.
- Nemyslíte si, že Yandex.Taxi čoskoro zabije celý trh s taxíkmi?
Myslím, že nie. Sme za zdravú súťaž a nebojíme sa jej.
Ja sám napríklad využívam rôzne taxislužby. Čas čakania je pre mňa dôležitý, a tak si pozerám niekoľko aplikácií, aby som zistil, ktorý taxík príde rýchlejšie.
![](https://i2.wp.com/knife.media/wp-content/uploads/2018/04/YAndeks-taksi-6-1024x683.jpg)
- Spojili ste sa s Uberom. za čo?
Neprináleží mi to komentovať. Myslím si, že zjednotenie je veľmi rozumné rozhodnutie.
V Nemecku jeden chlap nainštaloval vaňu na drony a odletel na hamburger. Mysleli ste si, že nastal čas ovládnuť vzdušný priestor?
Neviem o vzdušnom priestore. Sledujeme správy ako „Uber spustil taxíky na lodiach“, ale nemôžem povedať nič o vzduchu.
- A čo samojazdiace taxíky?
Je tu zaujímavý bod. Vyvíjame ich, no treba si premyslieť, ako presne by sa mali používať. Je priskoro predpovedať, v akej podobe a kedy sa objavia v uliciach, no robíme všetko pre to, aby sme vyvinuli technológiu pre plne autonómne auto, kde ľudský vodič nebude vôbec potrebný.
- Existujú obavy, že softvér dronu bude napadnutý, aby bolo možné ovládať auto na diaľku?
Riziká sú vždy a všade tam, kde sú technológie a vychytávky. No spolu s vývojom techniky sa rozvíja aj ďalší smer – ich ochrana a bezpečnosť. Každý, kto sa nejakým spôsobom podieľa na vývoji technológií, pracuje na bezpečnostných systémoch.
- Aké používateľské údaje zhromažďujete a ako ich chránite?
Zhromažďujeme anonymizované údaje o používaní, napríklad kde, kedy a kde sa výlet uskutočnil. Všetko dôležité je hashované.
- Myslíte si, že sa počet pracovných miest zníži kvôli dronom?
Myslím, že sa bude len zväčšovať. Aj tieto drony však treba nejako udržiavať. Toto je, samozrejme, trochu stresujúca situácia, zmena vašej špecializácie, ale čo môžete robiť?
- Gref na každej svojej prednáške hovorí, že človek minimálne trikrát radikálne zmení povolanie.
Neviem pomenovať žiadnu špecialitu, ktorá bude trvať večne. Vývojár nepracuje celý život v rovnakom jazyku a s rovnakými technológiami. Všade, kde potrebujete prestavať. Vďaka strojovému učeniu jasne cítim, ako môžu chlapci, ktorí sú o šesť rokov mladší ako ja, myslieť oveľa rýchlejšie ako ja. Ľudia vo veku 40 alebo 45 rokov to zároveň pociťujú ešte výraznejšie.
- Skúsenosti už nehrajú rolu?
Prehrávanie. Ale metódy sa menia, môžete prísť do oblasti, kde sa napríklad hlboké učenie nepoužíva, nejaký čas tam pracujete, potom sa všade zavádzajú metódy hlbokého učenia a ničomu z toho nerozumiete. To je všetko. Vaše skúsenosti môžu byť užitočné len pri plánovaní práce tímu a aj to nie vždy.
- A vaša profesia je dátový vedec, je to žiadané?
Dopyt po špecialistoch na vedu údajov je jednoducho mimo tabuľky. Je zrejmé, že toto je obdobie šialeného humbuku. Vďaka Bohu, blockchain pomohol tomuto humbuku trochu ustúpiť. Špecialisti na blockchain sa dostanú ešte rýchlejšie.
Mnohé firmy si však dnes myslia, že ak investujú peniaze do strojového učenia, ich záhrady okamžite rozkvitnú. Toto je nesprávne. Strojové učenie by malo riešiť konkrétne problémy, nielen existovať.
Sú chvíle, keď chce banka vytvoriť systém odporúčaní pre služby pre používateľov. Pýtame sa: "Myslíte si, že to bude ekonomicky opodstatnené?" Odpovedajú: „Je nám to jedno. Urob to. Každý má systém odporúčaní, budeme v trende.“
Bolesť je v tom, že niečo skutočne užitočné pre podnikanie sa nedá urobiť za jeden deň. Musíme sledovať, ako sa systém bude učiť. Ale vždy to na začiatku funguje s chybami, počas tréningu mu môžu chýbať nejaké údaje. Opravíte chyby, potom ich znova opravíte a dokonca všetko prerobíte. Potom musíte nakonfigurovať systém tak, aby fungoval vo výrobe, aby bol stabilný a škálovateľný, to je ešte čas. Výsledkom je, že jeden projekt trvá šesť mesiacov, rok alebo viac.
![](https://i0.wp.com/knife.media/wp-content/uploads/2018/04/YAndeks-taksi-2-1024x683.jpg)
Ak sa na metódy strojového učenia pozeráte ako na čiernu skrinku, ľahko vám unikne, keď sa začnú diať bláznivé veci. Existuje bradatý príbeh. Armáda požiadala, aby vyvinula algoritmus, ktorý možno použiť na analýzu toho, či je na obrázku tank alebo nie. Vedci to vyrobili, otestovali, kvalita je vynikajúca, všetko je skvelé, dali to armáde. Prichádza armáda a hovorí, že nič nefunguje. Vedci začínajú nervózne chápať. Ukazuje sa, že na všetkých fotografiách s tankom, ktoré armáda priniesla, bol v rohu umiestnený kliešť s perom. Algoritmus sa bezchybne naučil nájsť začiarknutie, nevedel nič o nádrži. Prirodzene, na nových fotografiách neboli žiadne značky začiarknutia.
Stretla som sa s deťmi, ktoré si rozvíjajú svoj vlastný dialógový systém. Napadlo vás niekedy, že potrebujete spolupracovať s deťmi?
Už dosť dlho chodím na všelijaké akcie pre školákov, robím prednášky o strojovom učení. A mimochodom, jednu z tém ma naučil jeden desiaty ročník. Bol som si úplne istý, že môj príbeh bude dobrý a zaujímavý, bol som na seba hrdý, začal som vysielať a dievča povedalo: „Ach, chceme túto vec minimalizovať.“ Pozerám a rozmýšľam, naozaj, prečo a pravda sa dá minimalizovať a tu nie je nič zvláštne, čo by som mohol dokazovať. Už prešlo niekoľko rokov, teraz počúva naše prednášky ako študentka Fyzikálneho a technického ústavu. Yandex, mimochodom, má Yandex.Lyceum, kde môžu školáci bezplatne získať základné znalosti programovania.
- Odporučiť univerzity a fakulty, kde sa v súčasnosti vyučuje strojové učenie.
Existujú MIPT, fakulty FIVT a FUPM. HSE má tiež úžasné oddelenie informatiky a na Moskovskej štátnej univerzite je strojové učenie v komplexe počítačovej vedy. No a teraz si môžete vypočuť náš kurz na RUDN University.
Ako som už povedal, toto povolanie je žiadané. Ľudia, ktorí získali technické vzdelanie, veľmi dlho robili úplne iné veci. Strojové učenie je úžasným príkladom, keď všetky veci, ktoré ľudia s technickým vzdelaním učili, sú teraz priamo potrebné, užitočné a dobre platené.
- Aké dobré?
Pomenujte sumu.
- 500 tisíc mesačne.
Môžete, len bez toho, aby ste boli obyčajným dátovým vedcom. Ale v niektorých firmách môže stážista zarobiť za jednoduchú prácu aj 50 tisíc. Vo všeobecnosti sa plat cool data vedca dá porovnať s platom CEO nejakej stredne veľkej firmy. V mnohých firmách má zamestnanec okrem platu aj mnoho iných benefitov a ak je jasné, že ten človek neprišiel preto, aby si do životopisu pridal dobrú značku, ale aby skutočne pracoval, tak pre neho bude všetko v poriadku.