Dům, design, opravy, výzdoba.  Dvůr a zahrada.  DIY

Dům, design, opravy, výzdoba. Dvůr a zahrada. DIY

» "Skvělý datový vědec dostává zaplaceno jako generální ředitel průměrné společnosti." Expert na strojové učení Yandex.Taxi na to, jak data předpovídají budoucnost a utvářejí svět

"Skvělý datový vědec dostává zaplaceno jako generální ředitel průměrné společnosti." Expert na strojové učení Yandex.Taxi na to, jak data předpovídají budoucnost a utvářejí svět

- Můžete použít zcela primitivní příklad, abyste řekli, jak funguje strojové učení?

Můžu. Existuje příklad metody strojového učení zvaného Decision Tree, jedna z nejstarších věcí. Pojďme to udělat teď. Řekněme, že vás abstraktní osoba pozve na rande. co je pro tebe důležité?

Za prvé, jestli ho znám nebo ne...

(Victor to píše na tabuli.)

…Pokud nevím, musím odpovědět na otázku, zda je atraktivní nebo ne.

A jestli víš, nevadí? Myslím, že jsem na to přišel, je to pobočka friendzone! Obecně píšu, pokud nevíte a nejste atraktivní, pak odpověď zní „ano, ne, pravděpodobně“. Pokud víte, odpověď je ano.

- Pokud vím, je to také důležité!

Ne, bude to pobočka přátelské zóny.

Dobře, pojďme tedy zde poukázat na to, zda je to zajímavé nebo ne. Nicméně, když člověka neznáte, první reakcí je vzhled, s přítelem se už díváme na to, co si myslí a jak.

Udělejme to jinak. Ambiciózní nebo ne. Pokud je ctižádostivý, pak bude těžké se s ním spřátelit, bude chtít víc. A neambiciózní budou trpět.

(Victor dokončí rozhodovací strom.)

Připraveno. Nyní můžete předvídat, se kterým klukem s největší pravděpodobností půjdete na rande. Mimochodem, některé seznamovací služby takové věci předpovídají. Analogicky můžete předvídat, kolik zboží zákazníci koupí a kde budou lidé v tuto denní dobu.

Odpovědi mohou být nejen „ano“ a „ne“, ale také ve formě čísel. Pokud chcete přesnější předpověď, můžete vytvořit několik takových stromů a zprůměrovat je. A s tak jednoduchou věcí můžete vlastně předpovídat budoucnost.

A teď si představte, jak těžké bylo pro lidi vymyslet takové schéma před dvěma sty lety? Rozhodně ne! Toto schéma nepřináší žádnou raketovou vědu. Strojové učení jako fenomén existuje asi půl století. Ronald Fisher začal předpovídat na základě dat na začátku 20. století. Vzal kosatce a rozmístil je po délce a šířce sepalů a okvětních lístků, podle těchto parametrů určil typ rostliny.

Odvětví strojového učení se v posledních desetiletích aktivně využívá: výkonné a relativně levné stroje, které jsou potřeba ke zpracování velkého množství dat, například pro takové rozhodovací stromy, se objevily nedávno. Ale i tak je to úchvatné: tyto věci kreslíme pro každý úkol a používáme je k předpovídání budoucnosti.

- No, rozhodně ne lepší než jakékoli chobotnicové prediktory fotbalových zápasů...

Ne, no, kde se máme starat o chobotnice. I když máme větší variabilitu. Nyní můžete pomocí strojového učení ušetřit čas, peníze a zlepšit pohodlí života. Strojové učení před několika lety porazilo člověka, pokud jde o klasifikaci obrázků. Například počítač dokáže rozpoznat 20 plemen teriérů, a obyčejný člověk Ne.

- A když analyzujete uživatele, každá osoba je pro vás sada čísel?

Zhruba řečeno ano. Když pracujeme s daty, popisujeme všechny objekty, včetně chování uživatelů, určitou sadou čísel. A tato čísla odrážejí zvláštnosti chování lidí: jak často jezdí taxíkem, jakou třídu taxi používají, na jaká místa obvykle jezdí.

Nyní aktivně vytváříme podobné modely, abychom identifikovali skupiny lidí s podobným chováním. Když zavádíme novou službu nebo chceme propagovat starou službu, nabízíme ji zájemcům.

Například tady máme službu – dvě dětské sedačky v taxíku. Touto zprávou můžeme spamovat každého, nebo ji můžeme oslovit jen určitému okruhu lidí. V průběhu roku se nám nashromáždil určitý počet uživatelů, kteří do komentářů napsali, že potřebují dvě dětské sedačky. Našli jsme je a lidem se líbí. Obvykle jsou to lidé starší 30 let, kteří pravidelně cestují a milují středomořskou kuchyni. I když těch znaků je samozřejmě mnohem víc, příkladem jsem já.

- Dokonce i takové jemnosti?

To je jednoduchá záležitost. Vše se počítá pomocí vyhledávacích dotazů.

A v aplikaci to může nějak fungovat? Víte například, že jsem žebrák a odebírám skupiny typu „Jak přežít za 500 rublů měsíčně“ – nabízejí mi jen otlučená levná auta, odebírám novinky SpaceX – a čas od času dostanu Teslu?

Může to fungovat tímto způsobem, ale takové věci nejsou v Yandexu schváleny, protože to je diskriminace. Když personalizujete službu, je lepší nabízet ne tu nejpřijatelnější, ale nejlepší dostupnou a to, co má daný člověk rád. A distribuce podle logiky „tohle potřebuje lepší auto a tohle méně dobré“ je zlo.


Každý má zvrácené touhy a někdy potřebujete najít ne recept na středomořské jídlo, ale například obrázky o koprofilii. Bude personalizace fungovat i v tomto případě?

Vždy existuje soukromý režim.

Pokud nechci, aby někdo věděl o mých zájmech nebo, řekněme, přátelé za mnou přišli a chtěli se podívat na nějaký odpad, pak je lepší použít režim inkognito.

Můžete se také rozhodnout, kterou službu společnosti použijete, například Yandex nebo Google.

- Je v tom nějaký rozdíl?

Složitá záležitost. Nevím jak ostatní, ale Yandex je v ochraně osobních údajů přísný. Zejména dohlížet na zaměstnance.

- To znamená, že když se rozejdu s klukem, nebudu moci zjistit, jestli šel do téhle dachy nebo ne?

I když pracujete pro Yandex. To je samozřejmě smutné, ale ano, nebude možné to zjistit. Většina zaměstnanců k těmto údajům ani nemá přístup. Vše je zašifrováno. Je to jednoduché: nemůžete lidi špehovat, jsou to osobní informace.

Mimochodem, měli jsme zajímavý případ na téma rozchod s kluky. Když jsme provedli předpověď bodu "B" - cílového bodu v taxíku, zavedli jsme rady. Dívej se.

(Victor vstoupí do aplikace Yandex.Taxi.)

Taxík si například myslí, že jsem doma. Nabízí mi, abych šel buď do práce, nebo na univerzitu RUDN (přednáším tam v rámci kurzu strojového učení Data Mining in Action). A v určitém okamžiku, při vývoji těchto rad, jsme si uvědomili, že nemusíme uživatele kompromitovat. Bod "B" může vidět každý. Z těchto důvodů jsme odmítli nabízet místa podle podobnosti. A pak si sednete na slušné místo se slušnými lidmi, objednáte si taxi a oni vám tam napíšou: "Hele, v tomhle baru jsi ještě nebyl!"

- Co to modré tečky bliká ti na mapě?

Toto jsou místa vyzvednutí. Tyto body ukazují, kde je nejvýhodnější zavolat taxi. Ostatně můžete volat na místě, kde se bude telefonovat docela nepohodlně. Obecně ale platí, že můžete volat kamkoli.

- Ano, v jakékoli. Nějak jsem s tím letěl dva bloky.

V poslední době se s GPS vyskytly různé potíže, které vedly k různým vtipným situacím. Lidé byli například na Tverské převezeni navigací přes Tichý oceán. Jak vidíte, občas se vyskytnou miss a více než dva bloky.

- A pokud restartujete aplikaci a znovu šťouchnete, cena se změní o několik rublů. Proč?

Pokud poptávka převyšuje nabídku, algoritmus automaticky generuje multiplikátor - to pomáhá těm, kteří potřebují co nejdříve odjet, využít taxi, a to i v obdobích vysoké poptávky. Mimochodem, pomocí strojového učení můžete předvídat, kde bude větší poptávka, například za hodinu. To nám pomáhá sdělit řidičům, kde bude více objednávek, aby nabídka odpovídala poptávce.

- Nemyslíte si, že Yandex.Taxi brzy zabije celý trh s taxi?

Myslím, že ne. Jsme pro zdravou konkurenci a nebojíme se jí.

Já sám například využívám různé taxislužby. Čekací doba je pro mě důležitá, takže se dívám na několik aplikací, které taxi dorazí rychleji.


- Spojili jste se s Uberem. za co?

Nepřísluší mi to komentovat. Myslím, že sjednocení je hluboce rozumné rozhodnutí.

V Německu jeden chlap nainstaloval vanu na drony a tak letěl pro burger. Mysleli jste si, že je čas ovládnout vzdušný prostor?

O vzdušném prostoru nevím. Sledujeme novinky v duchu „Uber launchers taxi boats“, ale o vzduchu nemůžu nic říct.

A co dron taxi?

Zde je zajímavý bod. Vyvíjíme je, ale musíme si rozmyslet, jak přesně je používat. Zatím je příliš brzy předvídat, jak a kdy se objeví v ulicích, ale usilovně pracujeme na vývoji technologie pro plně autonomní auto, kde není lidský řidič vůbec potřeba.

- Existují nějaké obavy, že by software dronů mohl být hacknut a ovládat stroj na dálku?

Rizika jsou vždy a všude tam, kde jsou technologie a vychytávky. Spolu s rozvojem technologií se ale vyvíjí i další směr – jejich ochrana a bezpečnost. Každý, kdo se nějakým způsobem podílí na vývoji technologií, pracuje na ochranných systémech.

- Jaká uživatelská data shromažďujete a jak je chráníte?

Shromažďujeme neidentifikované údaje o používání, například kde, kdy a kam jste cestovali. Vše důležité je hashováno.

- Myslíte si, že drony sníží počet pracovních míst?

Myslím, že to bude jen větší. Tyto drony je však také potřeba nějak obsluhovat. To je samozřejmě trochu stresující situace, změna vaší specializace, ale co se dá dělat.

- Gref na každé své přednášce říká, že člověk minimálně třikrát dramaticky změní profesi.

Nemohu jmenovat žádnou specialitu, která trvá věčně. Vývojář nepracuje celý život ve stejném jazyce a se stejnými technologiemi. Všude je třeba přebudovat. Díky strojovému učení jasně cítím, jak jsou kluci, kteří jsou o šest let mladší než já, mnohem rychlejší než já. Ještě silněji to přitom pociťují lidé ve věku 40 nebo 45 let.

Na zkušenostech už nezáleží?

Hraje. Ale metody se mění, můžete přijít do oblasti, kde se třeba nepoužívalo hluboké učení, chvíli tam pracujete, pak se všude zavádějí metody hlubokého učení a vy tomu nerozumíte. A to je vše. Vaše zkušenosti mohou být užitečné pouze ve věci plánování týmu a ne vždy.

- A vaše profese je datový vědec, je to poptávané?

Poptávka po datových vědcích raketově roste. Je zřejmé, že nyní je období šíleného humbuku. Díky bohu, blockchain trochu pomohl tento humbuk utlumit. Specialisté na blockchain jsou rozebráni ještě rychleji.

Mnoho společností si ale nyní myslí, že když investují do strojového učení, jejich zahrady okamžitě rozkvetou. To není pravda. Strojové učení by mělo řešit konkrétní problémy, a ne jen existovat.

Jsou chvíle, kdy chce banka vytvořit systém doporučujících služeb pro uživatele. Ptáme se: "Myslíte si, že to bude ekonomicky opodstatněné?" Odpovídají: „Ano, je nám to jedno. Udělej to. Každý má doporučující systémy, my budeme v trendu.“

Bolest je, že něco skutečně užitečného pro podnikání nelze udělat za jeden den. Musíme vidět, jak bude systém trénován. A vždy na začátku pracuje s chybami, při tréninku jí mohou chybět nějaká data. Opravíte chyby, pak je znovu opravíte a dokonce vše předěláte. Poté je potřeba jej nakonfigurovat tak, aby systém fungoval v produkci, aby byl stabilní a škálovatelný, to je ještě čas. Výsledkem je, že jeden projekt trvá šest měsíců, rok nebo déle.


Pokud se na metody strojového učení díváte jako na černou skříňku, pak vám snadno unikne, jak se začnou dít nějaké nesmysly. Existuje vousatý příběh. Armáda požádala, aby vyvinula algoritmus, který lze použít k analýze, zda je na obrázku tank nebo ne. Vědci vyrobili, otestovali, kvalita výborná, vše super, dali to armádě. Přišla armáda a řekla, že nic nefunguje. Vědci začínají nervózně chápat. Ukázalo se, že na všech obrázcích s tankem, které armáda přivezla, byla v rohu zaškrtnutí s perem. Algoritmus se dokonale naučil najít klíště, o nádrži nic nevěděl. Na nových obrázcích samozřejmě nebyly žádné zaškrtávací značky.

Setkal jsem se s dětmi, které si vyvíjejí vlastní dialogový systém. Napadlo vás někdy, že potřebujete spolupracovat s dětmi?

Už dlouho jezdím na nejrůznější akce pro školáky, dělám přednášky o strojovém učení. A mimochodem, jedno z témat mě učil jeden desátý ročník. Byl jsem si naprosto jistý, že můj příběh bude dobrý a zajímavý, hrdý na sebe, začal jsem vysílat a dívka řekla: "Ach, chceme to minimalizovat." Dívám se a přemýšlím, ale opravdu, proč, a pravdu lze minimalizovat, a tady není nic zvláštního, co bych dokazoval. Již uplynulo několik let, nyní poslouchá naše přednášky jako studentka Phystech. Yandex má mimochodem Yandex.Lyceum, kde mohou školáci zdarma získat základní znalosti programování.

- Poraďte univerzitám a fakultám, kde se nyní strojové učení vyučuje.

Existují Moskevský institut fyziky a technologie, fakulty FIVT a FUPM. Existuje také skvělé oddělení informatiky na HSE a strojové učení na Moskevské státní univerzitě. Nyní si můžete poslechnout náš kurz na RUDN University.

Jak jsem řekl, tato profese je žádaná. Lidé, kteří získali technické vzdělání, se velmi dlouho zabývali úplně jinými věcmi. Strojové učení je skvělým příkladem, kdy se všechny věci, ze kterých se lidé naučili technické vzdělání, jsou nyní přímo potřebné, užitečné a dobře placené.

- Jak dobře?

Pojmenujte částku.

- 500 tisíc měsíčně.

Můžete, jen nejste obyčejný datový vědec. Ale v některých firmách může velmi, velmi praktikant dostat za jednoduchou práci 50 tis.. Rozpětí je velmi široké. Obecně platí, že plat cool datového vědce lze srovnat s platem generálního ředitele nějaké průměrné společnosti. V mnoha firmách padá na zaměstnance kromě platu i spousta dobrot a pokud je jasné, že ten člověk nepřišel napsat dobrou značku do životopisu, ale opravdu pracovat, tak bude vše v pořádku mu.

Uplynul téměř rok od zahájení neobvyklého předmětu na FIFT - inovativního workshopu. Jeho podstatou je tvorba IT startupů studentskými týmy pod vedením zkušených mentorů. Dopadlo to špatně: díky kurzu někdo strávil část léta v Kremieva Valley, někdo získal grant ve výši 800 000 rublů na rozvoj projektu a ABBYY je připravena projekt od někoho kompletně koupit. A to nejsou všechny výsledky workshopu!

Začátkem roku 2011 se studenti 3. ročníku FIVT sešli v aule a informovali: během příští rok budete muset vytvořit svůj vlastní startup. Studenti tuto myšlenku pojali nejednoznačně: vůbec nebylo jasné, jak to udělat, a odpovědnost byla neobvyklá - koneckonců bylo nutné vytvořit technologický byznys, a ne jen další vzdělávací projekt. Zde je to, co si o tom myslí Victor Kantor, vítěz studentské olympiády MIPT ve fyzice, student katedry Yandeska:

Když jsem si při přijetí vybral FIVT, doufal jsem, že budeme mít něco podobného. Tak jsem rád, že jsem nedoufal zbytečně. V průběhu roku bylo cítit, že se kurz stále formuje, hodně je nového, řada problémů je kontroverzních nejen pro studenty, ale i pro organizátory, ale obecně si myslím, že trendy jsou pozitivní. Tento kurz se mi líbil.

Pro usnadnění práce studentů byli různí kurátoři vyzváni, aby nabídli své nápady na budování inovativních podniků. Byli mezi nimi úplně jiní lidé: od starších studentů a postgraduálních studentů Moskevského institutu fyziky a technologie po inovačního poradce Ernst & Young Jurije Pavloviče Ammosova (byl vedoucím celého kurzu) a Michaila Batina, zabývajícího se regenerativní medicínou a životem. problémy s rozšířením. Ve výsledku si fyzici vybrali nápady, které pro ně byly nejzajímavější, kurátoři se připojili k týmům a začala tvrdá, ale vzrušující práce.

Za téměř rok, který od té doby uplynul, se kluci potýkali s mnoha problémy, z nichž některé byly vyřešeny. Nyní můžete zhodnotit jejich výsledky – i přes potíže to kluci zvládli. Studentům MIPT (kromě Fyzikální fakulty se do procesu zapojili i někteří studenti FAPF a dalších fakult) se podařilo připravit několik docela zajímavých a životaschopných projektů:

Askeroid (dříve Ask Droid) – vyhledávání chytrých telefonů ( Anastasia Urjaševová)

Android aplikace, která vám umožní pohodlně vyhledávat ve velkém množství vyhledávačů. Někteří odborníci projevili zájem o vývoj a díky tomu strávila Anastasia celé uplynulé léto v jednom z nejznámějších inkubátorů v Silicon Valley – Plug&Play. naučit se základy podnikání v oblasti technologií a mluvit s mezinárodními odborníky na rizikový kapitál.

1minute.ru – jedna minuta k dobru (Lev Grunin)

Tento projekt umožňuje komukoli jednoduše, rychle a zcela zdarma vykonávat charitativní činnost. Model je jednoduchý: inzerenti nabízejí na webu soubor aktivit, uživatelé se jich dobrovolně účastní a všechny peníze z reklamy jsou převedeny na charitativní nadaci. Týden po spuštění projekt nasbíral více než 6 500 uživatelů a nehodlá se u toho zastavit. Výsledkem je, že díky Lvu a jeho týmu dostane 600 dětí z dětských domovů Nový rok milované dárky od Santa Clause. Už jste věnovali minutu dobrému skutku?!

Embedded Desktop – počítač ve vašem telefonu (Alexey Vukolov)

Aplikace, která umožňuje spojit možnosti počítače a mobilitu telefonu v jednom pouzdře, je extrémně užitečný produkt pro zaneprázdněné lidi, kteří často jezdí na služební cesty. Stačí jej nainstalovat do chytrého telefonu a uživatel si bude moci „pořídit“ vlastní počítač v každém hotelu, kanceláři a vlastně všude, kde najdete monitor (vhodná je i televize), klávesnici a myš . Projekt získal grant na rozvoj myšlenky a byl představen na výstavě Technovation Cup a za získané peníze tým již aktivně nakupuje vybavení. Americký výrobce procesorů MIPS má o vývoj mimořádný zájem.

Smart Tagger - sémantické vyhledávání v dokumentech (Viktor Kantor)

Co dělat, když si to někde pamatujete poštovní schránka byl tam velmi důležitý dopis, který hovořil o nejnovější sérii Teorie velkého třesku, ale nepamatujete si žádná klíčová slova z textu? Vyhledávání Yandex a Google je bezmocné. Na pomoc přijde vývoj Smart Tagger – „chytrý“ program, který využívá sémantické vyhledávání, vám poskytne všechny texty, jejichž význam se prolíná s populární sérií. Projekt získal grant na U.M.N.I.K. celková částka 400 000 rublů!

MathOcr - rozpoznávání vzorců (Viktor Prun)

Společnost ABBYY navrhla zajímavý úkol k implementaci – vytvořit program, který by rozpoznával matematické vzorce jakékoli složitosti. Studenti FIVT ve spolupráci se zainteresovanými fopfy úkol splnili - modul skutečně rozpoznává vzorce naskenované z učebnic matanu nebo fyziky. Výsledek: Společnost ABBYY je připravena zakoupit tento produkt za velké peníze.

V rámci projektu ABC AI společně s MIPT jsme již psali o tzv. jedničkách, které umožňují „pěstovat“ programy podle principů a zákonitostí darwinovské evoluce. Ovšem zatímco takový přístup k umělé inteligenci je samozřejmě „hostem z budoucnosti“. Ale jak systémy umělá inteligence vytvořit dnes? Jak jsou vyškoleni? Viktor Kantor, docent na katedře algoritmů a programovacích technologií Moskevského institutu fyziky a technologie, vedoucí skupiny pro analýzu chování uživatelů Yandex Data Factory, nám pomohl toto zjistit.

Podle nedávné zprávy výzkumné firmy Gartner, která pravidelně aktualizuje svůj cyklus technologické vyspělosti, je strojové učení ze všech IT dnes na vrcholu očekávání. To není překvapivé: strojové učení se v posledních letech dostalo mimo sféru zájmu úzkého okruhu matematiků a specialistů na teorii algoritmů a proniklo nejprve do slovníku IT byznysmenů a poté do světa. obyčejných lidí. Nyní, když existuje něco jako neuronové sítě s jejich speciálním „kouzlem“, ví to každý, kdo používal aplikaci Prisma, hledal skladby pomocí Shazamu nebo viděl obrázky procházející DeepDreamem.

Jedna věc je však technologii používat a druhá pochopit, jak funguje. Běžná slova jako „počítač se může učit, když mu napovíte“ nebo „neuronová síť se skládá z digitálních neuronů a je uspořádána jako lidský mozek“ mohou někomu pomoci, ale častěji jen zamotají situaci. Ti, kteří se vážně pustí do učení matematiky, nepotřebují oblíbené texty: existují pro ně učebnice a vynikající online kurzy. Pokusíme se jít střední cestou: vysvětlit, jak se učení ve skutečnosti děje na nejjednodušším možném úkolu, a pak ukázat, jak lze stejný přístup použít k řešení skutečných zajímavých problémů.

Jak se stroje učí

Nejprve si definujme pojmy, abychom přesně porozuměli tomu, jak strojové učení probíhá. Jak definoval jeden z průkopníků v oboru, Arthur Samuel, strojové učení se týká metod, které „umožňují počítačům učit se, aniž by byly přímo programovány“. Existují dvě široké třídy metod strojového učení: učení pod dohledem a učení bez dozoru. První se používá, když např. potřebujeme naučit počítač vyhledávat fotografie s obrázkem koček, druhý - když potřebujeme, aby stroj např. uměl samostatně seskupovat novinky do příběhů, jak se to děje v služby jako Yandex.News nebo Google News. To znamená, že v prvním případě máme co do činění s úlohou, která implikuje existenci správné odpovědi (kočka na fotce tam buď je, nebo není), ve druhém - neexistuje jediná správná odpověď, ale existuje různé způsobyřešení problému. Jako nejzajímavější se zaměříme na první třídu problémů.

Takže musíme naučit počítač dělat nějaké předpovědi. A pokud možno co nejpřesnější. Předpovědi mohou být dvojího typu: buď si musíte vybrat mezi několika možnostmi odpovědi (je na obrázku kočka nebo ne - toto je výběr jedné ze dvou možností, schopnost rozpoznávat písmena na obrázcích je výběr jedné možnost z několika desítek atd.), nebo proveďte číselnou předpověď . Odhadněte například váhu osoby na základě její výšky, věku, velikosti bot a podobně. Tyto dva typy problémů pouze vypadají odlišně, ve skutečnosti se řeší téměř stejným způsobem. Zkusme pochopit jak.

První, co potřebujeme k vytvoření predikčního systému, je shromáždit tzv. tréninkový vzorek, tedy údaje o váze lidí v populaci. Druhým je rozhodnutí o souboru vlastností, na základě kterých můžeme vyvodit závěry o hmotnosti. Je jasné, že jedním z „nejsilnějších“ z těchto znaků bude růst člověka, proto jako první přiblížení stačí vzít jen to. Pokud váha závisí lineárně na výšce, pak bude naše předpověď velmi jednoduchá: váha člověka se bude rovnat jeho výšce vynásobené nějakým koeficientem plus nějakou konstantní hodnotou, která je zapsána nejjednodušším vzorcem y \u003d kx + b. Vše, co musíme udělat, abychom trénovali stroj na předpovídání hmotnosti člověka, je nějakým způsobem najít správné hodnoty pro k a b.

Krása strojového učení spočívá v tom, že i když je závislost, kterou studujeme, velmi složitá, v našem přístupu samotném je v podstatě jen malá změna. Stále se budeme zabývat stejnou regresí.

Řekněme, že výška člověka neovlivňuje váhu člověka lineárně, ale až třetím stupněm (což se obecně očekává, protože váha závisí na objemu těla). Abychom tuto závislost zohlednili, jednoduše zavedeme do naší rovnice ještě jeden člen, a to třetí stupeň růstu s vlastním koeficientem, přičemž dostaneme y=k 1 x+k 2 x 3 +b. Nyní, abychom mohli stroj natrénovat, budeme muset najít ne dvě, ale tři veličiny (k 1, k 2 a b). Řekněme, že v naší predikci chceme vzít v úvahu velikost bot člověka, jeho věk, čas strávený sledováním televize a vzdálenost od jeho bytu k nejbližšímu rychlému občerstvení. Žádný problém: jen jsme tyto vlastnosti dali jako samostatné pojmy do stejné rovnice.

Nejdůležitější je vytvořit univerzální způsob, jak najít požadované koeficienty (k 1 , k 2 , … k n). Pokud ano, bude nám téměř lhostejné, které vlastnosti k predikci použít, protože samotný stroj se naučí přikládat velkou váhu důležitým a malou nedůležitým vlastnostem. Naštěstí už byla taková metoda vynalezena a úspěšně na ní funguje téměř veškeré strojové učení: od nejjednodušších lineárních modelů až po systémy rozpoznávání obličejů a analyzátory řeči. Tato metoda se nazývá gradientní sestup. Než však vysvětlíme, jak to funguje, musíme udělat malou odbočku a pohovořit o neuronových sítích.

Neuronové sítě

V roce 2016 vstoupily neuronové sítě do informační agendy tak těsně, že se téměř ztotožnily s jakýmkoli strojovým učením a pokročilým IT obecně. Formálně řečeno to není pravda: neuronové sítě se při výuce matematiky vždy nepoužívají, existují i ​​jiné technologie. Obecně je ale taková asociace samozřejmě pochopitelná, protože právě systémy založené na neuronových sítích nyní dávají „nejmagičtější“ výsledky, jako je schopnost vyhledat osobu podle fotografie, vznik aplikací, které přenášejí styl jednoho obrázku do druhého, nebo systémy pro generování textů na způsob řeči určité osoby.

Způsob, jakým jsou uspořádány neuronové sítě, již známe. Zde chci jen zdůraznit, že síla neuronových sítí oproti jiným systémům strojového učení spočívá v jejich mnohovrstevnatosti, ale to z nich nedělá něco zásadně odlišného, ​​pokud jde o způsob fungování. Vrstvení opravdu umožňuje najít velmi abstraktní společné rysy a závislosti ve složitých sadách funkcí, jako jsou pixely v obrázku. Je však důležité pochopit, že z hlediska principů učení se neuronová síť radikálně neliší od sady konvenčních lineárních regresních vzorců, takže stejná metoda sestupu gradientu funguje skvěle i zde.

„Síla“ neuronové sítě spočívá v přítomnosti mezivrstvy neuronů, které kombinují hodnoty vstupní vrstvy sečtené. Z tohoto důvodu mohou neuronové sítě najít velmi abstraktní rysy dat, které je obtížné redukovat na jednoduché vzorce, jako je lineární nebo kvadratický vztah.

Vysvětlíme si to na příkladu. Vycházeli jsme z predikce, ve které hmotnost člověka závisí na jeho výšce a krychlové výšce, což je vyjádřeno vzorcem y=k 1 x+k 2 x 3 +b. S určitým úsekem, ale ve skutečnosti lze i takový vzorec nazvat neuronovou sítí. V něm, stejně jako v konvenční neuronové síti, existuje první vrstva „neuronů“, což je také vrstva funkcí: to jsou x a x 3 (dobře, „jediný neuron“, který máme na paměti a pro který odpovídá koeficient b). Horní nebo výsledná vrstva je reprezentována jedním „neuronem“ y, tedy předpokládanou hmotností osoby. A mezi první a poslední vrstvou „neuronů“ jsou spoje, jejichž pevnost či hmotnost určují koeficienty k 1, k 2 a b. Trénovat tuto "neuronovou síť" znamená jednoduše najít stejné koeficienty.

Jediný rozdíl od „skutečných“ neuronových sítí zde spočívá v tom, že nemáme jedinou mezivrstvu (či skrytou) neuronů, jejímž úkolem je kombinovat vstupní vlastnosti. Zavedení takových vrstev umožňuje nevymýšlet možné závislosti mezi dostupnými vlastnostmi „z hlavy“, ale spolehnout se na jejich již existující kombinace v neuronové síti. Například věk a průměrná TV doba mohou mít synergický vliv na váhu člověka, ale protože máme neuronovou síť, nemusíme to vědět předem a zadávat jejich produkt do vzorce. V neuronové síti bude určitě neuron, který kombinuje vliv dvou libovolných vlastností, a pokud je tento vliv na vzorku opravdu patrný, tak po natrénování tento neuron automaticky dostane velkou váhu.

gradientní sestup

Máme tedy trénovací sadu příkladů se známými daty, tedy tabulku s přesně změřenou váhou člověka a nějakou hypotézu závislosti, v tomto případě lineární regresi y=kx+b. Naším úkolem je najít správné hodnoty k a b, a to ne ručně, ale automaticky. A nejlépe univerzální metoda, která nezávisí na počtu parametrů obsažených ve vzorci.

To je obecně snadné. Hlavní myšlenkou je vytvořit funkci, která bude měřit aktuální celkovou chybovost a „kroutí“ koeficienty tak, aby celková chybovost postupně klesala. Jak snížit úroveň chyb? Musíme vyladit naše parametry správným směrem.

Představte si naše dva parametry, které hledáme, stejné k a b, jako dva směry v rovině, jako osu sever-jih a západ-východ. Každý bod v takové rovině bude odpovídat určité hodnotě koeficientů, určitému specifickému vztahu mezi výškou a hmotností. A pro každý takový bod v rovině můžeme vypočítat celkovou úroveň chyb, kterou tato předpověď dává pro každý z příkladů v našem vzorku.

Na rovině se ukáže něco jako konkrétní výška a celý okolní prostor začíná připomínat horskou krajinu. Hory jsou místa, kde je chybovost velmi vysoká, údolí jsou místa, kde je chyb méně. Je jasné, že trénovat náš systém znamená najít nejnižší bod na zemi, bod, kde je chybovost minimální.

Jak můžete najít tento bod? Většina Správná cesta- pohybovat se celou dobu dolů z místa, kde jsme původně skončili. Takže dříve nebo později dojdeme k místnímu minimu – bodu, pod kterým v bezprostřední blízkosti nic není. Kromě toho je žádoucí dělat kroky různých velikostí: když je svah strmý, můžete jít širší, když je sklon malý, je lepší se proplížit k místnímu minimu "po špičkách", jinak můžete proklouznout.

Takto funguje gradientní klesání: měníme váhy prvků ve směru největšího poklesu chybové funkce. Měníme je iterativně, tedy s určitým krokem, jehož hodnota je úměrná strmosti svahu. Zajímavé je, že s nárůstem počtu prvků (přidáním kostky o výšce člověka, věku, velikosti bot atd.) se ve skutečnosti nic nemění, jen se naše krajina nestane dvourozměrnou, ale vícerozměrnou.

Chybovou funkci lze definovat jako součet druhých mocnin všech odchylek, které současný vzorec umožňuje lidem, jejichž váhu již přesně známe. Vezměme si nějaké náhodné proměnné k a b, například 0 a 50. Pak nám systém předpoví, že hmotnost každé osoby ve vzorku je vždy 50 kilogramů y=0×x+50 Na grafu bude taková závislost vypadat jako rovný čára rovnoběžná s horizontálou. Je jasné, že to není moc dobrá předpověď. Nyní vezmeme odchylku hmotnosti od této předpovězené hodnoty, umocníme ji (takže se berou v úvahu i záporné hodnoty) a sečteme ji - to bude v tomto bodě chyba. Pokud jste obeznámeni se začátkem analýzy, můžete dokonce upřesnit, že směr největšího pádu je dán parciální derivací chybové funkce vzhledem k k a b a krok je hodnota, která se volí z praktické úvahy: malé kroky zaberou spoustu času na výpočet a velké mohou vést k tomu, že nám bude chybět minimum.

Dobře, ale co když nemáme jen komplexní regresi s mnoha funkcemi, ale skutečnou neuronovou síť? Jak v tomto případě použijeme sestup gradientu? Ukazuje se, že gradientní sestup funguje u neuronové sítě úplně stejně, pouze trénování probíhá 1) ve fázích, od vrstvy k vrstvě, a 2) postupně, od jednoho příkladu ve vzorku k druhému. Zde použitá metoda se nazývá backpropagation a byla nezávisle popsána v roce 1974 sovětským matematikem Alexandrem Galuškinem a matematikem z Harvardské univerzity Paulem Johnem Webrosem.

Ačkoli pro rigorózní prezentaci algoritmu bude nutné vypsat parciální derivace (např.), na intuitivní úrovni se vše děje zcela jednoduše: pro každý z příkladů ve vzorku máme určitou předpověď na výstup neuronové sítě. Máme-li správnou odpověď, můžeme správnou odpověď od predikce odečíst a dostat tak chybu (přesněji množinu chyb pro každý neuron výstupní vrstvy). Nyní musíme tuto chybu přenést na předchozí vrstvu neuronů a čím více se tento konkrétní neuron této vrstvy na chybě podílel, tím více musíme snížit jeho váhu (ve skutečnosti opět mluvíme o převzetí parciální derivace, o pohybu po maximální strmosti naší imaginární krajiny) . Když to uděláme, stejný postup je třeba zopakovat pro další vrstvu, pohybující se v opačném směru, tedy od výstupu neuronové sítě ke vstupu.

Procházením neuronové sítě tímto způsobem s každým příkladem trénovacího vzorku a „kroucením“ vah neuronů správným směrem bychom nakonec měli získat trénovanou neuronovou síť. Metoda backpropagation je jednoduchou modifikací metody gradientního sestupu pro vícevrstvé neuronové sítě, a proto by měla fungovat pro neuronové sítě jakékoli složitosti. Říkáme zde „měl by“, protože ve skutečnosti existují případy, kdy sestup gradientu selže a neumožní vám udělat dobrou regresi nebo trénovat neuronovou síť. Je užitečné vědět, co takové potíže způsobuje.

Potíže se spádem

Špatná volba absolutního minima. Metoda gradientního klesání pomáhá najít lokální extrém. Ale ne vždy jej můžeme použít k dosažení absolutního globálního minima nebo maxima funkce. Děje se tak proto, že při pohybu po antigradientu se zastavíme v okamžiku, kdy dosáhneme prvního lokálního minima, na které narazíme, a algoritmus zastaví svou práci.

Představte si, že stojíte na vrcholu hory. Pokud chcete sestoupit na nejnižší povrch v oblasti, metoda gradientového sestupu vám ne vždy pomůže, protože první nízký bod na vaší cestě nemusí být nutně nejnižší bod. A pokud v životě dokážete vidět, že stojí za to jít trochu nahoru a pak můžete jít ještě níž, pak se v takové situaci algoritmus prostě zastaví. Často lze této situaci předejít správným výběrem kroku.

Špatná volba kroku. Metoda sestupu gradientu je iterativní metoda. To znamená, že sami musíme zvolit velikost kroku - rychlost, s jakou klesáme. Volbou příliš velkého kroku můžeme přeletět extrém, který potřebujeme, a nenajdeme minimum. To se může stát, pokud čelíte velmi prudkému klesání. A volba příliš malého kroku hrozí extrémně pomalým chodem algoritmu, pokud se ocitneme na relativně plochý povrch. Pokud si opět představíme, že jsme na vrcholu strmé hory, pak může nastat situace, kdy ji kvůli velmi prudkému sestupu blízko minima prostě přeletíme.

Paralýza sítě. Někdy se stane, že metoda gradientního klesání vůbec nenajde minimum. To se může stát, pokud jsou na obou stranách minima ploché oblasti - algoritmus, který zasáhne rovnou plochu, sníží krok a nakonec se zastaví. Pokud se stojíte na vrcholu hory a rozhodnete se přestěhovat do svého domu v nížině, může být cesta příliš dlouhá, pokud náhodou zabloudíte na velmi rovnou plochu. Nebo, pokud jsou na okrajích plochých oblastí prakticky strmé „svahy“, algoritmus, který zvolí velmi velký krok, bude skákat z jednoho svahu na druhý, prakticky bez pohybu na minimum.

Všechny tyto složité body je třeba vzít v úvahu při navrhování systému strojového učení. Vždy je například užitečné přesně sledovat, jak se chybová funkce mění v čase – zda ​​klesá s každým novým cyklem nebo označuje čas, jak se mění povaha tohoto pádu v závislosti na změně velikosti kroku. Abyste nenarazili na špatné lokální minimum, může být užitečné začít z různých náhodně vybraných bodů v krajině – pak je pravděpodobnost zaseknutí mnohem nižší. Existuje mnohem více velkých a malých tajemství, jak se vypořádat s gradientním sestupem, a existují exotičtější způsoby učení, které se spádu příliš podobají. To už je však téma na další rozhovor a samostatný článek v rámci projektu AI ​​ABC.

Připravil Alexander Ershov