Yandex avab CatBoosti masinõppetehnoloogia. Süvaõppe raamatukogude võrdlus käsitsi kirjutatud numbrite klassifitseerimise probleemi näitel

Ajalooliselt on tehisnärvivõrgud oma enam kui poole sajandi pikkuse ajaloo jooksul kogenud nii kiire tõusu ja avalikkuse suurenenud tähelepanu perioode, kui ka neile järgnenud skeptitsismi ja ükskõiksuse perioode. Kui ajad on head, tundub teadlastele ja inseneridele, et nad on lõpuks leidnud universaalse tehnoloogia, mis suudab asendada inimesi mis tahes kognitiivse ülesande täitmisel. Nagu seeni pärast vihma, ilmuvad mitmesugused uued närvivõrkude mudelid ja nende autorite, professionaalsete matemaatikute vahel käivad intensiivsed vaidlused nende pakutud mudelite suurema või väiksema bioloogilise astme üle. Professionaalsed bioloogid jälgivad neid arutelusid kõrvalt, aeg-ajalt murduvad ja hüüavad: "Jah, seda päris looduses ei juhtu!" – ja ilma suurema efektita, kuna närvivõrgu matemaatikud kuulavad biolooge reeglina ainult siis, kui bioloogide faktid on kooskõlas nende endi teooriatega. Kuid aja jooksul koguneb järk-järgult hulk ülesandeid, mille puhul närvivõrgud toimivad ausalt öeldes halvasti ja inimeste entusiasm jahtub.

Tänapäeval on närvivõrgud tagasi oma kuulsuse haripunktis tänu Restricted Bolzmann Machines'il (RBM) põhineva järelevalveta eeltreeningu meetodi leiutamisele, mis võimaldab treenida sügavaid närvivõrke (st eriti suurte, kümnete tuhandete suurusjärk, neuronite arv) ja sügavate närvivõrkude edu kõne- ja pildituvastuse praktilistes probleemides. Näiteks Androidis rakendatakse kõnetuvastust sügavate närvivõrkude abil. Kui kaua see kestab ja kui hästi sügavad närvivõrgud neile seatud ootustele vastavad, pole teada.
Samal ajal paistab paralleelselt kõigi teadusvaidluste, hoovuste ja trendidega selgelt silma närvivõrgu kasutajate kogukond – praktiseerivad tarkvarainsenerid, keda huvitab närvivõrkude rakenduslik aspekt, nende võime õppida kogutud andmetest ja lahendada äratundmisprobleeme. Paljusid praktilisi klassifitseerimis- ja prognoosimisprobleeme lahendavad hästi hästi läbimõeldud, suhteliselt väikesed mitmekihilised pertseptron- (MLP) ja radiaalpõhifunktsioonid (RBF) mudelid. Neid närvivõrke on korduvalt kirjeldatud, lähtudes oma isiklikust sümpaatiast nende vastu, soovitaksin ma järgmisi raamatuid: Osovski, piiskop, khaikin; Coursera ja sarnaste ressursside kohta on ka häid kursusi.

Mis puudutab aga üldist lähenemisviisi närvivõrkude kasutamisele praktikas, siis see erineb põhimõtteliselt tavapärasest deterministlikust arenduskäsitlusest "programmeeritud, see töötab, see tähendab, et see töötab alati". Närvivõrgud on oma olemuselt tõenäosusmudelid ja lähenemine neile peaks olema täiesti erinev. Kahjuks teevad paljud uued masinõppetehnoloogiate ja eelkõige närvivõrkude programmeerijad nendega töötades süsteemivigu, pettuvad ja loobuvad asjast. Idee kirjutada see traktaat Habrist tekkis pärast suhtlemist selliste pettunud närvivõrkude kasutajatega - suurepäraste, kogenud ja enesekindlate programmeerijatega.

Siin on minu nimekiri reeglitest ja levinud vigadest närvivõrkude kasutamisel.

1. Kui on võimalik närvivõrke mitte kasutada, siis ära neid kasuta.
Närvivõrgud võimaldavad teil lahendada probleemi, kui andmeid korduvalt (või väga korduvalt) silmadega vaadates pole võimalik algoritmi välja pakkuda. Näiteks kui andmeid on palju, on need mittelineaarsed, mürarikkad ja/või suured.

2. Närvivõrkude keerukus peab vastama ülesande keerukusele.
Kaasaegsed personaalarvutid (näiteks Core i5, 8 GB RAM) võimaldavad närvivõrke mugavalt treenida, kasutades kümnetest tuhandetest näidetest koosnevaid näidiseid, sisendandmete mõõtmetega kuni sadu. Suured näidised on väljakutse ülalmainitud sügavatele närvivõrkudele, mida treenitakse mitme protsessoriga GPU-del. Need mudelid on väga huvitavad, kuid jäävad sellest Habri artiklist kaugemale.

3. Koolituse andmed peavad olema representatiivsed.
Koolituse valim peaks kirjeldatavat nähtust täielikult ja kõikehõlmavalt esindama ning sisaldama erinevaid võimalikke olukordi. On hea, kui teil on palju andmeid, kuid see iseenesest ei aita alati. Kitsates ringkondades on laialt levinud nali, kui geoloog tuleb äratundja juurde, asetab tema ette tüki mineraali ja palub tal selle abil välja töötada süsteem sellise aine äratundmiseks. "Kas ma saan anda rohkem näiteid?" - küsib äratundja. "Kindlasti!" - vastab geoloog, võtab välja kirka ja jagab oma mineraalitüki veel mitmeks tükiks. Nagu aru saate, pole sellisest toimingust kasu - selline suurendatud valim ei sisalda uut teavet.

4. Sega valik.
Pärast sisend- ja väljundandmevektorite kogumist, kui mõõtmised on üksteisest sõltumatud, muuta vektorite järjekorda mis tahes viisil. See on otsustava tähtsusega valimi õigeks jaotamiseks Train/Test/Validation ja kõigi valimi kaupa koolitusmeetoditeks.

5. Normaliseerige ja tsentreerige andmed.
Mitmekihiliste pertseptronite ja paljude teiste mudelite puhul peavad sisendandmete väärtused jääma vahemikku [-1;1]. Enne nende sisestamist närvivõrku lahutage andmetest keskmine ja jagage kõik väärtused maksimaalse väärtusega.

6. Jagage proov järgmisteks osadeks: Train, Test ja Validation.
Algajate põhiviga on tagada treeningnäidis närvivõrgu töös minimaalne viga, samal ajal seda põrgulikult ümber õpetades ja siis sama head kvaliteeti soovida uutel reaalsetel andmetel. Seda on eriti lihtne teha siis, kui andmeid on vähe (või on need kõik ühest tükist). Tulemus võib olla suur pettumus: närvivõrk kohandub valimiga nii palju kui võimalik ja kaotab oma funktsionaalsuse tegelikel andmetel. Oma mudeli üldistusvõimete kontrollimiseks jagage kõik andmed kolmeks valimiks vahekorras 70:20:10. Treeni rongis, kontrollides perioodiliselt mudeli kvaliteeti testi abil. Lõplikuks erapooletuks hindamiseks – valideerimine.
Ristvalideerimise tehnika, kui Rong ja Test genereeritakse mitu korda juhuslikult samadest andmetest, võib olla salakaval ja jätta süsteemi heast kvaliteedist vale mulje – näiteks kui andmed on võetud erinevatest allikatest. ja see on kriitiline. Kasutage õiget kinnitust!

7. Rakenda regulaarsus.
Regulariseerimine on tehnika, mis võimaldab vältida närvivõrgu ületreenimist treeningu ajal, isegi kui andmeid on vähe. Kui leiate selle sõnaga märkeruudu, märkige see kindlasti. Ületreenitud närvivõrgu tunnuseks on suured kaaluväärtused, suurusjärgus sadu ja tuhandeid, selline närvivõrk ei tööta uutel, seninägematutel andmetel normaalselt

8. Pole vaja võrgus närvivõrku ümber õpetada.
Idee närvivõrku pidevalt uutele sissetulevatele andmetele ümber õpetada on tegelikes bioloogilistes süsteemides just see, mis juhtub. Me õpime iga päev ja läheme harva hulluks. Tehnilise arengu praeguses etapis tavapäraste tehisnärvivõrkude puhul on see praktika aga riskantne: võrk võib üle treenida või kohaneda viimaste saadud andmetega – ja kaotada oma üldistusvõime. Süsteemi praktikas kasutamiseks peab närvivõrk: 1) treenima, 2) testima kvaliteeti test- ja valideerimisnäidiste peal, 3) valima eduka võrguvaliku, fikseerima selle kaalud ja 4) kasutama treenitud närvivõrku. võrk praktikas, protsessi kaalud kasutust ei muuda.

9. Kasutage uusi õppimisalgoritme: Levenberg-Marquardt, BFGS, Conjugate Gradients jne.
Olen sügavalt veendunud, et tagasipropageerimisõppe rakendamine on kõigi närvivõrkudega töötavate inimeste püha kohustus. See meetod on kõige lihtsam, suhteliselt lihtsalt programmeeritav ja võimaldab hästi uurida närvivõrkude õppeprotsessi. Vahepeal leiutati 70ndate alguses ja sai populaarseks eelmise sajandi 80ndate keskel. Sellest ajast alates on ilmunud arenenumad meetodid, mis võivad oluliselt parandada õppimise kvaliteeti. Kasutage neid parem.

10. Treeni närvivõrke MATLABis jms kasutajasõbralikes keskkondades.
Kui te pole teadlane, kes töötab välja uusi meetodeid närvivõrkude koolitamiseks, vaid praktiseeriv programmeerija, ei soovita ma närvivõrkude treenimise protseduuri ise kodeerida. Peamiselt MATLABis ja Pythonis on suur hulk tarkvarapakette, mis võimaldavad treenida närvivõrke, samal ajal juhtida koolitus- ja testimisprotsessi mugavate visualiseerimis- ja silumistööriistade abil. Nautige inimkonna pärandit! Mulle isiklikult meeldib lähenemine “rongi MATLABis hea raamatukoguga – rakenda koolitatud mudelit käsitsi” see on üsna võimas ja paindlik. Erandiks on pakett STATISTICA, mis sisaldab täiustatud meetodeid närvivõrkude koolitamiseks ja võimaldab neid genereerida C-vormingus programmikoodi kujul, mis on mugav rakendamiseks.

Järgmises artiklis kavatsen üksikasjalikult kirjeldada kommertstarkvaratoote tuvastamisülesannete täitmiseks kasutatava, ülalkirjeldatud põhimõtete alusel realiseeritud närvivõrgu ettevalmistamise täielikku tööstuslikku tsüklit.

Edu!

Kirjandus

Hinton G., Deng L., Yu D., Dahl G., Mohamed A., Jaitly N., vanem A., Vanhoucke V., Nguyen P., Sainath T. ja Kingsbury B. Deep Neural Networks for Acoustic Modeling in Speech Recognition, IEEE Signal Processing Magazine, Vol. 29, nr. 6, 2012, lk. 82-97.
Ciresan D., Meier U., Masci J ja Schmidhuber J. Multi-column Deep Neural Network for Traffic Sign Classification. Neural Networks, Vol. 34, august 2012, lk. 333-338
S. Osovski. Närvivõrgud teabe töötlemiseks - trans. poola keelest. M.: Rahandus ja statistika, 2002. – 344 lk.
Piiskop C.M. Mustri tuvastamine ja masinõpe. Springer, 2006 – 738 lk.
S. Khaikin. Närvivõrgud: täielik kursus. Williams, 2006.

Seekord otsustasin uurida närvivõrke. Põhioskused selles küsimuses sain omandada 2015. aasta suve ja sügise jooksul. Põhioskuste all pean silmas seda, et saan ise nullist luua lihtsa närvivõrgu. Näiteid leiate minu GitHubi hoidlatest. Selles artiklis annan mõned selgitused ja jagan ressursse, mis võivad teile oma uuringus kasulikuks osutuda.

1. samm. Neuronid ja edasisuunamismeetod

Mis on "närvivõrk"? Ootame sellega ja tegeleme kõigepealt ühe neuroniga.

Neuron on nagu funktsioon: see võtab sisendiks mitu väärtust ja tagastab ühe.

Allolev ring tähistab kunstlikku neuronit. See saab 5 ja tagastab 1. Sisend on neuroniga ühendatud kolme sünapsi summa (kolm noolt vasakul).

Pildi vasakus servas näeme 2 sisendväärtust (roheline) ja nihet (pruun).

Sisendandmed võivad olla kahe erineva omaduse arvulised esitused. Näiteks rämpspostifiltri loomisel võivad need tähendada rohkem kui ühe SUURTÄHEGA kirjutatud sõna olemasolu ja sõna "Viagra" olemasolu.

Sisendväärtused korrutatakse nende niinimetatud "kaaludega" 7 ja 3 (esile tõstetud sinisega).

Nüüd lisame saadud väärtused nihkega ja saame arvu, meie puhul 5 (punasega esile tõstetud). See on meie tehisneuroni sisend.

Seejärel teostab neuron arvutuse ja loob väljundväärtuse. Saime 1, sest sigmoidi ümardatud väärtus punktis 5 on 1 (sellest funktsioonist räägime lähemalt hiljem).

Kui see oleks rämpspostifilter, tähendaks asjaolu, et väljund 1, et neuron märkis teksti rämpspostiks.

Närvivõrgu illustratsioon Wikipediast.

Kui need neuronid kombineerida, saad otse leviva närvivõrgu – protsess kulgeb sisendist väljundini, läbi sünapsidega ühendatud neuronite, nagu vasakpoolsel pildil.

2. samm. Sigmoid

Pärast Welch Labsi tundide vaatamist on hea mõte vaadata Coursera närvivõrkude masinõppekursuse 4. nädalat, et aidata teil mõista nende toimimist. Kursus läheb väga sügavale matemaatikasse ja põhineb oktavil, samas kui mina eelistan Pythonit. Selle tõttu jätsin harjutused vahele ja sain videotest kõik vajalikud teadmised.

Sigmoid lihtsalt kaardistab teie väärtuse (horisontaalteljel) vahemikku 0 kuni 1.

Minu esimene prioriteet oli uurida sigmoidi, kuna see on olnud närvivõrkude paljudes aspektides. Teadsin sellest midagi juba ülalmainitud kursuse kolmandast nädalast, seega vaatasin videot sealt.

Kuid ainult videotega ei jõua kaugele. Täieliku mõistmise huvides otsustasin selle ise kodeerida. Nii hakkasin kirjutama logistilise regressiooni algoritmi (mis kasutab sigmoidi) rakendust.

Selleks kulus terve päev ja tulemus oli vaevalt rahuldav. Aga see pole oluline, sest ma sain aru, kuidas kõik töötab. Koodi on näha.

Te ei pea seda ise tegema, kuna see nõuab eriteadmisi - peamine on see, et saate aru, kuidas sigmoid töötab.

3. samm. Tagasipaljundamise meetod

Närvivõrgu toimimise mõistmine sisendist väljundini pole nii keeruline. Palju keerulisem on mõista, kuidas närvivõrk andmekogumitest õpib. Põhimõtet, mida kasutasin, nimetatakse

Tere kõigile!

Selles artiklis räägin uuest mugavast Pythonis programmeerimise viisist.

See on vähem nagu programmeerimine ja pigem artiklite loomine (aruanded/esitlused/uuringud/näited): Pythoni koodiplokkide vahele saate sisestada tavalist selgitavat teksti. Koodi täitmise tulemuseks pole mitte ainult numbrid ja tekst (nagu Pythoniga töötamisel konsooli puhul), vaid ka graafikud, diagrammid, pildid...

Näited dokumentidest, mida saate luua:

Tundub lahe? Kas soovite luua samu dokumente? Siis on see artikkel teie jaoks!

Närvivõrke luuakse ja koolitatakse peamiselt Pythonis. Seetõttu on väga oluline omada algteadmisi sellesse programmide kirjutamisest. Selles artiklis räägin lühidalt ja selgelt selle keele põhimõistetest: muutujad, funktsioonid, klassid ja moodulid.

Materjal on mõeldud inimestele, kes ei tunne programmeerimiskeeli.

Kõigepealt peate installima Pythoni. Seejärel peate installima Pythonis programmide kirjutamiseks mugava keskkonna. Portaal on pühendatud neile kahele etapile.

Kui kõik on installitud ja konfigureeritud, võite alustada.

Närvivõrgud peavad olema kirjutatud mõnes programmeerimiskeeles. Neid on väga palju, kuid ma soovitan (ja kasutan õpikus ja artiklites) Pythoni keelt. Miks?

  1. Seda on väga lihtne õppida
  2. Suur hulk valmis raamatukogusid
  3. Kui vaatate programmi, näete kohe algoritmi, mida see rakendab
  4. Enamik masinõppe spetsialiste kasutab Pythonit ja ka enamik teeke on loodud spetsiaalselt selle programmeerimiskeele jaoks

Eelmises osas õppisime, kuidas arvutada signaali muutusi närvivõrgu läbimisel. Tutvusime maatriksite, nende korrutistega ja tuletasime lihtsad valemid arvutusteks.

Tõlke 6. osas postitan korraga 4 osa raamatust. Kõik need on pühendatud närvivõrkude valdkonna ühele kõige olulisemale teemale – tagasilevitamise meetodile. Õpid arvutama kõigi närvivõrgu neuronite viga ainult võrgu lõppvea ja ühenduste kaalude põhjal.

Materjal on keeruline, nii et küsige oma küsimusi foorumis.

Saate üle kanda.

Nautige lugemist!

Tõlke 5. osas esitan 3 tähendusega seotud osa.

Esiteks arvutame isiklikult kahekihilise närvivõrgu väljundid. Seejärel tutvume maatriksite ja nende toodetega. Saadud teadmisi kasutades tuletame lihtsad valemid signaali muundamise arvutamiseks närvivõrgus. Ja viimases osas kontrollime saadud valemeid praktikas, arvutades kolmekihilise närvivõrgu väljundid.

Saate üle kanda.

Nautige lugemist!

4. osa tõlkest on valmis!

Lõpetagem võsa peksmine ja liigume otse raamatu teema juurde – närvivõrgud.

Selles tõlke osas vaatleme bioloogilisi närvivõrke ja võrdleme neid traditsiooniliste arvutitega. Seejärel ehitame tehisneuroni mudeli ja liigume lõpuks otse tehisnärvivõrkudesse.

Saate üle kanda.

Nautige lugemist!

Tõlke kolmas osa!

Artikkel ei ole väga pikk. See hõlmab ainult ühte osa raamatust. Eesmärk on näidata, et igal meetodil on oma piirangud. Artiklis käsitletakse lineaarse klassifikaatori piiranguid. Tutvustatakse ka loogiliste funktsioonide ja XOR-ülesannete mõisteid.

Saate üle kanda.

Nautige lugemist!

Selles artiklis räägin huvitavast muusikageneraatorist, mis töötab närvivõrkudes. Generaatori nimi on Amper. Selle abiga saab iga inimene, isegi keegi, kes on kompositsioonide loomisest kaugel, iseseisvalt luua ainulaadse meloodia ja kasutada seda oma eesmärkidel.

Siin on näiteks see, mida närvivõrk minu jaoks välja arendas.

Yandex on kasutusele võtnud uue närvivõrkudel põhineva otsingualgoritmi. Ekspertide hinnangul peaks see aitama ettevõttel suurendada edumaa Venemaa turul oma peamise konkurendi – Google’i – ees

Venemaa Interneti-ettevõte Yandex võttis kasutusele uue närvivõrkudel põhineva otsingualgoritmi. Sellest teatas teenistuse asjakohasuse talituse juht Aleksandr Safronov. Uus algoritm nimega “Koroljov” otsib mitte ainult märksõnade, vaid ka tähenduse järgi ning keerukatele küsimustele antakse täpsemaid vastuseid, selgitas Yandexi esindaja.

2016. aastal võttis Yandex kasutusele Palekhi algoritmi, mis võrdleb reaalajas haruldase ja ainulaadse päringu tähendust ja veebilehe pealkirja, isegi kui neil pole ühiseid märksõnu. Näiteks kui küsite "maali, kus taevas keerleb", saab otsingumootor tagastada Van Goghi "Tähelise öö". Erinevalt Palekhist suudab Korolev analüüsida kogu lehte ja ka teisi kasutajaid sellele suunavate päringute tähendust.

Yandexi otsinguosakonna juhataja Andrei Stõkin tõi veel ühe näite keerulisest palvest: "film kosmosest, kus isa suhtleb tütrega läbi teise käe." Sel juhul ei sisalda päring märksõnu, kuid otsingualgoritm suudab aru saada, et me räägime filmist "Tähtedevaheline", ütleb Styskin.

Teenuse esindajate sõnul on närvivõrk võimeline ise õppima, seega mida rohkem kasutajaid otsingumootoris otsib, seda täpsemad on tulemused. Testimiseks kasutatakse 2014. aastal käivitatud avatud ühishankeplatvormi Yandex.Toloka. Põhimõtteliselt on see teenus, kus igaüks saab osaleda Yandexi toodete testimises, anda neile hinnanguid ja jätta kommentaare. See võimaldab ettevõttel oma teenuseid täiustada ja kasutajad saavad selle eest rahalisi tasusid. Praegu on Yandex.Tolokas registreeritud üle 1 miljoni kasutaja.

"Närvivõrkude probleem seisnes selles, et need olid väga aeglased ja neid ei saanud kasutada suure hulga tekstidega reaalajas töötamiseks," ütleb Igor Ashmanov, Ashmanov ja partnerite asutaja ja juhtivpartner. "Kui Yandex suutis tõesti kaasata närvivõrgud kogu Runeti mahu indekseerimisele, on see huvitav, tehnoloogilisest seisukohast on see üsna tõsine läbimurre." Kui palju uus algoritm otsingu kvaliteeti parandab ja kas see seda põhimõtteliselt parandab, jääb analüüsimiseks, märkis Ašmanov.

Yandexi peamine konkurent Google ei ole Ashmanov ja Partnersi juhi sõnul veel ametlikult teatanud närvivõrkude kasutuselevõtust oma otsingualgoritmidesse. "Google saab endale lubada järjestamistogureid erinevalt seadistada ja katsetada selles valdkonnas kauem ilma otsingusse uusi tehnoloogiaid kasutusele võtmata, lihtsalt seetõttu, et ettevõttel on rohkem programmeerijaid ja ressursse," märkis ekspert.​


Jõua järele ja möödasõit

VTB Capitali analüütiku Vladimir Bespalovi sõnul on Venemaa otsingumootori uus versioon samm Yandexi turuosa säilitamiseks. "Uuendatud otsingu mobiilirakendus, uus otsingumootori algoritm - kõik see peaks aitama Yandexil stabiliseerida ja suurendada oma osakaalu otsinguturul," ütleb ekspert. — Mõju ei avaldu kohe, kuid otsingupäringute vähenemine pikemas perspektiivis võib edaspidisele toimivusele vähem soodsalt mõjuda. Otsing on Yandexi põhitoode; ettevõtte peamine sissetulek on reklaam, mis on seotud otsinguga.

FAS-i otsus võib aidata Yandexil säilitada oma positsiooni mobiiliotsingus, meenutab Bespalov. Selle aasta aprillis sõlmis osakond kokkuleppe Venemaa ettevõtte peamise konkurendi otsinguturul Google'iga. Selle kohaselt vaatab Ameerika Interneti-hiiglane uuesti läbi kokkulepped Venemaal Android-nutitelefonide tootjatega ning võimaldab kasutajatel valida oma seadmetes põhilisteks alternatiivsed Google'i otsinguteenused.

Selle aasta teise kvartali lõpus oli Yandexi osa Venemaa otsinguturul 54,3%, teatas Yandex N.V. (Yandexi emaettevõte) oma finantsaruandes viitega oma analüüsiteenusele Yandex.Radar. 31. juuli seisuga hõivas Google Yandex.Radari andmetel Venemaa otsingumootorite seas 40,36%. LiveInneti andmetel oli viimase kolme kuu keskmisena otsingumootorite seas Yandex 51,1% osakaaluga, Google'il 43,9%. Yandex N.V. ei avalda otsingutulu, kuid suund “otsing ja portaal” tõi ettevõttele 20,135 miljardit rubla, mis on 22% rohkem kui 2016. aasta samal perioodil.

"Matrixneti otsingu eelmine revolutsiooniline versioon võimaldas Yandexil Google'ist lahku lüüa ja suurendada oma osakaalu peaaegu 10 protsendipunkti võrra. Pooleks aastaks. See on ilmekas näide sellest, kuidas läbimurdeliste tehnoloogiate kasutamine toob ilmseid äritulemusi isegi nii keerulisel turul nagu otsinguturg,” ütleb Skyengi veebikooli juhtivpartner ja Yandexi endine rahvusvahelise arenduse direktor Alexander Laryanovsky.

ABBYY ettevõtete grupi teadus- ja arendusdirektori asedirektori Tatjana Danieljani sõnul võib uute otsingualgoritmide kasutuselevõtt muuta ka pingerida (saitide otsingutulemustes kuvamise järjekord). See on aga pluss saitidele endile, ütleb ta: "Kasutajad külastavad tõenäolisemalt lehti, mis tegelikult nende vajadustele vastavad, ja saidikonversioonid võivad märkimisväärselt suureneda."

  • Python,
  • Masinõpe,
  • Otsingutehnoloogiad
  • Täna on Yandex välja andnud avatud lähtekoodiga oma CatBoosti raamatukogu, mis on välja töötatud, võttes arvesse ettevõtte mitmeaastast kogemust masinõppe valdkonnas. Selle abiga saate tõhusalt treenida mudeleid heterogeensetel andmetel, sealhulgas neil, mida on keeruline numbrite kujul esitada (näiteks pilvede tüübid või tootekategooriad). Lähtekood, dokumentatsioon, võrdlusnäitajad ja vajalikud tööriistad on juba avaldatud GitHubis Apache 2.0 litsentsi all.

    CatBoost on uus gradiendi võimendamisel põhinev masinõppemeetod. Seda rakendatakse Yandexis järjestamise, prognoosimise ja soovituste koostamise probleemide lahendamiseks. Lisaks kasutatakse seda juba koostöös Euroopa Tuumauuringute Organisatsiooniga (CERN) ja Yandex Data Factory tööstusklientidega. Kuidas CatBoost siis teistest avatud lähtekoodiga analoogidest erineb? Miks võimendamine, mitte närvivõrgu meetod? Kuidas on see tehnoloogia seotud juba tuntud Matrixnetiga? Ja mis kassid sellega pistmist on? Täna vastame kõigile neile küsimustele.

    Mõiste "masinõpe" ilmus 50ndatel. See termin viitab katsele õpetada arvutit lahendama probleeme, mis on inimestele lihtsad, kuid nende lahendamise viisi on raske vormistada. Masinõppe tulemusena võib arvuti käituda, mis ei olnud sellesse otseselt ette nähtud. Kaasaegses maailmas kohtame masinõppe vilju iga päev mitu korda, paljud meist seda isegi teadmata. Seda kasutatakse suhtlusvõrgustike kanalite, veebipoodide "sarnaste toodete" loendite koostamiseks, pankades laenude väljastamisel ja kindlustuskulude määramisel. Masinõppetehnoloogiaid kasutatakse fotodelt nägude otsimiseks või arvukates fotofiltrites. Viimaste puhul kasutatakse muide tavaliselt närvivõrke ja neist kirjutatakse nii tihti, et võib jääda ekslik arvamus, et tegemist on “hõbekuuliga” igasuguse keerukusega probleemide lahendamiseks. Aga see pole tõsi.

    Närvivõrgud või gradiendi võimendamine

    Tegelikult on masinõpe väga erinev: erinevaid meetodeid on suur hulk ja närvivõrgud on vaid üks neist. Selle näide on Kaggle platvormil toimunud võistluste tulemused, kus erinevatel võistlustel võidavad erinevad meetodid ja paljudel võidab gradiendi suurendamine.

    Närvivõrgud lahendavad suurepäraselt teatud probleeme – näiteks neid, kus on vaja töötada homogeensete andmetega. Homogeensed andmed koosnevad näiteks piltidest, helist või tekstist. Yandexis aitavad need paremini mõista otsingupäringuid, otsida Internetist sarnaseid pilte, tuvastada Navigatoris teie häält ja palju muud. Kuid need pole kõik masinõppe ülesanded. On terve kiht tõsiseid väljakutseid, mida närvivõrkude abil üksi lahendada ei saa – need vajavad gradiendi võimendust. See meetod on hädavajalik, kui andmeid on palju ja selle struktuur on heterogeenne.

    Näiteks kui vajate täpset ilmateadet, kus võetakse arvesse tohutult palju tegureid (temperatuur, niiskus, radariandmed, kasutajate vaatlused ja palju muud). Või kui teil on vaja otsingutulemusi kvalitatiivselt järjestada – just see ajendas Yandexi välja töötama oma masinõppemeetodi.

    Matrixnet

    Esimesed otsingumootorid ei olnud nii keerukad kui praegu. Tegelikult oli see alguses lihtsalt sõnaotsing – saite oli nii vähe, et nende vahel polnud suurt konkurentsi. Siis oli lehti rohkem ja tekkis vajadus neid järjestada. Hakati arvestama erinevate komplikatsioonidega - sõnasagedus, tf-idf. Siis oli mistahes teemal liiga palju lehti, toimus esimene oluline läbimurre – hakati linke arvestama.

    Peagi muutus Internet äriliselt oluliseks ja paljud petturid üritasid tol ajal eksisteerinud lihtsaid algoritme petta. Ja toimus teine ​​oluline läbimurre – otsingumootorid hakkasid kasutama oma teadmisi kasutajate käitumisest, et mõista, millised lehed on head ja millised mitte.

    Kümmekond aastat tagasi ei piisanud enam inimmõistusest, et välja mõelda, kuidas dokumente järjestada. Tõenäoliselt olete märganud, et peaaegu iga päringu jaoks leitud tulemuste arv on tohutu: sadu tuhandeid, sageli miljoneid tulemusi. Enamik neist on ebahuvitavad, kasutud, mainivad ainult juhuslikult päringusõnu või on üldiselt rämpspost. Teie päringule vastamiseks peate kõigi leitud tulemuste hulgast kohe valima esikümme. Programmi kirjutamine, mis teeb seda vastuvõetava kvaliteediga, on muutunud inimprogrammeerijale üle jõu. Järgmine üleminek on toimunud – otsingumootorid hakkasid aktiivselt kasutama masinõpet.

    2009. aastal tutvustas Yandex oma Matrixneti meetodit, mis põhineb gradiendi võimendamisel. Võime öelda, et paremusjärjestusele aitab kaasa kasutajate kollektiivne intelligentsus ja “rahvahulga tarkus”. Teave saitide ja inimeste käitumise kohta teisendatakse paljudeks teguriteks, millest igaüht Matrixnet kasutab järjestusvalemi koostamiseks. Tegelikult kirjutab järjestuse valemi nüüd masin. Muide, me kasutame üksikute teguritena ka närvivõrkude tulemusi (näiteks nii töötab Palekhi algoritm, millest eelmisel aastal rääkisime).

    Matrixneti oluline omadus on see, et see on vastupidav ülepaigutamisele. See võimaldab arvestada paljude pingeridadega ja samal ajal treenida suhteliselt väikese andmehulga peal, kartmata, et masin leiab olematuid mustreid. Muud masinõppemeetodid võimaldavad teil luua lihtsamaid valemeid vähemate teguritega või nõuavad suuremat koolitusvalimi.

    Teine oluline Matrixneti omadus on see, et järjestamise valemit saab konfigureerida eraldi üsna kitsaste päringuklasside jaoks. Näiteks parandage ainult muusikat puudutavate päringute otsingu kvaliteeti. Samal ajal ei halvene teiste päringuklasside paremusjärjestus.

    Just Matrixnet ja selle eelised moodustasid CatBoosti aluse. Aga miks oli meil üldse vaja midagi uut leiutada?

    Peaaegu iga kaasaegne gradiendi suurendamisel põhinev meetod töötab numbritega. Isegi kui teie sisendiks on muusikažanrid, pilvetüübid või värvid, tuleb neid andmeid siiski kirjeldada numbrite keeles. See toob kaasa nende olemuse moonutamise ja mudeli täpsuse võimaliku vähenemise.

    Demonstreerime seda primitiivse näite abil poes oleva tootekataloogiga. Tooted on omavahel vähe seotud ning nende vahel puudub selline muster, mis võimaldaks neid tellida ja igale tootele tähendusliku numbri määrata. Seetõttu määratakse selles olukorras igale tootele lihtsalt seeria-ID (näiteks vastavalt poe raamatupidamisprogrammile). Nende arvude järjekord ei tähenda midagi, kuid algoritm kasutab seda järjekorda ja teeb sellest valed järeldused.

    Kogenud masinõppespetsialist võib välja mõelda intelligentsema viisi kategooriliste tunnuste arvudeks muutmiseks, kuid selline eeltöötlus toob kaasa osa teabe kadumise ja lõpplahenduse kvaliteedi halvenemise.

    Seetõttu oli oluline õpetada masin töötama mitte ainult numbritega, vaid ka otseselt kategooriatega, mille mustrid tuvastab iseseisvalt, ilma meie käsitsi abita. Kujundasime CatBoosti nii, et see töötaks karbist välja võttes võrdselt hästi nii numbriliste kui ka kategooriliste funktsioonidega. Tänu sellele näitab see heterogeensete andmetega töötamisel paremat õppimisvõimet kui alternatiivsed lahendused. Seda saab kasutada erinevates valdkondades – pangandusest tööstuseni.

    Muide, tehnoloogia nimi pärineb Categorical Boostingust. Ja ükski kass ei saanud arengu käigus viga.

    Võrdlusnäitajad

    Raamatukogu teoreetilistest erinevustest võime rääkida pikalt, kuid parem on seda üks kord praktikas näidata. Selguse huvides võrdlesime CatBoosti teegi jõudlust avatud analoogidega XGBoost, LightGBM ja H20 avalike andmekogumite puhul. Ja siin on tulemused (mida väiksem, seda parem): https://catboost.yandex/#benchmark

    Me ei taha olla alusetu, seetõttu postitatakse avatud lähtekoodiga koos raamatukoguga ka võrdlusprotsessi kirjeldus, meetodite võrdlemise käivitamise kood ja konteiner kõigi teekide kasutatud versioonidega. Iga kasutaja saab katset korrata kodus või oma andmetel.

    CatBoost praktikas

    Uut meetodit on Yandexi teenustes juba testitud. Seda kasutati otsingutulemuste parandamiseks, Yandex.Zeni soovitusvoo järjestamiseks ja ilmaprognoosi arvutamiseks Meteumi tehnoloogias – ja kõigil juhtudel osutus see Matrixnetist paremaks. Tulevikus töötab CatBoost teiste teenustega. Me ei peatu siin – parem on teile kohe rääkida suurest hadronipõrgutist (LHC).

    CatBoost on leidnud rakendust ka koostöö raames Euroopa Tuumauuringute Organisatsiooniga. LHC töötab LHCb detektoriga, mida kasutatakse aine ja antiaine asümmeetria uurimiseks raskete ilusate kvarkide vastasmõjus. Katses tuvastatud erinevate osakeste täpseks jälgimiseks on detektoris mitu spetsiifilist osa, millest igaüks määrab osakeste eriomadused. Sel juhul on kõige keerulisem ülesanne detektori erinevatest osadest pärineva teabe ühendamine osakese kohta kõige täpsemateks, koondatud teadmisteks. Siin tuleb appi masinõpe. Kasutades CatBoosti andmete kombineerimiseks, õnnestus teadlastel parandada lõpplahenduse kvaliteediomadusi. CatBoosti tulemused olid paremad kui teiste meetoditega saadud tulemused.

    Kuidas alustada CatBoosti kasutamist?

    CatBoostiga töötamiseks installige see lihtsalt oma arvutisse. Teek toetab Linuxi, Windowsi ja macOS-i operatsioonisüsteeme ning on saadaval Pythoni ja R-i programmeerimiskeeltes. Yandex on välja töötanud ka visualiseerimisprogrammi