Veliki hadronski trkalnik in Odnoklassniki

Če nadaljujemo s temo tekmovanj v strojnem učenju na Habréju, bi radi bralcem predstavili še dve platformi. Zagotovo niso tako veliki kot kaggle, vendar si vsekakor zaslužijo pozornost.

Veliki hadronski trkalnik in Odnoklassniki

Osebno mi kaggle ni preveč všeč iz več razlogov:

  • prvič, tekmovanja tam pogosto trajajo več mesecev, aktivno sodelovanje pa zahteva veliko truda;
  • drugič, javna jedra (javne rešitve). Privrženci Kaggle svetujejo, da z njimi ravnate z umirjenostjo tibetanskih menihov, a v resnici je škoda, ko se nekaj, za kar ste si prizadevali mesec ali dva, nenadoma izkaže, da je za vse položeno na pladnju.

Na srečo tekmovanja v strojnem učenju potekajo na drugih platformah in o nekaj teh tekmovanjih bomo razpravljali.

IDAO SNA Hackathon 2019
Uradni jezik: angleščina,
organizatorji: Yandex, Sberbank, HSE
uradni ruski jezik,
organizatorji: Mail.ru Group
Spletni krog: 15. januar – 11. februar 2019;
Finale na kraju samem: 4.–6. april 2019
na spletu - od 7. februarja do 15. marca;
brez povezave - od 30. marca do 1. aprila.
Z uporabo določenega nabora podatkov o delcu v velikem hadronskem trkalniku (trajektorija, gibalna količina in drugi precej zapleteni fizikalni parametri) ugotovite, ali je mion ali ne
Iz te izjave sta bili identificirani 2 nalogi:
— v enem ste morali samo poslati svojo napoved,
- in v drugem - celotno kodo in model za napovedovanje, izvedba pa je bila podvržena dokaj strogim omejitvam časa delovanja in uporabe pomnilnika
Za tekmovanje SNA Hackathon so bili zbrani dnevniki prikazov vsebine iz odprtih skupin v virih novic uporabnikov za februar-marec 2018. Testni sklop vsebuje zadnji teden in pol marca. Vsak vnos v dnevnik vsebuje informacije o tem, kaj je bilo prikazano in komu, pa tudi o tem, kako se je uporabnik odzval na to vsebino: jo ocenil, komentiral, prezrl ali skril v viru.
Bistvo nalog SNA Hackathon je uvrstiti vsakega uporabnika socialnega omrežja Odnoklassniki v njegov vir, pri čemer čim višje dvigne tiste objave, ki bodo prejele "razred".
V spletni fazi je bila naloga razdeljena na 3 dele:
1. razvrstite delovna mesta glede na različne značilnosti sodelovanja
2. razvrščanje objav glede na slike, ki jih vsebujejo
3. razvrstite objave glede na besedilo, ki ga vsebujejo
Kompleksna meritev po meri, nekaj takega kot ROC-AUC Povprečni ROC-AUC glede na uporabnika
Nagrade za prvo etapo - majice za N mest, prehod na drugo etapo, kjer je bila med tekmovanjem plačana nastanitev in prehrana
Druga faza - ??? (Iz določenih razlogov nisem bil prisoten na podelitvi in ​​nisem uspel izvedeti, kakšne so bile na koncu nagrade). Vsem članom zmagovalne ekipe so obljubili prenosnike
Nagrade za prvo stopnjo - majice za 100 najboljših udeležencev, prehod na drugo stopnjo, kjer so bili plačani prevoz do Moskve, nastanitev in prehrana med tekmovanjem. Proti koncu prve stopnje so bile razpisane tudi nagrade za najboljše v 3 nalogah na stopnji 1: vsak je dobil grafično kartico RTX 2080 TI!
Druga stopnja je bila ekipna, ekipe so sestavljale od 2 do 5 ljudi, nagrade:
1. mesto - 300 rubljev
2. mesto - 200 rubljev
3. mesto - 100 rubljev
nagrada žirije - 100 rubljev
Uradna telegram skupina, ~190 udeležencev, komunikacija v angleščini, vprašanja so morala čakati več dni na odgovor Uradna skupina v telegramu, ~1500 udeležencev, aktivna razprava o nalogah med udeleženci in organizatorji
Organizatorji so poskrbeli za dve osnovni rešitvi, preprosto in napredno. Preprosti je zahteval manj kot 16 GB RAM-a, napredni pomnilnik pa ni ustrezal 16. Hkrati pa, malo naprej, udeleženci niso mogli bistveno preseči napredne rešitve. Pri zagonu teh rešitev ni bilo težav. Opozoriti je treba, da je bil v naprednem primeru komentar z namigom, kje začeti izboljšavo rešitve. Za vsako od nalog so bile podane osnovne primitivne rešitve, ki so jih udeleženci zlahka presegli. V prvih dneh tekmovanja so udeleženci naleteli na več težav: prvič, podatki so bili podani v formatu Apache Parquet in vse kombinacije Pythona in paketa parquet niso delovale brez napak. Druga težava je bilo prenašanje slik iz poštnega oblaka, saj trenutno ni preprostega načina za prenos velike količine podatkov naenkrat. Posledično so te težave udeležence zadržale za nekaj dni.

IDAO. Prva stopnja

Naloga je bila razvrstiti mionske/nemuonske delce glede na njihove značilnosti. Ključna značilnost te naloge je bila prisotnost stolpca teže v podatkih o treningu, kar so organizatorji sami interpretirali kot zaupanje v odgovor za to vrstico. Težava je bila v tem, da je kar nekaj vrstic vsebovalo negativne uteži.

Veliki hadronski trkalnik in Odnoklassniki

Po nekajminutnem razmišljanju o črti z namigom (namig je preprosto opozoril na to značilnost stolpca teže) in gradnji tega grafa smo se odločili preveriti 3 možnosti:

1) obrnite cilj vrstic z negativnimi utežmi (in ustrezno utežmi)
2) premaknite uteži na najmanjšo vrednost, tako da se začnejo od 0
3) ne uporabljajte uteži za vrvice

Tretja možnost se je izkazala za najslabšo, vendar sta prvi dve izboljšali rezultat, najboljša je bila možnost št. 1, ki nas je pri prvi nalogi takoj pripeljala na trenutno drugo mesto, v drugi pa na prvo mesto.
Veliki hadronski trkalnik in Odnoklassniki
Naš naslednji korak je bil pregled podatkov za manjkajoče vrednosti. Organizatorji so nam posredovali že prečesane podatke, kjer je bilo kar nekaj manjkajočih vrednosti, nadomestile pa so jih z -9999.

Našli smo manjkajoče vrednosti v stolpcih MatchedHit_{X,Y,Z}[N] in MatchedHit_D{X,Y,Z}[N] in le, če je N=2 ali 3. Kot razumemo, nekateri delci niso prešel vse 4 detektorje in se ustavil na 3. ali 4. plošči. Podatki so vsebovali tudi stolpce Lextra_{X,Y}[N], ki očitno opisujejo isto stvar kot MatchedHit_{X,Y,Z}[N], vendar z uporabo neke vrste ekstrapolacije. Ta skromna ugibanja so nakazovala, da bi lahko Lextra_{X,Y}[N] nadomestili manjkajoče vrednosti v MatchedHit_{X,Y,Z}[N] (samo za koordinate X in Y). MatchedHit_Z[N] je bil dobro zapolnjen z mediano. Te manipulacije so nam omogočile, da smo pri obeh nalogah dosegli 1. vmesno mesto.

Veliki hadronski trkalnik in Odnoklassniki

Glede na to, da za zmago v prvi etapi niso dali nič, bi se lahko ustavili, a smo nadaljevali, narisali nekaj lepih slik in prišli do novosti.

Veliki hadronski trkalnik in Odnoklassniki

Na primer, ugotovili smo, da če narišemo presečišča delca z vsako od štirih detektorskih plošč, lahko vidimo, da so točke na vsaki od plošč združene v 5 pravokotnikov z razmerjem stranic 4 proti 5 in s središčem na točka (0,0), in v V prvem pravokotniku ni točk.

Plošča št./mere pravokotnika 1 2 3 4 5
Plošča 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Plošča 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Plošča 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Plošča 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Po določitvi teh dimenzij smo za vsak delec dodali 4 nove kategorične značilnosti - številko pravokotnika, v katerem seka vsako ploščo.

Veliki hadronski trkalnik in Odnoklassniki

Opazili smo tudi, da se zdi, da se delci razpršijo vstran od središča in pojavila se je ideja, da bi nekako ocenili "kakovost" tega razprševanja. V idealnem primeru bi se verjetno dalo glede na vstopno točko izmisliti kakšno »idealno« parabolo in oceniti odstopanje od nje, vendar smo se omejili na »idealno« ravno črto. Ko smo zgradili takšne idealne ravne črte za vsako vstopno točko, smo lahko izračunali standardni odklon trajektorije vsakega delca od te ravne črte. Ker je bilo povprečno odstopanje za cilj = 1 152, za cilj = 0 pa 390, smo to lastnost pogojno ocenili kot dobro. In res, ta funkcija se je takoj uvrstila na vrh najbolj uporabnih.

Bili smo navdušeni in dodali smo odstopanje vseh 4 presečišč za vsak delec od idealne ravne črte kot dodatne 4 lastnosti (in tudi te so dobro delovale).

Povezave do znanstvenih člankov na temo tekmovanja, ki so nam jih posredovali organizatorji, so spodbudile idejo, da še zdaleč nismo prvi, ki bi rešili ta problem in morda obstaja kakšna specializirana programska oprema. Ko smo na githubu odkrili repozitorij, kjer so implementirane metode IsMuonSimple, IsMuon, IsMuonLoose, smo jih z manjšimi spremembami prenesli na našo stran. Same metode so bile zelo preproste: na primer, če je energija manjša od določenega praga, potem to ni mion, sicer pa je mion. Tako preproste funkcije očitno ne bi mogle povečati v primeru uporabe gradientnega povečanja, zato smo pragu dodali še eno pomembno "razdaljo". Tudi te funkcije so bile nekoliko izboljšane. Morda je bilo mogoče s temeljitejšo analizo obstoječih metod najti močnejše metode in jih dodati znakom.

Na koncu tekmovanja smo »hitro« rešitev za drugi problem nekoliko priredili, na koncu pa se je od izhodišča razlikovala v naslednjih točkah:

  1. V vrsticah z negativno težo je bil cilj obrnjen
  2. Izpolnjene manjkajoče vrednosti v MatchedHit_{X,Y,Z}[N]
  3. Zmanjšana globina na 7
  4. Zmanjšana stopnja učenja na 0.1 (prej 0.19)

Posledično smo preizkusili več funkcij (ne zelo uspešno), izbrali parametre in natrenirali catboost, lightgbm in xgboost, preizkusili različne mešanice napovedi in pred odprtjem private zanesljivo zmagali na drugi nalogi, na prvi pa smo bili med voditelji.

Po odprtju zasebnega smo bili pri 10. nalogi na 1. mestu, pri drugi pa na 3. mestu. Vsi voditelji so se pomešali, hitrost zasebno pa je bila večja kot na libboardu. Zdi se, da so bili podatki slabo stratificirani (ali na primer v zasebnem ni bilo vrstic z negativnimi utežmi), kar je bilo nekoliko frustrirajoče.

SNA Hackathon 2019 - Besedila. Prva stopnja

Naloga je bila rangirati objave uporabnikov na družbenem omrežju Odnoklassniki glede na besedilo, ki ga vsebujejo, poleg besedila pa še nekaj značilnosti objave (jezik, lastnik, datum in čas nastanka, datum in čas ogleda). ).

Kot klasična pristopa k delu z besedilom bi izpostavil dve možnosti:

  1. Preslikava vsake besede v n-dimenzionalni vektorski prostor, tako da imajo podobne besede podobne vektorje (preberite več v naš članek), nato bodisi iskanje povprečne besede za besedilo bodisi uporaba mehanizmov, ki upoštevajo relativni položaj besed (CNN, LSTM/GRU).
  2. Uporaba modelov, ki lahko takoj delujejo s celimi stavki. Na primer, Bert. V teoriji bi ta pristop moral delovati bolje.

Ker je bila to moja prva izkušnja z besedili, bi bilo narobe nekoga učiti, zato se bom učil sam. To so nasveti, ki bi si jih dal na začetku tekmovanja:

  1. Preden tečeš kaj učiti, poglej podatke! Podatki so imeli poleg samega besedila več stolpcev in iz njih se je dalo iztisniti veliko več kot jaz. Najenostavnejša stvar je, da naredite srednje ciljno kodiranje za nekatere stolpce.
  2. Ne učite se iz vseh podatkov! Podatkov je bilo veliko (približno 17 milijonov vrstic) in absolutno ni bilo treba uporabiti vseh za preverjanje hipotez. Usposabljanje in predprocesiranje sta bila precej počasna in očitno bi imel čas za testiranje bolj zanimivih hipotez.
  3. <Sporen nasvet> Ni treba iskati ubijalskega modela. Dolgo sem ugotavljal Elma in Berta v upanju, da me bosta takoj popeljala na visoko mesto, in posledično sem uporabil vnaprej usposobljene vdelave FastText za ruski jezik. Z Elmom nisem mogel doseči boljše hitrosti, z Bertom pa še vedno nisem imel časa, da bi to ugotovil.
  4. <Sporen nasvet> Ni vam treba iskati ene ubijalske funkcije. Če pogledam podatke, sem opazil, da okoli 1 odstotek besedil dejansko ne vsebuje besedila! Vendar so bile povezave do nekaterih virov in napisal sem preprost razčlenjevalnik, ki je odprl spletno mesto ter izvlekel naslov in opis. Zdela se je dobra ideja, potem pa me je zaneslo in sem se odločil razčleniti vse povezave za vsa besedila in spet izgubil veliko časa. Vse to ni prineslo bistvenega izboljšanja končnega rezultata (čeprav sem ugotovil npr. stemming).
  5. Klasične funkcije delujejo. Guglamo na primer “text features kaggle”, beremo in dodajamo vse. TF-IDF je zagotovil izboljšavo, prav tako statistične funkcije, kot so dolžina besedila, besede in količina ločil.
  6. Če obstajajo stolpci DateTime, jih je vredno razčleniti na več ločenih funkcij (ure, dnevi v tednu itd.). Katere značilnosti je treba poudariti, je treba analizirati z uporabo grafov/nekaterih meritev. Tukaj sem na muho naredil vse pravilno in poudaril potrebne lastnosti, vendar običajna analiza ne bi škodila (na primer, kot smo naredili v finalu).

Veliki hadronski trkalnik in Odnoklassniki

Kot rezultat tekmovanja sem usposobil en model keras z besedno konvolucijo in še enega na osnovi LSTM in GRU. Oba sta uporabljala vnaprej pripravljene vdelave FastText za ruski jezik (poskusila sem številne druge vdelave, a te so bile tiste, ki so delovale najbolje). Po povprečenju napovedi sem med 7 udeleženci zasedel končno 76. mesto.

Po prvi stopnji je bil objavljen članek Nikolaja Anohina, ki je zasedel drugo mesto (sodeloval je izven konkurence), njegova rešitev pa je do neke stopnje ponovila mojo, vendar je šel dlje zaradi mehanizma pozornosti poizvedba-ključ-vrednost.

Druga stopnja OK & IDAO

Druge stopnje tekmovanj so potekale skoraj zaporedno, zato sem se odločil, da jih pogledam skupaj.

Najprej sem se z novo pridobljeno ekipo znašel v impresivni pisarni podjetja Mail.ru, kjer je bila naša naloga združiti modele treh skladb iz prve faze - besedilo, slike in sodelovanje. Za to je bilo dodeljenih nekaj več kot 2 dni, kar se je izkazalo za zelo malo. Pravzaprav smo lahko le ponovili naše rezultate iz prve faze, ne da bi od združitve prejeli kakršen koli dobiček. Na koncu smo zasedli 5. mesto, vendar besedilnega modela nismo mogli uporabiti. Po ogledu rešitev drugih udeležencev se zdi, da je bilo vredno poskusiti združiti besedila v skupine in jih dodati modelu sodelovanja. Stranski učinek te etape so bili novi vtisi, srečanje in komunikacija s kul udeleženci in organizatorji, pa tudi hudo pomanjkanje spanca, kar je lahko vplivalo na rezultat zadnje etape IDAO.

Naloga na finalni stopnji IDAO 2019 je bila napovedati čakalno dobo za naročilo za Yandexove taksiste na letališču. Na stopnji 2 so bile identificirane 3 naloge = 3 letališča. Za vsako letališče so podani iz minute v minuto podatki o številu naročil taksijev za šest mesecev. In kot testni podatki so bili navedeni naslednji mesec in podatki iz minute v minuto o naročilih za zadnja 2 tedna. Časa je bilo malo (1,5 dni), naloga je bila precej specifična, na tekmovanje je prišel le en človek iz ekipe – posledično je bilo proti koncu žalostno mesto. Zanimive ideje so vključevale poskuse uporabe zunanjih podatkov: vreme, prometni zastoji in statistika naročil taksijev Yandex. Čeprav organizatorji niso povedali, katera so ta letališča, je veliko udeležencev domnevalo, da so to Šeremetjevo, Domodedovo in Vnukovo. Čeprav je bila ta domneva po tekmovanju ovržena, so značilnosti, na primer vremenski podatki iz Moskve, izboljšale rezultate tako pri validaciji kot na lestvici najboljših.

Zaključek

  1. ML tekmovanja so kul in zanimiva! Tukaj boste našli uporabo veščin v analizi podatkov ter v premetenih modelih in tehnikah, in preprosto zdrava pamet je dobrodošla.
  2. ML je že ogromno znanja, ki se zdi, da eksponentno raste. Zadala sem si cilj spoznati različna področja (signali, slike, tabele, besedilo) in že ugotovila, koliko se da preučiti. Na primer, po teh tekmovanjih sem se odločil študirati: algoritme združevanja v gruče, napredne tehnike za delo s knjižnicami za povečanje gradientov (zlasti delo s CatBoostom na GPU), kapsulna omrežja, mehanizem pozornosti poizvedbe-ključ-vrednost.
  3. Ne samo s kagglo! Veliko je drugih tekmovanj, kjer je lažje dobiti vsaj majico, več je možnosti za druge nagrade.
  4. Komunicirajte! Obstaja že velika skupnost na področju strojnega učenja in analize podatkov, obstajajo tematske skupine v telegramu, slacku, resni ljudje iz Mail.ru, Yandexa in drugih podjetij odgovarjajo na vprašanja ter pomagajo začetnikom in tistim, ki nadaljujejo svojo pot na tem področju. znanja.
  5. Svetujem obisk vsem, ki jih je prejšnja točka navdihnila datafest — velika brezplačna konferenca v Moskvi, ki bo potekala od 10. do 11. maja.

Vir: www.habr.com

Dodaj komentar