Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Nedávno vydané článek, který v posledních letech ukazuje dobrý trend ve strojovém učení. Stručně řečeno: počet startupů se strojovým učením za poslední dva roky prudce klesl.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?
Studna. Podívejme se na to, „zda bublina praskla“, „jak dál žít“ a promluvme si o tom, odkud se tato klikatá vůbec bere.

Nejprve si řekněme, co bylo boosterem této křivky. odkud se vzala? Snad si všechno zapamatují vítězství strojové učení v roce 2012 na soutěži ImageNet. Vždyť jde o první celosvětovou akci! Ale ve skutečnosti tomu tak není. A růst křivky začíná o něco dříve. Rozdělil bych to do několika bodů.

  1. V roce 2008 se objevil termín „big data“. Začaly skutečné produkty objeví se od roku 2010. Velká data přímo souvisí se strojovým učením. Bez velkých dat je stabilní provoz algoritmů, které v té době existovaly, nemožný. A to nejsou neuronové sítě. Do roku 2012 byly neuronové sítě výhradou marginální menšiny. Pak ale začaly fungovat úplně jiné algoritmy, které existovaly roky nebo dokonce desetiletí: svm(1963,1993, XNUMX), Náhodný les (1995) AdaBoost (2003),... Startupy těch let jsou spojeny především s automatickým zpracováním strukturovaných dat: pokladny, uživatelé, reklama, mnoho dalšího.

    Derivátem této první vlny je sada frameworků jako XGBoost, CatBoost, LightGBM atd.

  2. V letech 2011-2012 konvoluční neurální sítě vyhrál řadu soutěží v rozpoznávání obrázků. Jejich skutečné použití bylo poněkud zpožděno. Řekl bych, že v roce 2014 začaly vznikat masivně smysluplné startupy a řešení. Trvalo dva roky, než jsme pochopili, že neurony stále fungují, vytvořili pohodlné rámce, které by bylo možné nainstalovat a spustit v rozumném čase, abychom vyvinuli metody, které by stabilizovaly a urychlily dobu konvergence.

    Konvoluční sítě umožnily řešit problémy počítačového vidění: klasifikace obrazů a předmětů v obraze, detekce předmětů, rozpoznávání předmětů a osob, vylepšování obrazu atd. atd.

  3. 2015-2017. Rozmach algoritmů a projektů založených na rekurentních sítích nebo jejich analogech (LSTM, GRU, TransformerNet atd.). Objevily se dobře fungující algoritmy převodu řeči na text a systémy strojového překladu. Jsou částečně založeny na konvolučních sítích pro extrakci základních funkcí. Částečně díky tomu, že jsme se naučili sbírat opravdu velké a kvalitní datasety.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

„Splaskla bublina? Je humbuk přehřátý? Zemřeli jako blockchain?”
V opačném případě! Zítra přestane Siri pracovat na vašem telefonu a pozítří Tesla nepozná rozdíl mezi otočením a klokanem.

Neuronové sítě již fungují. Jsou v desítkách zařízení. Opravdu vám umožňují vydělávat peníze, měnit trh a svět kolem vás. Hype vypadá trochu jinak:

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Prostě neuronové sítě už nejsou něčím novým. Ano, mnoho lidí má velká očekávání. Ale velké množství společností se naučilo používat neurony a vyrábět produkty na jejich základě. Neurony poskytují nové funkce, umožňují snížit počet pracovních míst a snížit cenu služeb:

  • Výrobní společnosti integrují algoritmy pro analýzu vad výrobní linky.
  • Chovné farmy nakupují systémy pro kontrolu krav.
  • Automatické kombajny.
  • Automatizovaná call centra.
  • Filtry ve SnapChatu. (No, alespoň něco užitečného!)

Ale to hlavní, a ne to nejzřejmější: „Už neexistují žádné nové nápady, nebo nepřinesou okamžitý kapitál.“ Neuronové sítě vyřešily desítky problémů. A rozhodnou ještě víc. Všechny zjevné nápady, které existovaly, daly vzniknout mnoha startupům. Ale vše, co bylo na povrchu, už bylo shromážděno. Za poslední dva roky jsem nenarazil na jediný nový nápad na využití neuronových sítí. Žádný nový přístup (no, dobře, s GAN je pár problémů).

A každý další startup je čím dál složitější. Už to nevyžaduje dva chlapy, kteří trénují neuron pomocí otevřených dat. Vyžaduje to programátory, server, tým markerů, komplexní podporu atd.

V důsledku toho je méně startupů. Ale produkce je více. Potřebujete přidat rozpoznávání SPZ? Na trhu jsou stovky specialistů s relevantními zkušenostmi. Můžete si někoho najmout a za pár měsíců váš zaměstnanec systém vytvoří. Nebo koupit hotové. Ale dělat nový startup?... Crazy!

Musíte si vytvořit systém sledování návštěvníků – proč platit za hromadu licencí, když si za 3-4 měsíce můžete vytvořit vlastní, vypilovat to pro svůj byznys.

Nyní neuronové sítě procházejí stejnou cestou, kterou prošly desítky dalších technologií.

Pamatujete si, jak se od roku 1995 změnil koncept „webového vývojáře“? Trh ještě není nasycený specialisty. Profesionálů je velmi málo. Ale vsadím se, že za 5-10 let nebude velký rozdíl mezi Java programátorem a vývojářem neuronové sítě. Na trhu bude dostatek obou specialistů.

Prostě bude existovat třída problémů, které mohou být vyřešeny neurony. Vyvstal úkol - najměte si specialistu.

"Co bude dál? Kde je ta slibovaná umělá inteligence?“

Ale došlo k malému, ale zajímavému nedorozumění :)

Zásobník technologií, který dnes existuje, nás zjevně k umělé inteligenci nedovede. Nápady a jejich novost se do značné míry vyčerpaly. Pojďme se bavit o tom, co drží současnou úroveň rozvoje.

Omezení

Začněme samořiditelnými auty. Zdá se jasné, že s dnešní technologií je možné vyrábět plně autonomní auta. Ale za kolik let se tak stane, není jasné. Tesla věří, že se to stane za pár let -


Existuje mnoho dalších odborníci, kteří to odhadují na 5-10 let.

S největší pravděpodobností se podle mého názoru za 15 let samotná infrastruktura měst změní tak, že vznik autonomních aut se stane nevyhnutelným a stane se jeho pokračováním. To ale nelze považovat za inteligenci. Moderní Tesla je velmi komplexní potrubí pro filtrování dat, vyhledávání a přeškolování. Jedná se o pravidla-pravidla-pravidla, sběr dat a filtry nad nimi (zde zde Napsal jsem o tom trochu více, nebo se podívejte z tohle značky).

První problém

A tady to vidíme první zásadní problém. Velká data. Právě to dalo vzniknout současné vlně neuronových sítí a strojového učení. V dnešní době, abyste mohli dělat něco složitého a automatického, potřebujete hodně dat. Nejen hodně, ale velmi, velmi. Potřebujeme automatizované algoritmy pro jejich shromažďování, označování a používání. Chceme, aby auto vidělo kamiony čelem ke slunci – nejdřív jich musíme nasbírat dostatečné množství. Chceme, aby se auto nezbláznilo s kolem přišroubovaným ke kufru - další vzorky.

Navíc jeden příklad nestačí. Stovky? tisíce?

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Druhý problém

Druhý problém — vizualizace toho, co naše neuronová síť pochopila. To je velmi netriviální úkol. Až dosud málokdo chápe, jak si to představit. Tyto články jsou velmi nedávné, toto je jen několik příkladů, i když vzdálených:
Vizualizace posedlost texturami. Dobře ukazuje, na co má neuron tendenci se fixovat + co vnímá jako startovací informaci.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?
Vizualizace Pozornost při překlady. Ve skutečnosti lze přitažlivost často přesně použít k tomu, aby se ukázalo, co způsobilo takovou reakci sítě. Viděl jsem takové věci jak pro ladění, tak pro produktová řešení. Na toto téma je spousta článků. Ale čím jsou data složitější, tím obtížnější je pochopit, jak dosáhnout robustní vizualizace.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

No, ano, stará dobrá sada „podívejte se, co je uvnitř sítě filtry" Tyto obrázky byly populární před 3-4 lety, ale každý si rychle uvědomil, že obrázky byly krásné, ale neměly velký význam.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Nezmínil jsem se o desítkách dalších gadgetů, metod, hacků, výzkumu, jak zobrazit vnitřnosti sítě. Fungují tyto nástroje? Pomáhají vám rychle pochopit, v čem je problém, a odladit síť?... Získat poslední procenta? No je to asi to samé:

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Jakoukoli soutěž můžete sledovat na Kaggle. A popis toho, jak lidé dělají konečná rozhodnutí. Naskládali jsme 100-500-800 jednotek modelů a fungovalo to!

To samozřejmě přeháním. Tyto přístupy však neposkytují rychlé a přímé odpovědi.

S dostatečnými zkušenostmi a po prozkoumání různých možností můžete vydat verdikt, proč váš systém učinil takové rozhodnutí. Ale bude těžké napravit chování systému. Nainstalujte berličku, posuňte práh, přidejte datovou sadu, vezměte další backendovou síť.

Třetí problém

Třetí základní problém — mřížky učí statistiku, nikoli logiku. Statisticky toto člověk:

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Logicky to není moc podobné. Neuronové sítě se neučí nic složitého, pokud k tomu nejsou nuceny. Vždy učí ty nejjednodušší možné znaky. Máš oči, nos, hlavu? Tak tohle je obličej! Nebo uveďte příklad, kde oči neznamenají obličej. A znovu - miliony příkladů.

Dole je spousta místa

Řekl bych, že právě tyto tři globální problémy v současnosti omezují rozvoj neuronových sítí a strojového učení. A tam, kde ho tyto problémy neomezovaly, se již aktivně využívá.

Tohle je konec? Jsou neuronové sítě funkční?

Neznámý. Ale všichni samozřejmě doufají, že ne.

Existuje mnoho přístupů a směrů k řešení základních problémů, které jsem zdůraznil výše. Ale zatím žádný z těchto přístupů neumožnil udělat něco zásadně nového, vyřešit něco, co dosud vyřešeno nebylo. Všechny zásadní projekty se zatím dělají na bázi stabilních přístupů (Tesla), nebo zůstávají testovacími projekty institutů či korporací (Google Brain, OpenAI).

Zhruba řečeno, hlavním směrem je vytvoření nějaké reprezentace vstupních dat na vysoké úrovni. V jistém smyslu „paměť“. Nejjednodušším příkladem paměti jsou různé „Embedding“ - obrazové reprezentace. No, například všechny systémy rozpoznávání obličeje. Síť se učí získávat z plochy nějakou stabilní reprezentaci, která nezávisí na rotaci, osvětlení nebo rozlišení. Síť v podstatě minimalizuje metriku „různé tváře jsou daleko“ a „identické tváře jsou blízko“.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Pro takové školení jsou potřeba desítky a stovky tisíc příkladů. Výsledek však nese některé základy „One-shot Learning“. Nyní nepotřebujeme stovky tváří, abychom si zapamatovali člověka. Jen jedna tvář a to jsme všechno Pojďme to zjistit!
Je tu jen jeden problém... Mřížka se může naučit jen docela jednoduché předměty. Když se pokoušíte rozlišit nikoli tváře, ale například „lidi podle oblečení“ (úkol Opětovná identifikace) - kvalita klesá o mnoho řádů. A síť se již nemůže naučit docela zjevné změny úhlů.

A učit se z milionů příkladů je také zábava.

Existuje práce na výrazném omezení voleb. Člověk si například může hned vybavit jeden z prvních děl na OneShot učení od Googlu:

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Takových děl je např. mnoho 1 nebo 2 nebo 3.

Je tu jedno mínus - obvykle školení funguje dobře na některých jednoduchých příkladech „MNIST“. A když přejdete ke složitým úkolům, potřebujete velkou databázi, model objektů nebo nějaké kouzlo.
Obecně je práce na One-Shot tréninku velmi zajímavé téma. Najdete spoustu nápadů. Ale z větší části dva problémy, které jsem uvedl (předtrénování na obrovském datovém souboru / nestabilita na komplexních datech), značně narušují učení.

Na druhou stranu GAN – generativní adversariální sítě – přistupují k tématu Embedding. Určitě jste na toto téma četli spoustu článků o Habrém. (1, 2,3)
Rysem GAN je vytvoření nějakého vnitřního stavového prostoru (v podstatě stejné Embedding), který vám umožňuje kreslit obrázek. To může být tváře, může být akce.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Problém s GAN spočívá v tom, že čím složitější je generovaný objekt, tím obtížnější je popsat jej v logice „generátor-diskriminátor“. Výsledkem je, že jedinými skutečnými aplikacemi GAN, o kterých je slyšet, jsou DeepFake, které opět manipulují s reprezentacemi obličeje (pro které existuje obrovská základna).

Viděl jsem jen velmi málo dalších užitečných využití. Obvykle jde o nějaký druh triku zahrnujícího dokončovací kresby obrázků.

A znovu. Nikdo netuší, jak nám to umožní přejít do světlejší budoucnosti. Reprezentovat logiku/prostor v neuronové síti je dobré. Ale potřebujeme obrovské množství příkladů, nerozumíme tomu, jak to neuron představuje sám o sobě, nechápeme, jak přimět neuron, aby si zapamatoval nějakou opravdu složitou myšlenku.

Posílení učení - to je přístup z úplně jiného směru. Určitě si pamatujete, jak Google v Go porazil všechny. Nedávná vítězství ve Starcraft a Dota. Tady ale zdaleka není vše tak růžové a slibné. Nejlépe mluví o RL a jeho složitosti v tomto článku.

Stručně shrnu, co autor napsal:

  • Modely po vybalení ve většině případů nesedí/fungují špatně
  • Praktické problémy se snáze řeší jinými způsoby. Boston Dynamics nepoužívá RL kvůli jeho složitosti/nepředvídatelnosti/výpočtové složitosti
  • Aby RL fungovalo, potřebujete komplexní funkci. Často je obtížné vytvořit/zapsat
  • Obtížné trénování modelů. Musíte strávit spoustu času, abyste se napumpovali a dostali se z lokálního optima
  • V důsledku toho je obtížné model opakovat, model je při sebemenších změnách nestabilní
  • Často překrývá některé náhodné vzory, dokonce i generátor náhodných čísel

Klíčové je, že RL zatím nefunguje ve výrobě. Google má nějaké experimenty ( 1, 2 ). Ale neviděl jsem jediný produktový systém.

Memory. Nevýhodou všeho popsaného je nedostatek struktury. Jedním z přístupů, jak se pokusit vše uklidit, je poskytnout neuronové síti přístup k oddělené paměti. Aby si tam mohla zaznamenávat a přepisovat výsledky svých kroků. Potom lze neuronovou síť určit podle aktuálního stavu paměti. To je velmi podobné klasickým procesorům a počítačům.

Nejznámější a nejoblíbenější článek — od DeepMind:

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Zdá se, že toto je klíč k pochopení inteligence? Ale asi ne. Systém stále vyžaduje obrovské množství dat pro školení. A pracuje především se strukturovanými tabulkovými daty. Navíc když Facebook rozhodl podobný problém, pak se vydali cestou „zašroubujte paměť, jen zkomplikujte neuron a dejte více příkladů – a naučí se to samo“.

Rozpletení. Dalším způsobem, jak vytvořit smysluplnou paměť, je vzít stejné vložení, ale během tréninku zavést další kritéria, která vám umožní zvýraznit „významy“ v nich. Chceme například trénovat neuronovou síť, aby rozlišovala mezi lidským chováním v obchodě. Pokud bychom postupovali standardní cestou, museli bychom udělat tucet sítí. Jeden hledá člověka, druhý určuje, co dělá, třetí je jeho věk, čtvrtý je jeho pohlaví. Samostatná logika se dívá na tu část obchodu, kde to dělá/je k tomu vycvičená. Třetí určuje jeho trajektorii atd.

Nebo, pokud by existovalo nekonečné množství dat, pak by bylo možné trénovat jednu síť pro všechny možné výsledky (samozřejmě takové pole dat nelze shromáždit).

Přístup disentanglement nám říká – trénujme síť tak, aby sama dokázala rozlišovat mezi pojmy. Takže by to tvořilo vložení na základě videa, kde by jedna oblast určovala akci, jedna by určovala pozici na podlaze v čase, jedna by určovala výšku osoby a jedna by určovala pohlaví osoby. Zároveň bych chtěl při tréninku téměř nepobízet síť takovými klíčovými pojmy, ale spíše zvýrazňovat a seskupovat oblasti. Takových článků je poměrně dost (některé z nich 1, 2, 3) a obecně jsou dost teoretické.

Tento směr by ale, alespoň teoreticky, měl pokrýt problémy uvedené na začátku.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Rozklad obrazu podle parametrů „barva stěny/barva podlahy/tvar objektu/barva objektu/atd.

Praskla bublina strojového učení, nebo je to začátek nového úsvitu?

Rozklad obličeje podle parametrů "velikost, obočí, orientace, barva pleti atd."

ostatní

Existuje mnoho dalších, ne tak globálních, oblastí, které umožňují nějak redukovat databázi, pracovat s více heterogenními daty atp.

Pozor. Asi nemá smysl to oddělovat jako samostatnou metodu. Prostě přístup, který zlepšuje ostatní. Je mu věnováno mnoho článků (1,2,3). Cílem pozornosti je zlepšit odezvu sítě specificky na významné objekty během školení. Často nějakým druhem externího cílového označení nebo malé externí sítě.

3D simulace. Pokud uděláte dobrý 3D engine, často s ním pokryjete 90 % tréninkových dat (dokonce jsem viděl příklad, kdy téměř 99 % dat pokryl dobrý engine). Existuje mnoho nápadů a hacků, jak zajistit, aby síť natrénovaná na 3D enginu fungovala pomocí skutečných dat (jemné ladění, přenos stylu atd.). Ale často je vytvoření dobrého motoru o několik řádů obtížnější než sběr dat. Příklady, kdy byly motory vyrobeny:
Trénink robotů (Google, braingarden)
výcvik uznání zboží v obchodě (ale ve dvou projektech, které jsme dělali, jsme se bez něj snadno obešli).
Školení v Tesle (opět video výše).

Závěry

Celý článek je v jistém smyslu závěry. Pravděpodobně hlavní poselství, které jsem chtěl sdělit, bylo „volnosti skončily, neurony již neposkytují jednoduchá řešení“. Nyní musíme tvrdě pracovat na přijímání složitých rozhodnutí. Nebo tvrdě pracujte na složitém vědeckém výzkumu.

Obecně je téma diskutabilní. Možná mají čtenáři zajímavější příklady?

Zdroj: www.habr.com

Přidat komentář