“Sjajan naučnik za podatke je plaćen kao izvršni direktor prosječne kompanije.” Stručnjak za mašinsko učenje "Yandex.Taxi" o tome kako podaci predviđaju budućnost i oblikuju svijet. Ali mnoge kompanije sada misle da će to učiniti ako ulože novac u mašinsko učenje

Dom

Prošlo je skoro godinu dana od trenutka kada je na FIVT-u započela neobična tema – inovativna radionica. Njegova suština je stvaranje IT startupa od strane studentskih timova pod vodstvom iskusnih mentora. Ispalo je dobro: zahvaljujući kursu, neko je proveo deo leta u Cream Valley, neko je dobio grant u iznosu od 800.000 rubalja za razvoj projekta, a ABBYY je spreman da u potpunosti otkupi projekat od nekoga. I ovo nisu svi rezultati radionice! Početkom 2011. godine studenti treće godine FIVT-a su se okupili u sali Skupštine i poručili: u narednoj godini moraćete da kreirate svoj startap. Studenti su ovu ideju shvatili dvosmisleno: uopće nije bilo jasno kako to učiniti, a odgovornost je bila neobična - na kraju krajeva, bilo je potrebno stvoriti tehnološki posao, a ne samo još jedan edukativni projekat

. Evo šta o tome misli pobjednik studentske olimpijade MIPT iz fizike, student odsjeka Yandeska, Viktor Kantor:

Kada sam na prijemnom odabrao FIVT, nadao sam se da ćemo imati nešto slično. Tako da mi je drago da moje nade nisu bile uzaludne. Tokom godine se osjetilo da se kurs tek formira, da je u njemu mnogo toga novo, mnoga pitanja su se pokazala kao kontroverzna ne samo za studente, već i za organizatore, ali generalno, mislim da su trendovi pozitivni. Svidio mi se ovaj kurs. Kako bi studentima olakšali rad, pozvani su različiti kustosi da ponude svoje ideje za izgradnju inovativnog poslovanja. Među njima je bilo potpuno različiti ljudi

U skoro godinu dana, koliko je prošlo od tada, momci su se suočili sa brojnim problemima, od kojih su neki i rešeni. Sada možemo procijeniti njihove rezultate - uprkos poteškoćama, momci su se snašli. Studenti MIPT-a (pored Filozofskog, u proces su se uključili i neki studenti Filološkog i drugih fakulteta) uspjeli su pripremiti nekoliko zanimljivih i isplativih projekata:

Askeroid (ranije Ask Droid) – traži pametne telefone ( Anastasia Uryasheva)

Android aplikacija koja vam omogućava praktičnu pretragu u velikom broju pretraživača. Neki stručnjaci su pokazali interesovanje za razvoj, pa je kao rezultat toga Anastasija provela celo proteklo leto u jednom od najpoznatijih inkubatora u Silicijumskoj dolini – Plug&Play. učenje osnova tehnološkog preduzetništva i razgovor sa međunarodnim stručnjacima za poduhvat.

1minute.ru – jedan minut zauvek (Lev Grunin)

Ovaj projekat svakome daje priliku da se dobrotvornim radom bavi jednostavno, brzo i potpuno besplatno. Model je jednostavan: oglašivači nude određeni skup aktivnosti na stranici, korisnici dobrovoljno sudjeluju u njima, sav novac od oglašavanja se prenosi na dobrotvorna fondacija. U roku od nedelju dana od pokretanja, projekat je okupio više od 6.500 korisnika i tu se neće zaustaviti. Kao rezultat toga, zahvaljujući Levu i njegovom timu, primiće 600 djece iz sirotišta Nova godina dragocjeni pokloni od Djeda Mraza. Jeste li već potrošili jedan minut na dobro djelo?!

Embedded Desktop - računar u vašem telefonu (Alexey Vukolov)

Aplikacija koja vam omogućava da kombinujete mogućnosti računara i mobilnost telefona u jednom paketu - izuzetno koristan proizvod Za zauzeti ljudi koji često putuju na poslovna putovanja. Dovoljno je da ga instalirate na pametni telefon, a korisnik će moći da „nabavi“ sopstveni računar u bilo kom hotelu, kancelariji, pa i bilo gde gde može da nađe monitor (prikladan je i televizor), tastaturu i miš. Projekat je dobio grant za razvoj ideje i predstavljen je na izložbi Technovation Cup, a od dobijenog novca tim već aktivno kupuje opremu. Američki proizvođač procesora MIPS izuzetno je zainteresiran za razvoj.

Smart Tagger – semantičko pretraživanje kroz dokumente (Victor Kantor)

Šta da radite ako se sećate da je negde u vašem sandučetu bilo veoma važno pismo koje govori o najnovijoj epizodi Teorije velikog praska, ali se ne sećate nijednog ključne riječi iz teksta? Yandex i Google pretraga su nemoćni. On pomoć će doći razvoj Smart Taggera - “pametnog” programa koji koristi semantičku pretragu i koji će vam dati sve tekstove čije je značenje isprepleteno sa popularnim TV serijama. Projekat je dobio grant na konkursu U.M.N.I.K. ukupno 400.000 rubalja!

MathOcr – prepoznavanje formule (Viktor Prun)

ABBYY je predložio zanimljiv zadatak za implementaciju - kreiranje programa koji bi prepoznao matematičke formule bilo koje složenosti. Studenti FIVT-a su u saradnji sa zainteresovanim studentima završili zadatak - modul zapravo prepoznaje formule skenirane iz udžbenika matematike ili fizike. Rezultat: ABBYY je spreman kupiti ovaj proizvod za mnogo novca.

- Možete li koristiti potpuno primitivan primjer da nam kažete kako funkcionira strojno učenje?

Može. Postoji primjer tehnike mašinskog učenja koja se zove Decision Tree, koja je jedna od najstarijih stvari. Uradimo to sada. Recimo da vas apstraktna osoba pozove na sastanak. Šta je vama važno?

- Pre svega, da li ga poznajem ili ne...

(Viktor to piše na tabli.)

...Ako ne znam, onda moram da odgovorim na pitanje da li je privlačan ili nije.

A ako znaš, onda nije bitno? Mislim da shvatam, ovo je tema o frendzonskoj zoni! Generalno, pišem, ako ne znate i nije privlačno, onda je odgovor „ne, verovatno“. Ako znate, odgovor je „da“.

- Ako znam, i to je važno!

Ne, ovo će biti ogranak prijateljske zone.

U redu, hajde da naznačimo ovdje da li je zanimljivo ili ne. Ipak, kada ne poznajete osobu, prva reakcija je na izgled kod poznanika, već gledamo šta on misli i kako.

Učinimo to drugačije. Bez obzira da li je ambiciozan ili ne. Ako je ambiciozan, biće mu teško pridružiti ga u zonu prijatelja, jer će želeti više. Ali neambiciozni će izdržati.

(Viktor završava crtanje odlučujućeg stabla.)

Spreman. Sada možete predvidjeti s kojim tipom ćete najvjerovatnije izaći na spoj. Inače, neki servisi za upoznavanje predviđaju takve stvari. Po analogiji, možete predvidjeti koliko će robe kupci kupiti i gdje će ljudi biti u to doba dana.

Odgovori mogu biti ne samo "da" i "ne", već i u obliku brojeva. Ako želite precizniju prognozu, možete napraviti nekoliko takvih stabala i prosječiti ih. A uz pomoć tako jednostavne stvari zapravo možete predvidjeti budućnost.

Zamislite, da li je ljudima bilo teško da smisle takvu šemu prije dvije stotine godina? Nikako! Ova šema ne nosi nikakvu raketnu nauku. Kao fenomen, mašinsko učenje postoji oko pola veka. Ronald Fisher je počeo da predviđa predviđanja na osnovu podataka početkom 20. veka. Uzeo je perunike i rasporedio ih prema dužini i širini listova i latica, koristeći te parametre odredio je vrstu biljke.

U industriji se posljednjih desetljeća aktivno koristi strojno učenje: moćne i relativno jeftine mašine koje su potrebne za obradu velika količina podaci, na primjer za takva stabla odlučivanja, tek su nedavno postali dostupni. Ali i dalje je uzbudljivo: ove stvari crtamo za svaki zadatak i koristimo ih za predviđanje budućnosti.

- Pa definitivno ništa bolje od bilo koje hobotnice prediktora fudbalskih utakmica...

Ne, šta nas briga za hobotnice? Iako imamo više varijabilnosti. Sada, uz pomoć mašinskog učenja, možete uštedjeti vrijeme, novac i poboljšati udobnost života. Mašinsko učenje je pobijedilo ljude prije nekoliko godina kada je u pitanju klasifikacija slika. Na primjer, kompjuter može prepoznati 20 rasa terijera i obicna osoba br.

- A kada analizirate korisnike, da li je svaka osoba za vas skup brojeva?

Grubo govoreći, da. Kada radimo s podacima, svi objekti, uključujući ponašanje korisnika, opisuju se određenim skupom brojeva. A ovi brojevi odražavaju karakteristike ponašanja ljudi: koliko često voze taksi, koju klasu taksija koriste, na koja mjesta obično idu.

Sada aktivno gradimo slične modele kako bismo ih koristili za identifikaciju grupa ljudi sa sličnim ponašanjem. Kada uvedemo novu uslugu ili želimo da promovišemo staru, nudimo je onima koji će biti zainteresovani.

Na primjer, sada imamo uslugu - dva dječja sjedišta u taksiju. Sa ovom viješću možemo poslati spam svima, ili možemo o tome posebno obavijestiti samo određeni krug ljudi. Tokom godine skupili smo se broj korisnika koji su u komentarima napisali da im trebaju dva dječja sjedišta. Pronašli smo njih i ljude slične njima. Uobičajeno, to su ljudi stariji od 30 godina koji redovno putuju i vole mediteransku kuhinju. Iako, naravno, ima mnogo više znakova, ovo sam samo ja kao primjer.

- Čak i takve suptilnosti?

Ovo je jednostavna stvar. Sve se izračunava pomoću upita za pretraživanje.

Može li ovo nekako funkcionirati u aplikaciji? Na primjer, da li znate da sam prosjak i pretplatio sam se na grupe poput "Kako preživjeti sa 500 rubalja mjesečno" - nude mi samo isprebijane jeftine automobile, pretplatim se na vijesti SpaceX-a - i s vremena na vrijeme prodaju ja Tesla?

To može funkcionirati na ovaj način, ali takve stvari nisu odobrene u Yandexu, jer je to diskriminacija. Kada personalizujete uslugu, bolje je ponuditi ne najprihvatljiviju, već najbolju dostupnu i ono što se osobi sviđa. A distribucija po logici "ovom treba bolji auto, a ovom manje dobar" je zla.


Svi imaju izopačene želje, a ponekad ne morate pronaći recept za mediteransko jelo, već, na primjer, slike o koprofiliji. Hoće li personalizacija i dalje funkcionirati u ovom slučaju?

Uvijek postoji privatni način rada.

Ako ne želim da iko zna za moja interesovanja ili, recimo, prijatelji dođu kod mene i žele da gledaju neko smeće, onda je bolje koristiti anonimni način rada.

Također možete odlučiti koju uslugu kompanije ćete koristiti, na primjer, Yandex ili Google.

- Ima li razlike?

To je teško pitanje. Ne znam za druge, ali Yandex je strog u pogledu zaštite ličnih podataka. Posebno se prate zaposleni.

- Odnosno, ako raskinem s nekim tipom, neću moći da saznam da li je otišao u ovu daču ili ne?

Čak i ako radite u Yandexu. Ovo je, naravno, tužno, ali da, to neće biti moguće saznati. Većina zaposlenih nema ni pristup ovim podacima. Sve je šifrovano. Jednostavno je: ne možete špijunirati ljude, ovo su lični podaci.

Inače, imali smo zanimljiv slučaj na temu raskida sa momcima. Kada smo pravili prognozu za tačku “B” - odredišnu tačku u taksiju, uveli smo nagoveštaje. Evo, vidi.

(Victor se prijavljuje u aplikaciju Yandex.Taxi.)

Na primjer, taksi misli da sam kod kuće. Predlaže da odem ili da radim ili na RUDN univerzitet (tamo držim predavanja u sklopu kursa o mašinskom učenju Data Mining in Action). I u nekom trenutku, dok smo razvijali ove savjete, shvatili smo da moramo izbjeći kompromitovanje korisnika. Svako može vidjeti tačku B. Iz ovih razloga, odbili smo predložiti mjesta na osnovu sličnosti. Inače, sjedite na pristojnom mjestu sa pristojnim ljudima, naručite taksi, a oni vam napišu: „Vidi, još nisi bio u ovom baru!“

- Šta je plave tačke treperi na vašoj mapi?

Ovo su mesta preuzimanja. Ove tačke pokazuju gdje je najpovoljnije pozvati taksi. Uostalom, možete pozvati na mjesto gdje bi bilo potpuno nezgodno ići. Ali općenito, možete nazvati bilo gdje.

- Da, bilo kada. Nekako sam preletio dva bloka sa ovim.

IN u poslednje vreme Bilo je raznih poteškoća s GPS-om, što je dovelo do raznih smiješnih situacija. Ljudi, na primjer, na Tverskoj, navigacija je prošla Pacific Ocean. Kao što vidite, ponekad ima promašaja i više od dva bloka.

- A ako ponovo pokrenete aplikaciju i ponovo kliknete, cijena se mijenja za nekoliko rubalja. Zašto?

Ako potražnja premašuje ponudu, algoritam automatski generiše rastući koeficijent - to pomaže onima koji moraju da napuste što je brže moguće da koriste taksi, čak i tokom perioda velike potražnje. Inače, uz pomoć mašinskog učenja možete predvideti gde će biti veća potražnja za, na primer, sat vremena. Ovo nam pomaže da kažemo vozačima gdje će biti više narudžbi, tako da ponuda odgovara potražnji.

- Ne mislite li da će Yandex.Taxi uskoro ubiti cijelo tržište taksija?

Mislim da ne. Mi smo za zdravu konkurenciju i ne plašimo je se.

Na primjer, i sam koristim različite taksi usluge. Vrijeme čekanja mi je važno, pa gledam nekoliko aplikacija da vidim koji taksi stiže brže.


- Udružili ste se sa Uberom. Za šta?

Nije moje da komentarišem. Mislim da je ujedinjenje duboko razumna odluka.

U Njemačkoj je jedan tip ugradio kadu na dronove i odletio po pljeskavicu. Da li ste mislili da je došlo vrijeme da ovladate vazdušnim prostorom?

O vazdušni prostori Ne znam. Pratimo vijesti poput "Uber je pokrenuo taksije na brodove", ali ne mogu reći ništa o zraku.

- Šta je sa samovozećim taksijima?

Ovdje postoji zanimljiva stvar. Mi ih razvijamo, ali moramo razmisliti kako ih tačno koristiti. Prerano je prognozirati u kom obliku i kada će se pojaviti na ulicama, ali činimo sve da razvijemo tehnologiju za potpuno autonomni automobil, gdje ljudski vozač uopće neće biti potreban.

- Postoji li bojazan da će softver dronova biti hakovan kako bi se automobilom upravljalo na daljinu?

Rizici postoje uvijek i svuda gdje postoje tehnologije i uređaji. Ali zajedno s razvojem tehnologije, razvija se i drugi smjer - njihova zaštita i sigurnost. Svi koji su na ovaj ili onaj način uključeni u razvoj tehnologije rade na sigurnosnim sistemima.

- Koje korisničke podatke prikupljate i kako ih štitite?

Prikupljamo anonimne podatke o korištenju, kao što su gdje, kada i gdje je putovanje napravljeno. Sve bitno je heširano.

- Mislite li da će se broj radnih mjesta smanjiti zbog dronova?

Mislim da će se samo povećati. Ipak, i ove dronove je potrebno nekako održavati. Ovo je, naravno, malo stresna situacija, promijenite svoju specijalnost, ali šta možete učiniti?

- Na svakom svom predavanju Gref kaže da će čovjek barem tri puta radikalno promijeniti profesiju.

Ne mogu navesti nijednu specijalnost koja će trajati vječno. Programer ne radi na istom jeziku i sa istim tehnologijama cijeli život. Svuda treba da se obnovimo. Sa mašinskim učenjem mogu jasno da osetim kako momci koji su šest godina mlađi od mene mogu da razmišljaju mnogo brže od mene. U isto vrijeme, ljudi sa 40 ili 45 godina to još jače osjećaju.

- Iskustvo više ne igra ulogu?

Igranje. Ali metode se mijenjaju, možete doći u oblast u kojoj se, na primjer, duboko učenje nije koristilo, radite tamo neko vrijeme, onda se metode dubokog učenja uvode svuda, a vi ništa o tome ne razumijete. To je sve. Vaše iskustvo može biti korisno samo u planiranju rada tima, a ni tada ne uvijek.

- A vaša profesija je data science, da li je tražena?

Potražnja za stručnjacima za nauku podataka jednostavno je van granica. Očigledno, ovo je period ludog hypea. Hvala Bogu, blockchain je pomogao da se ova pompa malo smiri. Blockchain stručnjaci se još brže preuzimaju.

Ali mnoge kompanije sada misle da će njihove bašte, ako ulože u mašinsko učenje, odmah procvetati. Ovo nije u redu. Mašinsko učenje treba da rješava specifične probleme, a ne samo da postoji.

Postoje slučajevi kada banka želi da kreira sistem preporuka za usluge za korisnike. Pitamo: “Da li mislite da će to biti ekonomski opravdano?” Oni odgovaraju: „Nije nas briga. Uradi to. Svi imaju sisteme preporuka, bićemo u trendu.”

Muka je što se nešto zaista korisno za posao ne može uraditi u jednom danu. Moramo paziti kako će sistem naučiti. Ali uvijek griješi na početku; možda mu nedostaju neki podaci tokom treninga. Ispravljate greške, pa ih ponovo ispravljate, pa čak i sve ponavljate. Nakon ovoga potrebno je konfigurirati sistem tako da radi u proizvodnji, da bude stabilan i skalabilan, još je vrijeme. Kao rezultat, jedan projekat traje šest mjeseci, godinu ili više.


Ako metode mašinskog učenja posmatrate kao crnu kutiju, lako možete propustiti kada počnu da se dešavaju neke lude stvari. Jedi bradata priča. Vojska je zatražila da se razvije algoritam koji se može koristiti za analizu da li se na slici nalazi tenk ili ne. Istraživači su ga napravili, testirali, kvalitet je odličan, sve je odlično, dali su vojsci. Dolazi vojska i kaže da ništa ne radi. Naučnici počinju nervozno da shvataju. Ispostavilo se da je na svim fotografijama sa tenkom koje je vojska donela olovkom u uglu stavljena kvačica. Algoritam je besprijekorno naučio da pronađe kvačicu; Naravno, na novim fotografijama nije bilo kvačica.

Upoznala sam djecu koja razvijaju vlastite sisteme dijaloga. Da li ste ikada pomislili da treba da sarađujete sa decom?

Već neko vrijeme idem na razne događaje za školarce, držim predavanja o mašinskom učenju. I, inače, jednu od tema mi je predavao učenik desetog razreda. Bio sam potpuno siguran da će moja priča biti dobra i zanimljiva, bio sam ponosan na sebe, počeo sam da emitujem, a devojka je rekla: „Oh, želimo da minimiziramo ovu stvar.” Gledam i razmišljam, zaista, zašto, a istina se može umanjiti, a tu se nema šta posebno dokazivati. Prošlo je već nekoliko godina, sada sluša naša predavanja kao student na Fizičko-tehnološkom institutu. Yandex, inače, ima Yandex.Lyceum, gdje školarci mogu besplatno dobiti osnovna znanja iz programiranja.

- Preporučite univerzitete i fakultete na kojima se trenutno predaje mašinsko učenje.

Postoje MIPT, fakulteti FIVT i FUPM. HSE takođe ima divan odsek za informatiku, a na Moskovskom državnom univerzitetu postoji mašinsko učenje u kompleksu računarskih nauka. Pa, sada možete pohađati naš kurs na Univerzitetu RUDN.

Kao što sam već rekao, ovo zanimanje je traženo. Veoma dugo vremena ljudi koji su dobili tehničko obrazovanje radili su sasvim druge stvari. Mašinsko učenje je odličan primjer gdje su sve stvari s kojima su ljudi naučili tehničko obrazovanje, sada su zaista potrebni, korisni i dobro plaćeni.

- Koliko dobro?

Navedite iznos.

- 500 hiljada mesečno.

Možete, samo a da niste običan naučnik podataka. Ali u nekim kompanijama pripravnik može zaraditi 50 hiljada za jednostavan rad. Generalno, plata cool data naučnika može se uporediti sa platom generalnog direktora neke srednje kompanije. U mnogim kompanijama, pored plate, zaposlenik ima i mnoge druge beneficije, a ako je jasno da osoba nije došla da doda dobar brend u svoj životopis, već da stvarno radi, onda će mu sve biti u redu.

U sklopu zajedničkog projekta “ABC AI” sa MIPT-om, već smo pisali o takozvanim, koji vam omogućavaju da “razvijate” programe prema principima i zakonima darvinističke evolucije. Međutim, za sada je ovakav pristup vještačkoj inteligenciji svakako „gost iz budućnosti“. Ali kako sistemi umjetna inteligencija kreirati danas? Kako su obučeni? Victor Kantor, viši predavač na Odsjeku za algoritme i programske tehnologije na MIPT-u, i šef grupe za analizu ponašanja korisnika u Yandex Data Factory, pomogao nam je da to shvatimo.

Prema nedavnom izvještaju istraživačke firme Gartner, koja redovno ažurira svoj „ciklus zrelosti tehnologije“, mašinsko učenje je trenutno na vrhuncu očekivanja u svim IT-ima. To nije iznenađujuće: u proteklih nekoliko godina, mašinsko učenje je izašlo iz sfere interesovanja uskog kruga matematičara i stručnjaka za teoriju algoritama i prodrlo je prvo u rečnik IT biznismena, a potom i u svet. običnih ljudi. Sada, svako ko je koristio aplikaciju Prisma, tražio pjesme koristeći Shazam ili vidio slike koje se prolaze kroz DeepDream zna da postoji takva stvar kao što su neuronske mreže sa njihovom posebnom "magijom".

Međutim, jedno je koristiti tehnologiju, a drugo razumjeti kako ona funkcionira. Opšte riječi poput "kompjuter može naučiti ako mu date nagovještaj" ili "neuronska mreža se sastoji od digitalnih neurona i strukturirana je poput ljudskog mozga" mogu nekome pomoći, ali češće samo zbunjuju situaciju. Onima koji će ozbiljno studirati matematiku nisu potrebni popularni tekstovi: za njih postoje udžbenici i odlični online kursevi. Pokušat ćemo uzeti srednji put: objasniti kako se učenje zapravo događa na vrlo jednostavnom zadatku, a zatim pokazati kako se isti pristup može primijeniti za rješavanje stvarno zanimljivih problema.

Kako mašine uče

Za početak, da bismo razumjeli kako se točno događa mašinsko učenje, hajde da definišemo koncepte. Kako je definisao jedan od pionira ove oblasti, Arthur Samuel, mašinsko učenje se odnosi na metode koje „omogućavaju računarima da uče bez direktnog programiranja“. Postoje dvije široke klase metoda mašinskog učenja: učenje pod nadzorom i učenje bez nadzora. Prvi se koristi kada, na primjer, trebamo naučiti kompjuter da traži fotografije sa slikama mačaka, drugi je kada nam je potrebna mašina, na primjer, da može samostalno grupirati vijesti u priče, kao što se dešava u servisima kao što su Yandex.News ili Google News. Odnosno, u prvom slučaju imamo posla sa zadatkom koji podrazumijeva postojanje tačnog odgovora (mačka na fotografiji ili je tu ili ne), u drugom slučaju nema jedinstvenog tačnog odgovora, ali postoji različite načine rješavanje problema. Posebno ćemo se fokusirati na prvu klasu problema kao najzanimljivije.

Dakle, moramo naučiti kompjuter da pravi neka predviđanja. Štaviše, poželjno je biti što precizniji. Predviđanja mogu biti dva tipa: ili trebate izabrati između nekoliko opcija odgovora (da li je mačka na slici ili ne je izbor jedne od dvije opcije, mogućnost prepoznavanja slova na slikama je izbor jedne opcije od nekoliko desetina i tako dalje), ili napraviti numeričko predviđanje . Na primjer, predvidite težinu osobe na osnovu njene visine, starosti, veličine cipela itd. Ove dvije vrste problema samo izgledaju drugačije, ali se u stvari rješavaju gotovo identično. Pokušajmo da shvatimo kako tačno.

Prvo što nam je potrebno da napravimo sistem predviđanja je da prikupimo takozvani trening uzorak, odnosno podatke o težini ljudi u populaciji. Drugi je da se odlučimo za skup znakova na osnovu kojih možemo izvući zaključke o težini. Jasno je da će jedan od „najjačih“ takvih znakova biti visina osobe, pa je kao prvu aproksimaciju dovoljno uzeti samo ovo. Ako težina linearno ovisi o visini, onda će naše predviđanje biti vrlo jednostavno: težina osobe će biti jednaka njegovoj visini pomnoženoj s nekim koeficijentom, plus nekom konstantnom vrijednošću, koja je zapisana najjednostavnijom formulom y=kx+b. Sve što treba da uradimo da obučimo mašinu da predvidi nečiju težinu je da nekako pronađemo tačne vrednosti za k i b.

Ljepota mašinskog učenja je u tome što čak i ako je odnos koji proučavamo vrlo složen, u suštini se ništa neće promijeniti u našem pristupu. I dalje ćemo se baviti istom regresijom.

Recimo da na težinu osobe utiče njegova visina ne linearno, već u trećem stepenu (što je uglavnom očekivano, jer težina zavisi od zapremine tela). Da bismo ovu zavisnost uzeli u obzir, jednostavno uvodimo još jedan član u našu jednačinu, odnosno treću stepen rasta sa sopstvenim koeficijentom, čime dobijamo y=k 1 x+k 2 x 3 +b. Sada, da bismo trenirali mašinu, moraćemo da pronađemo ne dve, već tri veličine (k 1, k 2 i b). Recimo da u našem predviđanju želimo uzeti u obzir i veličinu cipela neke osobe, godine, vrijeme koje je proveo gledajući TV i udaljenost od njegovog stana do najbližeg lokala brze hrane. Nema problema: jednostavno dodajemo ove karakteristike kao zasebne pojmove u istu jednačinu.

Najvažnije je stvarati univerzalna metoda naći tražene koeficijente (k 1, k 2, ... k n). Ako postoji, biće nam gotovo svejedno koje karakteristike koristiti za predviđanje, jer će mašina sama naučiti da daje veliku težinu važnim, a malu težinu nevažnim karakteristikama. Srećom, takva metoda je već izmišljena i gotovo svo mašinsko učenje uspješno radi na njoj: od najjednostavnijih linearnih modela do sistema za prepoznavanje lica i analizatora govora. Ova metoda se naziva gradijentno spuštanje. Ali prije nego što objasnimo kako to funkcionira, moramo napraviti malu digresiju i govoriti o neuronskim mrežama.

Neuralne mreže

U 2016. godini, neuronske mreže su ušle u informatičku agendu tako čvrsto da su postale gotovo poistovjećene s bilo kojim mašinskim učenjem i naprednim IT općenito. Formalno gledano, to nije tačno: neuronske mreže se ne koriste uvijek u matematičkom učenju; Ali generalno, naravno, takva asocijacija je razumljiva, jer upravo sistemi zasnovani na neuronskim mrežama sada daju „najmagičnije“ rezultate, kao što je mogućnost traženja osobe na fotografiji, pojava aplikacija koje prenose stil jedne slike drugoj, ili sistemi za generisanje tekstova na način govora određene osobe.

Način na koji su neuronske mreže strukturirane, mi već... Ovdje samo želim da naglasim da snaga neuronskih mreža u odnosu na druge sisteme mašinskog učenja leži u njihovoj višeslojnoj prirodi, ali to ih ne čini nečim suštinski drugačijim u načinu na koji rade. Višeslojnost vam zaista omogućava da pronađete vrlo apstraktno opšte karakteristike i zavisnosti u složenim skupovima karakteristika, poput piksela na slici. Ali važno je shvatiti da se sa stanovišta principa učenja neuronska mreža ne razlikuje radikalno od skupa konvencionalnih formula linearne regresije, tako da ista metoda gradijentnog spuštanja odlično funkcionira i ovdje.

"Moć" neuronske mreže leži u prisustvu srednjeg sloja neurona, koji sumarno kombinuju vrijednosti ulaznog sloja. Zbog toga, neuronske mreže mogu pronaći vrlo apstraktne karakteristike u podacima koje je teško svesti na jednostavne formule poput linearnog ili kvadratnog odnosa.

Objasnimo na primjeru. Odlučili smo se o predviđanju u kojem težina osobe ovisi o njegovoj visini i kubnoj visini, što se izražava formulom y=k 1 x+k 2 x 3 +b. Uz malo natezanja, ali zapravo se čak i takva formula može nazvati neuronskom mrežom. U njoj, kao iu običnoj neuronskoj mreži, postoji prvi sloj „neurona“, koji je takođe sloj karakteristika: to su x i x 3 (pa, „jedinični neuron“ koji imamo na umu i za koji koeficijent b je odgovoran). Gornji ili rezultirajući sloj je predstavljen jednim „neuronom“ y, odnosno predviđenom težinom osobe. A između prvog i posljednjeg sloja "neurona" postoje veze, čija je snaga ili težina određena koeficijentima k 1, k 2 i b. Obuka ove "neuralne mreže" jednostavno znači pronalaženje ovih istih koeficijenata.

Jedina razlika od “pravih” neuronskih mreža ovdje je u tome što nemamo niti jedan srednji (ili skriveni) sloj neurona, čiji je zadatak kombinirati ulazne karakteristike. Uvođenje ovakvih slojeva omogućava vam da ne izmišljate moguće zavisnosti između postojećih karakteristika „iz glave“, već da se oslonite na njihove već postojeće kombinacije u neuronskoj mreži. Na primjer, godine i prosječno vrijeme pred TV-om mogu imati sinergijski učinak na težinu osobe, ali, budući da imamo neuronsku mrežu, ne moramo to znati unaprijed i unositi njihov proizvod u formulu. U neuronskoj mreži sigurno će postojati neuron koji kombinuje uticaj bilo koje dve karakteristike, a ako je taj uticaj zaista primetan u uzorku, onda će posle treninga ovaj neuron automatski dobiti veliku težinu.

Gradient Descent

Dakle, imamo skup primjera za obuku sa poznatim podacima, odnosno tabelu sa tačno izmjerenom težinom osobe, i neku hipotezu o odnosu, u ovom slučaju linearnu regresiju y=kx+b. Naš zadatak je pronaći ispravne vrijednosti k i b, ne ručno, već automatski. I po mogućnosti, univerzalna metoda koja ne ovisi o broju parametara uključenih u formulu.

Općenito, ovo nije teško učiniti. Glavna ideja je kreirati funkciju koja će mjeriti trenutni ukupni nivo greške i „podešavati“ koeficijente tako da ukupni nivo greške postepeno pada. Kako mogu smanjiti nivo greške? Moramo podesiti naše parametre u pravom smjeru.

Zamislite naša dva parametra koja tražimo, isti k i b, kao dva pravca na ravni, poput ose sjever-jug i zapad-istok. Svaka tačka na takvoj ravni će odgovarati određenoj vrijednosti koeficijenata, određenom specifičnom odnosu između visine i težine. I za svaku takvu tačku na ravni, možemo izračunati ukupni nivo greške koji ovo predviđanje daje za svaki od primjera u našem uzorku.

Ispada nešto poput određene visine na avionu, a cijeli okolni prostor počinje nalikovati planinskom pejzažu. Planine su tačke gde je stopa grešaka veoma visoka, doline su mesta gde ima manje grešaka. Jasno je da obuka našeg sistema znači pronaći najviše niska tačka na terenu, tačka u kojoj je nivo grešaka minimalan.

Kako možete pronaći ovu tačku? Većina na pravi način- kretati se sve vreme naniže od tačke na kojoj smo se u početku našli. Tako ćemo prije ili kasnije doći do lokalnog minimuma - tačke ispod koje nema ničega u neposrednoj blizini. Štaviše, preporučljivo je poduzeti korake različitih veličina: kada je strm, možete ići šire korake kada je nagib mali, bolje je prišuljati se lokalnom minimumu „na prstima“, inače možete preskočiti.

Upravo ovako radi metoda gradijentnog spuštanja: mijenjamo težine karakteristika u smjeru najveći pad funkcije greške. Mijenjamo ih iterativno, odnosno određenim korakom čija je vrijednost proporcionalna strmini padine. Ono što je interesantno jeste da se kada se broj karakteristika poveća (dodavanje kocke visine osobe, njenih godina, veličine cipela i tako dalje), u suštini ništa ne menja, samo naš pejzaž ne postaje dvodimenzionalan, već višedimenzionalan.

Funkcija greške može se definirati kao zbir kvadrata svih odstupanja koje trenutna formula dozvoljava za ljude čiju težinu već točno znamo. Uzmimo neke slučajne varijable k i b, na primjer 0 i 50. Tada će nam sistem predvidjeti da je težina svake osobe u uzorku uvijek jednaka 50 kilograma y=0×x+50 Na grafu je npr. zavisnost će izgledati kao prava linija paralelna sa horizontalom. Jasno je da ovo nije baš dobra prognoza. Sada uzmite odstupanje u težini od ove predviđene vrijednosti, kvadratirajte je (tako da negativne vrijednosti su također uzeti u obzir) i sumirati - ovo će biti greška u ovom trenutku. Ako ste upoznati s počecima analize, onda možete čak i pojasniti da je smjer najvećeg pada zadan parcijalnim izvodom funkcije greške u odnosu na k i b, a korak je vrijednost koja se bira za praktični razlozi: malim koracima je potrebno mnogo vremena za izračunavanje, a veliki mogu dovesti do toga da ćemo skliznuti preko minimuma.

U redu, što ako nemamo samo složenu regresiju s mnogo značajki, već pravu neuronsku mrežu? Kako u ovom slučaju primijeniti gradijentni pad? Ispostavilo se da gradijentni spuštanje funkcionira na potpuno isti način sa neuronskom mrežom, samo što se obuka odvija 1) korak po korak, od sloja do sloja i 2) postepeno, od jednog primjera u uzorku do drugog. Metoda koja se ovdje koristi naziva se propagacija unazad, a neovisno su je opisali 1974. sovjetski matematičar Aleksandar Galuškin i matematičar sa Univerziteta Harvard Paul John Webros.

Iako će za striktnu prezentaciju algoritma biti potrebno zapisati parcijalne izvode (kao, na primjer), na intuitivnom nivou sve se događa prilično jednostavno: za svaki od primjera u uzorku imamo određeno predviđanje na izlazu neuronske mreže. Imajući tačan odgovor, možemo oduzeti tačan odgovor od predviđanja i tako dobiti grešku (tačnije, skup grešaka za svaki neuron izlaznog sloja). Sada trebamo prenijeti ovu grešku na prethodni sloj neurona, i što je ovaj određeni neuron ovog sloja više doprinio grešci, to više trebamo smanjiti njegovu težinu (zapravo, opet govorimo o uzimanju parcijalnog izvoda, o kretanju po maksimalnoj strmini našeg zamišljenog krajolika) . Kada smo to učinili, istu proceduru moramo ponoviti za sljedeći sloj, krećući se u suprotnom smjeru, odnosno od izlaza neuronske mreže do ulaza.

Prolaskom kroz neuronsku mrežu na ovaj način sa svakim primjerom uzorka za obuku i “uvijanjem” težine neurona u željenom smjeru, na kraju bismo trebali dobiti istreniranu neuronsku mrežu. Metoda povratnog širenja je jednostavna modifikacija metode gradijentnog spuštanja za višeslojne neuronske mreže i stoga bi trebala raditi za neuronske mreže bilo koje složenosti. Ovdje kažemo "trebalo bi" jer u stvari postoje slučajevi kada gradijentni spuštanje ne uspije i ne dozvoljava vam da napravite dobru regresiju ili trenirate neuronsku mrežu. Može biti korisno znati zašto nastaju takve poteškoće.

Poteškoće gradijentnog spuštanja

Pogrešan izbor apsolutnog minimuma. Metoda gradijentnog spuštanja pomaže u potrazi za lokalnim ekstremom. Ali ne možemo ga uvijek koristiti za postizanje apsolutnog globalnog minimuma ili maksimuma funkcije. To se događa zato što se pri kretanju po antigradijentu zaustavljamo u trenutku kada dostignemo prvi lokalni minimum na koji naiđemo, a algoritam prestaje raditi.

Zamislite da stojite na vrhu planine. Ako se želite spustiti na najnižu površinu u tom području, metoda gradijentnog spuštanja neće vam uvijek pomoći, jer prva niska tačka na vašem putu neće nužno biti najniža tačka. A ako ste u životu u stanju da vidite da ako se malo podignete i možete onda ići još niže, onda će algoritam u takvoj situaciji jednostavno stati. Često se ova situacija može izbjeći ako odaberete pravi korak.

Pogrešan odabir koraka. Metoda gradijentnog spuštanja je iterativna metoda. Odnosno, mi sami trebamo odabrati veličinu koraka - brzinu kojom se spuštamo. Odabirom prevelikog koraka možemo preletjeti preko potrebnog ekstremuma i ne pronaći minimum. Ovo se može dogoditi ako se nađete pred vrlo oštrim spuštanjem. A odabir koraka koji je premali riskira da algoritam bude izuzetno spor ako se nađemo na relativno ravnoj površini. Ako opet zamislimo da smo na vrhu strme planine, onda može nastati situacija da zbog vrlo strmog spuštanja blizu minimuma jednostavno preletimo preko nje.

Mrežna paraliza. Ponekad se desi da metoda gradijentnog spuštanja uopšte ne uspe da pronađe minimum. To se može dogoditi ako postoje ravne površine s obje strane minimuma - algoritam, kada udari u ravnu površinu, smanjuje korak i na kraju se zaustavlja. Ako stojite na vrhu planine i odlučite krenuti prema svojoj kući u nizini, putovanje može biti predugo ako slučajno zalutate na vrlo ravno područje. Ili, ako uz rubove ravnih područja postoje gotovo okomite "nagibe", algoritam će, nakon odabira vrlo velikog koraka, skočiti s jedne padine na drugu, praktički se ne krećući prema minimumu.

Sva ova složena pitanja moraju se uzeti u obzir prilikom dizajniranja sistema mašinskog učenja. Na primjer, uvijek je korisno pratiti tačno kako se funkcija greške mijenja tokom vremena - pada li sa svakim novim ciklusom ili vremenom obilježavanja, kako se priroda ovog pada mijenja ovisno o promjeni veličine koraka. Kako biste izbjegli pad u loš lokalni minimum, može biti korisno krenuti od različitih nasumično odabranih tačaka krajolika - tada je vjerovatnoća zaglavljivanja mnogo manja. Postoji mnogo više velikih i malih tajni korištenja gradijentnog spuštanja, a postoje i egzotičniji načini učenja koji su pomalo slični gradijentnom spuštanju. Ovo je, međutim, tema za drugi razgovor i poseban članak u okviru ABC AI projekta.

Priredio Aleksandar Eršov



Šta još čitati