Atelier inovator la Fizică și Tehnologie: povești reale de succes ale Fizicii și Tehnologiei. „Un om de știință de date cool este plătit ca CEO-ul unei companii obișnuite.” Expert în învățare automată „Yandex.Taxi” - despre modul în care datele prezic viitorul și modelează lumea Ce sunt acele puncte albastre

Atelier inovator la Fizică și Tehnologie: povești reale de succes ale Fizicii și Tehnologiei. „Un om de știință de date cool este plătit ca CEO-ul unei companii obișnuite.” Expert în învățare automată „Yandex.Taxi” - despre modul în care datele prezic viitorul și modelează lumea Ce sunt acele puncte albastre

23.11.2023

A trecut aproape un an de la momentul în care la FIVT a început un subiect neobișnuit – un atelier inovator. Esența sa este crearea de startup-uri IT de către echipe de studenți sub îndrumarea unor mentori cu experiență. A ieșit bine: datorită cursului, cineva a petrecut o parte a verii în Cream Valley, cineva a primit un grant în valoare de 800.000 de ruble pentru dezvoltarea proiectului, iar ABBYY este gata să cumpere complet proiectul de la cineva. Și acestea nu sunt toate rezultatele atelierului!

La începutul anului 2011, studenții din anul III ai FIVT au fost adunați în Sala de Adunări și au spus: în anul următor va trebui să-ți creezi propriul startup. Elevii nu au acceptat această idee în mod ambiguu: nu era deloc clar cum să o facă, iar responsabilitatea era neobișnuită - la urma urmei, era necesar să se creeze o afacere tehnologică, și nu doar un alt proiect educațional. Iată ce crede despre asta câștigătorul olimpiadei studentești MIPT la fizică, student la departamentul Yandeska, Viktor Kantor:

Când am ales FIVT la admitere, am sperat că vom avea ceva asemănător. Așa că mă bucur că speranțele mele nu au fost zadarnice. Pe parcursul anului, s-a simțit că cursul încă se formează, multe erau noi în el, multe probleme s-au dovedit a fi controversate nu doar pentru studenți, ci și pentru organizatori, dar, în general, cred că tendințele sunt pozitive. Mi-a placut acest curs.

Pentru a facilita munca studenților, diverși curatori au fost invitați să își ofere ideile pentru construirea de afaceri inovatoare. Printre aceștia s-au numărat oameni complet diferiți: de la studenți și absolvenți ai MIPT la consilierul de inovare Ernst&Young, Yuri Pavlovich Ammosov (a fost liderul întregului curs) și Mikhail Batin, care se ocupă de medicina regenerativă și problemele de extindere a vieții. Drept urmare, studenții la fizică și tehnologie au ales ideile care le-au fost cele mai interesante, curatorii s-au alăturat echipelor și a început munca grea, dar incitantă.

În aproape un an care a trecut de atunci, băieții s-au confruntat cu multe probleme, dintre care unele au fost rezolvate. Acum le putem evalua rezultatele - în ciuda dificultăților, băieții au făcut față. Studenții MIPT (pe lângă Facultatea de Filosofie, unii studenți de la Facultatea de Filologie și alte facultăți s-au alăturat procesului) au reușit să pregătească câteva proiecte destul de interesante și viabile:

Askeroid (fost Ask Droid) – caută smartphone-uri ( Anastasia Uryasheva)

O aplicație Android care vă permite să căutați convenabil într-un număr mare de motoare de căutare. Unii experți și-au arătat interesul pentru dezvoltare și, drept urmare, Anastasia și-a petrecut toată vara trecută într-unul dintre cele mai cunoscute incubatoare din Silicon Valley - Plug&Play. învățând elementele de bază ale antreprenoriatului tehnologic și discutând cu experți internaționali în domeniul riscului.

1minute.ru – un minut pentru totdeauna (Lev Grunin)

Acest proiect oferă oricui posibilitatea de a face lucrări de caritate simplu, rapid și complet gratuit. Modelul este simplu: agenții de publicitate oferă un anumit set de activități pe site, utilizatorii participă voluntar la acestea, iar toți banii din publicitate sunt transferați unei fundații caritabile. În decurs de o săptămână de la lansare, proiectul a adunat peste 6.500 de utilizatori și nu se va opri aici. Drept urmare, datorită lui Lev și echipei sale, 600 de copii din orfelinate vor primi cadouri prețuite de la Moș Crăciun de Anul Nou. Ai petrecut deja un minut pentru o faptă bună?!

Desktop încorporat - un computer în telefon (Alexey Vukolov)

O aplicație care vă permite să combinați capacitățile unui computer și mobilitatea unui telefon într-un singur pachet - un produs extrem de util pentru persoanele ocupate care călătoresc adesea în călătorii de afaceri. Este suficient să îl instalați pe un smartphone, iar utilizatorul va putea să-și „obțină” propriul computer în orice hotel, birou și, într-adevăr, oriunde unde poate găsi un monitor (un televizor este, de asemenea, potrivit), o tastatură și un mouse. Proiectul a primit un grant pentru dezvoltarea ideii și a fost prezentat la expoziția Technovation Cup, iar cu banii primiți, echipa achiziționează deja în mod activ echipamente. Producătorul american de procesoare MIPS este extrem de interesat de dezvoltare.

Smart Tagger – căutare semantică prin documente (Victor Kantor)

Ce ar trebui să faci dacă îți amintești că undeva în cutia poștală era o scrisoare foarte importantă care vorbea despre cel mai recent episod din Big Bang Theory, dar nu-ți amintești niciun cuvânt cheie din text? Yandex și căutarea Google sunt neputincioși. Dezvoltarea Smart Tagger va veni în ajutor - un program „inteligent” care utilizează căutarea semantică vă va oferi toate textele al căror sens este împletit cu popularul serial TV. Proiectul a câștigat un grant la concursul U.M.N.I.K. însumând 400.000 de ruble!

MathOcr – recunoașterea formulei (Viktor Prun)

ABBYY a propus o sarcină interesantă pentru implementare - să creeze un program care să recunoască formule matematice de orice complexitate. Studenții FIVT, după ce au cooperat cu studenții interesați, au finalizat sarcina - modulul recunoaște de fapt formulele scanate din manualele de matematică sau fizică. Rezultat: ABBYY este gata să cumpere acest produs pentru o mulțime de bani.

- Puteți folosi un exemplu complet primitiv pentru a ne spune cum funcționează învățarea automată?

Poate sa. Există un exemplu de tehnică de învățare automată numită Decision Tree, care este unul dintre cele mai vechi lucruri. Hai sa o facem acum. Să presupunem că o persoană abstractă te cheamă la o întâlnire. Ce este important pentru tine?

- În primul rând, dacă îl cunosc sau nu...

(Victor scrie asta pe tablă.)

...Dacă nu știu, atunci trebuie să răspund la întrebarea dacă este atractiv sau nu.

Și dacă știi, atunci nu contează? Cred că am înțeles, acesta este firul din zona de prieteni! În general, scriu, dacă nu știi și nu este atractiv, atunci răspunsul este „nu, probabil”. Dacă știi, răspunsul este „da”.

- Dacă știu, și asta e important!

Nu, aceasta va fi o sucursală din zona prietenilor.

Bine, atunci haideți să indicăm aici dacă este interesant sau nu. Totuși, atunci când nu cunoști o persoană, prima reacție este la apariția cu o cunoștință, ne uităm deja la ce gândește și cum.

Să o facem altfel. Fie că este ambițios sau nu. Dacă este ambițios, va fi dificil să-l friendzone, pentru că își va dori mai mult. Dar cei lipsiți de ambiție vor rezista.

(Victor termină de desenat arborele decisiv.)

Gata. Acum poți prezice cu ce tip ai cel mai probabil să mergi la o întâlnire. Apropo, unele servicii de întâlniri prevăd astfel de lucruri. Prin analogie, puteți prezice câte bunuri vor cumpăra clienții și unde vor fi oamenii la acel moment al zilei.

Răspunsurile pot fi nu numai „da” și „nu”, ci și sub formă de numere. Dacă doriți o prognoză mai precisă, puteți face mai mulți astfel de copaci și le puteți face o medie. Și cu ajutorul unui lucru atât de simplu, poți de fapt prezice viitorul.

Acum imaginați-vă, a fost dificil pentru oameni să vină cu o astfel de schemă în urmă cu două sute de ani? Absolut nu! Această schemă nu conține nicio știință rachetă. Ca fenomen, învățarea automată există de aproximativ o jumătate de secol. Ronald Fisher a început să facă predicții bazate pe date la începutul secolului al XX-lea. A luat irisi și i-a distribuit în funcție de lungimea și lățimea sepalelor și petalelor, folosind acești parametri a determinat tipul de plantă.

În industrie, învățarea automată a fost folosită activ în ultimele decenii: mașini puternice și relativ ieftine, care sunt necesare pentru a procesa cantități mari de date, de exemplu, pentru astfel de arbori de decizie, au apărut nu cu mult timp în urmă. Dar tot e interesant: desenăm aceste lucruri pentru fiecare sarcină și le folosim pentru a prezice viitorul.

- Ei bine, cu siguranță nu mai bine decât orice caracatiță care prezice meciuri de fotbal...

Nu, ce ne pasă de caracatițe? Deși avem mai multă variabilitate. Acum, cu ajutorul învățării automate, puteți economisi timp, bani și puteți îmbunătăți confortul vieții. Învățarea automată a învins oamenii în urmă cu câțiva ani când vine vorba de clasificarea imaginilor. De exemplu, un computer poate recunoaște 20 de rase de terrier, dar o persoană obișnuită nu poate.

- Și când analizezi utilizatorii, fiecare persoană este un set de numere pentru tine?

În linii mari, da. Când lucrăm cu date, toate obiectele, inclusiv comportamentul utilizatorului, sunt descrise printr-un anumit set de numere. Și aceste cifre reflectă caracteristicile comportamentului oamenilor: cât de des iau un taxi, ce clasă de taxi folosesc, în ce locuri merg de obicei.

Acum construim în mod activ modele asemănătoare pentru a le folosi pentru a identifica grupuri de oameni cu comportament similar. Când introducem un serviciu nou sau dorim să promovăm unul vechi, îl oferim celor care vor fi interesați.

De exemplu, acum avem un service - două scaune pentru copii într-un taxi. Putem trimite spam pe toată lumea cu această știre sau putem informa în mod specific despre ea doar unui anumit cerc de persoane. De-a lungul anului, am acumulat un număr de utilizatori care au scris în comentarii că au nevoie de două scaune pentru copii. I-am găsit pe ei și oameni asemănători lor. În mod convențional, aceștia sunt oameni de peste 30 de ani care călătoresc în mod regulat și iubesc bucătăria mediteraneană. Deși, desigur, există mult mai multe semne, acesta este doar un exemplu.

- Chiar și astfel de subtilități?

Aceasta este o chestiune simplă. Totul este calculat folosind interogări de căutare.

Ar putea acest lucru să funcționeze cumva într-o aplicație? De exemplu, știți că sunt un cerșetor și sunt abonat la grupuri precum „Cum să supraviețuiesc cu 500 de ruble pe lună” - îmi oferă doar mașini ieftine dărâmate, sunt abonat la știrile SpaceX - și din când în când mă vând o Tesla?

Poate funcționa așa, dar astfel de lucruri nu sunt aprobate la Yandex, pentru că este discriminare. Când personalizați un serviciu, este mai bine să oferiți nu cel mai acceptabil, ci cel mai bun disponibil și ceea ce îi place persoanei. Și distribuția conform logicii „acesta are nevoie de o mașină mai bună, iar aceasta are nevoie de una mai puțin bună” este rea.


Toată lumea are dorințe pervertite și, uneori, trebuie să găsești nu o rețetă pentru un fel de mâncare mediteranean, ci, de exemplu, imagini despre coprofilie. Personalizarea va funcționa în continuare în acest caz?

Există întotdeauna un mod privat.

Dacă nu vreau să știe nimeni despre interesele mele sau, să spunem, prietenii vin la mine și doresc să se uite la gunoi, atunci este mai bine să folosești modul incognito.

De asemenea, puteți decide ce serviciu al companiei să utilizați, de exemplu Yandex sau Google.

- Există vreo diferență?

Problemă complexă. Nu știu despre alții, dar Yandex este strict în ceea ce privește protecția datelor personale. Angajații sunt monitorizați în special.

- Adică, dacă m-am despărțit de un tip, nu voi putea să aflu dacă a mers la această dacha sau nu?

Chiar dacă lucrezi la Yandex. Acest lucru este, desigur, trist, dar da, nu se va putea afla. Majoritatea angajaților nici măcar nu au acces la aceste date. Totul este criptat. Este simplu: nu poți spiona oamenii, acestea sunt informații personale.

Apropo, am avut un caz interesant pe tema despărțirii de băieți. Când am făcut o prognoză pentru punctul „B” - punctul de destinație în taxi, am introdus indicii. Uite aici.

(Victor se conectează la aplicația Yandex.Taxi.)

De exemplu, taxiul crede că sunt acasă. El sugerează să merg fie la muncă, fie la Universitatea RUDN (sunt prelegeri acolo, ca parte a cursului de învățare automată Data Mining in Action). Și la un moment dat, în timp ce dezvoltăm aceste sfaturi, ne-am dat seama că trebuie să evităm compromiterea utilizatorului. Oricine poate vedea punctul B. Din aceste motive, am refuzat să sugerăm locuri pe baza asemănării. Altfel, stai într-un loc decent cu oameni decent, comanzi un taxi și îți scriu: „Uite, încă nu ai fost la acest bar!”

- Ce sunt acele puncte albastre care clipesc pe harta ta?

Acestea sunt puncte de preluare. Aceste puncte arată unde este cel mai convenabil să apelați un taxi. La urma urmei, poți suna într-un loc unde ar fi complet incomod să mergi. Dar, în general, poți suna oriunde.

- Da, oricând. Am zburat cumva două blocuri cu asta.

Recent au apărut diverse dificultăți cu GPS-ul, acest lucru a dus la diverse situații amuzante. Oamenii, de exemplu, pe Tverskaya, au fost transportați prin navigație peste Oceanul Pacific. După cum puteți vedea, uneori există rateuri și mai mult de două blocuri.

- Și dacă reporniți aplicația și faceți din nou clic, prețul se modifică cu câteva ruble. De ce?

Dacă cererea depășește oferta, algoritmul generează automat un coeficient crescător - acest lucru îi ajută pe cei care trebuie să plece cât mai repede posibil să folosească un taxi, chiar și în perioadele de mare cerere. Apropo, cu ajutorul machine learning poți prezice unde va fi o cerere mai mare, de exemplu, într-o oră. Acest lucru ne ajută să le spunem șoferilor unde vor fi mai multe comenzi, astfel încât oferta să corespundă cererii.

- Nu crezi că Yandex.Taxi va ucide în curând întreaga piață de taxiuri?

Cred că nu. Suntem pentru o competiție sănătoasă și nu ne este frică de ea.

De exemplu, eu folosesc diferite servicii de taxi. Timpul de așteptare este important pentru mine, așa că mă uit la mai multe aplicații pentru a vedea care taxi va ajunge mai repede.


- Ai făcut echipă cu Uber. Pentru ce?

Nu este locul meu să comentez. Cred că unirea este o decizie profund sensibilă.

În Germania, un tip a instalat o cadă pe drone și a zburat pentru un burger. Te-ai gândit că a sosit momentul să stăpânești spațiul aerian?

Nu știu despre spațiul aerian. Urmărim știri precum „Uber a lansat taxiuri pe bărci”, dar nu pot spune nimic despre aer.

- Dar taxiurile care se conduc singure?

Există un punct interesant aici. Le dezvoltăm, dar trebuie să ne gândim exact cum ar trebui să fie folosite. Este prea devreme pentru a prezice sub ce formă și când vor apărea pe străzi, dar facem totul pentru a dezvolta tehnologia pentru o mașină complet autonomă, unde nu va fi deloc nevoie de un șofer uman.

- Există temeri că software-ul dronei va fi spart pentru a controla mașina de la distanță?

Există riscuri întotdeauna și peste tot acolo unde există tehnologii și gadget-uri. Dar, odată cu dezvoltarea tehnologiei, se dezvoltă și o altă direcție - protecția și siguranța acestora. Toți cei care sunt într-un fel sau altul implicați în dezvoltarea tehnologiei lucrează la sisteme de securitate.

- Ce date de utilizator colectați și cum le protejați?

Colectăm date de utilizare anonimizate, cum ar fi unde, când și unde a fost efectuată călătoria. Tot ceea ce este important este hashing.

- Crezi că numărul locurilor de muncă va scădea din cauza dronelor?

Cred că va deveni doar mai mare. Totuși, aceste drone trebuie să fie întreținute cumva. Aceasta, desigur, este o situație puțin stresantă, care vă schimbă specialitatea, dar ce puteți face?

- La fiecare dintre prelegerile sale, Gref spune că o persoană își va schimba profesia de cel puțin trei ori radical.

Nu pot numi nicio specialitate care va dura pentru totdeauna. Un dezvoltator nu lucrează în aceeași limbă și cu aceleași tehnologii toată viața. Peste tot trebuie să reconstruim. Cu învățarea automată, pot simți clar cum băieții care sunt cu șase ani mai tineri decât mine pot gândi mult mai repede decât mine. În același timp, oamenii de 40 sau 45 de ani simt acest lucru și mai puternic.

- Experiența nu mai joacă un rol?

Joc. Dar metodele se schimbă, poți ajunge într-o zonă în care, de exemplu, învățarea profundă nu a fost folosită, lucrezi acolo de ceva timp, apoi metodele de învățare profundă sunt introduse peste tot și nu înțelegi nimic despre asta. Asta e tot. Experiența ta poate fi utilă doar în chestiunea de planificare a muncii echipei și chiar și atunci nu întotdeauna.

- Și profesia ta este data scientist, este solicitată?

Cererea de specialiști în știința datelor este pur și simplu în afara graficelor. Evident, aceasta este o perioadă de hype nebun. Slavă Domnului, blockchain-ul a ajutat acest hype să se diminueze puțin. Specialiștii în blockchain sunt primiți și mai repede.

Dar multe companii cred acum că dacă investesc în învățarea automată, grădinile lor vor înflori imediat. Este gresit. Învățarea automată ar trebui să rezolve probleme specifice, nu doar să existe.

Sunt momente când o bancă dorește să realizeze un sistem de recomandare a serviciilor pentru utilizatori. Întrebăm: „Credeți că acest lucru va fi justificat din punct de vedere economic?” Ei răspund: „Nu ne pasă. Fă-o. Toată lumea are sisteme de recomandare, vom fi în tendințe.”

Durerea este că ceva cu adevărat util pentru afaceri nu se poate face într-o singură zi. Trebuie să urmărim cum va învăța sistemul. Dar face întotdeauna greșeli la început, poate să îi lipsească unele date în timpul antrenamentului. Corectezi greșelile, apoi le corectezi din nou și chiar refac totul. După aceasta, trebuie să configurați sistemul astfel încât să funcționeze în producție, astfel încât să fie stabil și scalabil, acesta este încă timp. Ca rezultat, un proiect durează șase luni, un an sau mai mult.


Dacă priviți metodele de învățare automată ca pe o cutie neagră, puteți rata cu ușurință când încep să se întâmple niște lucruri nebunești. Există o poveste cu barbă. Armata a cerut să dezvolte un algoritm care să poată fi folosit pentru a analiza dacă există sau nu un tanc în imagine. Cercetătorii l-au făcut, l-au testat, calitatea este excelentă, totul este grozav, l-au dat militarilor. Vine armata și spune că nimic nu funcționează. Oamenii de știință încep să înțeleagă nervoși. Se dovedește că în toate fotografiile cu tancul pe care l-au adus militarii a fost pusă în colț cu un pix o căpușă. Algoritmul a învățat fără probleme să găsească bifa, nu știa nimic despre rezervor. Bineînțeles, nu erau bife pe noile imagini.

Am întâlnit copii care își dezvoltă propriile sisteme de dialog. Te-ai gândit vreodată că trebuie să colaborezi cu copiii?

De ceva vreme merg la tot felul de evenimente pentru școlari, ținând prelegeri despre învățarea automată. Și, apropo, una dintre subiecte mi-a fost predată de un elev de clasa a zecea. Eram absolut sigur că povestea mea va fi bună și interesantă, eram mândru de mine, am început să transmit, iar fata a spus: „Oh, vrem să minimizăm chestia asta”. Mă uit și mă gândesc, într-adevăr, de ce, iar adevărul poate fi minimizat și nu este nimic special de dovedit aici. Au trecut deja câțiva ani, acum ea ne ascultă prelegerile ca studentă la Institutul de Fizică și Tehnologie. Yandex, apropo, are Yandex.Lyceum, unde școlarii pot obține gratuit cunoștințe de bază de programare.

- Recomandați universități și facultăți în care în prezent se predă învățarea automată.

Există MIPT, facultăți ale FIVT și FUPM. HSE are, de asemenea, un departament minunat de informatică, iar la Universitatea de Stat din Moscova există învățare automată la complexul de informatică. Ei bine, acum puteți asculta cursul nostru de la Universitatea RUDN.

După cum am spus deja, această profesie este solicitată. De foarte multă vreme, oamenii care au primit educație tehnică au făcut lucruri complet diferite. Învățarea automată este un exemplu minunat când toate lucrurile pe care le-au predat oamenii cu studii tehnice sunt acum necesare direct, utile și bine plătite.

- Cat de bine?

Denumiți suma.

- 500 mii pe lună.

Poți, doar fără a fi un om de știință de date obișnuit. Dar în unele companii, un stagiar poate câștiga 50 de mii pentru o muncă simplă. În general, salariul unui data scientist cool poate fi comparat cu salariul directorului general al unei companii mijlocii. În multe companii, pe lângă salariu, angajatul are multe alte beneficii, iar dacă este clar că persoana respectivă nu a venit să adauge un brand bun în CV-ul său, ci să lucreze efectiv, atunci totul va fi bine pentru el.

În cadrul proiectului comun „ABC of AI” cu MIPT, am scris deja despre așa-zisele, care vă permit să „dezvoltați” programe după principiile și legile evoluției darwiniste. Cu toate acestea, pentru moment, această abordare a inteligenței artificiale este cu siguranță un „oaspete din viitor”. Dar cum sunt create sistemele de inteligență artificială astăzi? Cum sunt ei instruiți? Victor Kantor, lector superior la Departamentul de Algoritmi și Tehnologii de Programare de la MIPT și șeful grupului de analiză a comportamentului utilizatorilor de la Yandex Data Factory, ne-a ajutat să ne dăm seama.

Potrivit unui raport recent al firmei de cercetare Gartner, care își actualizează în mod regulat „ciclul de maturitate a tehnologiei”, învățarea automată se află în prezent la vârful așteptărilor în toate IT. Acest lucru nu este surprinzător: în ultimii ani, învățarea automată a ieșit din sfera de interese a unui cerc restrâns de matematicieni și specialiști în teoria algoritmilor și a pătruns mai întâi în vocabularul oamenilor de afaceri din IT, apoi în lume. a oamenilor obișnuiți. Acum, oricine a folosit aplicația Prisma, a căutat melodii folosind Shazam sau a văzut imagini transmise prin DeepDream știe că există rețele neuronale cu „magia” lor specială.

Cu toate acestea, una este să folosești tehnologia și alta este să înțelegi cum funcționează. Cuvinte generale precum „un computer poate învăța dacă îi dai un indiciu” sau „o rețea neuronală este formată din neuroni digitali și este structurată ca creierul uman” pot ajuta pe cineva, dar de cele mai multe ori nu fac decât să încurce situația. Cei care urmează să studieze serios matematica nu au nevoie de texte populare: există manuale și cursuri online excelente pentru ei. Vom încerca să luăm o cale de mijloc: să explicăm cum se întâmplă de fapt învățarea într-o sarcină foarte simplă și apoi să arătăm cum aceeași abordare poate fi aplicată pentru a rezolva probleme reale interesante.

Cum învață mașinile

Pentru început, pentru a înțelege exact cum are loc învățarea automată, să definim conceptele. După cum a definit unul dintre pionierii acestui domeniu, Arthur Samuel, învățarea automată se referă la metode care „permit computerelor să învețe fără a le programa direct”. Există două clase mari de metode de învățare automată: învățarea supravegheată și învățarea nesupravegheată. Primul este folosit atunci când, de exemplu, trebuie să învățăm un computer să caute fotografii cu pisici, al doilea este atunci când avem nevoie de mașină, de exemplu, pentru a putea grupa independent știrile în povești, așa cum se întâmplă în servicii precum Yandex. .Știri sau Știri Google. Adică, în primul caz avem de-a face cu o sarcină care implică existența unui răspuns corect (pisica din fotografie fie este acolo, fie nu), în al doilea caz nu există un singur răspuns corect, dar există moduri diferite. pentru a rezolva problema. Ne vom concentra în special pe prima clasă de probleme ca fiind cele mai interesante.

Așa că trebuie să învățăm computerul să facă niște predicții. În plus, este de dorit să fie cât mai precis posibil. Predicțiile pot fi de două tipuri: fie trebuie să alegeți între mai multe opțiuni de răspuns (fie că există sau nu o pisică în imagine este alegerea unei opțiuni din două, capacitatea de a recunoaște literele din imagini este o alegere a unei singure opțiuni din câteva zeci și așa mai departe), sau faceți o predicție numerică. De exemplu, preziceți greutatea unei persoane în funcție de înălțimea, vârsta, mărimea pantofilor și așa mai departe. Aceste două tipuri de probleme arată doar diferit, dar de fapt sunt rezolvate aproape identic. Să încercăm să înțelegem exact cum.

Primul lucru de care trebuie să facem un sistem de predicție este să colectăm un așa-numit eșantion de antrenament, adică date despre ponderea oamenilor în populație. Al doilea este să decidem asupra unui set de semne pe baza cărora putem trage concluzii despre greutate. Este clar că unul dintre cele mai „puternice” astfel de semne va fi înălțimea unei persoane, așa că, ca primă aproximare, este suficient să luăm doar aceasta. Dacă greutatea depinde liniar de înălțime, atunci predicția noastră va fi foarte simplă: greutatea unei persoane va fi egală cu înălțimea sa înmulțită cu un coeficient, plus o valoare constantă, care este scrisă cu cea mai simplă formulă y=kx+b. Tot ce trebuie să facem pentru a antrena o mașină pentru a prezice greutatea unei persoane este să găsim cumva valorile corecte pentru k și b.

Frumusețea învățării automate este că, chiar dacă relația pe care o studiem este foarte complexă, în esență nimic nu se va schimba în abordarea noastră. Vom avea în continuare de-a face cu aceeași regresie.

Să presupunem că greutatea unei persoane este afectată de înălțimea sa nu liniar, ci la gradul al treilea (ceea ce este de așteptat în general, deoarece greutatea depinde de volumul corpului). Pentru a ține cont de această dependență, introducem pur și simplu un alt termen în ecuația noastră, și anume a treia putere de creștere cu propriul coeficient, obținând astfel y=k 1 x+k 2 x 3 +b. Acum, pentru a antrena mașina, va trebui să găsim nu două, ci trei mărimi (k 1, k 2 și b). Să spunem că în predicția noastră dorim să luăm în considerare și dimensiunea pantofilor unei persoane, vârsta acesteia, timpul petrecut uitându-se la televizor și distanța de la apartamentul său până la cel mai apropiat fast-food. Nicio problemă: pur și simplu adăugăm aceste caracteristici ca termeni separați în aceeași ecuație.

Cel mai important lucru este de a crea o modalitate universală de a găsi coeficienții necesari (k 1, k 2, ... k n). Dacă există, ne va fi aproape indiferent ce caracteristici să folosim pentru predicție, deoarece mașina în sine va învăța să acorde greutate mare celor importante și pondere mică caracteristicilor neimportante. Din fericire, o astfel de metodă a fost deja inventată și aproape toată învățarea automată funcționează cu succes pe ea: de la cele mai simple modele liniare până la sisteme de recunoaștere a fețelor și analizoare de vorbire. Această metodă se numește coborâre în gradient. Dar înainte de a explica cum funcționează, trebuie să facem o mică digresiune și să vorbim despre rețelele neuronale.

Rețele neuronale

În 2016, rețelele neuronale au intrat atât de strâns în agenda informațiilor încât au devenit aproape identificate cu orice învățare automată și IT avansat în general. Din punct de vedere formal, acest lucru nu este adevărat: rețelele neuronale nu sunt întotdeauna folosite în învățarea matematică, există și alte tehnologii. Dar, în general, desigur, o astfel de asociere este de înțeles, deoarece sunt sisteme bazate pe rețele neuronale care oferă acum cele mai „magice” rezultate, cum ar fi capacitatea de a căuta o persoană într-o fotografie, apariția aplicațiilor care transferă stilul unei imagini la alta, sau sisteme de generare de texte în maniera de vorbire a unei anumite persoane.

Modul în care sunt structurate rețelele neuronale, deja... Aici vreau doar să subliniez că puterea rețelelor neuronale în comparație cu alte sisteme de învățare automată constă în natura lor multistratificată, dar acest lucru nu le face ceva fundamental diferite în modul în care funcționează. Multi-stratificarea vă permite într-adevăr să găsiți caracteristici generale și dependențe foarte abstracte în seturi complexe de caracteristici, cum ar fi pixelii dintr-o imagine. Dar este important de înțeles că din punctul de vedere al principiilor de învățare, o rețea neuronală nu este radical diferită de un set de formule convenționale de regresie liniară, așa că aceeași metodă de coborâre a gradientului funcționează excelent și aici.

„Puterea” unei rețele neuronale constă în prezența unui strat intermediar de neuroni, care combină în mod sumar valorile stratului de intrare. Din acest motiv, rețelele neuronale pot găsi caracteristici foarte abstracte în date care sunt greu de redus la formule simple, cum ar fi o relație liniară sau pătratică.

Să explicăm cu un exemplu. Ne-am stabilit pe o predicție în care greutatea unei persoane depinde de înălțimea sa și de înălțimea cubului, care este exprimată prin formula y=k 1 x+k 2 x 3 +b. Cu ceva întindere, dar de fapt chiar și o astfel de formulă poate fi numită o rețea neuronală. În ea, ca și într-o rețea neuronală obișnuită, există un prim strat de „neuroni”, care este, de asemenea, un strat de caracteristici: acestea sunt x și x 3 (ei bine, „neuronul unitar” pe care îl avem în vedere și pentru care coeficientul b este responsabil). Stratul superior, sau care rezultă, este reprezentat de un „neuron” y, adică greutatea prezisă a persoanei. Și între primul și ultimul strat de „neuroni” există conexiuni, a căror putere sau greutate este determinată de coeficienții k 1, k 2 și b. Antrenarea acestei „rețele neuronale” înseamnă pur și simplu găsirea acelorași coeficienți.

Singura diferență față de rețelele neuronale „reale” de aici este că nu avem un singur strat intermediar (sau ascuns) de neuroni, a cărui sarcină este să combine caracteristicile de intrare. Introducerea unor astfel de straturi vă permite să nu inventați posibile dependențe între caracteristicile existente „din cap”, ci să vă bazați pe combinațiile lor deja existente în rețeaua neuronală. De exemplu, vârsta și timpul mediu în fața televizorului pot avea un efect sinergic asupra greutății unei persoane, dar, având o rețea neuronală, nu trebuie să știm acest lucru în prealabil și să introducem produsul său în formulă. Într-o rețea neuronală va exista cu siguranță un neuron care combină influența oricăror două caracteristici, iar dacă această influență este cu adevărat vizibilă în eșantion, atunci după antrenament acest neuron va primi automat o greutate mare.

Coborâre în gradient

Deci, avem un set de antrenament de exemple cu date cunoscute, adică un tabel cu greutatea unei persoane măsurată cu precizie și o ipoteză a relației, în acest caz regresia liniară y=kx+b. Sarcina noastră este să găsim valorile corecte ale lui k și b, nu manual, ci automat. Și, de preferință, o metodă universală care nu depinde de numărul de parametri incluși în formulă.

În general, acest lucru nu este greu de făcut. Ideea principală este de a crea o funcție care să măsoare nivelul de eroare total curent și să „ajusteze” coeficienții astfel încât nivelul de eroare total să scadă treptat. Cum pot face ca nivelul de eroare să scadă? Trebuie să ne modificăm parametrii în direcția corectă.

Imaginează-ți cei doi parametri pe care îi căutăm, aceleași k și b, ca două direcții pe un plan, precum axele nord-sud și vest-est. Fiecare punct dintr-un astfel de plan va corespunde unei anumite valori a coeficienților, unei anumite relații specifice între înălțime și greutate. Și pentru fiecare astfel de punct din plan, putem calcula nivelul total de eroare pe care îl oferă această predicție pentru fiecare dintre exemplele din eșantionul nostru.

Se dovedește ceva ca o înălțime specifică pe un avion și întregul spațiu din jur începe să semene cu un peisaj montan. Munții sunt puncte în care rata de eroare este foarte mare, văile sunt locuri în care există mai puține erori. Este clar că antrenarea sistemului nostru înseamnă găsirea celui mai jos punct de pe sol, punctul în care rata de eroare este minimă.

Cum poți găsi acest punct? Cel mai corect mod este să ne mișcăm tot timpul în jos din punctul în care ne-am găsit inițial. Deci, mai devreme sau mai târziu, vom ajunge la un minim local - un punct sub care nu este nimic în imediata apropiere. Mai mult, este recomandabil să faceți pași de diferite dimensiuni: când panta este abruptă, puteți face pași mai largi când panta este mică, este mai bine să vă strecurați până la minimul local „în vârful picioarelor”, altfel puteți depăși.

Exact așa funcționează metoda de coborâre a gradientului: schimbăm ponderile caracteristicilor în direcția celei mai mari scăderi a funcției de eroare. Le schimbăm iterativ, adică cu un anumit pas, a cărui valoare este proporțională cu abruptul pantei. Ceea ce este interesant este că, atunci când numărul de caracteristici crește (adăugând un cub cu înălțimea unei persoane, vârsta, mărimea pantofilor și așa mai departe), în esență nimic nu se schimbă, doar că peisajul nostru nu devine bidimensional, ci multidimensional.

Funcția de eroare poate fi definită ca suma pătratelor tuturor abaterilor pe care formula curentă le permite persoanelor a căror greutate o cunoaștem deja exact. Să luăm câteva variabile aleatoare k și b, de exemplu 0 și 50. Apoi sistemul ne va prezice că greutatea fiecărei persoane din eșantion este întotdeauna egală cu 50 de kilograme y=0×x+50 Pe grafic, astfel de dependența va arăta ca o linie dreaptă paralelă cu orizontală. În mod clar, aceasta nu este o predicție foarte bună. Acum să luăm abaterea în greutate de la această valoare prezisă, să o pătram (astfel încât să fie luate în considerare și valorile negative) și să o însumăm - aceasta va fi eroarea în acest moment. Dacă sunteți familiarizat cu începuturile analizei, atunci puteți chiar să clarificați că direcția celei mai mari căderi este dată de derivata parțială a funcției de eroare în raport cu k și b, iar pasul este o valoare care este aleasă pentru motive practice: pașii mici necesită mult timp pentru a calcula, iar cei mari pot duce la faptul că vom depăși minimul.

Bine, ce se întâmplă dacă nu avem doar o regresie complexă cu multe caracteristici, ci o rețea neuronală reală? Cum aplicăm coborârea în gradient în acest caz? Se dovedește că coborârea gradientului funcționează exact în același mod cu o rețea neuronală, doar antrenamentul are loc 1) pas cu pas, de la strat la strat și 2) treptat, de la un exemplu din eșantion la altul. Metoda folosită aici se numește backpropagation și a fost descrisă independent în 1974 de matematicianul sovietic Alexander Galushkin și de matematicianul de la Universitatea Harvard Paul John Webros.

Deși pentru o prezentare strictă a algoritmului va fi necesar să se noteze derivatele parțiale (ca, de exemplu), la un nivel intuitiv totul se întâmplă destul de simplu: pentru fiecare dintre exemplele din eșantion, avem o anumită predicție la ieșire a rețelei neuronale. Având răspunsul corect, putem scădea răspunsul corect din predicție și astfel obținem o eroare (mai precis, un set de erori pentru fiecare neuron al stratului de ieșire). Acum trebuie să transferăm această eroare în stratul anterior de neuroni și, cu cât acest neuron particular al acestui strat a contribuit mai mult la eroare, cu atât mai mult trebuie să-i reducem greutatea (de fapt, vorbim din nou despre luarea derivatei parțiale, despre deplasarea de-a lungul abruptului maxim al peisajului nostru imaginar) . Când am făcut acest lucru, aceeași procedură trebuie repetată pentru următorul strat, deplasându-se în direcția opusă, adică de la ieșirea rețelei neuronale la intrare.

Trecând prin rețeaua neuronală în acest fel cu fiecare exemplu al eșantionului de antrenament și „răsucind” greutățile neuronilor în direcția dorită, ar trebui în cele din urmă să obținem o rețea neuronală antrenată. Metoda de retropropagare este o modificare simplă a metodei de coborâre a gradientului pentru rețelele neuronale multistrat și, prin urmare, ar trebui să funcționeze pentru rețelele neuronale de orice complexitate. Spunem „ar trebui” aici pentru că de fapt există cazuri în care coborârea gradientului eșuează și nu vă permite să faceți o regresie bună sau să antrenați o rețea neuronală. Poate fi util să știm de ce apar astfel de dificultăți.

Dificultățile coborârii în gradient

Alegerea greșită a minimului absolut. Metoda de coborâre în gradient ajută la căutarea unui extremum local. Dar nu îl putem folosi întotdeauna pentru a atinge minimul sau maximul global absolut al funcției. Acest lucru se întâmplă deoarece atunci când ne deplasăm de-a lungul unui antigradient, ne oprim în momentul în care atingem primul minim local pe care îl întâlnim, iar algoritmul nu mai funcționează.

Imaginează-ți că stai în vârful unui munte. Dacă vrei să cobori pe cea mai joasă suprafață din zonă, metoda de coborâre în pante nu te va ajuta întotdeauna, pentru că primul punct scăzut pe drum nu va fi neapărat cel mai jos punct. Și dacă în viață ești capabil să vezi că dacă urci puțin și apoi poți merge și mai jos, atunci algoritmul într-o astfel de situație pur și simplu se va opri. Adesea, această situație poate fi evitată dacă alegeți pasul potrivit.

Selectare incorectă a pasului. Metoda coborârii gradientului este o metodă iterativă. Adică trebuie să alegem noi înșine dimensiunea pasului - viteza cu care coborâm. Alegând un pas care este prea mare, este posibil să trecem de extremul de care avem nevoie și să nu găsim minimul. Acest lucru se poate întâmpla dacă te trezești cu o coborâre foarte bruscă. Și alegerea unui pas care este prea mic riscă să facă algoritmul extrem de lent dacă ne aflăm pe o suprafață relativ plană. Dacă ne imaginăm din nou că ne aflăm în vârful unui munte abrupt, atunci poate apărea o situație în care, din cauza unei coborâri foarte abrupte aproape de minim, pur și simplu zburăm peste el.

Paralizia rețelei. Uneori se întâmplă ca metoda de coborâre în gradient să nu găsească deloc un minim. Acest lucru se poate întâmpla dacă există zone plane de ambele părți ale minimului - algoritmul, când lovește o zonă plată, reduce pasul și în cele din urmă se oprește. Dacă, în timp ce stai pe vârful unui munte, te decizi să te îndrepți spre casa ta din zonele joase, călătoria poate fi prea lungă dacă rătăciți accidental pe o zonă foarte plată. Sau, dacă există „pante” aproape verticale de-a lungul marginilor zonelor plate, algoritmul, după ce a ales un pas foarte mare, va sări de la o pantă la alta, practic neîndreptându-se spre minim.

Toate aceste probleme complexe trebuie luate în considerare la proiectarea unui sistem de învățare automată. De exemplu, este întotdeauna util să urmăriți exact modul în care funcția de eroare se schimbă în timp - cade cu fiecare nou ciclu sau timp de marcare, cum se schimbă natura acestei căderi în funcție de modificarea mărimii pasului. Pentru a evita căderea într-un minim local prost, poate fi util să începeți de la diferite puncte ale peisajului selectate aleatoriu - atunci probabilitatea de a rămâne blocat este mult mai mică. Există multe mai multe secrete mari și mici ale folosirii coborârii în gradient și există, de asemenea, moduri mai exotice de învățare care sunt ușor similare cu coborârea în gradient. Acesta, însă, este un subiect pentru o altă conversație și un articol separat în cadrul proiectului ABC of AI.

Pregătit de Alexander Ershov

© 2024 huhu.ru - Gât, examinare, secreții nazale, boli ale gâtului, amigdale