Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Nedavno izdano članek, kar kaže na dober trend strojnega učenja v zadnjih letih. Na kratko: število zagonskih podjetij s strojnim učenjem je v zadnjih dveh letih močno upadlo.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?
No. Poglejmo, »ali je mehurček počil«, »kako živeti naprej« in se pogovorimo o tem, od kod sploh izvira ta vijuga.

Najprej se pogovorimo o tem, kaj je bil ojačevalec te krivulje. Od kod je prišla? Verjetno si bodo vse zapomnili zmaga strojnega učenja leta 2012 na tekmovanju ImageNet. Konec koncev je to prvi globalni dogodek! A v resnici temu ni tako. In rast krivulje se začne malo prej. Razčlenil bi ga na več točk.

  1. Leta 2008 se je pojavil izraz »veliki podatki«. Začeli so se pravi izdelki pojaviti od leta 2010. Veliki podatki so neposredno povezani s strojnim učenjem. Brez velikih podatkov je stabilno delovanje algoritmov, ki so obstajali v tistem času, nemogoče. In to niso nevronske mreže. Do leta 2012 so bile nevronske mreže rezerva obrobne manjšine. Potem pa so začeli delovati popolnoma drugačni algoritmi, ki so obstajali leta ali celo desetletja: svm(1963,1993), Naključni gozd (1995) AdaBoost (2003),... Startupi tistih let so povezani predvsem z avtomatsko obdelavo strukturiranih podatkov: blagajne, uporabniki, oglaševanje, še marsikaj.

    Izpeljanka tega prvega vala je nabor ogrodij, kot so XGBoost, CatBoost, LightGBM itd.

  2. V letih 2011-2012 konvolucijske nevronske mreže zmagal na številnih tekmovanjih za prepoznavanje slik. Njihova dejanska uporaba je bila nekoliko zakasnjena. Rekel bi, da so se množično pomembni startupi in rešitve začeli pojavljati leta 2014. Potrebovali smo dve leti, da smo ugotovili, da nevroni še vedno delujejo, da smo ustvarili priročna ogrodja, ki bi jih bilo mogoče namestiti in zagnati v razumnem času, da smo razvili metode, ki bi stabilizirale in pospešile čas konvergence.

    Konvolucijska omrežja so omogočila reševanje problemov računalniškega vida: razvrščanje slik in predmetov na sliki, zaznavanje objektov, prepoznavanje predmetov in ljudi, izboljšanje slike itd. itd.

  3. 2015-2017. Razcvet algoritmov in projektov, ki temeljijo na ponavljajočih se omrežjih ali njihovih analogih (LSTM, GRU, TransformerNet itd.). Pojavili so se dobro delujoči algoritmi govora v besedilo in sistemi za strojno prevajanje. Delno temeljijo na konvolucijskih omrežjih za pridobivanje osnovnih funkcij. Delno zaradi dejstva, da smo se naučili zbirati res velike in dobre zbirke podatkov.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

»Je mehurček počil? Je hype pregret? Ali so umrli kot blockchain?«
Sicer pa! Jutri bo Siri prenehala delovati na vašem telefonu, pojutrišnjem pa Tesla ne bo vedela razlike med turnom in kengurujem.

Nevronske mreže že delujejo. So v desetinah naprav. Res vam omogočajo, da zaslužite denar, spremenite trg in svet okoli sebe. Hype izgleda nekoliko drugače:

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Le nevronske mreže niso več nekaj novega. Da, veliko ljudi ima visoka pričakovanja. Toda veliko podjetij se je naučilo uporabljati nevrone in izdelovati izdelke na njihovi osnovi. Nevroni zagotavljajo nove funkcionalnosti, omogočajo odpuščanje delovnih mest in znižanje cen storitev:

  • Proizvodna podjetja integrirajo algoritme za analizo napak na proizvodni liniji.
  • Živinorejske kmetije kupujejo sisteme za nadzor krav.
  • Avtomatski kombajni.
  • Avtomatizirani klicni centri.
  • Filtri v SnapChat. (no, vsaj nekaj koristnega!)

Toda glavna stvar in ne najbolj očitna: "Novih idej ni več ali pa ne bodo prinesle takojšnjega kapitala." Nevronske mreže so rešile na desetine problemov. In odločali bodo še več. Vse očitne ideje, ki so obstajale, so spodbudile številne startupe. Toda vse, kar je bilo na površini, je bilo že pobrano. V zadnjih dveh letih nisem naletel niti na eno novo idejo za uporabo nevronskih mrež. Niti enega novega pristopa (no, v redu, z GAN-ji je nekaj težav).

In vsak naslednji zagon je vedno bolj kompleksen. Ne potrebuje več dveh tipov, ki trenirata nevron z uporabo odprtih podatkov. Potrebuje programerje, strežnik, ekipo markerjev, kompleksno podporo itd.

Posledično je manj startupov. A proizvodnje je več. Ali morate dodati prepoznavanje registrskih tablic? Na trgu je na stotine strokovnjakov z ustreznimi izkušnjami. Lahko nekoga zaposliš in v parih mesecih bo tvoj zaposleni naredil sistem. Ali kupite že pripravljeno. Toda narediti nov zagon?.. Noro!

Ustvariti morate sistem za sledenje obiskovalcem – zakaj bi plačevali kup licenc, ko pa lahko v 3-4 mesecih naredite svojo lastno in jo izostrite za svoje podjetje.

Zdaj gredo nevronske mreže skozi isto pot, kot jo je šlo na desetine drugih tehnologij.

Se spomnite, kako se je pojem "razvijalec spletnih strani" spremenil od leta 1995? Trg še ni zasičen s strokovnjaki. Strokovnjakov je zelo malo. Lahko pa stavim, da čez 5-10 let ne bo velike razlike med Java programerjem in razvijalcem nevronske mreže. Oba specialista bo dovolj na trgu.

Obstajal bo preprosto razred problemov, ki jih bodo lahko rešili nevroni. Pojavila se je naloga - najeti strokovnjaka.

"Kaj je naslednje? Kje je obljubljena umetna inteligenca?«

Ampak tukaj je majhen, a zanimiv nesporazum :)

Tehnološki sklop, ki obstaja danes, očitno ne bo pripeljal do umetne inteligence. Ideje in njihova novost so se v veliki meri izčrpali. Pogovorimo se o tem, kaj drži trenutno stopnjo razvoja.

Omejitve

Začnimo s samovozečimi avtomobili. Zdi se jasno, da je z današnjo tehnologijo mogoče narediti popolnoma avtonomne avtomobile. Toda čez koliko let se bo to zgodilo, ni jasno. Tesla verjame, da se bo to zgodilo čez nekaj let -


Obstaja veliko drugih specialisti, ki ga ocenjujejo na 5-10 let.

Najverjetneje se bo po mojem mnenju čez 15 let sama infrastruktura mest spremenila tako, da bo pojav avtonomnih avtomobilov postal neizogiben in bo postal njegovo nadaljevanje. Vendar tega ni mogoče šteti za inteligenco. Sodobna Tesla je zelo zapleten cevovod za filtriranje, iskanje in prekvalificiranje podatkov. To so pravila-pravila-pravila, zbiranje podatkov in filtri nad njimi (tukaj tukaj O tem sem pisal malo več, ali gledam od to oznake).

Prva težava

In tukaj vidimo prvi temeljni problem. Veliki podatki. Prav to je tisto, kar je rodilo trenutni val nevronskih mrež in strojnega učenja. Da bi dandanes naredili nekaj kompleksnega in avtomatskega, potrebujete veliko podatkov. Ne samo veliko, ampak zelo, zelo veliko. Potrebujemo avtomatizirane algoritme za njihovo zbiranje, označevanje in uporabo. Želimo, da avto vidi tovornjake, obrnjene proti soncu - najprej jih moramo zbrati zadostno število. Želimo, da avto ne ponori s kolesom, pritrjenim na prtljažnik - več vzorcev.

Poleg tega en primer ni dovolj. Na stotine? na tisoče?

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Drugi problem

Drugi problem — vizualizacija tega, kar je razumela naša nevronska mreža. To je zelo netrivialna naloga. Do zdaj le malo ljudi razume, kako si to predstavljati. Ti članki so zelo novi, to je le nekaj primerov, čeprav oddaljenih:
Vizualizacija obsedenost s teksturami. Dobro pokaže, na kaj se nevron nagiba k fiksaciji + kaj zaznava kot izhodiščno informacijo.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?
Vizualizacija Pozornost pri prevodi. Pravzaprav je privlačnost pogosto mogoče uporabiti ravno za prikaz, kaj je povzročilo takšno mrežno reakcijo. Takšne stvari sem videl tako pri rešitvah za odpravljanje napak kot pri izdelkih. Na to temo je veliko člankov. Toda bolj ko so podatki zapleteni, težje je razumeti, kako doseči robustno vizualizacijo.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

No, ja, dobri stari niz "poglej, kaj je znotraj mreže filtri" Te slike so bile popularne pred 3-4 leti, vendar so vsi hitro ugotovili, da so slike lepe, vendar nimajo velikega pomena.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Nisem omenil na desetine drugih pripomočkov, metod, vdorov, raziskav o tem, kako prikazati notranjost omrežja. Ali ta orodja delujejo? Ali vam pomagajo hitro razumeti, v čem je težava, in odpraviti napake v omrežju?.. Dobiti zadnji odstotek? No, približno enako je:

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Vsako tekmovanje lahko spremljate na Kaggle. In opis, kako ljudje sprejemajo končne odločitve. Zložili smo 100–500–800 enot modelov in uspelo je!

Seveda pretiravam. Toda ti pristopi ne zagotavljajo hitrih in neposrednih odgovorov.

Če imate dovolj izkušenj, ko ste preučili različne možnosti, lahko podate sodbo o tem, zakaj se je vaš sistem tako odločil. A obnašanje sistema bo težko popraviti. Namestite berglo, premaknite prag, dodajte nabor podatkov, vzemite drugo zaledno omrežje.

Tretji problem

Tretji temeljni problem — mreže učijo statistiko, ne logike. Statistično to obraz:

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Logično, ni zelo podobno. Nevronske mreže se ne naučijo ničesar zapletenega, razen če niso v to prisiljene. Vedno učijo najpreprostejše možne znake. Imaš oči, nos, glavo? To je torej obraz! Ali navedite primer, ko oči ne pomenijo obraza. In spet – na milijone primerov.

Na dnu je dovolj prostora

Rekel bi, da so ti trije globalni problemi tisti, ki trenutno omejujejo razvoj nevronskih mrež in strojnega učenja. In kjer ga te težave niso omejile, se že aktivno uporablja.

To je konec? So nevronske mreže pripravljene?

Neznano. Vsi pa seveda upajo, da ne.

Pristopov in usmeritev za reševanje temeljnih problemov, ki sem jih izpostavil zgoraj, je veliko. Toda do zdaj noben od teh pristopov ni omogočil narediti nečesa bistveno novega, rešiti nečesa, kar še ni rešeno. Zaenkrat so vsi temeljni projekti narejeni na podlagi stabilnih pristopov (Tesla) ali pa ostajajo testni projekti inštitutov ali korporacij (Google Brain, OpenAI).

Grobo rečeno, glavna usmeritev je ustvariti predstavitev vhodnih podatkov na visoki ravni. V nekem smislu "spomin". Najenostavnejši primer pomnilnika so različne "vdelave" - ​​slikovne predstavitve. No, na primer vsi sistemi za prepoznavanje obraza. Omrežje se nauči iz obraza pridobiti neko stabilno predstavitev, ki ni odvisna od vrtenja, osvetlitve ali ločljivosti. V bistvu omrežje minimizira metriko "različni obrazi so daleč" in "enaki obrazi so blizu."

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Za takšno usposabljanje je potrebnih na desetine in stotisoče primerov. Toda rezultat nosi nekaj temeljnih elementov »Enkratnega učenja«. Zdaj ne potrebujemo na stotine obrazov, da bi si zapomnili osebo. Samo en obraz in to je vse, kar smo pa ugotovimo!
Obstaja samo ena težava ... Mreža se lahko nauči samo dokaj preprostih predmetov. Ko poskušate razlikovati ne obraze, ampak na primer "ljudi po oblačilih" (naloga Ponovna identifikacija) - kakovost pade za več stopenj velikosti. In omrežje se ne more več naučiti dokaj očitnih sprememb v kotih.

In učenje iz milijonov primerov je tudi zabavno.

Obstaja delo za znatno zmanjšanje volitev. Takoj se lahko na primer spomnimo enega prvih del na OneShot učenje od Googla:

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Takih del je veliko, npr 1 ali 2 ali 3.

Obstaja samo en minus - običajno usposabljanje dobro deluje na nekaterih preprostih, "MNIST" primerih. In ko preidete na zapletene naloge, potrebujete veliko bazo podatkov, model predmetov ali nekakšno čarovnijo.
Na splošno je delo na treningu One-Shot zelo zanimiva tema. Najdeš veliko idej. Toda večinoma dve težavi, ki sem ju naštel (predhodno usposabljanje na ogromnem naboru podatkov / nestabilnost na kompleksnih podatkih), močno ovirata učenje.

Po drugi strani pa se GAN-generativna kontradiktorna omrežja približujejo temi vdelave. Verjetno ste na Habréju prebrali kup člankov na to temo. (1, 2,3)
Značilnost GAN je oblikovanje nekega notranjega prostora stanja (v bistvu enaka vdelava), ki vam omogoča risanje slike. Lahko je obrazi, je lahko dejavnost.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Težava z GAN je v tem, da bolj ko je ustvarjen objekt zapleten, težje ga je opisati v logiki "generator-diskriminator". Posledično so edine prave aplikacije GAN, o katerih je slišati, DeepFake, ki spet manipulira z obraznimi predstavitvami (za katere obstaja ogromna baza).

Videl sem zelo malo drugih uporabnih uporab. Običajno nekakšna zvijača, ki vključuje dodelavo risb slik.

In spet. Nihče nima pojma, kako nam bo to omogočilo prehod v svetlejšo prihodnost. Predstavljanje logike/prostora v nevronski mreži je dobro. Potrebujemo pa ogromno primerov, ne razumemo, kako nevron to predstavlja sam po sebi, ne razumemo, kako pripraviti nevron, da si zapomni neko res kompleksno idejo.

Okrepitveno učenje - to je pristop iz popolnoma druge smeri. Zagotovo se spomnite, kako je Google premagal vse v Go. Nedavne zmage v Starcraftu in Doti. A tukaj vse še zdaleč ni tako rožnato in obetavno. Najbolje govori o RL in njegovih kompleksnostih ta članek.

Če na kratko povzamem, kar je napisal avtor:

  • Standardni modeli v večini primerov ne ustrezajo / delujejo slabo
  • Praktične probleme je lažje rešiti na druge načine. Boston Dynamics ne uporablja RL zaradi njegove kompleksnosti/nepredvidljivosti/kompletnosti računanja
  • Da RL deluje, potrebujete kompleksno funkcijo. Pogosto je težko ustvarjati/pisati
  • Modele je težko trenirati. Morate porabiti veliko časa, da se napolnite in izstopite iz lokalnega optimuma
  • Posledično je model težko ponoviti, model je ob najmanjših spremembah nestabilen
  • Pogosto prekriva neke vrste levičarske vzorce, do generatorja naključnih števil

Ključno je, da RL še ne deluje v proizvodnji. Google ima nekaj poskusov ( 1, 2 ). Vendar nisem videl niti enega sistema izdelkov.

Spomin. Slaba stran vsega zgoraj opisanega je pomanjkanje strukture. Eden od pristopov, s katerimi poskušamo vse to pospraviti, je zagotoviti nevronski mreži dostop do ločenega pomnilnika. Da si tam lahko beleži in prepisuje rezultate svojih korakov. Nato lahko nevronsko mrežo določimo s trenutnim stanjem pomnilnika. To je zelo podobno klasičnim procesorjem in računalnikom.

Najbolj znan in priljubljen članek — od DeepMind:

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Zdi se, da je to ključ do razumevanja inteligence? Ampak verjetno ne. Sistem še vedno zahteva ogromno podatkov za usposabljanje. In deluje predvsem s strukturiranimi tabelarnimi podatki. Še več, ko Facebook odločila podoben problem, nato pa so ubrali pot "zajebi spomin, samo naredi nevron bolj zapleten in imej več primerov - in naučil se bo sam."

Razpletanje. Drug način za ustvarjanje smiselnega spomina je, da vzamete iste vdelave, vendar med usposabljanjem uvedete dodatna merila, ki bi vam omogočila, da v njih poudarite »pomene«. Na primer, želimo usposobiti nevronsko mrežo za razlikovanje med človeškim vedenjem v trgovini. Če bi sledili standardni poti, bi morali narediti ducat mrež. Eden išče osebo, drugi ugotavlja, kaj počne, tretji je njegova starost, četrti je njegov spol. Ločena logika gleda na del trgovine, kjer počne/je za to usposobljena. Tretji določa njegovo trajektorijo itd.

Ali pa, če bi obstajala neskončna količina podatkov, bi bilo mogoče usposobiti eno omrežje za vse možne rezultate (očitno je, da takšnega niza podatkov ni mogoče zbrati).

Pristop razpletanja nam pravi – usposobimo mrežo, da bo sama razlikovala med koncepti. Tako, da bi na podlagi videa tvoril embedding, kjer bi eno področje določalo dogajanje, eno bi določalo položaj na tleh v času, eno bi določalo višino osebe in eno bi določalo spol osebe. Hkrati pa bi pri treningu želel, da omrežja skoraj ne spodbujam s tako ključnimi koncepti, temveč da izpostavi in ​​združi področja. Takih člankov je kar nekaj (nekateri 1, 2, 3) in na splošno so precej teoretični.

A ta smer bi vsaj teoretično morala pokrivati ​​na začetku naštete probleme.

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Razčlenitev slike glede na parametre "barva stene/barva tal/oblika predmeta/barva predmeta/itd."

Ali je mehurček strojnega učenja počil ali pa je začetek nove zore?

Razčlenitev obraza glede na parametre "velikost, obrvi, orientacija, barva kože itd."

Drugo

Obstaja veliko drugih, ne tako globalnih področij, ki vam omogočajo, da nekako zmanjšate bazo podatkov, delate z bolj heterogenimi podatki itd.

pozornost. Verjetno ni smiselno, da bi to ločevali kot ločeno metodo. Samo pristop, ki izboljša druge. Njemu je posvečenih veliko člankov (1,2,3). Bistvo pozornosti je izboljšati odziv omrežja posebej na pomembne predmete med usposabljanjem. Pogosto z nekakšno zunanjo ciljno oznako ali majhno zunanjo mrežo.

3D simulacija. Če narediš dober 3D motor, lahko z njim pogosto pokriješ 90% podatkov o treningu (videl sem celo primer, ko je dober motor pokril skoraj 99% podatkov). Obstaja veliko idej in trikov o tem, kako omogočiti, da omrežje, usposobljeno za 3D motor, deluje z uporabo resničnih podatkov (fina nastavitev, prenos sloga itd.). Toda izdelava dobrega motorja je pogosto za več vrst velikosti težja od zbiranja podatkov. Primeri izdelave motorjev:
Usposabljanje robota (google, braingarden)
usposabljanje priznanje blaga v trgovini (v dveh projektih, ki sva jih naredila, pa bi zlahka šlo brez tega).
Usposabljanje pri Tesli (spet zgornji video).

Ugotovitve

Celoten članek je v nekem smislu sklep. Verjetno je bilo glavno sporočilo, ki sem ga želel dati, "brezplačnikov je konec, nevroni ne zagotavljajo več preprostih rešitev." Zdaj moramo trdo delati, da sprejmemo zapletene odločitve. Ali trdo delati pri zapletenih znanstvenih raziskavah.

Na splošno je tema sporna. Morda imate bralci več zanimivih primerov?

Vir: www.habr.com

Dodaj komentar