"Težak podatkovni znanstvenik postane kot izvršni direktor srednje velikega podjetja." Strokovnjak za strojno učenje Yandex.Taxi – o tem, kako podatki napovedujejo prihodnost in oblikujejo svet

Skoraj eno leto je minilo, odkar je FIVT začel nenavadno temo – inovativno delavnico. Njegovo bistvo je ustvarjanje IT startupov s strani študentskih ekip pod vodstvom izkušenih mentorjev. Izkazalo se je precej dobro: zahvaljujoč tečaju je nekdo preživel del poletja v dolini Kremievaya, nekdo je prejel donacijo v višini 800.000 rubljev za razvoj projekta, ABBYY nekoga drugega pa je pripravljen v celoti unovčiti projekt. In to še niso vsi rezultati delavnice!

V začetku leta 2011 so se dijaki 3. letnika FIVT zbrali v zbornici in jim povedali: v naslednjem letu boste morali ustvariti svoj startup. Študenti so to idejo dojemali dvoumno: sploh ni bilo jasno, kako to narediti, odgovornost pa je bila nenavadna - navsezadnje je bilo treba narediti tehnološki posel in ne drugega izobraževalnega projekta. Evo, kaj o tem misli zmagovalec študentska olimpijada MIPT iz fizike, študent oddelka Yandeska Viktor Kantor:

Ko sem ob sprejemu izbral FIVT, sem upal, da bomo imeli kaj podobnega. Zato sem vesel, da sem upal z razlogom. Med letom je bilo čutiti, da se predmet še oblikuje, v njem je veliko novega, veliko vprašanj se je izkazalo za spornih ne le za študente, ampak tudi za organizatorje, a na splošno mislim, da so bile težnje pozitivne. Ta tečaj mi je bil všeč.

Za olajšanje dela študentov so bili povabljeni različni kustosi, ki so predlagali svoje ideje za izgradnjo inovativnih podjetij. Med njimi so bili popolnoma različni ljudje: od študentov višjih letnikov in podiplomskih študentov MIPT do svetovalca Ernst & Younga za inovacije Jurija Pavloviča Ammosova (bil je vodja celotnega predmeta) in Mihaila Batina, ki se ukvarja z regenerativno medicino in vprašanji podaljšanja življenja. Posledično so fiziki izbrali ideje, ki so jim bile najbolj zanimive, kustosi so se pridružili ekipam in začelo se je težko, a vznemirljivo delo.

Skoraj eno leto, ki je minilo od tega trenutka, so se fantje soočili s številnimi težavami, od katerih so bile nekatere odpravljene. Zdaj lahko ocenite njihove rezultate - kljub težavam so se fantje spopadli. Študentom MIPT (poleg FIVS so se v proces vključili tudi nekateri študenti FOPF in drugih fakultet) je uspelo pripraviti več zelo zanimivih in izvedljivih projektov:

Askeroid (prej Ask Droid) - iskanje pametnih telefonov ( Anastasia Uryasheva)

Aplikacija za Android, ki omogoča priročno iskanje v velikem številu iskalnikov. Nekateri strokovnjaki so pokazali zanimanje za razvoj in posledično je Anastasia vse preteklo poletje preživela v enem najbolj znanih inkubatorjev v Silicijevi dolini - Plug & Play. učenje osnov tehnološkega podjetništva in pogovor z mednarodnimi strokovnjaki tveganega kapitala.

1minute.ru - ena minuta za vedno (Lev Grunin)

Ta projekt omogoča vsakomur preprosto, hitro in popolnoma brezplačno dobrodelno delo. Model je preprost: oglaševalci na spletnem mestu ponujajo določen nabor dejavnosti, uporabniki v njih prostovoljno sodelujejo, ves denar od oglaševanja se prenese v dobrodelno fundacijo. V tednu dni po zagonu je projekt zbral več kot 6500 uporabnikov in ne bo zadovoljen z že doseženim. Zahvaljujoč Levu in njegovi ekipi bo tako prejelo 600 otrok iz sirotišnic Novo leto cenjena darila Božička. Ste že porabili eno minuto za dobro delo?!

Embedded Desktop - računalnik v vašem telefonu (Alexey Vukolov)

Aplikacija, ki omogoča združevanje zmogljivosti računalnika in mobilnosti telefona v enem ohišju, je izjemno uporaben izdelek za zaposlene ljudi, ki pogosto potujejo poslovno. Dovolj je, da ga namestite na pametni telefon in uporabnik bo lahko "pridobil" svoj računalnik v katerem koli hotelu, pisarni in pravzaprav povsod, kjer lahko najdete monitor (primeren je tudi televizor), tipkovnico in miško. Projekt je prejel nepovratna sredstva za razvoj ideje in je bil predstavljen na razstavi Technovation Cup, ekipa pa za prejeti denar že aktivno kupuje opremo. Ameriški proizvajalec procesorjev MIPS ima velik interes za razvoj.

Smart Tagger - semantično iskanje dokumentov (Victor Kantor)

Kaj pa, če se spomnite, da je bilo nekje v vašem nabiralniku zelo pomembno pismo, ki govori o zadnji epizodi Teorije velikega poka, a se hkrati ne spomnite nobene ključne besede iz besedila? Iskanje Yandex in Google je nemočno. Na pomoč bo priskočil razvoj Smart Taggerja – »pametni« program, ki uporablja semantično iskanje, vam bo dal vsa besedila, katerih pomen je prepleten s priljubljeno TV-serijo. Projekt je prejel štipendijo na U.M.N.I.K. skupaj 400.000 rubljev!

MathOcr - prepoznavanje formule (Victor Prun)

ABBYY je predlagal zanimivo nalogo za implementacijo - ustvariti program, ki bi prepoznal matematične formule katere koli zahtevnosti. Študentje FIVT so v sodelovanju z zainteresiranimi fopfji opravili nalogo – modul resnično prepozna formule, skenirane iz učbenikov o matan ali fiziki. Rezultat: ABBYY je pripravljen kupiti ta izdelek za veliko denarja.

- Ali lahko s povsem primitivnim primerom opišete, kako deluje strojno učenje?

Lahko. Obstaja primer metode strojnega učenja, imenovano Decision Tree, ena najstarejših stvari. Naredimo to zdaj. Recimo, da vas abstraktna oseba povabi na zmenek. Kaj je za vas pomembno?

- Prvič, poznam ga ali ne ...

(Victor to zapiše na tablo.)

… Če ne vem, potem moram odgovoriti na vprašanje, ali je privlačno ali ne.

In če veš, je vseeno? Mislim, da razumem, to je podružnica območja prijateljev! Na splošno pišem, če ne veste in neprivlačno, potem je odgovor "da ne, verjetno". Če veste, je odgovor pritrdilen.

- Če vem, je tudi pomembno!

Ne, to bo podružnica območja prijateljev.

V redu, pokažimo tukaj, ali je zanimivo ali ne. Kljub temu, ko človeka ne poznaš, je prva reakcija na videz, s prijateljem že vidimo, kaj misli in kako.

Naredimo drugače. Ne glede na to, ali je ambiciozen ali ne. Če je ambiciozen, ga bo težko združiti, želel si bo tudi več. In neambiciozni bodo tolerirali.

(Victor dokonča odločilno drevo.)

Pripravljen. Zdaj lahko napovedujete, s katerim fantom boste najverjetneje hodili. Mimogrede, nekatere storitve za zmenke napovedujejo takšne stvari. Po analogiji lahko predvidite, koliko izdelkov bodo kupci kupili in kje bodo ljudje ob tem času dneva.

Odgovori so lahko ne samo "da" in "ne", ampak tudi v obliki številk. Če želite natančnejšo napoved, lahko naredite več teh dreves in jih povprečite. In s pomočjo tako preproste stvari lahko dejansko napovedujete prihodnost.

Zdaj pa si predstavljajte, če je bilo ljudem težko pripraviti takšno shemo pred dvesto leti? Absolutno ne! Ta shema ne prinaša nobenega raketnega občutka. Strojno učenje kot fenomen obstaja že približno pol stoletja. Ronald Fisher je začel napovedovati na podlagi podatkov v začetku 20. stoletja. Vzel je perunike in jih razporedil po dolžini in širini listov in cvetnih listov, glede na te parametre je določil vrsto rastline.

V industriji se strojno učenje aktivno uporablja v zadnjih desetletjih: močni in razmeroma poceni stroji, ki so potrebni za obdelavo velikih količin podatkov, na primer za takšna drevesa odločitev, so se pojavili ne tako dolgo nazaj. A vseeno nam vzame dih: te stvari narišemo za vsako nalogo in jih uporabimo za napovedovanje prihodnosti.

- No, zagotovo ne bolje kot katera koli hobotnica, ki napoveduje nogometne tekme ...

Ne, no, kje smo pri hobotnicah. Čeprav imamo več variabilnosti. Strojno učenje lahko zdaj prihrani čas, denar in izboljša udobje našega življenja. Strojno učenje je pred nekaj leti premagalo ljudi pri klasifikaciji slik. Računalnik lahko na primer prepozna 20 pasem terierjev in navadna osebašt.

- In ko analizirate uporabnike, ali je vsaka oseba za vas nabor številk?

Grobo rečeno, da. Ko delamo s podatki, so vsi predmeti, vključno z obnašanjem uporabnikov, opisani z določenim naborom številk. In te številke odražajo posebnosti vedenja ljudi: kako pogosto se vozijo s taksijem, kateri razred taksijev uporabljajo, kam običajno hodijo.

Zdaj aktivno gradimo podobne modele, da bi z njihovo uporabo identificirali skupine ljudi s podobnim vedenjem. Ko uvedemo novo storitev ali želimo promovirati staro, jo ponudimo tistim, ki jih bo to zanimalo.

Zdaj imamo na primer storitev - dva otroška sedeža v taksiju. S to novico lahko pošiljamo vsiljeno sporočilo ali pa o tem obvestimo le določen krog ljudi. Med letom se je nabralo določeno število uporabnikov, ki so v komentarjih zapisali, da potrebujejo dva otroška sedeža. Našli smo jih in ljudi, ki so jim podobni. Konvencionalno so to ljudje, starejši od 30 let, ki redno potujejo in imajo radi sredozemsko kuhinjo. Čeprav je seveda znakov veliko več, sem to jaz za primer.

- Tudi takšne tankosti?

To je preprosta zadeva. Vse se izračuna z iskalnimi poizvedbami.

In v aplikaciji lahko nekako deluje? Na primer, ali veste, da sem berač in sem naročen na skupine, kot je "Kako preživeti s 500 rubljev na mesec" - ponujajo mi samo pokvarjene poceni avtomobile, naročen na novice SpaceX - in občasno dobim Teslo?

Lahko deluje na ta način, vendar Yandex takšnih stvari ne odobrava, ker je to diskriminacija. Ko personalizirate storitev, je bolje ponuditi ne najbolj sprejemljivo, ampak najboljšo, ki je na voljo, in tisto, kar je osebi všeč. In porazdelitev po logiki "ta rabi boljši avto, ta pa manj dobrega" je zlobna.


Vsakdo ima sprevržene želje in včasih morate najti ne recept za mediteransko jed, ampak na primer slike o koprofiliji. Bo personalizacija delovala tudi v tem primeru?

Vedno obstaja zasebni način.

Če nočem, da bi kdo vedel za moje zanimanje ali, recimo, da so k meni prišli prijatelji in si želeli ogledati kakšno smeti, potem je bolje uporabiti način brez beleženja zgodovine.

Odločite se lahko tudi, katere storitve podjetja boste uporabili, na primer Yandex ali Google.

- Ali obstaja razlika?

Kompleksno vprašanje. Ne vem za druge, ampak Yandex je trd z zaščito osebnih podatkov. Posebej nadzorujte zaposlene.

- Se pravi, če sem se razšla s fantom, ne bom mogla ugotoviti, ali je šel na to dačo ali ne?

Tudi če delate za Yandex. To je seveda žalostno, a ja, tega ne bo mogoče izvedeti. Večina zaposlenih sploh nima dostopa do teh podatkov. Vse je šifrirano. Preprosto je: ne morete vohuniti za ljudmi, to so osebni podatki.

Mimogrede, imeli smo zanimiv primer na temo ločitve s fanti. Ko smo predvidevali točko "B" - ciljno točko v taksiju, smo uvedli namige. Poglej.

(Victor vstopi v aplikacijo Yandex.Taxi.)

Taksi na primer misli, da sem doma. Povabi me, naj grem v službo ali na univerzo RUDN (tam predavam v okviru tečaja strojno učenje Podatkovno rudarjenje v akciji). In na neki točki, ko smo razvijali te nasvete, smo ugotovili, da ne smemo ogroziti uporabnika. Nekdo lahko vidi točko "B". Iz teh razlogov smo zavrnili ponudbo mest na podlagi podobnosti. In potem sediš na dostojnem mestu s spodobnimi ljudmi, naročiš taksi in ti napišejo: "Poglej, še nisi bil v tem lokalu!"

- Kakšne modre pike utripajo na vašem zemljevidu?

To so prevzemne točke. Te točke kažejo, kje je najbolj priročno poklicati taksi. Konec koncev lahko pokličete na kraj, kjer bo klicati popolnoma neprijetno. Toda na splošno lahko pokličete na katero koli točko.

- Da, katero koli. S tem sem nekako preletel dva bloka.

V Zadnje čase Z GPS-om so bile različne težave, kar je pripeljalo do različnih smešnih situacij. Ljudje, na primer, na Tverski, je navigacija vrgla skozi Tihi ocean... Kot lahko vidite, včasih pride do napak in več kot dva bloka.

- In če znova zaženete aplikacijo in jo znova potisnete, se cena spremeni za nekaj rubljev. zakaj?

Če povpraševanje preseže ponudbo, algoritem samodejno generira množilni koeficient - to pomaga tistim, ki morajo čim prej zapustiti, da uporabljajo taksi, tudi v obdobjih velikega povpraševanja. Mimogrede, z uporabo strojnega učenja lahko predvidite, kje bo povpraševanje večje v, na primer, eni uri. To nam pomaga, da voznikom povemo, kje bo več naročil, tako da ponudba ustreza povpraševanju.

- Se vam ne zdi, da bo Yandex.Taxi kmalu ubil celoten trg taksijev?

Mislim, da ne. Smo za zdravo konkurenco in se je ne bojimo.

Sam na primer uporabljam različne taksi storitve. Čakalna doba mi je pomembna, zato pregledam več aplikacij, kateri taksi bo prišel hitreje.


- Povezali ste se z Uberjem. Kaj za?

Ni v moji pristojnosti komentirati. Mislim, da je združevanje zelo smiselna odločitev.

V Nemčiji je neki tip na svoje drone namestil kad in tako odletel po burger. Ste mislili, da je prišel čas za obvladovanje zračnega prostora?

Za zračni prostor pa ne vem. Novice spremljamo v duhu "Uber je na ladje lansiral taksi", o zraku pa ne morem reči ničesar.

- Kaj pa taksi droni?

Tukaj je zanimiva točka. Razvijamo jih, vendar moramo razmišljati, kako jih natančno uporabiti. Prezgodaj je napovedovati, v kakšni obliki in kdaj se bodo pojavili na ulicah, vendar delamo vse, da razvijemo tehnologijo za popolnoma avtonomen avtomobil, kjer človeški voznik sploh ne bo potreben.

- Ali obstaja strah, da bi lahko vdrli v programsko opremo dronov, da bi lahko upravljali avto na daljavo?

Tveganja so vedno in kjer koli obstajajo tehnologije in pripomočki. Toda skupaj z razvojem tehnologij se razvija še ena smer - njihova zaščita in varnost. Vsi, ki se tako ali drugače ukvarjajo z razvojem tehnologij, se ukvarjajo z varnostnimi sistemi.

- Kakšne uporabniške podatke zbirate in kako jih varujete?

Zbiramo anonimne uporabniške podatke, na primer kje, kdaj in kje je bilo potovanje opravljeno. Vse pomembno je haširanje.

- Ali menite, da se bo število delovnih mest zmanjšalo zaradi dronov?

Mislim, da bo samo še večja. Vseeno je treba tudi te drone nekako servisirati. To je seveda malo stresna situacija, spremeni svojo specialnost, ampak kaj naj naredim.

- Gref na vsakem svojem predavanju pravi, da bo človek vsaj trikrat korenito spremenil poklic.

Ne morem našteti nobene posebnosti, ki bo trajala večno. Razvijalec ne dela vse življenje v istem jeziku in z istimi tehnologijami. Povsod morate obnoviti. S strojnim učenjem jasno čutim, kako fantje, ki so šest let mlajši od mene, razmišljajo veliko hitreje od mene. Hkrati pa ljudje pri 40 ali 45 letih to še bolj občutijo.

- Izkušnje nimajo več vloge?

Igra. Toda metode se spremenijo, lahko prideš na področje, kjer na primer globoko učenje ni bilo uporabljeno, tam delaš nekaj časa, potem se metode globokega učenja izvajajo povsod in o tem ne razumeš ničesar. In to je vse. Vaše izkušnje so lahko uporabne le pri načrtovanju dela ekipe, pa še to ne vedno.

- Ali je vaš poklic podatkovni znanstvenik, ali je po njem povpraševanje?

Povpraševanje po strokovnjakih za podatkovne znanosti je preprosto preseženo. Očitno je zdaj obdobje norega hype. Hvala bogu je blockchain pomagal, da se je ta hrup nekoliko umiril. Strokovnjaki za blockchain so še hitreje razstavljeni.

Toda mnoga podjetja zdaj mislijo, da bodo njihovi vrtovi takoj zacveteli, če vlagajo v strojno učenje. To ni res. Strojno učenje bi moralo reševati specifične probleme, ne samo obstajati.

Včasih želi banka narediti priporočilni sistem storitev za uporabnike. Sprašujemo: "Ali menite, da bo to ekonomsko upravičeno?" Odgovorijo: »Ja, vseeno nam je. Naredi. Vsi enaki sistemi priporočil, bomo v trendu."

Bolečina je, da res koristne stvari za podjetje ni mogoče narediti v enem dnevu. Paziti morate, kako se bo sistem naučil. In na začetku vedno dela z napakami, med treningom ji morda manjka kakšen podatek. Napake popraviš, potem spet popraviš in celo vse ponoviš. Po tem se morate konfigurirati tako, da sistem deluje v produkciji, da je stabilen in razširljiv, še je čas. Posledično en projekt traja šest mesecev, leto ali več.


Če pogledate metode strojnega učenja kot črno skrinjico, potem zlahka spregledate, kako se začne dogajati kakšna neumnost. Obstaja bradata zgodba. Vojska je prosila za razvoj algoritma, s katerim je mogoče analizirati, ali je na sliki tank ali ne. Raziskovalci so naredili, testirali, kakovost je odlična, vse je super, dano vojski. Pride vojska in reče, da nič ne deluje. Znanstveniki začnejo nervozno razumeti. Izkazalo se je, da so vse slike s tankom, ki jih je prinesla vojska, imele v kotu kljukico s pisalom. Algoritem se je brezhibno naučil najti kljukico, o rezervoarju ni vedel ničesar. Seveda na novih slikah ni bilo kljukic.

Spoznal sem otroke, ki razvijajo lastne sisteme dialoga. Ste kdaj pomislili, da morate z otroki sodelovati?

Že dolgo hodim na najrazličnejše dogodke za šolarje, predavam o strojnem učenju. In mimogrede, eno od tem me je naučil desetošolec. Popolnoma sem bil prepričan, da bo moja zgodba dobra in zanimiva, bil sem ponosen nase, začel sem oddajati, dekle pa je rekel: "Oh, hočemo to stvar zmanjšati." Gledam in razmišljam, ampak res, zakaj, in res se da minimizirati, sploh pa ni kaj dokazovati. Minilo je že nekaj let, zdaj posluša naša predavanja kot študentka Phystech. Yandex, mimogrede, ima Yandex.Lece, kjer lahko študentje brezplačno pridobijo osnovno znanje programiranja.

- Svetovanje univerzam in fakultetam, kjer se zdaj poučuje strojno učenje.

Obstaja MIPT, fakulteti FIVT in FUPM. HSE ima tudi čudovito fakulteto za računalništvo, Moskovska državna univerza pa ima strojno učenje na svojem VMK. No, zdaj lahko poslušate naš tečaj na univerzi RUDN.

Kot sem rekel, je ta poklic povpraševan. Zelo dolgo so se ljudje, ki so prejeli tehnično izobrazbo, ukvarjali s povsem različnimi stvarmi. Strojno učenje je odličen primer, kjer so se vse stvari, iz katerih so se ljudje naučili tehnično izobraževanje, zdaj so potrebni, uporabni in dobro plačani.

- Kako dobro?

Poimenujte znesek.

- 500 tisoč na mesec.

Lahko, samo da niste navaden podatkovni znanstvenik. Toda v nekaterih podjetjih lahko zelo zelo pripravnik za preprosto delo prejme 50 tisočakov.Razpon je zelo velik. Na splošno se lahko plača težkega podatkovnega znanstvenika primerja s plačo generalnega direktorja nekega povprečnega podjetja. V mnogih podjetjih poleg plače na zaposlenega pade veliko žemljic, in če je jasno, da človek ni prišel zato, da bi v svoj življenjepis napisal dobro blagovno znamko, ampak res delal, potem bo vse v redu z njega.

V okviru projekta ABC AI v sodelovanju z MIPT smo že pisali o tako imenovanih, ki vam omogočajo, da "rastete" programe po načelih in zakonih darvinistične evolucije. Vendar pa je ta pristop k umetni inteligenci seveda "gost iz prihodnosti." Toda kako sistemi umetna inteligenca ustvariti danes? Kako so usposobljeni? Viktor Kantor, višji predavatelj na Oddelku za algoritme in programske tehnologije na Moskovskem inštitutu za fiziko in tehnologijo, vodja skupine za analizo vedenja uporabnikov Podatki Yandex Tovarna.

Glede na nedavno poročilo raziskovalnega podjetja Gartner, ki redno posodablja svoj "cikel zrelosti tehnologije", je strojno učenje danes na vrhu vseh IT pričakovanj. To ni presenetljivo: v zadnjih nekaj letih se je strojno učenje premaknilo iz področja zanimanja ozkega kroga matematikov in specialistov za teorijo algoritmov in prodrlo najprej v besednjak IT poslovnežev, nato pa v svet navadni ljudje. Zdaj, ko obstaja taka stvar, kot so nevronske mreže s svojo posebno "čarovnijo", ve vsak, ki je uporabljal aplikacijo Prisma, iskal pesmi s Shazamom ali videl slike, ki so bile prenesene skozi DeepDream.

Vendar je ena stvar uporabljati tehnologijo, druga stvar pa razumeti, kako deluje. Pogoste besede, kot sta »računalnik se lahko nauči, če mu daš namig« ali »nevronska mreža je sestavljena iz digitalnih nevronov in je urejena kot človeški možgani«, lahko nekomu pomagajo, vendar pogosteje samo zmedejo situacijo. Tisti, ki se bodo resno ukvarjali z matematiko, ne potrebujejo priljubljenih besedil: zanje so na voljo učbeniki in odlični spletni tečaji. Poskusili bomo iti na srednjo pot: razložiti, kako dejansko poteka učenje na najpreprostejši problem, in nato pokazati, kako je mogoče isti pristop uporabiti za reševanje zanimivih problemov v resničnem življenju.

Kako se stroji učijo

Za začetek, da bi razumeli, kako natančno poteka strojno učenje, opredelimo koncepte. Arthur Samuel, eden od pionirjev tega področja, opredeljuje strojno učenje kot metode, ki »računalnikom omogočajo učenje, ne da bi jih neposredno programirali«. Obstajata dva široka razreda metod strojnega učenja: nadzorovano učenje in nenadzorovano učenje. Prvi se uporablja, ko moramo na primer naučiti računalnik iskati fotografije s podobami mačk, drugi - ko potrebujemo stroj, na primer, da lahko samostojno združuje novice v zaplete, kot se to zgodi v storitve, kot sta Yandex.News ali Google News. To pomeni, da v prvem primeru imamo opravka s problemom, ki pomeni obstoj pravilnega odgovora (mačka je bodisi na fotografiji ali ne), v drugem pa ni edino pravilnega odgovora, ampak obstaja različne poti reševanje problema. Osredotočili se bomo na prvi razred problemov kot najbolj zanimiv.

Računalnik moramo torej naučiti narediti nekaj napovedi. Poleg tega je zaželeno biti čim bolj natančen. Napovedi so lahko dveh vrst: bodisi morate izbrati med več možnostmi odgovora (na sliki je mačka ali ne - to je izbira ene od dveh možnosti, možnost prepoznavanja črk na slikah je izbira ene možnost od več deset in tako naprej) ali naredite številčno napoved ... Na primer, predvidite težo osebe na podlagi njene višine, starosti, velikosti čevljev itd. Obe vrsti teh nalog sta le videti različni, pravzaprav se rešujejo skoraj enako. Poskusimo ugotoviti, kako natančno.

Prva stvar, ki jo moramo narediti za sistem napovedi, je zbrati tako imenovani vzorec usposabljanja, torej podatke o teži ljudi v populaciji. Drugi je, da se odločimo za nabor znakov, na podlagi katerih lahko sklepamo o teži. Jasno je, da bo eden od "najmočnejših" takšnih znakov višina osebe, zato je za prvi približek dovolj, da vzamemo samo njega. Če je teža linearno odvisna od višine, bo naša napoved zelo preprosta: teža osebe bo enaka njegovi višini, pomnoženi z nekim faktorjem, plus nekaj konstantne vrednosti, ki jo zapišemo z najpreprostejšo formulo y = kx + b. Vse, kar moramo narediti, da usposobimo stroj za napovedovanje teže osebe, je nekako najti pravilne vrednosti za k in b.

Lepota strojnega učenja je v tem, da tudi če je odvisnost, ki jo preučujemo, zelo kompleksna, se v samem našem pristopu v bistvu skoraj nič ne bo spremenilo. Še vedno se bomo ukvarjali z isto regresijo.

Recimo, da na telesno težo človeka vpliva njegova višina ne linearno, ampak v tretji stopnji (kar je na splošno pričakovano, saj je teža odvisna od volumna telesa). Da bi upoštevali to odvisnost, v našo enačbo preprosto vnesemo še en člen, in sicer tretjo stopnjo rasti z lastnim koeficientom, s čimer dobimo y = k 1 x + k 2 x 3 + b. Zdaj, da bi usposobili stroj, moramo najti ne dve, ampak tri količine (k 1, k 2 in b). Recimo, da želimo v naši napovedi upoštevati tudi velikost čevljev osebe, njegovo starost, čas, ki ga je preživel ob TV-ju, in razdaljo od njegovega stanovanja do najbližje trgovine s hitro prehrano. Ni problema: te lastnosti smo samo postavili kot ločene izraze v isto enačbo.

Najpomembnejše je ustvarjanje univerzalen način najdemo zahtevane koeficiente (k 1, k 2,… k n). Če je tam, nam bo skoraj vseeno, katere znake uporabiti za napovedovanje, saj se bo stroj sam naučil dati veliko težo pomembnim, majhnim pa nepomembnim znakom. Na srečo je bila takšna metoda že izumljena in na njej uspešno deluje skoraj vse strojno učenje: od najpreprostejših linearnih modelov do sistemov za prepoznavanje obrazov in analizatorjev govora. Ta metoda se imenuje gradientni spust. Toda preden razložite, kako deluje, morate narediti majhno digresijo in govoriti o nevronskih mrežah.

Nevronske mreže

Leta 2016 so nevronske mreže tako močno vstopile v informacijsko agendo, da so se skoraj poistovetile z vsakim strojnim učenjem in napredno IT na splošno. Formalno gledano to ne drži: nevronske mreže se ne uporabljajo vedno pri matematičnem učenju, obstajajo tudi druge tehnologije. Toda na splošno je seveda takšna povezava razumljiva, saj prav sistemi, ki temeljijo na nevronskih omrežjih, zdaj dajejo najbolj "čarobne" rezultate, kot so možnost iskanja osebe po fotografiji, pojav aplikacij, ki prenašajo slog ene slike v drugo ali sistemi za generiranje besedil na način govora določene osebe.

Kako delujejo nevronske mreže, že vemo. Tukaj želim samo poudariti, da je moč nevronskih mrež v primerjavi z drugimi sistemi strojnega učenja v njihovi večplastni naravi, vendar jih to ne naredi nekaj bistveno drugačnega v načinu delovanja. Plastenje vam resnično omogoča, da najdete zelo abstraktno splošne značilnosti in odvisnosti v kompleksnih nizih funkcij, kot so piksli na sliki. Pomembno pa je razumeti, da se z vidika principov usposabljanja nevronska mreža ne razlikuje radikalno od nabora običajnih formul linearne regresije, zato se ista metoda gradientnega spuščanja tudi tukaj odlično obnese.

"Moč" nevronske mreže je v prisotnosti vmesne plasti nevronov, ki skupaj združujejo vrednosti vhodne plasti. Zaradi tega lahko nevronske mreže najdejo zelo abstraktne značilnosti podatkov, ki jih je težko reducirati na preproste formule, kot je linearna ali kvadratna odvisnost.

Naj razložimo s primerom. Ustavili smo se pri napovedi, pri kateri je teža človeka odvisna od njegove višine in višine v kocki, ki jo izrazimo s formulo y = k 1 x + k 2 x 3 + b. Z nekaj nategovanja, a pravzaprav lahko celo takšno formulo imenujemo nevronska mreža. V njej je, tako kot v običajni nevronski mreži, prva plast "nevronov", je tudi plast lastnosti: to sta x in x 3 (no, in "en nevron", ki ga imamo v mislih in za za katerega je odgovoren koeficient b). Zgornjo ali posledično plast predstavlja en "nevron" y, to je predvidena teža osebe. In med prvo in zadnjo plastjo "nevronov" obstajajo povezave, katerih moč ali teža je določena s koeficienti k 1, k 2 in b. Usposobiti to "nevronsko mrežo" pomeni preprosto najti te iste koeficiente.

Edina razlika od »pravih« nevronskih mrež je, da nimamo niti enega vmesnega (ali skritega) sloja nevronov, katerih naloga je združevanje vhodnih lastnosti. Uvedba takšnih plasti omogoča, da ne razmišljamo iz glave o možnih odvisnostih med obstoječimi značilnostmi, ampak se zanašamo na njihove že obstoječe kombinacije v nevronski mreži. Na primer, starost in povprečen čas pred televizorjem lahko sinergično vplivata na telesno težo, a če imamo nevronsko mrežo, nam tega ni treba vnaprej vedeti in v formulo vnesti njihovega izdelka. V nevronski mreži bo zagotovo obstajal nevron, ki združuje vpliv poljubnih dveh lastnosti, in če je ta vpliv res opazen v vzorcu, potem bo po treningu ta nevron samodejno prejel veliko težo.

Gradientni spust

Torej imamo nabor primerov za usposabljanje z znanimi podatki, to je tabelo z natančno izmerjeno težo osebe in neko hipotezo odvisnosti v v tem primeru linearna regresija y = kx + b. Naša naloga je najti pravilne vrednosti za k in b, in to ne ročno, ampak samodejno. In po možnosti univerzalna metoda, ki ni odvisna od števila parametrov, vključenih v formulo.

Na splošno to ni težko narediti. Glavna ideja je ustvariti določeno funkcijo, ki bo izmerila trenutno skupno stopnjo napak in "prilagodila" koeficiente, tako da bo skupna stopnja napake postopoma padala. Kako zmanjšati raven napake? Svoje parametre moramo zasukati v pravo smer.

Predstavljajte si naša dva parametra, ki ju iščemo, enaka k in b, kot dve smeri na ravnini, kot os sever-jug in zahod-vzhod. Vsaka točka na takšni ravnini bo ustrezala določeni vrednosti koeficientov, določenemu specifičnemu razmerju med višino in težo. In za vsako tako točko na ravnini lahko izračunamo skupno raven napak, ki jih ta napoved daje za vsak primer v našem vzorcu.

Izkazalo se je nekaj takega kot določena višina na ravnini in celoten okoliški prostor začne spominjati na gorsko pokrajino. Gore so točke, kjer je stopnja napak zelo visoka, doline so kraji, kjer je napak manj. Jasno je, da usposabljanje našega sistema pomeni iskanje najnižje točke na terenu, točke, kjer je stopnja napak minimalna.

Kako lahko najdete to točko? Najbolj pravilen način je, da se ves čas premikamo navzdol od točke, kjer smo prvotno končali. Tako bomo prej ali slej prišli do lokalnega minimuma – točke, pod katero v neposredni bližini ni ničesar. Poleg tega je priporočljivo narediti korake različnih velikosti: ko je pobočje strmo, lahko hodite širše, ko je naklon majhen, potem je bolje, da se do lokalnega minimuma prikradete "na prstih", sicer se lahko zdrsnete skozi .

Tako deluje metoda gradientnega spuščanja: spreminjamo uteži lastnosti v smeri največjega padca funkcije napake. Spreminjamo jih iterativno, torej z določenim korakom, katerega vrednost je sorazmerna s strmino pobočja. Zanimivo je, da se s povečanjem števila značilnosti (dodajanje kocke višine osebe, njegove starosti, velikosti čevljev in tako naprej) pravzaprav nič ne spremeni, le naša pokrajina ne postane dvodimenzionalna, ampak večdimenzionalna.

Funkcijo napake lahko definiramo kot vsoto kvadratov vseh odstopanj, ki jih trenutna formula dopušča glede na ljudi, katerih težo že zagotovo poznamo. Vzemimo nekaj naključne spremenljivke k in b, na primer 0 in 50. Potem nam bo sistem napovedal, da je teža vsake osebe v vzorcu vedno 50 kilogramov y = 0 × x + 50 Na grafu bo ta odvisnost videti kot vzporedna ravna črta na vodoravno. Jasno je, da to ni zelo dobra napoved. Zdaj vzemimo odstopanje teže od te predvidene vrednosti, ga kvadriramo (da se upoštevajo tudi negativne vrednosti) in seštejemo - to bo na tej točki napaka. Če ste seznanjeni z začetkom analize, lahko celo pojasnite, da je smer največjega padca podana z delnim izvodom funkcije napake glede na k in b, korak pa je vrednost, ki je izbrana med praktični premisleki: majhni koraki zahtevajo veliko časa za izračun, veliki koraki pa lahko privedejo do tega, da zdrsnemo mimo minimuma.

No, kaj pa, če imamo ne le kompleksno regresijo s številnimi funkcijami, ampak pravo nevronsko mrežo? Kako v tem primeru uporabimo gradientni spust? Izkazalo se je, da gradientni spust deluje z nevronsko mrežo na enak način, le usposabljanje poteka 1) v fazah, od plasti do plasti in 2) postopoma, od enega primera v vzorcu do drugega. Metoda, uporabljena tukaj, se imenuje algoritem za povratno širjenje napak in sta jo leta 1974 neodvisno opisala sovjetski matematik Alexander Galushkin in matematik z univerze Harvard Paul John Webros.

Čeprav bo za natančno predstavitev algoritma potrebno zapisati delne izpeljanke (na primer), je na intuitivni ravni vse precej preprosto: za vsak primer v vzorcu imamo določeno napoved na izhodu nevronsko mrežo. Ob pravilnem odgovoru lahko od napovedi odštejemo pravilen odgovor in tako dobimo napako (natančneje, niz napak za vsak nevron v izhodni plasti). Zdaj moramo to napako prenesti na prejšnjo plast nevronov in bolj ko je ta nevron te plasti prispeval k napaki, bolj moramo zmanjšati njegovo težo (pravzaprav spet govorimo o jemanju delnega derivata, o premikanju po največji strmini naše namišljene pokrajine) ... Ko smo to naredili, moramo enak postopek ponoviti za naslednjo plast, ki se premika v nasprotni smeri, to je od izhoda nevronske mreže do vhoda.

Če na ta način prehajamo skozi nevronsko mrežo z vsakim primerom učnega vzorca in "zasukamo" uteži nevronov v pravo smer, bi morali končno dobiti izurjeno nevronsko mrežo. Metoda povratnega širjenja je preprosta sprememba metode gradientnega spuščanja za večplastne nevronske mreže in bi zato morala delovati za nevronske mreže katere koli kompleksnosti. Tukaj pravimo "bi moral", ker dejansko obstajajo primeri, ko gradientni spust ne uspe in ne omogoča dobre regresije ali usposabljanja nevronske mreže. Lahko je koristno vedeti, kaj povzroča takšne težave.

Težave pri gradientnem spuščanju

Napačna izbira absolutnega minimuma. Metoda gradientnega spuščanja pomaga najti lokalni ekstrem. Vendar ga ne moremo vedno uporabiti za doseganje absolutnega globalnega minimuma ali maksimuma funkcije. To se zgodi, ker se pri premikanju vzdolž antigradienta ustavimo v trenutku, ko dosežemo prvi lokalni minimum, na katerega smo naleteli, in algoritem preneha delovati.

Predstavljajte si, da stojite na vrhu gore. Če se želite spustiti na najnižjo površino na območju, vam naklonski spust morda ne bo vedno pomagal, saj prva nižja točka na vaši poti ne bo nujno najnižja točka. In če v življenju lahko vidite, da je vredno iti malo navzgor in se lahko nato spustite še nižje, se bo algoritem v takšni situaciji preprosto ustavil. Tej situaciji se je pogosto mogoče izogniti z izbiro pravega koraka.

Napačna izbira koraka. Metoda gradientnega spuščanja je iterativna metoda. To pomeni, da moramo sami izbrati velikost koraka - hitrost, s katero se spuščamo. Če izberemo prevelik korak, lahko preletimo zahtevani ekstrem in ne najdemo minimuma. To se lahko zgodi, če se znajdete pred zelo naglim spustom. In izbira premajhnega koraka grozi z izjemno počasnim delovanjem algoritma, če se znajdemo na razmeroma ravni površini. Če si spet predstavljamo, da smo na vrhu strme gore, potem lahko pridemo v situacijo, ko jo bomo zaradi zelo strmega spusta blizu minimuma preprosto preleteli.

Omrežna paraliza. Včasih se zgodi, da metoda gradientnega spuščanja sploh ne najde minimuma. To se lahko zgodi, če so na obeh straneh minimuma ravni odseki - algoritem, ko zadene raven odsek, zmanjša korak in se sčasoma ustavi. Če se, ko stojite na vrhu gore, odločite, da se premaknete proti domu v nižinah, je pot morda predolga, če po nesreči zaidete v zelo raven. Ali, če so na robovih ravnih območij praktično strma "pobočja", bo algoritem, ki je izbral zelo velik korak, skočil z enega pobočja na drugega, praktično se ne bo premaknil na minimum.

Vse te zapletenosti je treba upoštevati pri načrtovanju sistema strojnega učenja. Vedno je na primer koristno spremljati, kako se funkcija napake sčasoma spreminja – ali pada z vsakim novim ciklom ali stagnira, kako se narava tega padca spreminja glede na spremembo velikosti koraka. Da ne bi dosegli slabega lokalnega minimuma, je lahko koristno začeti z različnih naključnih točk na pokrajini – takrat je verjetnost, da se zatakne, veliko manjša. Obstaja veliko več velikih in majhnih skrivnosti za obravnavo gradientnega spuščanja in obstajajo bolj eksotične metode učenja, ki niso zelo podobne gradientnemu spuščanju. To pa je že tema za drug pogovor in ločen članek v okviru projekta "AI ABC".

Pripravil Alexander Ershov