Veliki hadronski sudarač i Odnoklassniki

Nastavljajući temu natjecanja u strojnom učenju na Habréu, htjeli bismo čitatelje upoznati s još dvije platforme. Sigurno nisu tako veliki kao kaggle, ali svakako zaslužuju pažnju.

Veliki hadronski sudarač i Odnoklassniki

Osobno ne volim previše kaggle iz nekoliko razloga:

  • prvo, ondje natjecanja često traju i po nekoliko mjeseci, a aktivno sudjelovanje zahtijeva puno truda;
  • drugo, javne jezgre (javna rješenja). Pristaše Kagglea savjetuju da se s njima ponašate smireno kao tibetanski redovnici, ali u stvarnosti je prava šteta kada se nešto na čemu ste radili mjesec ili dva iznenada ispostavi da je svima stavljeno na srebrni pladanj.

Srećom, natjecanja u strojnom učenju održavaju se na drugim platformama, a o nekoliko tih natjecanja bit će riječi.

IDAO SNA Hackathon 2019
Službeni jezik: engleski,
organizatori: Yandex, Sberbank, HSE
službeni ruski jezik,
organizatori: Mail.ru Group
Online krug: 15. siječnja — 11. veljače 2019.;
Finale na licu mjesta: 4.-6. travnja 2019
online - od 7. veljače do 15. ožujka;
offline - od 30. ožujka do 1. travnja.
Koristeći određeni skup podataka o čestici u Velikom hadronskom sudaraču (putanja, zamah i drugi prilično složeni fizički parametri), odredite je li to mion ili ne
Iz ove izjave identificirana su 2 zadatka:
— u jednom ste samo morali poslati svoje predviđanje,
- au drugom - kompletan kod i model za predviđanje, a izvođenje je bilo podložno prilično strogim ograničenjima vremena izvođenja i upotrebe memorije
Za natjecanje SNA Hackathon prikupljeni su dnevnici prikaza sadržaja iz otvorenih grupa u korisničkim news feedovima za veljaču-ožujak 2018. Testni set sadrži zadnji tjedan i pol ožujka. Svaki unos u dnevniku sadrži podatke o tome što je prikazano i kome, kao i kako je korisnik reagirao na taj sadržaj: ocijenio ga, komentirao, zanemario ili sakrio iz feeda.
Bit zadataka SNA Hackathona je rangirati svakog korisnika društvene mreže Odnoklassniki njegov feed, podižući što je više moguće one postove koji će dobiti "klasu".
U online fazi zadatak je podijeljen u 3 dijela:
1. rangirati radna mjesta prema različitim karakteristikama suradnje
2. rangirati objave na temelju slika koje sadrže
3. rangirati objave prema tekstu koji sadrže
Složena prilagođena metrika, nešto poput ROC-AUC Prosječna ROC-AUC po korisniku
Nagrade za prvu fazu - majice za N mjesta, prolaz u drugu fazu, gdje je plaćen smještaj i prehrana tijekom natjecanja
Druga faza - ??? (Iz određenih razloga nisam bio prisutan na dodjeli i nisam uspio saznati koje su na kraju bile nagrade). Svim članovima pobjedničkog tima obećali su prijenosna računala
Nagrade za prvu fazu - majice za 100 najboljih sudionika, prolaz u drugu fazu, gdje je plaćen put do Moskve, smještaj i prehrana tijekom natjecanja. Također, pred kraj prve faze objavljene su nagrade za najbolje u 3 zadatka u fazi 1: svi su osvojili RTX 2080 TI video karticu!
Druga faza bila je ekipna, timovi su se sastojali od 2 do 5 osoba, nagrade:
1. mjesto - 300 rubalja
2. mjesto - 200 rubalja
3. mjesto - 100 rubalja
nagrada žirija - 100 rubalja
Službena telegram grupa, ~190 sudionika, komunikacija na engleskom, pitanja su čekala nekoliko dana na odgovor Službena grupa u telegramu, ~1500 sudionika, aktivna rasprava o zadacima između sudionika i organizatora
Organizatori su dali dva osnovna rješenja, jednostavno i napredno. Jednostavna je zahtijevala manje od 16 GB RAM-a, a napredna memorija nije stala u 16. U isto vrijeme, gledajući malo unaprijed, sudionici nisu uspjeli značajno nadmašiti napredno rješenje. Nije bilo poteškoća u pokretanju ovih rješenja. Valja napomenuti da je u naprednom primjeru postojao komentar s naznakom gdje krenuti s poboljšanjem rješenja. Za svaki od zadataka data su osnovna primitivna rješenja koja su sudionici lako nadmašili. U prvim danima natjecanja sudionici su se susreli s nekoliko poteškoća: prvo, podaci su davani u formatu Apache Parquet, a nisu sve kombinacije Pythona i paketa parquet radile bez grešaka. Druga poteškoća bila je preuzimanje slika s mail clouda; trenutno ne postoji jednostavan način preuzimanja velike količine podataka odjednom. Zbog toga su ovi problemi odgodili sudionike nekoliko dana.

IDAO. Prva razina

Zadatak je bio klasificirati mionske/nemionske čestice prema njihovim karakteristikama. Ključna značajka ovog zadatka bila je prisutnost stupca težine u podacima o treningu, što su sami organizatori protumačili kao povjerenje u odgovor za ovu liniju. Problem je bio u tome što je dosta redaka sadržavalo negativne težine.

Veliki hadronski sudarač i Odnoklassniki

Nakon što smo nekoliko minuta razmišljali o liniji sa savjetom (savjet je jednostavno skrenuo pozornost na ovu značajku stupca težine) i izgradili ovaj grafikon, odlučili smo provjeriti 3 opcije:

1) obrnuti cilj redaka s negativnim težinama (i odgovarajućim težinama)
2) pomaknite težine na minimalnu vrijednost tako da počinju od 0
3) nemojte koristiti utege za žice

Treća opcija se pokazala najlošijom, no prve dvije su popravile rezultat, najbolja je bila opcija broj 1, što nas je odmah dovelo do trenutno drugog mjesta u prvom zadatku i prvog u drugom.
Veliki hadronski sudarač i Odnoklassniki
Naš sljedeći korak bio je pregledati podatke za nedostajuće vrijednosti. Organizatori su nam dali već pročešljane podatke, gdje je nedostajalo dosta vrijednosti, a zamijenjene su s -9999.

Pronašli smo nedostajuće vrijednosti u stupcima MatchedHit_{X,Y,Z}[N] i MatchedHit_D{X,Y,Z}[N], i to samo kada je N=2 ili 3. Kako razumijemo, neke čestice nisu prošao sva 4 detektora i zaustavio se na 3. ili 4. ploči. Podaci su također sadržavali stupce Lextra_{X,Y}[N], koji očito opisuju istu stvar kao i MatchedHit_{X,Y,Z}[N], ali koristeći neku vrstu ekstrapolacije. Ove oskudne pretpostavke sugerirale su da se Lextra_{X,Y}[N] može zamijeniti nedostajućim vrijednostima u MatchedHit_{X,Y,Z}[N] (samo za X i Y koordinate). MatchedHit_Z[N] bio je dobro ispunjen medijanom. Ove manipulacije omogućile su nam da postignemo 1. srednje mjesto u oba zadatka.

Veliki hadronski sudarač i Odnoklassniki

S obzirom da nisu dali ništa za pobjedu u prvoj fazi, mogli smo tu stati, ali smo nastavili, nacrtali lijepe slike i smislili nove mogućnosti.

Veliki hadronski sudarač i Odnoklassniki

Na primjer, otkrili smo da ako iscrtamo sjecišne točke čestice sa svakom od četiri detektorske ploče, možemo vidjeti da su točke na svakoj od ploča grupirane u 5 pravokutnika s omjerom stranica 4 prema 5 i sa središtem na točka (0,0), au U prvom pravokutniku nema točaka.

Broj ploče / dimenzije pravokutnika 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

Odredivši ove dimenzije, dodali smo 4 nove kategoričke značajke za svaku česticu - broj pravokutnika u kojem ona siječe svaku ploču.

Veliki hadronski sudarač i Odnoklassniki

Također smo primijetili da se čini da se čestice raspršuju u stranu od središta i pojavila se ideja da se nekako ocijeni "kvaliteta" tog raspršenja. U idealnom slučaju, vjerojatno bi bilo moguće smisliti nekakvu “idealnu” parabolu ovisno o uzletnoj točki i procijeniti odstupanje od nje, ali mi smo se ograničili na “idealnu” ravnu liniju. Nakon što smo konstruirali takve idealne ravne linije za svaku točku ulaska, mogli smo izračunati standardno odstupanje putanje svake čestice od te ravne crte. Budući da je prosječno odstupanje za cilj = 1 bilo 152, a za cilj = 0 390, ovu smo značajku provizorno ocijenili dobrom. I doista, ova je značajka odmah dospjela na vrh najkorisnijih.

Bili smo oduševljeni i dodali smo odstupanje sve 4 točke sjecišta za svaku česticu od idealne ravne linije kao dodatne 4 značajke (i one su također dobro funkcionirale).

Linkovi na znanstvene članke na temu natjecanja, koje su nam dali organizatori, potaknuli su nas na ideju da smo daleko od toga da prvi rješavamo ovaj problem i da možda postoji neka vrsta specijaliziranog softvera. Otkrivši repozitorij na githubu u kojem su implementirane metode IsMuonSimple, IsMuon, IsMuonLoose, prenijeli smo ih na našu stranicu uz manje izmjene. Same metode bile su vrlo jednostavne: na primjer, ako je energija manja od određenog praga, onda to nije mion, inače je mion. Takve jednostavne značajke očito nisu mogle dati povećanje u slučaju korištenja pojačanja gradijenta, pa smo dodali još jednu značajnu "udaljenost" pragu. Ove su značajke također malo poboljšane. Možda je temeljitijom analizom postojećih metoda bilo moguće pronaći jače metode i dodati ih znakovima.

Na kraju natjecanja malo smo dotjerali “brzo” rješenje za drugi problem, na kraju se ono razlikovalo od osnovnog u sljedećim točkama:

  1. U redovima s negativnom težinom cilj je bio obrnut
  2. Ispunjene nedostajuće vrijednosti u MatchedHit_{X,Y,Z}[N]
  3. Smanjena dubina na 7
  4. Smanjena stopa učenja na 0.1 (bila je 0.19)

Kao rezultat toga, isprobali smo više mogućnosti (ne baš uspješno), odabrali parametre i uvježbali catboost, lightgbm i xgboost, isprobali različita miješanja predviđanja i prije otvaranja privatnog samouvjereno smo pobijedili na drugom zadatku, a na prvom smo bili među voditelji.

Nakon otvaranja privatnog bili smo na 10. mjestu za 1. zadatak i 3. za drugi. Svi su se voditelji pomiješali, a brzina privatno bila je veća nego na libordu. Čini se da su podaci bili loše stratificirani (ili na primjer nije bilo redaka s negativnim težinama u privatnom) i to je bilo pomalo frustrirajuće.

SNA Hackathon 2019 - Tekstovi. Prva razina

Zadatak je bio rangirati postove korisnika na društvenoj mreži Odnoklassniki na temelju teksta koji sadržavaju, a osim teksta postojalo je još nekoliko karakteristika objave (jezik, vlasnik, datum i vrijeme nastanka, datum i vrijeme pregledavanja) ).

Kao klasične pristupe radu s tekstom istaknuo bih dvije mogućnosti:

  1. Preslikavanje svake riječi u n-dimenzionalni vektorski prostor tako da slične riječi imaju slične vektore (pročitajte više u naš članak), zatim pronalaženje prosječne riječi za tekst ili korištenje mehanizama koji uzimaju u obzir relativni položaj riječi (CNN, LSTM/GRU).
  2. Korištenje modela koji mogu odmah raditi s cijelim rečenicama. Na primjer, Bert. U teoriji bi ovaj pristup trebao bolje funkcionirati.

Budući da je ovo bilo moje prvo iskustvo s tekstovima, bilo bi pogrešno učiti nekoga, pa ću učiti samu sebe. Ovo su savjeti koje bih si dao na početku natjecanja:

  1. Prije nego što potrčiš nešto podučavati, pogledaj podatke! Osim samog teksta, podaci su imali nekoliko stupaca i iz njih se dalo izvući mnogo više nego ja. Najjednostavnije je napraviti srednje ciljano kodiranje za neke od stupaca.
  2. Ne učite iz svih podataka! Podataka je bilo jako puno (oko 17 milijuna redaka) i apsolutno nije bilo potrebno sve ih koristiti za testiranje hipoteza. Obuka i pretprocesiranje bili su dosta spori i očito bih imao vremena testirati zanimljivije hipoteze.
  3. <Kontroverzan savjet> Nema potrebe tražiti ubojiti model. Proveo sam dugo vremena smišljajući Elma i Berta, nadajući se da će me odmah odvesti na visoko mjesto, i kao rezultat toga koristio sam FastText unaprijed obučene ugradnje za ruski jezik. S Elmom nisam mogao postići veću brzinu, a s Bertom još nisam imao vremena to shvatiti.
  4. <Kontroverzan savjet> Nema potrebe tražiti jednu ubojitu značajku. Gledajući podatke, primijetio sam da oko 1 posto tekstova zapravo ne sadrži tekst! Ali bilo je poveznica na neke resurse, a ja sam napisao jednostavan parser koji je otvorio stranicu i izvukao naslov i opis. Činilo se kao dobra ideja, ali onda sam se zanio i odlučio analizirati sve linkove za sve tekstove i opet sam izgubio puno vremena. Sve to nije dalo značajniji napredak u konačnom rezultatu (iako sam skužio npr. stemming).
  5. Klasične značajke rade. Guglamo, na primjer, “text features kaggle”, čitamo i dodajemo sve. TF-IDF je omogućio poboljšanje, kao i statističke značajke kao što su duljina teksta, riječi i količina interpunkcijskih znakova.
  6. Ako postoje stupci DateTime, vrijedi ih raščlaniti na nekoliko zasebnih značajki (sati, dani u tjednu itd.). Koje značajke treba istaknuti treba analizirati pomoću grafikona/nekih metrika. Ovdje sam, na brzinu, napravio sve ispravno i istaknuo potrebne značajke, ali normalna analiza ne bi škodila (na primjer, kao što smo učinili u finalu).

Veliki hadronski sudarač i Odnoklassniki

Kao rezultat natjecanja, uvježbao sam jedan keras model s konvolucijom riječi, a drugi temeljen na LSTM i GRU. Obojica su koristila unaprijed obučene ugradnje FastText za ruski jezik (probao sam brojne druge ugradnje, ali ove su bile one koje su najbolje funkcionirale). Nakon prosjeka prognoza, zauzeo sam konačno 7. mjesto od 76 sudionika.

Nakon prve faze objavljeno je članak Nikolaja Anohina, koji je zauzeo drugo mjesto (sudjelovao je izvan konkurencije), a njegovo rješenje je donekle ponovilo moje, ali je otišao dalje zbog mehanizma pažnje query-key-value.

Druga faza OK & IDAO

Druge faze natjecanja odvijale su se gotovo uzastopno, pa sam ih odlučio pogledati zajedno.

Prvo smo ja i novostečeni tim završili u impresivnom uredu tvrtke Mail.ru, gdje nam je zadatak bio spojiti modele tri staze iz prve faze - tekst, slike i suradnju. Za to je dodijeljeno nešto više od 2 dana, što se pokazalo vrlo malo. Zapravo, uspjeli smo samo ponoviti rezultate iz prve faze bez ikakvih dobitaka od spajanja. Na kraju smo zauzeli 5. mjesto, ali nismo mogli koristiti tekstualni model. Nakon što smo pogledali rješenja drugih sudionika, čini se da je vrijedilo pokušati grupirati tekstove i dodati ih modelu suradnje. Nuspojava ove etape bili su novi dojmovi, upoznavanje i komunikacija s cool sudionicima i organizatorima, kao i veliki nedostatak sna, što je moglo utjecati na rezultat završne etape IDAO.

Zadatak završne faze IDAO 2019 bio je predvidjeti vrijeme čekanja na narudžbu za Yandex taksiste u zračnoj luci. U fazi 2 identificirana su 3 zadatka = 3 zračne luke. Za svaku zračnu luku dati su iz minute u minutu podaci o broju narudžbi taksija za šest mjeseci. A kao testni podaci dani su sljedeći mjesec i podaci o narudžbama iz minute u minutu za posljednja 2 tjedna. Vremena je bilo malo (1,5 dana), zadatak je bio dosta specifičan, na natjecanje je došla samo jedna osoba iz tima - i kao rezultat toga, pred kraj je bilo tužno mjesto. Zanimljive ideje uključivale su pokušaje korištenja vanjskih podataka: vremena, prometnih gužvi i statistike Yandexovih narudžbi taksija. Iako organizatori nisu rekli koje su to zračne luke, mnogi su sudionici pretpostavili da su to Šeremetjevo, Domodedovo i Vnukovo. Iako je ova pretpostavka opovrgnuta nakon natjecanja, značajke, na primjer, vremenskih podataka iz Moskve poboljšale su rezultate i na validaciji i na ljestvici s najboljim rezultatima.

Zaključak

  1. ML natjecanja su cool i zanimljiva! Ovdje ćete naći korištenje vještina u analizi podataka, te u lukavim modelima i tehnikama, a jednostavno je zdrav razum dobrodošao.
  2. ML je već ogromna količina znanja koja eksponencijalno raste. Postavio sam si cilj upoznati se s različitim područjima (signali, slike, tablice, tekst) i već sam shvatio koliko toga ima za proučiti. Na primjer, nakon ovih natjecanja odlučio sam proučavati: algoritme klasteriranja, napredne tehnike za rad s bibliotekama za povećanje gradijenta (posebno, rad s CatBoostom na GPU-u), mreže kapsula, mehanizam pažnje upit-ključ-vrijednost.
  3. Ne samo kagglom! Mnogo je drugih natjecanja u kojima je lakše doći do barem majice, a više je šanse za druge nagrade.
  4. Komunicirati! Već postoji velika zajednica u području strojnog učenja i analize podataka, postoje tematske grupe u telegramu, slacku, a ozbiljni ljudi iz Mail.ru, Yandexa i drugih tvrtki odgovaraju na pitanja i pomažu početnicima i onima koji nastavljaju svoj put u ovom području znanja.
  5. Savjetujem svima koji su bili inspirirani prethodnom točkom da posjete datafest — velika besplatna konferencija u Moskvi koja će se održati 10.-11. svibnja.

Izvor: www.habr.com

Dodajte komentar