Hem Grönsaker Innovativ workshop vid den femte: Real Success Stories of Phystechs. "Stor dataforskare får betalt som VD för ett genomsnittligt företag." Maskininlärningsexpert Yandex.Taxi pratar om hur data förutsäger framtiden och formar världen Nu är vi aktivt

Innovativ workshop vid den femte: Real Success Stories of Phystechs. "Stor dataforskare får betalt som VD för ett genomsnittligt företag." Maskininlärningsexpert Yandex.Taxi pratar om hur data förutsäger framtiden och formar världen Nu är vi aktivt

– Kan du använda ett helt primitivt exempel för att berätta hur maskininlärning fungerar?

Jag kan. Det finns ett exempel på en maskininlärningsmetod som heter Decision Tree, en av de äldsta sakerna. Låt oss göra det nu. Låt oss säga att en abstrakt person bjuder in dig på en dejt. Vad är viktigt för dig?

Först och främst, oavsett om jag känner honom eller inte...

(Victor skriver detta på tavlan.)

…Om jag inte vet, då måste jag svara på frågan om han är attraktiv eller inte.

Och om du vet, spelar det ingen roll? Jag tror jag kom på det, det är en gren av friendzone! I allmänhet skriver jag, om du inte vet och oattraktiv, så är svaret "ja, nej, förmodligen." Om du vet är svaret ja.

– Om jag vet så är det också viktigt!

Nej, det blir en gren av vänzonen.

Okej, låt oss då påpeka här om det är intressant eller inte. Ändå, när du inte känner en person, är den första reaktionen på utseendet, med en vän tittar vi redan på vad han tycker och hur.

Låt oss göra det annorlunda. Ambitiös eller inte. Om han är ambitiös kommer det att vara svårt att bli vän med honom, han kommer att vilja ha mer. Och de oambitiösa kommer att lida.

(Victor slutför beslutsträdet.)

Redo. Nu kan du förutsäga vilken kille du med största sannolikhet kommer att gå på dejt med. Förresten, vissa dejtingtjänster förutspår sådana saker. I analogi kan du förutsäga hur många varor kunder kommer att köpa och var människor kommer att vara vid den här tiden på dygnet.

Svar kan inte bara vara "ja" och "nej", utan också i form av siffror. Om du vill ha en mer exakt prognos kan du göra flera sådana träd och snitta över dem. Och med en så enkel sak kan du faktiskt förutsäga framtiden.

Föreställ dig nu hur svårt det var för människor att komma på ett sådant upplägg för tvåhundra år sedan? Absolut inte! Detta schema innehåller ingen raketvetenskap. Som fenomen har maskininlärning funnits i ungefär ett halvt sekel. Ronald Fisher började förutsäga baserat på data i början av 1900-talet. Han tog iris och fördelade dem längs längden och bredden av foderbladen och kronbladen, med dessa parametrar bestämde han typen av växt.

Maskininlärningsindustrin har använts aktivt under de senaste decennierna: kraftfulla och relativt billiga maskiner som behövs för att bearbeta stora mängder data, till exempel för sådana beslutsträd, dök upp för inte så länge sedan. Men det är fortfarande hisnande: vi ritar dessa saker för varje uppgift och använder dem för att förutsäga framtiden.

- Tja, definitivt inte bättre än alla bläckfisksprediktorer av fotbollsmatcher ...

Nej, ja, var bryr vi oss om bläckfiskar. Även om vi har mer variation. Nu, med hjälp av maskininlärning, kan du spara tid, pengar och förbättra bekvämligheten i livet. Maskininlärning slog människan för några år sedan när det gällde att klassificera bilder. Till exempel kan en dator känna igen 20 raser av terrier, men en vanlig människa kan inte.

– Och när du analyserar användare är varje person en uppsättning siffror för dig?

Grovt sett, ja. När vi arbetar med data beskriver vi alla objekt, inklusive användarbeteende, med en viss uppsättning siffror. Och dessa siffror återspeglar det speciella med människors beteende: hur ofta de tar en taxi, vilken klass av taxi de använder, vilka ställen de brukar åka till.

Nu bygger vi aktivt look-alike-modeller för att identifiera grupper av människor med liknande beteende. När vi introducerar en ny tjänst eller vill marknadsföra en gammal erbjuder vi den till de som är intresserade.

Här har vi till exempel en tjänst - två barnstolar i en taxi. Vi kan spamma alla med den här nyheten, eller så kan vi bara rikta dem till en viss krets av människor. Under året har vi samlat på oss ett visst antal användare som skrivit i kommentarerna att de behöver två barnstolar. Vi hittade dem och folk gillar dem. Konventionellt är dessa personer över 30 år som reser regelbundet och älskar medelhavsmat. Även om det naturligtvis finns mycket fler tecken, det här är jag som ett exempel.

- Även sådana finesser?

Detta är en enkel sak. Allt beräknas med hjälp av sökfrågor.

Och i applikationen kan det på något sätt fungera? Du vet till exempel att jag är en tiggare och prenumererar på grupper som "Hur man överlever på 500 rubel i månaden" - de erbjuder mig bara misshandlade billiga bilar, jag prenumererar på SpaceX-nyheter - och jag får Tesla då och då?

Det kan fungera på det här sättet, men sådana saker godkänns inte i Yandex, eftersom detta är diskriminering. När du anpassar en tjänst är det bättre att inte erbjuda den mest acceptabla, utan den bästa tillgängliga och vad personen gillar. Och fördelningen enligt logiken "den här behöver en bättre bil, och den här behöver en mindre bra" är ond.


Alla har perversa önskningar, och ibland behöver du inte hitta ett recept på en medelhavsrätt, utan till exempel bilder om koprofili. Kommer personalisering att fungera även i det här fallet?

Det finns alltid ett privat läge.

Om jag inte vill att någon ska veta om mina intressen eller, låt oss säga, vänner kommer till mig och vill titta på lite skräp, då är det bättre att använda inkognitoläget.

Du kan också bestämma vilket företags tjänst som ska användas, till exempel Yandex eller Google.

- Är det någon skillnad?

Komplext problem. Jag vet inte om andra, men Yandex är strikt när det gäller skydd av personuppgifter. Särskilt övervaka anställda.

- Det vill säga, om jag gjorde slut med en kille, kommer jag inte att kunna ta reda på om han gick till denna dacha eller inte?

Även om du arbetar för Yandex. Detta är förstås tråkigt, men ja, det kommer inte att gå att ta reda på. De flesta anställda har inte ens tillgång till dessa uppgifter. Allt är krypterat. Det är enkelt: du kan inte spionera på människor, det är personlig information.

Förresten, vi hade ett intressant fall på ämnet att göra slut med killar. När vi gjorde förutsägelsen av punkt "B" - destinationspunkten i en taxi, introducerade vi tips. Se.

(Victor går in i Yandex.Taxi-applikationen.)

Till exempel tror taxin att jag är hemma. Han erbjuder mig att gå antingen till jobbet eller till RUDN University (jag håller föreläsningar där som en del av kursen om maskininlärning Data Mining in Action). Och vid något tillfälle, när vi utvecklade dessa tips, insåg vi att vi inte behöver kompromissa med användaren. Punkt "B" kan alla se. Av dessa skäl vägrade vi att erbjuda platser efter likhet. Och så sitter du på en anständig plats med anständiga människor, beställer en taxi och de skriver till dig där: "Titta, du har inte varit på den här baren än!"

- Vilka blå prickar blinkar på din karta?

Dessa är upphämtningsställen. Dessa punkter visar var det är lämpligast att ringa en taxi. När allt kommer omkring kan du ringa på en plats där det kommer att vara ganska obekvämt att ringa. Men generellt sett kan du ringa var som helst.

- Ja, i alla fall. Jag flög på något sätt två kvarter med den.

Den senaste tiden har det varit olika svårigheter med GPS, vilket lett till olika roliga situationer. Människor, till exempel, på Tverskaya, överfördes genom navigering över Stilla havet. Som du kan se, ibland finns det missar och mer än två block.

- Och om du startar om applikationen och petar igen ändras priset med några rubel. Varför?

Om efterfrågan överstiger utbudet genererar algoritmen automatiskt en multiplikator - detta hjälper de som behöver åka så snart som möjligt att använda en taxi, även under perioder med stor efterfrågan. Med hjälp av maskininlärning kan du förresten förutsäga var det blir mer efterfrågan på till exempel en timme. Detta hjälper oss att berätta för förarna var det kommer att finnas fler beställningar så att utbudet matchar efterfrågan.

– Tror du inte att Yandex.Taxi snart kommer att döda hela taximarknaden?

Jag tror nej. Vi är för sund konkurrens och är inte rädda för det.

Själv använder jag till exempel olika taxitjänster. Väntetiden är viktig för mig, så jag tittar på flera ansökningar vilken taxi som kommer fram snabbare.


– Du slog dig ihop med Uber. Varför då?

Det är inte min plats att kommentera. Jag tror att ena är ett djupt förnuftigt beslut.

I Tyskland installerade en kille ett badkar på drönare och flög därför efter en hamburgare. Har du tänkt att det är dags att bemästra luftrummet?

Jag vet inte om luftrum. Vi följer nyheterna i andan av "Uber lanserade taxibåtar", men jag kan inte säga något om luften.

Hur är det med dronetaxi?

Här är en intressant punkt. Vi håller på att utveckla dem, men vi måste fundera på exakt hur vi ska använda dem. Det är ännu för tidigt att förutse hur och när de kommer att dyka upp på gatorna, men vi jobbar hårt med att utveckla teknik för en helt autonom bil, där en mänsklig förare inte alls behövs.

- Finns det några farhågor om att drönares programvara kan hackas för att fjärrstyra maskinen?

Risker finns alltid och överallt där det finns teknologier och prylar. Men tillsammans med utvecklingen av teknik utvecklas en annan riktning - deras skydd och säkerhet. Alla som är involverade i utvecklingen av teknik på ett eller annat sätt arbetar med skyddssystem.

- Vilken användardata samlar du in och hur skyddar du den?

Vi samlar in avidentifierad användningsdata, såsom var, när och vart du reste. Allt viktigt hashas.

– Tror du att drönare kommer att minska antalet jobb?

Jag tror att det bara kommer att bli större. Ändå behöver dessa drönare också servas på något sätt. Det här är naturligtvis lite av en stressig situation, att förändra din specialitet, men vad kan du göra.

– Gref säger vid varje sin föreläsning att en person kommer att byta yrke minst tre gånger dramatiskt.

Jag kan inte nämna någon specialitet som varar för evigt. En utvecklare arbetar inte på samma språk och med samma teknik hela sitt liv. Överallt måste byggas om. Med maskininlärning kan jag tydligt känna hur killar som är sex år yngre än mig är mycket snabbare än mig. Samtidigt känner personer i 40- eller 45-årsåldern det ännu starkare.

Spelar erfarenhet ingen roll längre?

Pjäser. Men metoderna förändras, man kan komma till ett område där man till exempel inte använde djupinlärning, man jobbar där ett tag, sedan introduceras metoder för djupinlärning överallt och man förstår ingenting av det. Och det är allt. Din erfarenhet kan bara vara användbar i fråga om teamplanering, och inte alltid.

– Och ditt yrke är datavetare, efterfrågas det?

Efterfrågan på datavetare skjuter i höjden. Det är uppenbart att nu är en period av galen hype. Tack gode gud hjälpte blockkedjan lite till att dämpa denna hype. Blockchain-specialister demonteras ännu snabbare.

Men många företag tror nu att om de investerar i maskininlärning kommer deras trädgårdar omedelbart att blomma. Det är inte sant. Maskininlärning ska lösa specifika problem, och inte bara existera.

Det finns tillfällen då en bank vill skapa ett rekommendationstjänstsystem för användare. Vi frågar: "Tror du att det kommer att vara ekonomiskt motiverat?" De svarar: "Ja, vi bryr oss inte. Gör det. Alla har rekommendationssystem, vi kommer att vara i trenden.”

Smärtan är att något som verkligen är användbart för företag inte kan göras på en dag. Vi måste se hur systemet ska tränas. Och hon jobbar alltid med fel i början, hon kan sakna lite data under träningen. Du fixar misstag, fixar dem sedan igen och gör till och med om allt. Efter det måste du konfigurera det så att systemet fungerar i produktionen, så att det är stabilt och skalbart, det är fortfarande dags. Som ett resultat tar ett projekt sex månader, ett år eller mer.


Om du ser på maskininlärningsmetoder som en svart låda, då kan du lätt missa hur en del nonsens börjar hända. Det finns en skäggig historia. Militären bad om att få utveckla en algoritm som kan användas för att analysera om det finns en stridsvagn med i bilden eller inte. Forskarna gjorde, testade, kvaliteten är utmärkt, allt är bra, de gav det till militären. Militären kommer och säger att ingenting fungerar. Forskare börjar förstå nervöst. Det visar sig att det på alla bilder med stridsvagnen, som militären tog med, fanns en bock i hörnet med en penna. Algoritmen lärde sig perfekt att hitta en fästing, den visste ingenting om tanken. Naturligtvis fanns det inga bockar på de nya bilderna.

Jag träffade barn som utvecklar sina egna dialogsystem. Har du någonsin tänkt på att du behöver samarbeta med barn?

Jag har gått på alla möjliga evenemang för skolbarn under lång tid och hållit föreläsningar om maskininlärning. Och förresten, ett av ämnena lärde mig av en tiondeklassare. Jag var helt säker på att min berättelse skulle vara bra och intressant, stolt över mig själv, jag började sända, och flickan sa: "Ah, vi vill minimera den här saken." Jag tittar och tänker, men egentligen, varför, och sanningen kan minimeras, och det finns inget speciellt att bevisa här. Det har redan gått flera år, nu lyssnar hon på våra föreläsningar som student på Phystech. Yandex har förresten ett Yandex.Lyceum, där skolbarn kan få grundläggande programmeringskunskaper gratis.

– Ge råd till universitet och fakulteter där maskininlärning lärs ut nu.

Det finns Moskva Institute of Physics and Technology, fakulteterna för FIVT och FUPM. Det finns också en underbar avdelning för datavetenskap vid HSE och maskininlärning vid Moscow State University. Nåväl, nu kan du lyssna på vår kurs på RUDN University.

Det här yrket är som sagt efterfrågat. Under mycket lång tid sysslade personer som fick teknisk utbildning i helt andra saker. Maskininlärning är ett bra exempel när alla saker som personer med teknisk bakgrund lärt sig nu är direkt nödvändiga, användbara och välbetalda.

- Så bra?

Namnge beloppet.

- 500 tusen per månad.

Det kan du, bara inte vara en vanlig dataforskare. Men i vissa företag kan en väldigt, väldigt trainee få 50 000 för ett enkelt jobb.Det är väldigt stor spridning. I allmänhet kan lönen för en cool datavetare jämföras med lönen för VD:n för något genomsnittligt företag. I många företag faller det utöver lönen en hel del smått och gott på den anställde, och om det är tydligt att personen inte kom för att skriva ett bra varumärke i CV:t, utan för att verkligen jobba, så blir allt bra med honom.

Nästan ett år har gått sedan starten av ett ovanligt ämne på FIFT - en innovativ workshop. Dess kärna är skapandet av IT-startups av studentteam under ledning av erfarna mentorer. Det visade sig inte dåligt: ​​tack vare kursen tillbringade någon en del av sommaren i Kremieva-dalen, någon fick ett bidrag på 800 000 rubel för utvecklingen av projektet, och ABBYY är redo att helt köpa projektet från någon. Och detta är inte allt resultatet av workshopen!

I början av 2011 samlades FIVT:s tredjeårsstudenter i samlingssalen och berättade att du under nästa år kommer att behöva skapa din egen startup. Studenter tog den här idén tvetydigt: det var inte klart hur man gör det alls, och ansvaret var ovanligt - trots allt var det nödvändigt att skapa en teknikverksamhet, och inte bara ett annat utbildningsprojekt. Här är vad Victor Kantor, vinnare av MIPT Student Olympiad in Physics, en student vid Yandeska-avdelningen, tycker om detta:

När jag valde FIVT vid antagningen hoppades jag att vi skulle ha något liknande. Så jag är glad att jag inte hoppades förgäves. Under året har man känt att kursen fortfarande formas, mycket av det är nytt, många frågor är kontroversiella inte bara för studenter, utan även för arrangörerna, men generellt tycker jag att trenderna är positiva. Jag gillade den här kursen.

För att underlätta studenters arbete bjöds olika kuratorer in för att ge sina idéer för att bygga innovativa företag. Bland dem var helt olika människor: från seniorstudenter och doktorander vid Moskvainstitutet för fysik och teknik till Ernst & Youngs innovationsrådgivare Yuri Pavlovich Ammosov (han var ledare för hela kursen) och Mikhail Batin, involverad i regenerativ medicin och liv förlängningsproblem. Som ett resultat valde fysiker de idéer som var mest intressanta för dem, kuratorer knöt sig till teamen och ett hårt men spännande arbete började.

På nästan ett år som har gått sedan dess har killarna ställts inför många problem, varav några har lösts. Nu kan du utvärdera deras resultat – trots svårigheterna klarade sig killarna. MIPT-studenter (bortsett från fakulteten för fysik, några studenter från FAPF och andra fakulteter gick med i processen) lyckades förbereda flera ganska intressanta och livskraftiga projekt:

Askeroid (tidigare Ask Droid) - sök efter smartphones ( Anastasia Uryasheva)

En Android-applikation som låter dig enkelt söka i ett stort antal sökmotorer. Några experter visade intresse för utvecklingen, och som ett resultat tillbringade Anastasia hela sommaren i en av de mest kända inkubatorerna i Silicon Valley - Plug&Play. lära sig grunderna i teknikentreprenörskap och prata med internationella riskkapitalexperter.

1minute.ru - en minut för gott (Lev Grunin)

Detta projekt låter vem som helst enkelt, snabbt och helt kostnadsfritt göra välgörenhetsarbete. Modellen är enkel: annonsörer erbjuder en uppsättning aktiviteter på webbplatsen, användare deltar frivilligt i dem och alla reklampengar överförs till en välgörenhetsstiftelse. En vecka efter lanseringen har projektet samlat mer än 6 500 användare och kommer inte att sluta där. Som ett resultat, tack vare Lev och hans team, kommer 600 barn från barnhem att få omhuldade gåvor från jultomten för det nya året. Har du redan ägnat en minut åt en god gärning?!

Embedded Desktop - en dator i din telefon (Alexey Vukolov)

En applikation som låter dig kombinera en dators kapacitet och mobiliteten hos en telefon i ett fall är en extremt användbar produkt för upptagna människor som ofta åker på affärsresor. Det räcker att installera den på en smartphone, och användaren kommer att kunna "skaffa" sin egen dator på alla hotell, kontor och faktiskt var du än kan hitta en bildskärm (en TV är också lämplig), ett tangentbord och en mus . Projektet fick ett bidrag för utvecklingen av idén och presenterades på Technovation Cup-utställningen, och teamet köper redan aktivt utrustning med de pengar som erhållits. Den amerikanska tillverkaren av MIPS-processorer är oerhört intresserad av utvecklingen.

Smart Tagger - semantisk sökning genom dokument (Viktor Kantor)

Tänk om du kommer ihåg att det låg ett väldigt viktigt brev någonstans i brevlådan som talade om det senaste avsnittet av Big Bang Theory, men du kommer inte ihåg något av nyckelorden från texten? Yandex och Google-sökning är maktlös. Utvecklingen av Smart Tagger kommer till undsättning - ett "smart" program som använder semantisk sökning kommer att ge dig alla texter, vars betydelse är sammanflätad med den populära serien. Projektet vann ett anslag vid U.M.N.I.K. totalt belopp på 400 000 rubel!

MathOcr - formeligenkänning (Viktor Prun)

ABBYY föreslog en intressant uppgift för implementering - att skapa ett program som skulle känna igen matematiska formler av vilken komplexitet som helst. FIVT-studenter, efter att ha samarbetat med intresserade fopfs, slutförde uppgiften - modulen känner verkligen igen formler skannade från läroböcker om matan eller fysik. Resultat: ABBYY är redo att köpa denna produkt för stora pengar.

Som en del av ABC AI-projektet tillsammans med MIPT har vi redan skrivit om de så kallade, som låter dig "odla" program enligt principerna och lagarna för darwinistisk evolution. Men medan ett sådant förhållningssätt till artificiell intelligens naturligtvis är en "gäst från framtiden." Men hur skapas system för artificiell intelligens idag? Hur tränas de? Viktor Kantor, universitetslektor vid institutionen för algoritmer och programmeringsteknik vid Moskvas institut för fysik och teknologi, chef för Yandex Data Factory User Behavior Analysis Group, hjälpte oss att ta reda på detta.

Enligt en färsk rapport från analysföretaget Gartner, som regelbundet uppdaterar sin tekniska mognadscykel, av all IT, är maskininlärning på toppen av förväntningarna idag. Detta är inte förvånande: under de senaste åren har maskininlärning gått utanför intressesfären för en snäv krets av matematiker och specialister inom teorin om algoritmer och har först trängt in i IT-affärsmäns vokabulär och sedan in i världen av vanliga människor. Nu när det finns något sådant som neurala nätverk med sin speciella "magi", vet alla som har använt Prisma-appen, sökt efter låtar med Shazam eller sett bilder som passerat genom DeepDream.

Det är dock en sak att använda tekniken och en annan att förstå hur den fungerar. Vanliga ord som "en dator kan lära sig om du ger den en hint" eller "ett neuralt nätverk består av digitala neuroner och är arrangerat som en mänsklig hjärna" kan hjälpa någon, men oftare förvirrar de bara situationen. De som på allvar ska engagera sig i matematikinlärning behöver inte populära texter: det finns läroböcker och utmärkta onlinekurser för dem. Vi kommer att försöka gå medelvägen: förklara hur lärande faktiskt sker på enklast möjliga uppgift, och sedan visa hur samma tillvägagångssätt kan tillämpas för att lösa riktigt intressanta problem.

Hur maskiner lär sig

Till att börja med, för att förstå exakt hur maskininlärning sker, låt oss definiera begreppen. Enligt definitionen av en av pionjärerna inom området, Arthur Samuel, syftar maskininlärning på metoder som "låter datorer lära sig utan att programmeras direkt." Det finns två breda klasser av maskininlärningsmetoder: övervakad inlärning och oövervakad inlärning. Den första används när vi till exempel ska lära datorn att söka efter foton med bilden av katter, den andra - när vi behöver maskinen till exempel för att självständigt kunna gruppera nyheter i berättelser, som händer i tjänster som Yandex.News eller Google News. Det vill säga, i det första fallet har vi att göra med en uppgift som innebär att det finns ett korrekt svar (katten på bilden är antingen där eller inte), i det andra finns det inget enda rätt svar, men det finns olika sätt att lösa problemet. Vi kommer att fokusera på den första klassen av problem som den mest intressanta.

Så vi måste lära datorn att göra några förutsägelser. Och helst så exakt som möjligt. Förutsägelser kan vara av två typer: antingen måste du välja mellan flera svarsalternativ (finns det en katt på bilden eller inte - detta är valet av ett alternativ av två, möjligheten att känna igen bokstäver i bilder är valet av en alternativ av flera dussin, och så vidare), eller gör en numerisk förutsägelse. Förutsäg till exempel en persons vikt baserat på deras längd, ålder, skostorlek och så vidare. Dessa två typer av problem ser bara olika ut, i själva verket löses de på nästan samma sätt. Låt oss försöka förstå hur.

Det första vi behöver för att göra ett prediktionssystem är att samla in det så kallade träningsprovet, det vill säga data om vikten av människor i befolkningen. Det andra är att besluta om en uppsättning funktioner, på grundval av vilka vi kan dra slutsatser om vikt. Det är tydligt att en av de mest "starka" av dessa tecken kommer att vara tillväxten av en person, därför räcker det som en första uppskattning att bara ta det. Om vikten beror linjärt på höjden, kommer vår förutsägelse att vara mycket enkel: en persons vikt kommer att vara lika med hans längd multiplicerat med någon koefficient, plus något konstant värde, som skrivs av den enklaste formeln y \u003d kx + b. Allt vi behöver göra för att träna en maskin att förutsäga en persons vikt är att på något sätt hitta rätt värden för k och b.

Det fina med maskininlärning är att även om beroendet vi studerar är mycket komplext, så finns det i princip liten förändring i vårt tillvägagångssätt. Vi kommer fortfarande att ha att göra med samma regression.

Låt oss säga att en persons längd inte påverkar en persons vikt linjärt, utan till tredje graden (vilket vanligtvis förväntas, eftersom vikten beror på kroppsvolymen). För att ta hänsyn till detta beroende introducerar vi helt enkelt ytterligare en term i vår ekvation, nämligen den tredje tillväxtgraden med sin egen koefficient, samtidigt som vi får y=k 1 x+k 2 x 3 +b. Nu, för att träna maskinen, måste vi hitta inte två, utan tre kvantiteter (k 1, k 2 och b). Låt oss säga att vi i vår förutsägelse vill ta hänsyn till storleken på en persons skor, hans ålder, tiden han tittade på TV och avståndet från hans lägenhet till närmaste snabbmatsbutik. Inga problem: vi lägger bara dessa funktioner som separata termer i samma ekvation.

Det viktigaste är att skapa ett universellt sätt att hitta de nödvändiga koefficienterna (k 1 , k 2 , … k n). Om det är det, kommer det att vara nästan likgiltigt för oss vilka funktioner vi ska använda för att förutsäga, eftersom maskinen själv kommer att lära sig att ge mycket vikt åt viktiga, och en liten till oviktiga funktioner. Lyckligtvis har en sådan metod redan uppfunnits och nästan all maskininlärning fungerar framgångsrikt på den: från de enklaste linjära modellerna till ansiktsigenkänningssystem och talanalysatorer. Denna metod kallas gradient descent. Men innan vi förklarar hur det fungerar måste vi göra en liten avvikelse och prata om neurala nätverk.

Neurala nätverk

Under 2016 kom neurala nätverk in i informationsagendan så hårt att de nästan blev identifierade med vilken maskininlärning som helst och avancerad IT i allmänhet. Formellt är detta inte sant: neurala nätverk används inte alltid i matematikinlärning, det finns andra tekniker. Men i allmänhet är förstås en sådan förening förståelig, eftersom det är system baserade på neurala nätverk som nu ger de mest "magiska" resultaten, såsom möjligheten att söka efter en person med foto, uppkomsten av applikationer som överför stil av en bild till en annan, eller system för att generera texter på samma sätt som en viss person.

Det sätt som neurala nätverk är ordnade har vi redan. Här vill jag bara betona att styrkan hos neurala nätverk jämfört med andra maskininlärningssystem ligger i deras mångskiktighet, men detta gör dem inte till något fundamentalt annorlunda när det gäller hur de fungerar. Layering låter dig verkligen hitta mycket abstrakta vanliga egenskaper och beroenden i komplexa uppsättningar funktioner, som pixlar i en bild. Men det är viktigt att förstå att när det gäller inlärningsprinciper skiljer sig ett neuralt nätverk inte radikalt från en uppsättning konventionella linjära regressionsformler, så samma metod för gradientnedstigning fungerar utmärkt även här.

"Styrkan" i det neurala nätverket ligger i närvaron av ett mellanskikt av neuroner som kombinerar värdena för ingångslagret som summerar. På grund av detta kan neurala nätverk hitta mycket abstrakta egenskaper hos data som är svåra att reducera till enkla formler som ett linjärt eller kvadratiskt samband.

Låt oss förklara med ett exempel. Vi bestämde oss för en förutsägelse där en persons vikt beror på deras längd och höjd i kuber, vilket uttrycks med formeln y=k 1 x+k 2 x 3 +b. Med viss sträckning, men i själva verket kan även en sådan formel kallas ett neuralt nätverk. I det, som i ett konventionellt neuralt nätverk, finns det ett första lager av "neuroner", vilket också är ett lager av egenskaper: dessa är x och x 3 (ja, "enkelneuronen" som vi tänker på och för vilken koefficienten b är ansvarig). Det översta, eller resulterande, lagret representeras av en enda "neuron" y, det vill säga personens beräknade vikt. Och mellan det första och sista lagret av "neuroner" finns anslutningar, vars styrka eller vikt bestäms av koefficienterna k 1 , k 2 och b. Att träna detta "neurala nätverk" betyder helt enkelt att hitta samma koefficienter.

Den enda skillnaden från "riktiga" neurala nätverk här är att vi inte har ett enda mellanliggande (eller gömt) lager av neuroner, vars uppgift är att kombinera indatafunktioner. Införandet av sådana lager gör det möjligt att inte uppfinna möjliga beroenden mellan de tillgängliga funktionerna "från huvudet", utan att lita på deras redan existerande kombinationer i det neurala nätverket. Till exempel kan ålder och genomsnittlig TV-tid ha en synergistisk effekt på en persons vikt, men med ett neuralt nätverk behöver vi inte veta detta i förväg och lägga in deras produkt i formeln. Det kommer definitivt att finnas en neuron i det neurala nätverket som kombinerar påverkan av två olika funktioner, och om denna påverkan verkligen är märkbar på provet, kommer denna neuron automatiskt att få en stor vikt efter träning.

lutning nedstigning

Så vi har en träningsuppsättning exempel med kända data, det vill säga en tabell med en noggrant uppmätt persons vikt och en viss beroendehypotes, i detta fall linjär regression y=kx+b. Vår uppgift är att hitta rätt värden på k och b, och inte manuellt utan automatiskt. Och helst en universell metod som inte beror på antalet parametrar som ingår i formeln.

Att göra detta är i allmänhet lätt. Huvudtanken är att skapa en funktion som ska mäta den aktuella totala felnivån och "vrida" koefficienterna så att den totala felnivån gradvis sjunker. Hur får man felnivån att sjunka? Vi måste justera våra parametrar i rätt riktning.

Föreställ dig våra två parametrar som vi letar efter, samma k och b, som två riktningar på planet, som nord-sydlig och väst-östlig axel. Varje punkt på ett sådant plan kommer att motsvara ett visst värde på koefficienterna, ett visst specifikt förhållande mellan höjd och vikt. Och för varje sådan punkt på planet kan vi beräkna den totala nivån av fel som denna förutsägelse ger för vart och ett av exemplen i vårt prov.

Det visar sig ungefär som en specifik höjd på planet, och hela det omgivande utrymmet börjar likna ett bergslandskap. Berg är punkter där felfrekvensen är mycket hög, dalar är platser där det är färre fel. Det är tydligt att att träna vårt system innebär att hitta den lägsta punkten på marken, den punkt där felfrekvensen är minimal.

Hur kan du hitta denna punkt? Det mest korrekta sättet är att flytta ner hela tiden från den punkt där vi ursprungligen hamnade. Så förr eller senare kommer vi till ett lokalt minimum - en punkt under vilken det inte finns något i omedelbar närhet. Dessutom är det önskvärt att ta steg av olika storlekar: när lutningen är brant kan du gå bredare, när lutningen är liten är det bättre att smyga upp till det lokala minimumet "på tå", annars kan du slinka igenom.

Så här fungerar gradientnedstigning: vi ändrar egenskapsvikterna i riktning mot det största fallet i felfunktionen. Vi ändrar dem iterativt, det vill säga med ett visst steg, vars värde är proportionellt mot lutningens branthet. Intressant nog, med en ökning av antalet funktioner (att lägga till en kub av en persons längd, ålder, skostorlek och så vidare), förändras faktiskt ingenting, det är bara att vårt landskap inte blir tvådimensionellt, utan flerdimensionellt.

Felfunktionen kan definieras som summan av kvadraterna av alla avvikelser som den nuvarande formeln tillåter för personer vars vikt vi redan vet exakt. Låt oss ta några slumpvariabler k och b, till exempel 0 och 50. Då kommer systemet att förutsäga för oss att vikten av varje person i urvalet alltid är 50 kilogram y=0×x+50 På grafen kommer ett sådant beroende att ser ut som en rak linje parallell med horisontalplanet. Det är tydligt att detta inte är en särskilt bra förutsägelse. Låt oss nu ta avvikelsen i vikt från detta förutsagda värde, kvadrera det (så att negativa värden också beaktas) och summera det - detta kommer att vara felet vid denna tidpunkt. Om du är bekant med början av analysen kan du till och med klargöra att riktningen för det största fallet ges av partialderivatan av felfunktionen med avseende på k och b, och steget är ett värde som är valt från praktiska överväganden: små steg tar mycket tid att beräkna, och stora kan leda till att vi missar minimum.

Okej, men vad händer om vi inte bara har en komplex regression med många funktioner, utan ett riktigt neuralt nätverk? Hur tillämpar vi gradient descent i detta fall? Det visar sig att gradientnedstigning fungerar exakt likadant med ett neuralt nätverk, bara träning sker 1) i etapper, från lager till lager, och 2) gradvis, från ett exempel i provet till ett annat. Metoden som används här kallas backpropagation och beskrevs oberoende 1974 av den sovjetiske matematikern Alexander Galushkin och Harvard University-matematikern Paul John Webros.

Även om det för en noggrann presentation av algoritmen kommer att vara nödvändigt att skriva ut partiella derivator (som till exempel), på en intuitiv nivå, händer allt helt enkelt: för vart och ett av exemplen i provet har vi en viss förutsägelse vid utsignalen från det neurala nätverket. När vi har rätt svar kan vi subtrahera det korrekta svaret från förutsägelsen och på så sätt få ett fel (mer exakt, en uppsättning fel för varje neuron i utlagret). Nu måste vi överföra detta fel till det föregående lagret av neuroner, och ju mer denna specifika neuron i detta lager bidrog till felet, desto mer behöver vi minska dess vikt (i själva verket pratar vi återigen om att ta en partiell derivata, om att röra sig längs den maximala brantheten i vårt imaginära landskap). När vi har gjort detta måste samma procedur upprepas för nästa lager, röra sig i motsatt riktning, det vill säga från utgången från det neurala nätverket till ingången.

Genom att passera genom det neurala nätverket på detta sätt med varje exempel på träningsprovet och "vrida" neuronernas vikter i rätt riktning, borde vi så småningom få ett tränat neuralt nätverk. Backpropagation-metoden är en enkel modifiering av gradient descent-metoden för flerlagers neurala nätverk och bör därför fungera för neurala nätverk av vilken komplexitet som helst. Vi säger "bör" här eftersom det faktiskt finns fall när gradientnedstigning misslyckas och inte tillåter dig att göra en bra regression eller träna ett neuralt nätverk. Det är användbart att veta vad som orsakar sådana svårigheter.

Gradient Nedstigningssvårigheter

Fel val av absolut minimum. Gradient descent-metoden hjälper till att hitta ett lokalt extremum. Men vi kan inte alltid använda den för att nå funktionens absoluta globala minimum eller maximum. Detta händer för att när vi rör oss längs antigradienten stannar vi i det ögonblick när vi når det första lokala minimum som vi stöter på, och algoritmen stoppar sitt arbete.

Föreställ dig att du står på toppen av ett berg. Om du vill gå ner till den lägsta ytan i området kommer gradientnedstigningsmetoden inte alltid att hjälpa dig, eftersom den första låga punkten på vägen inte nödvändigtvis kommer att vara den lägsta punkten. Och om du i livet kan se att det är värt att gå upp lite och du sedan kan gå ännu lägre, då kommer algoritmen helt enkelt att stanna i en sådan situation. Ofta kan denna situation undvikas genom att välja rätt steg.

Fel stegval. Gradient descent-metoden är en iterativ metod. Det vill säga att vi själva måste välja stegstorleken - hastigheten med vilken vi går ner. Genom att välja ett för stort steg kan vi flyga förbi det extremum vi behöver och inte hitta minimum. Detta kan hända om du står inför en mycket skarp nedstigning. Och att välja ett för litet steg hotar med extremt långsam drift av algoritmen om vi befinner oss på en relativt plan yta. Om vi ​​återigen föreställer oss att vi befinner oss på toppen av ett brant berg, så kan det uppstå en situation när vi på grund av en mycket brant nedförsbacke nära miniminivån helt enkelt kommer att flyga över det.

Nätverksförlamning. Ibland händer det att metoden för gradientnedstigning inte lyckas hitta ett minimum alls. Detta kan hända om det finns plana områden på båda sidor av minimum - algoritmen, efter att ha träffat ett plant område, minskar steget och slutar till slut. Om du, stående på toppen av ett berg, bestämmer dig för att flytta till ditt hus i låglandet, kan stigen bli för lång om du av misstag vandrar in på ett mycket platt område. Eller, om det finns praktiskt taget branta "sluttningar" vid kanterna på de platta områdena, kommer algoritmen, genom att välja ett mycket stort steg, hoppa från en sluttning till en annan, praktiskt taget utan att flytta till ett minimum.

Alla dessa komplexa punkter måste beaktas när man designar ett maskininlärningssystem. Till exempel är det alltid användbart att spåra exakt hur felfunktionen förändras över tiden - om den faller med varje ny cykel eller markerar tid, hur arten av detta fall förändras beroende på förändringen i stegstorlek. För att undvika att träffa ett dåligt lokalt minimum kan det vara bra att utgå från olika slumpmässigt valda punkter i landskapet – då är sannolikheten att köra fast mycket lägre. Det finns många fler stora och små hemligheter för att hantera gradientnedstigning, och det finns mer exotiska sätt att lära sig som inte liknar gradientnedstigning. Detta är dock redan ett ämne för ett annat samtal och en separat artikel inom ramen för AI-ABC-projektet.

Utarbetad av Alexander Ershov

Nytt på plats

>

Mest populär