Namai Daržovės Novatoriškas seminaras „Fivte“: tikros fizikos ir technologijų studentų sėkmės istorijos. „Tvirtas duomenų mokslininkas tampa kaip vidutinės įmonės generalinis direktorius. Mašininio mokymosi ekspertas Yandex.Taxi – apie tai, kaip duomenys prognozuoja ateitį ir formuoja pasaulį Dabar esame aktyvūs

Novatoriškas seminaras „Fivte“: tikros fizikos ir technologijų studentų sėkmės istorijos. „Tvirtas duomenų mokslininkas tampa kaip vidutinės įmonės generalinis direktorius. Mašininio mokymosi ekspertas Yandex.Taxi – apie tai, kaip duomenys prognozuoja ateitį ir formuoja pasaulį Dabar esame aktyvūs

– Ar galite panaudoti visiškai primityvų pavyzdį, kad apibūdintumėte, kaip veikia mašininis mokymasis?

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

- Pirma, aš jį pažįstu ar ne...

(Viktoras tai užrašo lentoje.)

… Jei nežinau, turiu atsakyti į klausimą, patrauklu ar ne.

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

– Jei žinau, tai irgi svarbu!

Ne, tai bus draugų zonos filialas.

Gerai, parodykime čia, ar tai įdomu, ar ne. Nepaisant to, kai nepažįsti žmogaus, pirma reakcija būna į išvaizdą, su draugu jau matome, ką jis galvoja ir kaip.

Darykime kitaip. Nesvarbu, ar jis ambicingas, ar ne. Jei jis ambicingas, bus sunku su juo susidraugauti, jis taip pat norės daugiau. O neambicingieji toleruos.

(Viktoras užbaigia lemiamą medį.)

Paruošta. Dabar galite nuspėti, su kuriuo vaikinu greičiausiai susitiksite. Beje, kai kurios pažinčių tarnybos numato tokį dalyką. Pagal analogiją galite numatyti, kiek produktų pirkėjai pirks ir kur žmonės bus šiuo paros metu.

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

Dabar įsivaizduokite, ar prieš du šimtus metų žmonėms buvo sunku sugalvoti tokią schemą? Visiškai ne! Ši schema nekelia jokios raketos pojūčio. Kaip reiškinys mašininis mokymasis egzistuoja maždaug pusę amžiaus ar šimtmetį. Ronaldas Fišeris, remdamasis duomenimis, prognozuoti pradėjo XX amžiaus pradžioje. Jis paėmė vilkdalgius ir paskirstė juos per taurėlapio ir žiedlapio ilgį ir plotį, pagal šiuos parametrus nustatė augalo rūšį.

Pramonėje mašininis mokymasis buvo aktyviai naudojamas pastaraisiais dešimtmečiais: ne taip seniai atsirado stiprios ir palyginti nebrangios mašinos, reikalingos dideliems duomenų kiekiams apdoroti, pavyzdžiui, tokiems sprendimų medžiams. Bet vis tiek gniaužia kvapą: kiekvienai užduočiai piešiame šiuos dalykus ir pagal juos nuspėjame ateitį.

- Na, tikrai ne geriau nei bet koks aštuonkojis, numatantis futbolo rungtynes...

Ne, o kur mes aštuonkojai. Nors turime daugiau kintamumo. Mašininis mokymasis dabar gali sutaupyti laiko, pinigų ir pagerinti mūsų gyvenimo komfortą. Mašininis mokymasis prieš kelerius metus įveikė žmones pagal 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 ypatumus: kaip dažnai jie važiuoja taksi, kokios klasės taksi naudojasi, į kokias vietas dažniausiai važiuoja.

Šiuo metu mes aktyviai kuriame panašius modelius, siekdami nustatyti panašiai besielgiančių žmonių grupes. Kai pristatome naują paslaugą ar norime reklamuoti seną, siūlome ją tiems, kam bus įdomu.

Pavyzdžiui, dabar turime paslaugą – dvi vaikiškas kėdutes taksi. Su šia naujiena galime išsiųsti šlamštą visiems arba apie tai pranešti tik tam tikram žmonių ratui. Per metus sukaupėme tam tikrą skaičių vartotojų, kurie komentaruose rašė, kad jiems reikia dviejų vaikiškų kėdučių. Mes juos radome ir žmonėms patinka. 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 aš kaip pavyzdys.

– Net ir tokių subtilybių?

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

Ir programoje tai gali kažkaip veikti? Pavyzdžiui, ar žinote, kad esu elgeta ir užsiprenumeruoju tokias grupes kaip „Kaip išgyventi iš 500 rublių per mėnesį“ – man siūlomi tik aplamdyti pigūs automobiliai, užsiprenumeruoju „SpaceX“ naujienas – ir aš karts nuo karto gaunu „Tesla“ laikas?

Tai gali veikti taip, bet „Yandex“ tokiems dalykams nepritaria, 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škrypėlių norų, o kartais reikia rasti ne Viduržemio jūros patiekalo receptą, o, pavyzdžiui, paveikslėlius apie koprofiliją. Ar personalizavimas veiks ir šiuo atveju?

Visada yra privatus režimas.

Jei nenoriu, kad kas nors žinotų apie mano pomėgius arba, tarkime, draugai atėjo pas mane ir norėjo 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č prižiūrėti darbuotojus.

– Tai jeigu aš išsiskirčiau 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, to sužinoti nepavyks. Daugelis 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 taksi taksi prognozavome tašką „B“ – paskirties tašką, įvedėme užuominas. Štai pažiūrėk.

(Victoras įeina į Yandex.Taxi programą.)

Pavyzdžiui, taksi mano, kad aš namie. Jis mane kviečia eiti į darbą arba į RUDN universitetą (ten skaitau paskaitas pagal „Data Mining in Action“ mašininio mokymosi kursą). Ir kažkuriuo momentu, kurdami šiuos patarimus, supratome, kad neturėtume nuleisti vartotojo. Kažkas gali pamatyti tašką "B". Dėl šių priežasčių atsisakėme siūlyti vietas, remdamiesi panašumu. Ir tada 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 mėlyni taškai mirksi jūsų žemėlapyje?

Tai yra paėmimo taškai. Šie taškai parodo, kur patogiausia išsikviesti taksi. Juk galima skambinti ten, kur skambinti bus visiškai nepatogu. Bet apskritai galite skambinti į bet kurį tašką.

- Taip, bet koks. 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 plaukė per Ramųjį vandenyną. Kaip matote, kartais būna klaidų ir daugiau nei du blokai.

- O jei iš naujo paleisite programą ir vėl įkišite, tada kaina pasikeis keliais rubliais. Kodėl?

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

– Ar nemanote, kad „Yandex.Taxi“ greitai užmuš visą taksi rinką?

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

Pavyzdžiui, aš pats naudojuosi įvairiomis taksi paslaugomis. Man svarbu laukimo laikas, todėl peržvelgiu kelias paraiškas, kuris taksi atvažiuos greičiau.


– Susijungėte su „Uber“. Kam?

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

Vokietijoje vaikinas savo dronuose įsirengė vonią ir taip nuskrido atnešti mėsainio. Ar pagalvojote, kad atėjo laikas įvaldyti oro erdvę?

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

– O kaip su taksi dronais?

Čia yra įdomus momentas. Mes juos kuriame, bet turime galvoti, kaip tiksliai juos panaudoti. 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 į drono programinę įrangą gali būti įsilaužta, norint valdyti automobilį nuotoliniu būdu?

Rizika yra visada ir visur, kur yra technologijų ir įtaisų. Tačiau kartu su technologijų plėtra vystosi ir kita kryptis – jų apsauga ir saugumas. Su apsaugos sistemomis dirba visi, kurie vienaip ar kitaip susiję su technologijų kūrimu.

– Kokius vartotojų duomenis renkate ir kaip juos apsaugote?

Renkame anoniminius vartotojo duomenis, pvz., kur, kada ir kur buvo atlikta kelionė. Viskas, kas svarbu, yra maiša.

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

Manau, kad jis tik didės. Visgi šiuos dronus irgi reikia kažkaip aptarnauti. Tai, žinoma, yra šiek tiek stresinė situacija, keičianti specialybę, bet ką tu padarysi.

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

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

– Patirtis nebevaidina?

Vaidina. Bet metodai keičiasi, gali ateiti į sritį, kur, pavyzdžiui, gilus mokymasis nebuvo naudojamas, kurį laiką dirbi ten, tada visur diegiami giluminio mokymosi metodai, ir tu nieko apie tai nesupranti. Ir viskas. Jūsų patirtis gali praversti tik planuojant komandos darbą ir net tada ne visada.

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

Duomenų mokslo specialistų paklausa yra tiesiog nereikšminga. Akivaizdu, kad dabar yra beprotiško triukšmo laikotarpis. Ačiū Dievui, „blockchain“ padėjo šiai ažiotažai šiek tiek nurimti. Blockchain specialistai išardomi dar greičiau.

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

Pasitaiko atvejų, kai bankas nori sukurti vartotojams rekomenduojamą paslaugų sistemą. Klausiame: „Ar manote, kad tai bus ekonomiškai pagrįsta? Jie atsako: „Taip, mums nerūpi. Daryk. Visos tos pačios rekomendacijų sistemos, būsime tendencijose.

Skausmas ta, kad tikrai naudingo dalyko verslui nepavyks padaryti per vieną dieną. Reikia žiūrėti, kaip sistema išmoks. Ir ji visada iš pradžių dirba su klaidomis, treniruotėse gali pritrūkti kokių nors duomenų. Ištaisai klaidas, tada vėl taisai ir net viską perdarai. Po to reikia sukonfigūruoti, kad sistema 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 pažvelgsite į mašininio mokymosi metodus, pavyzdžiui, į juodąją dėžę, galite lengvai nepastebėti, kaip prasideda nesąmonė. Yra barzdota istorija. Kariškiai paprašė sukurti algoritmą, pagal kurį būtų galima išanalizuoti, ar nuotraukoje yra tankas, ar ne. Mokslininkai padarė, išbandė, kokybė puiki, viskas puiku, duota kariuomenei. Ateina kariškiai ir sako, kad niekas neveikia. Mokslininkai pradeda nervingai suprasti. Pasirodo, visose kariškių atvežtose nuotraukose su tanku kampe buvo varnelė su rašikliu. Algoritmas nepriekaištingai išmoko rasti varnelę, jis 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 reikia bendradarbiauti su vaikais?

Jau seniai lankausi įvairiausiuose moksleiviams skirtuose renginiuose, skaitau paskaitas apie mašininį mokymąsi. Ir, beje, vieną iš temų mane išmokė dešimtokas. Buvau visiškai tikra, kad mano istorija bus gera ir įdomi, didžiavausi savimi, pradėjau transliuoti, o mergina buvo tokia: „O, mes norime sumažinti šitą dalyką“. Žiūriu ir galvoju, bet tikrai, kodėl, ir tikrai galima sumažinti, o ypač nėra ką įrodinėti. Praėjo keli metai, dabar ji klauso mūsų paskaitų kaip fizikos studentė. „Yandex“, beje, turi „Yandex.Lece“, kur studentai gali nemokamai įgyti pagrindinių programavimo žinių.

- Konsultuoti universitetus ir fakultetus, kuriuose dabar dėstomas mašininis mokymasis.

Yra MIPT, FIVT ir FUPM fakultetai. HSE taip pat turi nuostabų informatikos fakultetą, o Maskvos valstybinio universiteto VMK yra mašininis mokymasis. Na, dabar galite klausytis mūsų kurso RUDN universitete.

Kaip sakiau, ši profesija yra paklausi. Labai ilgą laiką techninį išsilavinimą įgiję žmonės užsiėmė visai kitais dalykais. Mašininis mokymasis yra puikus pavyzdys, kai visi dalykai, kurių mokė techninį išsilavinimą turintys žmonės, dabar yra reikalingi, naudingi ir gerai apmokami.

- Kaip gerai?

Įvardykite sumą.

– 500 tūkst per mėnesį.

Jūs galite, tik nebūdami eilinis duomenų mokslininkas. Bet kai kuriose įmonėse labai labai praktikantas už paprastą darbą gali gauti 50 tūkst.Labai didelis skirtumas. Apskritai kieto duomenų mokslininko atlyginimą galima palyginti su kokios nors vidutinės įmonės generalinio direktoriaus atlyginimu. Daugelyje įmonių, be atlyginimo, darbuotojui krenta daug bandelių, o jei aišku, kad žmogus atėjo ne parašyti gerą prekės ženklą savo CV, o tikrai dirbti, tada viskas bus gerai. jam.

Jau beveik metai praėjo nuo tada, kai FIVT pradėjo neįprastą dalyką – novatorišką seminarą. Jo esmė – IT startuolių kūrimas studentų komandoms vadovaujant patyrusiems mentorių. Pasirodė gana gerai: kurso dėka kažkas dalį vasaros praleido Kremievajos slėnyje, kažkas gavo 800 000 rublių dotaciją projekto plėtrai, o kažkieno ABBYY yra pasirengusi visiškai išpirkti projektą. Ir tai dar ne visi seminaro rezultatai!

2011 m. pradžioje FIVT trečio kurso studentai buvo susirinkę į aktų salę ir jiems pasakė: per ateinančius metus turėsite sukurti savo startuolį. Mokiniai šią idėją suvokė nevienareikšmiškai: visiškai neaišku, kaip tai padaryti, o atsakomybė neįprasta – juk reikėjo daryti technologijų verslą, o ne kitą edukacinį projektą. Štai ką apie tai mano Viktoras Kantoras, MIPT studentų fizikos olimpiados nugalėtojas, Yandeska skyriaus studentas:

Kai stojant pasirinkau FIVT, tikėjausi, kad turėsime kažką panašaus. Taigi džiaugiuosi, kad tikėjausi priežasties. Per metus jautėsi, kad kursas dar tik formuojasi, jame daug naujo, daugelis klausimų pasirodė prieštaringi ne tik studentams, bet ir organizatoriams, tačiau apskritai, manau, tendencijos buvo teigiamos. Man patiko šis kursas.

Studentų darbui palengvinti buvo pakviesti įvairūs kuratoriai, siūlę savo idėjas kuriant inovatyvius verslus. Tarp jų buvo visiškai skirtingų žmonių: nuo MIPT vyresniųjų ir magistrantūros studentų iki Ernst & Young patarėjo naujovių klausimais Jurijaus Pavlovičiaus Ammosovo (jis buvo viso kurso vadovas) ir Michailo Batino, kuris užsiima regeneracine medicina ir gyvenimo pratęsimo klausimais. Dėl to fizikai išsirinko jiems pačias įdomiausias idėjas, kuratoriai prisirišo prie komandų ir prasidėjo sunkus, bet jaudinantis darbas.

Beveik metus, praėjusius nuo tos akimirkos, vaikinai susidūrė su daugybe problemų, kai kurios iš jų buvo išspręstos. Dabar galite įvertinti jų rezultatus – nepaisant sunkumų, vaikinai susidorojo. MIPT studentams (be FIVS, prie proceso prisijungė ir kai kurie FOPF ir 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“ skirta 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. mokytis technologijų verslumo pagrindų ir kalbėtis su tarptautiniais rizikos kapitalo ekspertais.

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

Šis projektas suteikia galimybę bet kuriam asmeniui paprastai, greitai ir visiškai nemokamai atlikti labdaros darbus. Modelis paprastas: reklamuotojai svetainėje siūlo tam tikrą veiklų rinkinį, vartotojai savanoriškai jose dalyvauja, visi pinigai iš reklamos pervedami į labdaros fondą. Per savaitę po paleidimo projektas surinko daugiau nei 6500 vartotojų ir nesitenkins tuo, kas jau pasiekta. 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)

Kompiuterio galimybes ir telefono mobilumą viename dėkle leidžianti aplikacija – itin naudingas produktas užimtiems, dažnai verslo reikalais keliaujantiems žmonėms. Pakanka jį įdiegti išmaniajame telefone, ir vartotojas galės „įsigyti“ savo kompiuterį bet kuriame viešbutyje, biure ir tikrai visur, kur rasite monitorių (tinka ir televizorius), klaviatūrą ir pelė. Projektas gavo dotaciją idėjos plėtrai ir buvo pristatytas Technovation Cup parodoje, o už gautus pinigus komanda jau aktyviai perka įrangą. Amerikiečių procesorių gamintojas MIPS labai domisi plėtra.

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

Ką daryti, jei prisiminsite, kad kažkur jūsų pašto dėžutėje buvo labai svarbus laiškas, kuriame buvo kalbama apie naujausią Didžiojo sprogimo teorijos epizodą, tačiau tuo pačiu neprisimenate jokių raktinių žodžių iš teksto? „Yandex“ ir „Google“ paieška yra bejėgė. Į pagalbą ateis „Smart Tagger“ kūrimas – „išmanioji“ programa, naudojanti semantinę paiešką, suteiks jums visus tekstus, kurių prasmė persipynusi su populiariu serialu. Projektas laimėjo dotaciją U.M.N.I.K. iš viso 400 000 rublių!

MathOcr – formulės atpažinimas (Victoras Prunas)

Įgyvendinimui ABBYY pasiūlė įdomią užduotį – sukurti programą, kuri atpažintų bet kokio sudėtingumo matematines formules. FIVT studentai, susibūrę su susidomėjusiais fopfais, atliko užduotį – modulis tikrai atpažįsta formules, nuskaitytas iš matano ar fizikos vadovėlių. Rezultatas: ABBYY yra pasirengusi įsigyti šį produktą už didelius pinigus.

ABC AI projekto kartu su MIPT rėmuose jau rašėme apie vadinamąsias, leidžiančias „auginti“ programas pagal Darvino evoliucijos principus ir dėsnius. Tačiau nors toks požiūris į dirbtinį intelektą, žinoma, yra „svečias iš ateities“. Tačiau kaip dirbtinio intelekto sistemos kuriamos šiandien? Kaip jie treniruojami? Viktoras Kantoras, Maskvos fizikos ir technologijos instituto Algoritmų ir programavimo technologijų katedros vyresnysis dėstytojas, „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 šiandien yra visų IT lūkesčių viršūnė. 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 vėliau – į IT pasaulį. paprasti žmonės. Dabar, kai yra toks dalykas kaip neuroniniai tinklai su savo ypatinga „magija“, žino visi, kurie naudojosi „Prisma“ programa, ieškojo dainų naudodami „Shazam“ ar matė per „DeepDream“ perduodamus vaizdus.

Tačiau vienas dalykas yra naudoti technologijas, o kitas – suprasti, kaip jos veikia. Įprasti žodžiai, tokie kaip „kompiuteris gali išmokti, jei duosi užuominą“ arba „neuroninis tinklas susideda iš skaitmeninių neuronų ir yra išdėstytas kaip žmogaus smegenys“, gali kam nors padėti, tačiau dažniausiai jie tik painioja situaciją. Ketinantiems rimtai užsiimti matematika populiarių tekstų nereikia: jiems yra vadovėlių ir puikūs internetiniai kursai. Bandysime eiti vidurio keliu: paaiškinsime, kaip iš tikrųjų vyksta mokymasis sprendžiant paprasčiausią problemą, o tada parodysime, kaip tą patį metodą galima pritaikyti sprendžiant įdomias realaus gyvenimo problemas.

Kaip mašinos mokosi

Pirmiausia, norėdami suprasti, kaip tiksliai vyksta mašininis mokymasis, apibrėžkime sąvokas. Arthuras Samuelis, vienas iš šios srities pradininkų, mašininį mokymąsi apibrėžia kaip 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. Pirmasis naudojamas, 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 į siužetus, kaip tai vyksta tokias paslaugas kaip Yandex.News arba Google News. Tai yra, pirmuoju atveju mes susiduriame su problema, kuri reiškia teisingo atsakymo egzistavimą (nuotraukoje yra katė arba ne), antruoju atveju nėra vieno teisingo atsakymo, tačiau yra įvairių būdų problemos sprendimo. Mes sutelksime dėmesį į pirmą problemų klasę kaip įdomiausias.

Taigi turime išmokyti kompiuterį numatyti tam tikras prognozes. Be to, pageidautina, kad jis būtų kuo tikslesnis. Numatymai gali būti dviejų tipų: arba reikia rinktis iš kelių atsakymų variantų (paveikslėlyje yra katė arba ne – čia galima pasirinkti vieną iš dviejų, galimybė atpažinti raides vaizduose yra vienas pasirinkimas parinktis iš kelių dešimčių ir pan.) arba padarykite skaitinę prognozę ... Pavyzdžiui, nuspėkite žmogaus svorį pagal jo ūgį, amžių, batų dydį ir pan. Dviejų tipų šios užduotys tik atrodo nepanašios, iš tikrųjų jos išsprendžiamos beveik vienodai. Pabandykime tiksliai išsiaiškinti, 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 „stipriausių“ tokių ženklų bus žmogaus ūgis, todėl, pirmai apytiksliai, užtenka paimti tik jį. Jei svoris nuo ūgio priklauso tiesiškai, tai 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 užrašoma 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ų tiriama priklausomybė yra labai sudėtinga, mūsų požiūriu, iš esmės, beveik niekas nepasikeis. Mes vis tiek susidursime su ta pačia regresija.

Tarkime, žmogaus svorį jo ūgis įtakoja ne tiesiškai, o trečiuoju laipsniu (ko apskritai tikimasi, nes svoris priklauso nuo kūno tūrio). Norėdami atsižvelgti į šią priklausomybę, į savo lygtį tiesiog įtraukiame dar vieną 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ą, turime rasti ne du, o tris dydžius (k 1, k 2 ir b). Tarkime, savo prognozėje norime atsižvelgti į žmogaus batų dydį, amžių, laiką, kurį jis praleido prie televizoriaus, ir atstumą nuo jo buto iki artimiausios greito maisto parduotuvės. Jokių problemų: mes tiesiog įtraukėme šias savybes kaip atskirus terminus į tą pačią lygtį.

Svarbiausia sukurti universalų būdą, kaip rasti reikiamus koeficientus (k 1, k 2,… k n). Jei jis yra, būsime beveik abejingi, kokius ženklus naudoti prognozavimui, nes pats aparatas išmoks suteikti didelį svorį svarbiems, o mažiems - nesvarbiems ženklams. 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, turite padaryti nedidelį nukrypimą ir pakalbėti apie neuroninius tinklus.

Neuroniniai tinklai

2016 m. neuroniniai tinklai taip stipriai pateko į informacijos darbotvarkę, kad beveik susitapatino su bet kokiu mašininiu mokymusi ir pažangia IT apskritai. Formaliai kalbant, tai netiesa: matematiniame mokyme ne visada naudojami neuroniniai tinklai, yra ir kitų technologijų. Bet apskritai, žinoma, toks susiejimas yra suprantamas, nes būtent neuroniniais tinklais pagrįstos sistemos dabar duoda „stebuklingiausius“ rezultatus, tokius kaip galimybė ieškoti žmogaus pagal nuotrauką, atsiranda programų, kurios perduoda vieno vaizdo stilius į kitą arba sistemos, skirtos tekstui generuoti tam tikro asmens kalbos maniera.

Jau žinome, kaip veikia neuroniniai tinklai. Č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. Sluoksniavimas tikrai leidžia rasti labai abstrakčias bendrąsias ypatybes ir priklausomybes sudėtinguose funkcijų rinkiniuose, pvz., vaizdo pikseliuose. Tačiau svarbu suprasti, kad lavinimo principų požiūriu neuroninis tinklas kardinaliai nesiskiria nuo įprastų tiesinės regresijos formulių rinkinio, todėl ir čia puikiai veikia tas pats gradiento nusileidimo metodas.

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

Paaiškinkime pavyzdžiu. Sustojome ties prognoze, kurioje žmogaus svoris priklauso nuo jo ūgio ir ūgio kube, kuris išreiškiamas formule y = k 1 x + k 2 x 3 + b. Su tam tikru tempimu, bet iš tikrųjų net ir tokią formulę galima pavadinti neuroniniu tinklu. Jame, kaip ir įprastame neuroniniame tinkle, yra pirmasis „neuronų“ sluoksnis, tai taip pat yra savybių sluoksnis: tai x ir x 3 (na, ir „vienas neuronas“, kurį turime omenyje ir už už kurį atsakingas koeficientas b). Viršutinį arba gautą sluoksnį vaizduoja vienas „neuronas“ y, tai yra numatomas žmogaus svoris. O tarp pirmojo ir paskutinio „neuronų“ sluoksnių yra jungtys, kurių stiprumą arba svorį lemia koeficientai k 1, k 2 ir b. Išmokyti šį „neuronų tinklą“ reiškia tiesiog surasti tuos pačius koeficientus.

Vienintelis skirtumas nuo „tikrųjų“ neuroninių tinklų yra tas, kad mes neturime nei vieno tarpinio (arba paslėpto) neuronų sluoksnio, kurio užduotis būtų sujungti įvesties savybes. Tokių sluoksnių įvedimas leidžia negalvoti iš galvos apie galimas priklausomybes tarp esamų savybių, 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 atsiras neuronas, kuris sujungia bet kurių dviejų savybių įtaką, ir jei ši įtaka imtyje tikrai pastebima, tai po treniruotės šis neuronas automatiškai gaus daug svorio.

Gradiento nusileidimas

Taigi, turime mokomąjį pavyzdžių rinkinį su žinomais duomenimis, tai yra lentelę su tiksliai išmatuotu žmogaus svoriu ir tam tikrą priklausomybės hipotezę, šiuo atveju tiesinę regresiją y = kx + b. Mūsų užduotis yra rasti teisingas k ir b reikšmes, o 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 tam tikrą funkciją, kuri išmatuos esamą bendrą klaidų dažnį ir „pakeis“ koeficientus taip, kad bendras klaidų lygis palaipsniui mažėtų. Kaip sumažinti klaidų lygį? Turime pasukti savo parametrus tinkama linkme.

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

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 žingsnius: kai šlaitas status, galima eiti plačiau, kai nuolydis mažas, tada geriau lįsti iki vietinio minimumo „ant pirštų galiukų“, kitaip gali praslysti. .

Taip veikia gradiento nusileidimo metodas: 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 daugėjant bruožų (pridedant kubą žmogaus ūgio, jo amžiaus, batų dydžio ir pan.), iš tikrųjų niekas nesikeičia, tiesiog mūsų peizažas tampa ne dvimatis, o daugiamatis.

Klaidos funkcija gali būti apibrėžta kaip visų nukrypimų, kuriuos dabartinė formulė leidžia žmonėms, kurių svorį jau tikrai žinome, kvadratų suma. Paimkime keletą atsitiktinių dydžių k ir b, pavyzdžiui, 0 ir 50. Tada sistema numatys, kad kiekvieno asmens svoris imtyje visada yra 50 kilogramų y = 0 × x + 50 Grafike ši priklausomybė atrodys kaip tiesi linija, lygiagreti horizontaliai. Akivaizdu, kad tai nėra labai gera prognozė. Dabar paimkime svorio nuokrypį nuo šios numatomos vertės, paverskime jį kvadratu (kad būtų atsižvelgta ir į neigiamas reikšmes) ir sudėkime – šiuo metu tai bus klaida. Jei esate susipažinę su analizės pradžia, galite net paaiškinti, kad didžiausio kritimo kryptį nurodo dalinė paklaidos funkcijos išvestinė k ir b atžvilgiu, o žingsnis yra reikšmė, kuri pasirenkama iš praktiniai sumetimai: mažiems žingsniams apskaičiuoti reikia daug laiko, o dideli žingsniai gali lemti tai, kad mes praslysime virš minimumo.

Ką daryti, jei turime ne tik sudėtingą regresiją su daugybe funkcijų, bet ir tikrą neuroninį tinklą? Kaip šiuo atveju taikyti gradiento nusileidimą? Pasirodo, gradientinis nusileidimas su neuroniniu tinklu veikia taip pat, tik treniruotės vyksta 1) etapais, nuo sluoksnio iki sluoksnio ir 2) palaipsniui, nuo vieno pavyzdžio pavyzdyje į kitą. Čia naudojamas metodas vadinamas klaidų atgalinio skleidimo algoritmu ir jį 1974 m. nepriklausomai aprašė sovietų matematikas Aleksandras Galuškinas ir Harvardo universiteto matematikas Paulas Johnas Webrosas.

Nors norint tiksliai pateikti algoritmą, reikės išrašyti dalines išvestis (pvz.,), intuityviu lygmeniu viskas yra gana paprasta: kiekvienam pavyzdžiui pavyzdyje turime tam tikrą prognozę. neuroninis tinklas. Turėdami teisingą atsakymą, galime atimti teisingą atsakymą iš prognozės ir taip gauti klaidą (tiksliau, kiekvieno išvesties sluoksnio neurono klaidų rinkinį). 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į (tiesą sakant, mes vėlgi 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 pereinant per neuroninį tinklą su kiekvienu mokomojo pavyzdžio pavyzdžiu ir „sukant“ neuronų svorius reikiama kryptimi, pagaliau 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 neuroninio tinklo mokymo. Gali būti naudinga žinoti, kas sukelia tokius sunkumus.

Gradiento nusileidimo sunkumai

Neteisingas absoliutaus minimumo pasirinkimas. Gradiento nusileidimo metodas padeda rasti vietinį ekstremumą. Tačiau mes ne visada galime jį naudoti norėdami pasiekti absoliutų visuotinį funkcijos minimumą arba maksimumą. Taip atsitinka todėl, kad judėdami palei antigradientą sustojame tuo momentu, kai pasiekiame pirmąjį lokalų minimumą, su kuriuo susidūrėme, ir algoritmas nustoja veikti.

Įsivaizduokite, kad stovite kalno viršūnėje. Jei norite nusileisti į žemiausią vietovės paviršių, nusileidimas nuolydžiu ne visada gali jums padėti, nes pirmas žemumas jūsų kelyje nebūtinai bus žemiausias taškas. Ir jei gyvenime sugebi pamatyti, kad verta šiek tiek pakilti, o paskui gali nusileisti dar žemiau, tada algoritmas tokioje situacijoje tiesiog sustos. Šios situacijos dažnai galima išvengti pasirinkus tinkamą žingsnį.

Neteisingas žingsnio 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 reikiamą ekstremumą ir nerasti minimumo. Taip gali nutikti, jei atsidursite priešais labai staigų nusileidimą. O pasirinkus per mažą žingsnį, gresia itin lėtas algoritmo veikimas, jei atsidursime ant gana plokščio paviršiaus. Jei dar kartą įsivaizduosime, kad esame stataus kalno viršūnėje, gali susidaryti situacija, kai dėl labai stataus nusileidimo netoli minimumo tiesiog jį perskrisime.

Tinklo paralyžius. Kartais nutinka taip, kad gradiento nusileidimo metodu išvis nepavyksta rasti minimumo. Taip gali nutikti, jei abiejose minimumo pusėse yra plokščios atkarpos – algoritmas, atsitrenkęs į plokščią atkarpą, sumažina žingsnį ir galiausiai sustoja. Jei stovėdami kalno viršūnėje nuspręsite pajudėti link savo namų žemumoje, kelias gali būti per ilgas, jei netyčia nuklysite į labai lygią vietovę. Arba, jei plokščių plotų pakraščiuose yra praktiškai statūs „šlaitai“, algoritmas, pasirinkęs labai didelį žingsnį, peršoks nuo vieno šlaito į kitą, praktiškai nejudėdamas iki minimumo.

Į visus šiuos sudėtingumus reikia atsižvelgti kuriant mašininio mokymosi sistemą. Pavyzdžiui, visada naudinga sekti, kaip tiksliai keičiasi klaidos funkcija bėgant laikui – ar ji krenta su kiekvienu nauju ciklu, ar sustingsta, kaip keičiasi šio kritimo pobūdis, priklausomai nuo žingsnio dydžio pasikeitimo. Kad nepataikytų į blogą vietinį minimumą, gali būti naudinga pradėti nuo skirtingų atsitiktinių kraštovaizdžio taškų – tada tikimybė įstrigti yra daug mažesnė. Yra daug daugiau didelių ir mažų paslapčių, susijusių su nusileidimu nuo gradiento, ir yra daugiau egzotiškų mokymosi metodų, kurie nėra labai panašūs į nusileidimą nuo gradiento. Tačiau tai jau tema kitam pokalbiui ir atskiram straipsniui „AI ABC“ projekto rėmuose.

Parengė Aleksandras Eršovas

Naujiena svetainėje

>

Populiariausias