Taksi“ pasakoja apie tai, kaip duomenys numato ateitį ir formuoja pasaulį. „Šaunus duomenų mokslininkas gauna atlyginimą kaip vidutinės įmonės generalinis direktorius. Yandex.Taxi mašininio mokymosi ekspertas, kaip duomenys numato ateitį ir formuoja pasaulį Patirtis nebeturi jokio vaidmens

– Ar galite naudoti visiškai primityvų pavyzdį, kad papasakotumėte, kaip veikia mašininis mokymasis?

Gali. Yra mašininio mokymosi technikos pavyzdys, vadinamas Sprendimų medžiu, kuris yra vienas iš seniausių dalykų. Padarykime tai dabar. Tarkime, abstraktus žmogus kviečia jus į pasimatymą. Kas tau svarbu?

- Visų pirma, ar aš jį pažįstu, ar ne...

(Viktoras tai užrašo lentoje.)

...Jei aš nežinau, tai man reikia atsakyti į klausimą, ar jis patrauklus, ar ne.

O jei žinai, tai nesvarbu? Manau, supratau, tai yra draugų zonos gija! Apskritai rašau, jei nežinai ir tai nepatrauklu, atsakymas yra „ne, tikriausiai“. Jei žinote, atsakymas yra „taip“.

- Jei žinau, tai taip pat svarbu!

Ne, tai bus draugų zonos filialas.

Gerai, tada nurodykime, ar tai įdomu, ar ne. Visgi, kai nepažįsti žmogaus, pirmoji reakcija yra išvaizda, su pažįstamu jau žiūrime, ką ir kaip jis galvoja.

Darykime kitaip. Nesvarbu, ar jis ambicingas, ar ne. Jei jis yra ambicingas, bus sunku su juo susidraugauti, nes jis norės daugiau. Tačiau neambicingieji ištvers.

(Viktoras baigia piešti lemiamą medį.)

Paruošta. Dabar galite nuspėti, su kuriuo vaikinu greičiausiai eisite į pasimatymą. Beje, kai kurios pažinčių tarnybos tokius dalykus prognozuoja. Pagal analogiją galite numatyti, kiek prekių pirks klientai ir kur tuo paros metu bus žmonės.

Atsakymai gali būti ne tik „taip“ ir „ne“, bet ir skaičiais. Jei norite tikslesnės prognozės, galite padaryti kelis tokius medžius ir suvesti jų vidurkį. Ir tokio paprasto dalyko pagalba jūs iš tikrųjų galite numatyti ateitį.

Dabar įsivaizduokite, ar prieš du šimtus metų žmonėms buvo sunku sugalvoti tokią schemą? Visiškai ne! Ši schema nevykdo jokio raketų mokslo. Kaip reiškinys mašininis mokymasis egzistuoja maždaug pusę amžiaus. Ronaldas Fišeris, remdamasis duomenimis, pradėjo daryti prognozes XX amžiaus pradžioje. Jis paėmė vilkdalgius ir paskirstė juos pagal taurėlapių ir žiedlapių ilgį ir plotį, pagal šiuos parametrus nustatė augalo rūšį.

Pramonėje mašininis mokymasis buvo aktyviai naudojamas pastaraisiais dešimtmečiais: galingos ir palyginti nebrangios mašinos, reikalingos dideliam duomenų kiekiui apdoroti, pavyzdžiui, tokiems sprendimų medžiams, pasirodė ne taip seniai. Bet vis tiek įdomu: mes piešiame šiuos dalykus kiekvienai užduočiai ir naudojame juos ateitį nuspėti.

- Na, tikrai ne geriau nei bet koks aštuonkojis futbolo rungtynių pranašas...

Ne, ką mums rūpi aštuonkojai? Nors turime daugiau kintamumo. Dabar, naudodami mašininį mokymąsi, galite sutaupyti laiko, pinigų ir pagerinti gyvenimo komfortą. Mašininis mokymasis prieš kelerius metus įveikė žmones, kai kalbama apie vaizdų klasifikavimą. Pavyzdžiui, kompiuteris gali atpažinti 20 terjerų veislių, bet paprastas žmogus – ne.

– O kai analizuojate vartotojus, ar kiekvienas žmogus jums yra skaičių rinkinys?

Grubiai tariant, taip. Kai dirbame su duomenimis, visi objektai, įskaitant vartotojo elgesį, aprašomi tam tikru skaičių rinkiniu. Ir šie skaičiai atspindi žmonių elgesio ypatybes: kaip dažnai jie važiuoja taksi, kokios klasės taksi naudojasi, į kokias vietas dažniausiai važiuoja.

Dabar aktyviai kuriame panašius modelius, kad galėtume juos panaudoti, kad nustatytų panašaus elgesio žmonių grupes. Kai pristatome naują paslaugą ar norime reklamuoti seną, siūlome ją tiems, kam būtų įdomu.

Pavyzdžiui, dabar turime paslaugą – dvi vaikiškas kėdutes taksi. Su šia naujiena galime siųsti nepageidaujamą el. laišką arba konkrečiai apie tai pranešti tik tam tikram žmonių ratui. Per metus sukaupėme nemažai vartotojų, kurie komentaruose rašė, kad jiems reikia dviejų vaikiškų kėdučių. Radome juos ir į juos panašių žmonių. Paprastai tai yra vyresni nei 30 metų žmonės, kurie nuolat keliauja ir mėgsta Viduržemio jūros virtuvę. Nors, žinoma, ženklų yra daug daugiau, tai tik pavyzdys.

– Net ir tokių subtilybių?

Tai paprastas reikalas. Viskas apskaičiuojama naudojant paieškos užklausas.

Ar tai galėtų kažkaip veikti programoje? Pavyzdžiui, ar žinote, kad esu elgeta ir užsiprenumeruoju tokias grupes kaip „Kaip išgyventi iš 500 rublių per mėnesį“ – jie man siūlo tik sumuštus pigius automobilius, užsiprenumeruoja „SpaceX“ naujienas – ir karts nuo karto man parduoda Tesla?

Tai gali veikti taip, bet tokie dalykai Yandex nepatvirtinti, nes tai yra diskriminacija. Kai personalizuojate paslaugą, geriau pasiūlykite ne priimtiniausią, o geriausią turimą ir tai, kas žmogui patinka. O skirstymas pagal logiką „tam reikia geresnio automobilio, o šiam mažiau gero“ yra blogis.


Visi turi iškrypusių norų, o kartais reikia rasti ne Viduržemio jūros patiekalo receptą, o, pavyzdžiui, paveikslėlius apie koprofiliją. Ar šiuo atveju personalizavimas vis tiek veiks?

Visada yra privatus režimas.

Jei nenoriu, kad kas nors žinotų apie mano pomėgius ar, tarkime, draugai ateitų pas mane ir nori pažiūrėti šiukšlių, geriau naudoti inkognito režimą.

Taip pat galite nuspręsti, kurios įmonės paslaugomis naudoti, pavyzdžiui, „Yandex“ ar „Google“.

– Ar yra skirtumas?

Sudėtingas klausimas. Nežinau apie kitus, bet „Yandex“ griežtai saugo asmens duomenis. Ypač stebimi darbuotojai.

- Tai yra, jei aš išsiskyriau su vaikinu, aš negalėsiu sužinoti, ar jis nuėjo į šią vasarnamį, ar ne?

Net jei dirbate „Yandex. Tai, žinoma, liūdna, bet taip, nėra jokio būdo sužinoti. Dauguma darbuotojų net neturi prieigos prie šių duomenų. Viskas užšifruota. Tai paprasta: jūs negalite šnipinėti žmonių, tai yra asmeninė informacija.

Beje, turėjome įdomų atvejį išsiskyrimo su vaikinais tema. Kai prognozavome tašką „B“ – taksi paskirties tašką, pateikėme užuominų. Čia žiūrėk.

(Victoras prisijungia prie Yandex.Taxi programos.)

Pavyzdžiui, taksi mano, kad aš namie. Jis siūlo man eiti į darbą arba į RUDN universitetą (ten skaitau paskaitas pagal mašininio mokymosi kursą „Data Mining in Action“). Ir kažkuriuo momentu, kurdami šiuos patarimus, supratome, kad turime vengti vartotojo pavojaus. Bet kas gali matyti tašką B. Dėl šių priežasčių atsisakėme siūlyti vietas pagal panašumą. Kitu atveju tu sėdi padorioje vietoje su padoriais žmonėmis, užsisakai taksi, o jie tau rašo: „Žiūrėk, tu dar nebuvai šiame bare!

- Kokie tie mėlyni taškai mirksi tavo žemėlapyje?

Tai yra paėmimo taškai. Šie taškai parodo, kur patogiausia išsikviesti taksi. Juk galima skambinti ten, kur būtų visai nepatogu eiti. Bet apskritai galima skambinti bet kur.

- Taip, bet kada. Aš kažkaip su tuo nuskridau du blokus.

Pastaruoju metu kilo įvairių sunkumų su GPS, tai privedė prie įvairių juokingų situacijų. Pavyzdžiui, žmonės Tverskoje buvo gabenami laivyba per Ramųjį vandenyną. Kaip matote, kartais pasitaiko ir daugiau nei dviejų blokų.

- O jei iš naujo paleisite programą ir spustelėsite dar kartą, kaina pasikeis keliais rubliais. Kodėl?

Jei paklausa viršija pasiūlą, algoritmas automatiškai generuoja didėjantį koeficientą – tai padeda tiems, kuriems reikia kuo greičiau išvykti, pasinaudoti taksi net ir didelės paklausos laikotarpiais. Beje, mašininio mokymosi pagalba galite numatyti, kur bus didesnė paklausa, pavyzdžiui, per valandą. Tai padeda mums pasakyti vairuotojams, kur bus daugiau užsakymų, kad pasiūla atitiktų paklausą.

– Ar nemanote, kad „Yandex.Taxi“ greitai nužudys visą taksi rinką?

Manau, kad ne. Mes už sveiką konkurenciją ir jos nebijome.

Pavyzdžiui, aš pats naudojuosi įvairiomis taksi paslaugomis. Man svarbus laukimo laikas, todėl pasižiūriu kelias programėles, kuris taksi atvažiuos greičiau.


– Susijungei su Uber. Kam?

Ne mano vieta komentuoti. Manau, kad susivienijimas yra labai protingas sprendimas.

Vokietijoje vienas vaikinas dronuose įrengė vonią ir nuskrido mėsainio. Ar pagalvojote, kad atėjo laikas įvaldyti oro erdvę?

Nežinau apie oro erdvę. Stebime tokias naujienas kaip „Uber paleido taksi laivuose“, bet nieko negaliu pasakyti apie orą.

– O kaip su savarankiškai vairuojančiais taksi?

Čia yra įdomus dalykas. Mes juos kuriame, bet turime pagalvoti, kaip tiksliai juos naudoti. Kokiu pavidalu ir kada jie pasirodys gatvėse, prognozuoti dar anksti, tačiau darome viską, kad sukurtume technologijas visiškai autonominiam automobiliui, kuriame žmogaus vairuotojo visai nereikės.

– Ar baiminamasi, kad bus nulaužta drono programinė įranga, norint valdyti automobilį nuotoliniu būdu?

Visada ir visur, kur yra technologijų ir dalykėlių, yra rizika. Tačiau kartu su technologijų plėtra vystosi ir kita kryptis – jų apsauga ir saugumas. Su apsaugos sistemomis dirba visi, vienaip ar kitaip susiję su technologijų plėtra.

– Kokius vartotojų duomenis renkate ir kaip juos apsaugote?

Renkame anoniminius naudojimo duomenis, pvz., kur, kada ir kur buvo atlikta kelionė. Viskas, kas svarbu, sumaišoma.

– Kaip manote, ar dėl dronų sumažės darbo vietų?

Manau, kad jis tik didės. Visgi šiuos dronus irgi reikia kažkaip prižiūrėti. Tai, žinoma, yra šiek tiek stresinė situacija, keičianti specialybę, bet ką daryti?

– Kiekvienoje savo paskaitoje Grefas sako, kad žmogus savo profesiją keis bent tris kartus kardinaliai.

Negaliu įvardyti jokios specialybės, kuri tęstųsi amžinai. Kūrėjas visą gyvenimą nedirba ta pačia kalba ir tomis pačiomis technologijomis. Visur, kur mums reikia atstatyti. Su mašininiu mokymusi aiškiai jaučiu, kaip šešeriais metais už mane jaunesni vaikinai gali mąstyti daug greičiau už mane. Tuo pačiu metu 40 ar 45 metų žmonės tai jaučia dar stipriau.

– Patirtis nebevaidina?

Žaidžia. Bet metodai keičiasi, gali ateiti į sritį, kur, pavyzdžiui, giluminis mokymasis nenaudojamas, kurį laiką dirbi ten, tada visur įvedami giluminio mokymosi metodai, ir tu nieko apie tai nesupranti. Tai viskas. Jūsų patirtis gali praversti tik planuojant komandos darbą, ir net tada ne visada.

– O jūsų profesija – duomenų mokslininkas, ar ji paklausi?

Duomenų mokslo specialistų paklausa tiesiog iškrito iš sąrašo. Akivaizdu, kad tai yra beprotiško ažiotažo laikotarpis. Ačiū Dievui, blokų grandinė padėjo šiam ažiotažui šiek tiek nuslūgti. Blockchain specialistai paimami dar greičiau.

Tačiau daugelis įmonių dabar mano, kad jei investuos pinigus į mašininį mokymąsi, jų sodai iškart pražys. Tai yra blogai. Mašininis mokymasis turėtų išspręsti konkrečias problemas, o ne tik egzistuoti.

Pasitaiko atvejų, kai bankas nori sukurti vartotojams teikiamų paslaugų rekomendacijų sistemą. Klausiame: „Ar manote, kad tai bus ekonomiškai pagrįsta? Jie atsako: „Mums nerūpi. Daryk. Visi turi rekomendacijų sistemas, būsime tendencijose.

Skausmas ta, kad ko nors tikrai naudingo verslui nepavyks padaryti per vieną dieną. Turime stebėti, kaip sistema išmoks. Tačiau pradžioje ji visada daro klaidų; treniruotės metu gali pritrūkti duomenų. Ištaisai klaidas, tada vėl jas ištaisai ir net viską perdarai. Po to reikia sukonfigūruoti sistemą, kad ji veiktų gamyboje, kad ji būtų stabili ir keičiama, dar laikas. Dėl to vienas projektas trunka šešis mėnesius, metus ar ilgiau.


Jei žiūrėsite į mašininio mokymosi metodus kaip į juodąją dėžę, galite lengvai nepastebėti, kai įvyks beprotiški dalykai. Yra barzdota istorija. Kariškiai paprašė sukurti algoritmą, pagal kurį būtų galima išanalizuoti, ar nuotraukoje yra tankas, ar ne. Mokslininkai gamino, išbandė, kokybė puiki, viskas puiku, atidavė kariuomenei. Ateina kariškiai ir sako, kad niekas neveikia. Mokslininkai pradeda nervingai suprasti. Pasirodo, visose nuotraukose su tanku, kurią atnešė kariškiai, kampe su rašikliu buvo įdėta varnelė. Algoritmas nepriekaištingai išmoko rasti varnelę, nieko nežinojo apie baką. Natūralu, kad ant naujų nuotraukų nebuvo jokių varnelių.

Sutikau vaikų, kurie kuria savo dialogo sistemas. Ar kada pagalvojote, kad jums reikia bendradarbiauti su vaikais?

Jau kurį laiką lankausi įvairiausiuose moksleiviams skirtuose renginiuose, skaitau paskaitas apie mašininį mokymąsi. Ir, beje, vieną iš temų man dėstė dešimtokė. Buvau visiškai tikra, kad mano istorija bus gera ir įdomi, didžiavausi savimi, pradėjau transliuoti, o mergina pasakė: „O, mes norime sumažinti šitą dalyką“. Žiūriu ir galvoju, tikrai, kodėl, o tiesą galima sumažinti iki minimumo, ir čia nėra nieko ypatingo. Jau praėjo keli metai, dabar ji klauso mūsų paskaitų kaip studentė Fizikos ir technologijų institute. „Yandex“, beje, turi „Yandex.Lyceum“, kur moksleiviai gali nemokamai įgyti pagrindinių programavimo žinių.

- Rekomenduoti universitetus ir fakultetus, kuriuose šiuo metu dėstomas mašininis mokymasis.

Yra MIPT, FIVT ir FUPM fakultetai. HSE taip pat turi nuostabų informatikos skyrių, o Maskvos valstybiniame universitete kompiuterių mokslo komplekse vyksta mašininis mokymasis. Na, dabar galite klausytis mūsų kurso RUDN universitete.

Kaip jau sakiau, ši profesija yra paklausi. Labai ilgą laiką techninį išsilavinimą įgiję žmonės darė visiškai skirtingus dalykus. Mašininis mokymasis yra puikus pavyzdys, kai visi dalykai, kurių mokė techninį išsilavinimą turintys žmonės, dabar yra tiesiogiai reikalingi, naudingi ir gerai apmokami.

- Kaip gerai?

Įvardykite sumą.

– 500 tūkst per mėnesį.

Galite, tiesiog nebūdami eiliniu duomenų mokslininku. Bet kai kuriose įmonėse už paprastą darbą praktikantas gali uždirbti ir 50 tūkst.. Ten labai platus asortimentas. Apskritai šaunaus duomenų mokslininko atlyginimą galima palyginti su kokios nors vidutinės įmonės generalinio direktoriaus atlyginimu. Daugelyje įmonių, be atlyginimo, darbuotojas turi daug kitų privalumų, o jei aišku, kad žmogus atėjo ne tam, kad į savo gyvenimo aprašymą įsirašytų gerą prekės ženklą, o tam, kad realiai dirbtų, tada jam viskas bus gerai.

Praėjo beveik metai nuo tos akimirkos, kai FIVT prasidėjo neįprasta tema – novatoriškas seminaras. Jo esmė – IT startuolių kūrimas studentų komandoms vadovaujant patyrusiems mentatoriams. Pasirodė gerai: kurso dėka kažkas dalį vasaros praleido Kremo slėnyje, kažkas gavo 800 000 rublių dotaciją projekto plėtrai, o ABBYY yra pasirengusi visiškai iš ko nors nusipirkti projektą. Ir tai dar ne visi seminaro rezultatai!

2011 metų pradžioje į Aktų salę buvo sukviesti FIVT trečiakursiai ir jiems buvo pasakyta: per ateinančius metus reikės susikurti savo startuolį. Mokiniai šios minties nepriėmė nevienareikšmiškai: visiškai neaišku, kaip tai padaryti, o atsakomybė neįprasta – juk reikėjo kurti technologinį verslą, o ne dar vieną edukacinį projektą. Štai ką apie tai mano MIPT studentų fizikos olimpiados nugalėtojas, Yandeskos katedros studentas Viktoras Kantoras:

Kai stojant pasirinkau FIVT, tikėjausi, kad turėsime kažką panašaus. Tad džiaugiuosi, kad mano viltys nenuėjo veltui. Per metus jautėsi, kad kursas dar tik formuojasi, jame daug naujo, daugelis klausimų pasirodė prieštaringi ne tik studentams, bet ir organizatoriams, bet apskritai, manau, tendencijos yra teigiamos. Man patiko šis kursas.

Siekiant palengvinti studentų darbą, įvairūs kuratoriai buvo kviečiami siūlyti savo idėjas kuriant inovatyvų verslą. Tarp jų buvo visiškai skirtingų žmonių: nuo MIPT bakalauro ir magistrantūros studentų iki Ernst&Young patarėjo inovacijoms Jurijaus Pavlovičiaus Ammosovo (jis buvo viso kurso vadovas) ir Michailo Batino, kuris sprendžia regeneracinės medicinos ir gyvenimo pratęsimo klausimus. Dėl to fizikos ir technologijų studentai išsirinko jiems pačias įdomiausias idėjas, į komandas susibūrė kuratoriai ir prasidėjo sunkus, bet įdomus darbas.

Per beveik metus, praėjusius nuo to laiko, vaikinai susidūrė su daugybe problemų, kai kurios jų buvo išspręstos. Dabar galime įvertinti jų rezultatus – nepaisant sunkumų, vaikinai susitvarkė. MIPT studentams (be Filosofijos fakulteto, prie proceso prisijungė ir Filologijos fakulteto bei kitų fakultetų studentai) pavyko parengti keletą gana įdomių ir perspektyvių projektų:

Askeroid (anksčiau Ask Droid) – ieškokite išmaniųjų telefonų ( Anastasija Uryasheva)

Android programa, leidžianti patogiai ieškoti daugelyje paieškos sistemų. Kai kurie ekspertai susidomėjo plėtra, todėl Anastasija visą praėjusią vasarą praleido viename garsiausių Silicio slėnio inkubatorių – Plug&Play. išmokti technologijų verslumo pagrindų ir kalbėtis su tarptautinių įmonių ekspertais.

1minute.ru – viena minutė visam laikui (Lev Grunin)

Šis projektas kiekvienam žmogui suteikia galimybę paprastai, greitai ir visiškai nemokamai užsiimti labdara. Modelis paprastas: reklamuotojai svetainėje siūlo tam tikrą veiklų rinkinį, vartotojai savanoriškai jose dalyvauja, o visi pinigai iš reklamos pervedami į labdaros fondą. Per savaitę nuo jo pradžios projektas surinko daugiau nei 6500 vartotojų ir nesiruošia tuo sustoti. Dėl to Levo ir jo komandos dėka 600 vaikų iš vaikų globos namų gaus brangias dovanas iš Kalėdų Senelio Naujųjų metų proga. Ar jau skyrėte minutę geram darbui?!

Įdėtas darbalaukis - kompiuteris jūsų telefone (Aleksėjus Vukolovas)

Programėlė, leidžianti vienoje pakuotėje sujungti kompiuterio galimybes ir telefono mobilumą – itin naudingas produktas užimtiems žmonėms, dažnai keliaujantiems į verslo keliones. Pakanka jį įdiegti išmaniajame telefone ir vartotojas galės „gauti“ savo kompiuterį bet kuriame viešbutyje, biure ir, tiesą sakant, bet kur, kur ras monitorių (tinka ir televizorius), klaviatūrą ir pelė. Projektas gavo dotaciją idėjos plėtrai ir buvo pristatytas parodoje Technovation Cup, o už gautus pinigus komanda jau aktyviai perka įrangą. Plėtra itin domisi amerikiečių procesorių gamintojas MIPS.

Išmanusis žymeklis – semantinė paieška dokumentuose (Victoras Kantoras)

Ką daryti, jei prisimenate, kad kažkur jūsų pašto dėžutėje buvo labai svarbus laiškas, kuriame buvo kalbama apie naujausią „Didžiojo sprogimo teorijos“ seriją, bet neatsimenate jokių raktinių žodžių iš teksto? „Yandex“ ir „Google“ paieška yra bejėgės. „Smart Tagger“ kūrimas ateis į gelbėjimą - „išmanioji“ programa, naudojanti semantinę paiešką, pateiks visus tekstus, kurių prasmė susipynusi su populiariais TV serialais. Projektas laimėjo dotaciją U.M.N.I.K. konkurse. iš viso 400 000 rublių!

MathOcr – formulės atpažinimas (Viktor Prun)

ABBYY pasiūlė įgyvendinti įdomią užduotį – sukurti programą, kuri atpažintų bet kokio sudėtingumo matematines formules. FIVT studentai, bendradarbiaudami su susidomėjusiais studentais, atliko užduotį – modulis realiai atpažįsta formules, nuskaitytas iš matematikos ar fizikos vadovėlių. Rezultatas: ABBYY yra pasirengusi įsigyti šį produktą už didelius pinigus.

Vykdydami bendrą projektą „AIBC ABC“ su MIPT jau rašėme apie vadinamąsias, kurios leidžia „auginti“ programas pagal Darvino evoliucijos principus ir dėsnius. Tačiau kol kas šis požiūris į dirbtinį intelektą tikrai yra „svečias iš ateities“. Tačiau kaip dirbtinio intelekto sistemos kuriamos šiandien? Kaip jie treniruojami? Viktoras Kantoras, MIPT Algoritmų ir programavimo technologijų katedros vyresnysis dėstytojas ir „Yandex Data Factory“ vartotojų elgsenos analizės grupės vadovas, padėjo mums tai išsiaiškinti.

Remiantis naujausia tyrimų įmonės „Gartner“, kuri reguliariai atnaujina savo „technologijų brandos ciklą“, ataskaitą, mašininis mokymasis šiuo metu yra didžiausias lūkesčių visoje IT srityje. Tai nenuostabu: per pastaruosius kelerius metus mašininis mokymasis išėjo iš siauro matematikų ir algoritmų teorijos specialistų rato interesų sferos ir pirmiausia prasiskverbė į IT verslininkų žodyną, o paskui į pasaulį. paprastų žmonių. Dabar visi, kurie naudojosi „Prisma“ programėle, ieškojo dainų naudodami „Shazam“ arba matė per „DeepDream“ perduodamus vaizdus, ​​žino, kad yra toks dalykas kaip neuroniniai tinklai su savo ypatinga „stebuklingumu“.

Tačiau vienas dalykas yra naudoti technologijas, o kitas – suprasti, kaip jos veikia. Bendrieji žodžiai, pvz., „kompiuteris gali išmokti, jei duosi užuominą“ arba „neuroninis tinklas susideda iš skaitmeninių neuronų ir yra struktūrizuotas kaip žmogaus smegenys“, gali kam nors padėti, tačiau dažniausiai jie tik sumaišo situaciją. Tiems, kurie ketina rimtai studijuoti matematiką, populiarių tekstų nereikia: jiems yra vadovėlių ir puikūs kursai internete. Bandysime pasirinkti vidurinį kelią: paaiškinsime, kaip iš tikrųjų vyksta mokymasis atliekant labai paprastą užduotį, o tada parodysime, kaip tą patį metodą galima pritaikyti sprendžiant tikrai įdomias problemas.

Kaip mašinos mokosi

Pirmiausia, norėdami tiksliai suprasti, kaip vyksta mašininis mokymasis, apibrėžkime sąvokas. Kaip apibrėžė vienas iš šios srities pradininkų Arthuras Samuelis, mašininis mokymasis reiškia metodus, kurie „leidžia kompiuteriams mokytis jų tiesiogiai neprogramuojant“. Yra dvi plačios mašininio mokymosi metodų klasės: prižiūrimas mokymasis ir neprižiūrimas mokymasis. Pirmoji naudojama, kai, pavyzdžiui, reikia išmokyti kompiuterį ieškoti nuotraukų su kačių vaizdais, antrasis – kai mums reikia mašinos, pavyzdžiui, kad galėtume savarankiškai grupuoti naujienas į istorijas, kaip tai vyksta paslaugose. kaip „Yandex.News“ arba „Google“ naujienos. Tai yra, pirmuoju atveju mes susiduriame su užduotimi, kuri reiškia teisingo atsakymo egzistavimą (katė nuotraukoje yra arba ne), antruoju atveju nėra vieno teisingo atsakymo, tačiau yra įvairių būdų išspręsti problemą. Mes sutelksime dėmesį į pirmą problemų klasę kaip įdomiausias.

Taigi turime išmokyti kompiuterį daryti tam tikras prognozes. Be to, pageidautina, kad jis būtų kuo tikslesnis. Numatymai gali būti dviejų tipų: arba reikia pasirinkti iš kelių atsakymų variantų (ar paveikslėlyje yra katė, ar ne, galima pasirinkti vieną iš dviejų, galimybė atpažinti raides vaizduose yra vienas pasirinkimas iš kelių dešimčių ir pan.) arba padarykite skaitinę numatymą . Pavyzdžiui, nuspėti žmogaus svorį pagal jo ūgį, amžių, batų dydį ir pan. Šios dvi problemos tik atrodo skirtingai, bet iš tikrųjų jos sprendžiamos beveik identiškai. Pabandykime tiksliai suprasti, kaip.

Pirmas dalykas, kurį turime sukurti prognozavimo sistemą, yra surinkti vadinamąją treniruočių pavyzdį, tai yra duomenis apie žmonių svorį populiacijoje. Antrasis – nuspręsti dėl ženklų rinkinio, kurio pagrindu galime daryti išvadas apie svorį. Akivaizdu, kad vienas iš „stipriausių“ tokių ženklų bus žmogaus ūgis, todėl pirmam apytiksliui pakanka paimti tik tai. Jei svoris tiesiškai priklauso nuo ūgio, tada mūsų prognozė bus labai paprasta: žmogaus svoris bus lygus jo ūgiui, padaugintam iš kažkokio koeficiento, pridėjus tam tikrą pastovią reikšmę, kuri parašyta paprasčiausia formule y=kx+b. Viskas, ką turime padaryti, norėdami išmokyti mašiną nuspėti žmogaus svorį, tai kažkaip rasti teisingas k ir b reikšmes.

Mašininio mokymosi grožis yra tas, kad net jei mūsų tiriami santykiai yra labai sudėtingi, mūsų požiūris iš esmės nepasikeis. Mes vis tiek susidursime su ta pačia regresija.

Tarkime, žmogaus svorį jo ūgis įtakoja ne tiesiškai, o iki trečio laipsnio (ko paprastai tikimasi, nes svoris priklauso nuo kūno tūrio). Norėdami atsižvelgti į šią priklausomybę, į savo lygtį tiesiog įtraukiame kitą terminą, būtent trečiąją augimo laipsnį su savo koeficientu, taip gaudami y=k 1 x+k 2 x 3 +b. Dabar, norėdami išmokyti mašiną, turėsime rasti ne du, o tris kiekius (k 1, k 2 ir b). Tarkime, savo prognozėje norime atsižvelgti ir į žmogaus batų dydį, amžių, laiką, praleistą prie televizoriaus, ir atstumą nuo jo buto iki artimiausios greito maisto parduotuvės. Jokių problemų: mes tiesiog įtraukiame šias funkcijas kaip atskirus terminus į tą pačią lygtį.

Svarbiausia sukurti universalų būdą, kaip rasti reikiamus koeficientus (k 1, k 2, ... k n). Jei jis egzistuoja, tai mums bus beveik abejinga, kokias funkcijas naudoti numatymui, nes pats aparatas išmoks suteikti didelį svorį svarbioms, o mažą – nesvarbioms savybėms. Laimei, toks metodas jau buvo išrastas ir juo sėkmingai veikia beveik visas mašininis mokymasis: nuo paprasčiausių linijinių modelių iki veido atpažinimo sistemų ir kalbos analizatorių. Šis metodas vadinamas gradiento nusileidimu. Tačiau prieš paaiškindami, kaip tai veikia, turime padaryti nedidelį nukrypimą ir pakalbėti apie neuroninius tinklus.

Neuroniniai tinklai

2016 m. neuroniniai tinklai taip stipriai pateko į informacijos darbotvarkę, kad buvo beveik tapatinami su bet kokiu mašininiu mokymusi ir pažangia IT apskritai. Formaliai kalbant, tai netiesa: neuroniniai tinklai ne visada naudojami matematiniam mokymuisi, yra ir kitų technologijų. Bet apskritai, žinoma, toks susiejimas yra suprantamas, nes būtent neuroniniais tinklais pagrįstos sistemos dabar suteikia „stebuklingiausius“ rezultatus, tokius kaip galimybė ieškoti žmogaus nuotraukoje, atsiranda programų, kurios perduoda vieno atvaizdo stilius kitam arba tekstų generavimo sistemos tam tikro asmens kalbos maniera.

Neuroninių tinklų struktūra jau... Čia tik noriu pabrėžti, kad neuroninių tinklų stiprybė, palyginti su kitomis mašininio mokymosi sistemomis, slypi jų daugiasluoksnėje prigimtyje, tačiau tai nereiškia, kad jie iš esmės skiriasi savo veikimo būdu. Daugiasluoksnė funkcija tikrai leidžia rasti labai abstrakčias bendrąsias ypatybes ir priklausomybes sudėtinguose funkcijų rinkiniuose, pvz., vaizdo pikseliuose. Tačiau svarbu suprasti, kad mokymosi principų požiūriu neuroninis tinklas radikaliai nesiskiria nuo įprastų tiesinės regresijos formulių rinkinio, todėl čia puikiai veikia ir tas pats gradiento nusileidimo metodas.

Neuroninio tinklo „galia“ slypi tarpiniame neuronų sluoksnyje, kuris apibendrina įvesties sluoksnio reikšmes. Dėl šios priežasties neuroniniai tinklai gali rasti labai abstrakčių duomenų ypatybių, kurias sunku redukuoti į paprastas formules, pvz., tiesinį arba kvadratinį ryšį.

Paaiškinkime pavyzdžiu. Mes apsistojome prie prognozės, kurioje žmogaus svoris priklauso nuo jo ūgio ir kubo ūgio, kuris išreiškiamas formule y=k 1 x+k 2 x 3 +b. Su tam tikru tempimu, bet iš tikrųjų net tokią formulę galima pavadinti neuroniniu tinklu. Jame, kaip ir įprastame neuroniniame tinkle, yra pirmasis „neuronų“ sluoksnis, kuris taip pat yra savybių sluoksnis: tai yra x ir x 3 (na, „vienetinis neuronas“, kurį turime omenyje ir kuriam atsakingas koeficientas b). Viršutinį arba susidariusį sluoksnį vaizduoja vienas „neuronas“ y, tai yra numatomas asmens svoris. O tarp pirmojo ir paskutinio „neuronų“ sluoksnių yra jungtys, kurių stiprumą arba svorį lemia koeficientai k 1, k 2 ir b. Šio „neuroninio tinklo“ mokymas tiesiog reiškia, kad reikia rasti tuos pačius koeficientus.

Vienintelis skirtumas nuo „tikrųjų“ neuroninių tinklų čia yra tas, kad mes neturime nei vieno tarpinio (arba paslėpto) neuronų sluoksnio, kurio užduotis yra sujungti įvesties savybes. Tokių sluoksnių įvedimas leidžia „iš galvos“ nesugalvoti galimų priklausomybių tarp esamų funkcijų, o pasikliauti jų jau esamomis kombinacijomis neuroniniame tinkle. Pavyzdžiui, amžius ir vidutinis laikas prie televizoriaus gali turėti sinergetinį poveikį žmogaus svoriui, tačiau, turėdami neuroninį tinklą, neprivalome to žinoti iš anksto ir į formulę įrašyti jo produkto. Neuroniniame tinkle tikrai bus neuronas, kuris sujungia bet kurių dviejų savybių įtaką, ir jei ši įtaka imtyje tikrai pastebima, tai po treniruotės šis neuronas automatiškai gaus didelį svorį.

Gradiento nusileidimas

Taigi, turime mokomąjį pavyzdžių rinkinį su žinomais duomenimis, tai yra lentelę su tiksliai išmatuotu žmogaus svoriu ir tam tikrą ryšio hipotezę, šiuo atveju tiesinę regresiją y=kx+b. Mūsų užduotis yra rasti teisingas k ir b reikšmes ne rankiniu būdu, o automatiškai. Ir pageidautina, universalus metodas, kuris nepriklauso nuo į formulę įtrauktų parametrų skaičiaus.

Apskritai tai padaryti nėra sunku. Pagrindinė idėja yra sukurti funkciją, kuri išmatuos esamą bendrą klaidų lygį ir „pakeis“ koeficientus taip, kad bendras klaidų lygis palaipsniui mažėtų. Kaip sumažinti klaidų lygį? Turime pakoreguoti savo parametrus tinkama linkme.

Įsivaizduokite du mūsų ieškomus parametrus, tuos pačius k ir b, kaip dvi kryptis plokštumoje, pavyzdžiui, šiaurės-pietų ir vakarų-rytų ašis. Kiekvienas taškas tokioje plokštumoje atitiks tam tikrą koeficientų reikšmę, tam tikrą specifinį ūgio ir svorio santykį. Ir kiekvienam tokiam taškui plokštumoje galime apskaičiuoti bendrą klaidos lygį, kurį ši prognozė suteikia kiekvienam iš mūsų imties pavyzdžių.

Pasirodo, kažkas panašaus į konkretų aukštį plokštumoje, o visa aplinkinė erdvė ima priminti kalnų peizažą. Kalnai yra taškai, kuriuose klaidų lygis yra labai didelis, slėniai yra vietos, kur klaidų yra mažiau. Akivaizdu, kad mūsų sistemos mokymas reiškia, kad reikia rasti žemiausią tašką žemėje, kur klaidų lygis yra minimalus.

Kaip galite rasti šį tašką? Teisingiausias būdas yra visą laiką judėti žemyn nuo taško, kuriame iš pradžių atsidūrėme. Taigi anksčiau ar vėliau pasieksime vietinį minimumą – tašką, žemiau kurio šalia nieko nėra. Be to, patartina žengti įvairaus dydžio laiptelius: kai nuolydis status, galima žengti platesnius, kai nuolydis mažas, iki vietinio minimumo geriau lįsti „ant pirštų galiukų“, kitaip galite peršokti.

Gradiento nusileidimo metodas veikia būtent taip: ypatybių svorius keičiame didžiausio paklaidos funkcijos kritimo kryptimi. Keičiame juos iteratyviai, tai yra su tam tikru žingsniu, kurio reikšmė proporcinga šlaito statumui. Įdomu tai, kad padaugėjus savybių (pridėjus kubą žmogaus ūgio, jo amžiaus, batų dydžio ir pan.), iš esmės niekas nesikeičia, tiesiog mūsų peizažas tampa ne dvimatis, o daugiamatis.

Klaidos funkciją galima apibrėžti kaip visų nuokrypių kvadratų sumą, kurią dabartinė formulė leidžia žmonėms, kurių svorį jau tiksliai žinome. Paimkime keletą atsitiktinių dydžių k ir b, pavyzdžiui, 0 ir 50. Tada sistema mums numatys, kad kiekvieno imtyje esančio asmens svoris visada lygus 50 kilogramų y=0×x+50 Grafike toks priklausomybė atrodys kaip tiesi linija, lygiagreti horizontaliai. Aišku, tai nėra labai gera prognozė. Dabar paimkime svorio nuokrypį nuo šios numatomos vertės, padėkite jį kvadratu (kad būtų atsižvelgta ir į neigiamas reikšmes) ir susumavome – šiuo metu tai bus klaida. Jei esate susipažinę su analizės pradžia, netgi galite paaiškinti, kad didžiausio kritimo kryptį nurodo klaidos funkcijos dalinė išvestinė k ir b atžvilgiu, o žingsnis yra reikšmė, kuri pasirenkama praktinės priežastys: mažiems žingsneliams skaičiuoti reikia daug laiko, o dideli gali lemti, kad praslysime per minimumą.

Gerai, ką daryti, jei turime ne tik sudėtingą regresiją su daugybe funkcijų, bet ir tikrą neuroninį tinklą? Kaip šiuo atveju taikyti gradiento nusileidimą? Pasirodo, gradiento nusileidimas veikia lygiai taip pat su neuroniniu tinklu, tik mokymas vyksta 1) žingsnis po žingsnio, nuo sluoksnio iki sluoksnio ir 2) palaipsniui, nuo vieno pavyzdžio pavyzdyje į kitą. Čia naudojamas metodas vadinamas atgaliniu propagavimu ir jį 1974 m. nepriklausomai aprašė sovietų matematikas Aleksandras Galuškinas ir Harvardo universiteto matematikas Paulas Johnas Webrosas.

Nors norint griežtai pateikti algoritmą, reikės užrašyti dalines išvestis (kaip, pavyzdžiui), intuityviu lygmeniu viskas vyksta gana paprastai: kiekvienam iš pavyzdžio pavyzdžių išvestyje turime tam tikrą prognozę. neuroninio tinklo. Turėdami teisingą atsakymą, galime atimti teisingą atsakymą iš prognozės ir taip gauti klaidą (tiksliau, klaidų aibę kiekvienam išvesties sluoksnio neuronui). Dabar turime perkelti šią klaidą į ankstesnį neuronų sluoksnį, ir kuo labiau šis konkretus šio sluoksnio neuronas prisidėjo prie klaidos, tuo labiau turime sumažinti jo svorį (iš tikrųjų mes vėl kalbame apie dalinės išvestinės dalies paėmimą, apie judėjimą didžiausiu mūsų įsivaizduojamo kraštovaizdžio statumu) . Kai tai padarysime, tą pačią procedūrą reikia pakartoti kitam sluoksniui, judant priešinga kryptimi, tai yra, nuo neuroninio tinklo išvesties iki įvesties.

Tokiu būdu pereidami per neuroninį tinklą su kiekvienu mokomojo pavyzdžio pavyzdžiu ir „sukdami“ neuronų svorius norima kryptimi, galiausiai turėtume gauti ištreniruotą neuroninį tinklą. Atgalinės sklaidos metodas yra paprastas gradiento nusileidimo metodo modifikavimas daugiasluoksniams neuroniniams tinklams, todėl turėtų veikti bet kokio sudėtingumo neuroniniuose tinkluose. Čia sakome „turėtų“, nes iš tikrųjų yra atvejų, kai gradiento nusileidimas nepavyksta ir neleidžia atlikti geros regresijos ar išmokyti neuroninio tinklo. Gali būti naudinga žinoti, kodėl kyla tokių sunkumų.

Gradiento nusileidimo sunkumai

Neteisingas absoliutaus minimumo pasirinkimas. Gradiento nusileidimo metodas padeda ieškoti vietinio ekstremumo. Tačiau ne visada galime jį naudoti norėdami pasiekti absoliutų visuotinį funkcijos minimumą arba maksimumą. Taip atsitinka todėl, kad judėdami antigradientu sustojame tuo momentu, kai pasiekiame pirmąjį lokalų minimumą, su kuriuo susiduriame, ir algoritmas nustoja veikti.

Įsivaizduokite, kad stovite kalno viršūnėje. Jei norite nusileisti į žemiausią vietovės paviršių, gradiento nusileidimo metodas jums ne visada padės, nes pirmas žemumas jūsų kelyje nebūtinai bus žemiausias taškas. Ir jei gyvenime sugebi pamatyti, kad jei šiek tiek pakilsi, o paskui galėsi dar žemiau, tai algoritmas tokioje situacijoje tiesiog sustos. Dažnai šios situacijos galima išvengti, jei pasirenkate tinkamą žingsnį.

Neteisingas žingsnių pasirinkimas. Gradiento nusileidimo metodas yra pasikartojantis metodas. Tai yra, mes patys turime pasirinkti žingsnio dydį – greitį, kuriuo leidžiamės žemyn. Pasirinkę per didelį žingsnį, galime praskrieti pro mums reikalingą ekstremumą ir nerasime minimumo. Taip gali nutikti, jei atsidursite prieš labai staigų nusileidimą. O pasirinkus per mažą žingsnį rizikuojame, kad algoritmas bus itin lėtas, jei atsidursime ant palyginti lygaus paviršiaus. Jei vėl įsivaizduotume, kad esame stataus kalno viršūnėje, gali susidaryti situacija, kai dėl labai stataus nusileidimo netoli minimumo tiesiog perskrendame jį.

Tinklo paralyžius. Kartais nutinka taip, kad gradiento nusileidimo metodu visai nepavyksta rasti minimumo. Taip gali nutikti, jei abiejose minimumo pusėse yra lygūs plotai – algoritmas, atsitrenkęs į plokščią plotą, sumažina žingsnį ir galiausiai sustoja. Jei stovite kalno viršūnėje ir nuspręsite pajudėti link savo namų žemumoje, kelionė gali būti per ilga, jei netyčia užklysite į labai plokščią vietovę. Arba, jei lygių plotų kraštuose yra beveik vertikalūs „šlaitai“, algoritmas, pasirinkęs labai didelį žingsnį, peršoks nuo vieno šlaito į kitą, praktiškai nejudėdamas link minimumo.

Į visas šias sudėtingas problemas reikia atsižvelgti kuriant mašininio mokymosi sistemą. Pavyzdžiui, visada naudinga tiksliai sekti, kaip laikui bėgant keičiasi klaidos funkcija – ar ji krenta su kiekvienu nauju ciklu ar žymėjimo metu, kaip keičiasi šio kritimo pobūdis, priklausomai nuo žingsnio dydžio pasikeitimo. Kad nepatektumėte į blogą lokalinį minimumą, gali būti naudinga pradėti nuo skirtingų atsitiktinai parinktų kraštovaizdžio taškų – tada tikimybė įstrigti yra daug mažesnė. Yra daug daugiau didelių ir mažų gradiento nusileidimo paslapčių, taip pat yra egzotiškesnių mokymosi būdų, šiek tiek panašių į nusileidimą gradientu. Tačiau tai yra kito pokalbio ir atskiro straipsnio tema, susijusi su AI projekto ABC rėmais.

Parengė Aleksandras Eršovas