Veliki hadronski sudarač i Odnoklassniki

Nastavljajući temu takmičenja u mašinskom učenju na Habréu, želimo da upoznamo čitaoce sa još dve platforme. Sigurno nisu tako velike kao kaggle, ali svakako zaslužuju pažnju.

Veliki hadronski sudarač i Odnoklassniki

Lično, ne volim previše kaggle iz nekoliko razloga:

  • prvo, takmičenja tamo često traju i po nekoliko meseci, a aktivno učešće zahteva mnogo truda;
  • drugo, javna jezgra (javna rješenja). Pristalice Kaggle-a savjetuju da se prema njima odnosite sa smirenošću tibetanskih monaha, ali u stvarnosti je prava šteta kada se nešto na čemu ste radili mjesec-dva odjednom ispostavi da je svima položeno na srebrni tanjir.

Srećom, takmičenja u mašinskom učenju se održavaju na drugim platformama, a o nekoliko ovih takmičenja biće reči.

IDAO SNA hakaton 2019
Službeni jezik: engleski,
organizatori: Yandex, Sberbank, HSE
službeni ruski jezik,
organizatori: Mail.ru Group
Online runda: 15. januar — 11. februar 2019.;
Finale na licu mjesta: 4.-6. april 2019
online - od 7. februara do 15. marta;
van mreže - od 30. marta do 1. aprila.
Koristeći određeni skup podataka o čestici u Velikom hadronskom sudaraču (trajektorija, impuls i drugi prilično složeni fizički parametri), odredite je li to mion ili ne
Iz ove izjave identifikovana su 2 zadatka:
— u jednom ste upravo morali poslati svoje predviđanje,
- a u drugom - kompletan kod i model za predviđanje, a izvršenje je bilo podvrgnuto prilično strogim ograničenjima vremena rada i upotrebe memorije
Za SNA Hackathon takmičenje prikupljeni su dnevnici prikaza sadržaja iz otvorenih grupa u korisničkim vijestima za februar-mart 2018. godine. Testni set sadrži posljednju sedmicu i po marta. Svaki unos u dnevnik sadrži informacije o tome šta je prikazano i kome, kao i kako je korisnik reagovao na ovaj sadržaj: ocenio ga, komentarisao, ignorisao ili sakrio iz feeda.
Suština zadataka SNA Hackathona je da rangira svakog korisnika društvene mreže Odnoklassniki njegov feed, podižući što je više moguće one objave koje će dobiti "klasu".
U online fazi, zadatak je bio podijeljen u 3 dijela:
1. rangirati radna mjesta prema različitim karakteristikama saradnje
2. rangirajte postove na osnovu slika koje sadrže
3. rangirajte postove prema tekstu koji sadrže
Složena prilagođena metrika, nešto poput ROC-AUC Prosječan ROC-AUC po korisniku
Nagrade za prvu etapu - majice za N mjesta, prolazak u drugu etapu, gdje je plaćen smještaj i ishrana tokom takmičenja
Druga faza - ??? (Iz određenih razloga nisam bio prisutan na dodjeli i nisam uspio saznati koje su nagrade na kraju). Svim članovima pobjedničkog tima obećali su laptopove
Nagrade za prvu etapu - majice za 100 najboljih učesnika, prolazak u drugu etapu, gde je plaćen put do Moskve, smeštaj i ishrana tokom takmičenja. Takođe, pred kraj prve etape, proglašene su nagrade za najbolje u 3 zadatka u fazi 1: svi su osvojili RTX 2080 TI video karticu!
Druga etapa je bila timska, ekipe su se sastojale od 2 do 5 osoba, nagrade:
1. mjesto - 300 rubalja
2. mjesto - 200 rubalja
3. mjesto - 100 rubalja
nagrada žirija - 100 rubalja
Zvanična telegram grupa, ~190 učesnika, komunikacija na engleskom, pitanja su morala čekati nekoliko dana na odgovor Zvanična grupa u telegramu, ~1500 učesnika, aktivna diskusija o zadacima između učesnika i organizatora
Organizatori su dali dva osnovna rješenja, jednostavno i napredno. Za jednostavno je bilo potrebno manje od 16 GB RAM-a, a napredna memorija nije stala u 16. Istovremeno, gledajući malo unapred, učesnici nisu bili u mogućnosti da značajno nadmaše napredno rešenje. Nije bilo poteškoća u pokretanju ovih rješenja. Treba napomenuti da je u naprednom primjeru postojao komentar s nagovještajem odakle početi poboljšanje rješenja. Za svaki od zadataka data su osnovna primitivna rješenja koja su učesnici lako nadmašili. U prvim danima takmičenja, učesnici su naišli na nekoliko poteškoća: prvo, podaci su dati u Apache Parquet formatu, a nisu sve kombinacije Pythona i paketa parketa radile bez grešaka. Druga poteškoća je bilo preuzimanje slika iz oblaka pošte; u ovom trenutku ne postoji jednostavan način za preuzimanje velike količine podataka odjednom. Kao rezultat toga, ovi problemi su odgodili učesnike na nekoliko dana.

IDAO. Prva faza

Zadatak je bio klasifikovati mionske/ne-mionske čestice prema njihovim karakteristikama. Ključna karakteristika 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 redova sadržavalo negativne težine.

Veliki hadronski sudarač i Odnoklassniki

Nakon što smo nekoliko minuta razmišljali o liniji sa nagoveštajem (nagoveštaj je jednostavno skrenuo pažnju na ovu karakteristiku kolone težine) i izgradili ovaj grafikon, odlučili smo da proverimo 3 opcije:

1) invertirajte cilj linija s negativnim težinama (i težinama u skladu s tim)
2) pomjeriti težine na minimalnu vrijednost tako da počinju od 0
3) ne koristite utege za žice

Treća opcija se pokazala najlošijom, ali su prve dvije popravile rezultat, najbolja je bila opcija broj 1, koja nas je odmah dovela na trenutno drugo mjesto u prvom zadatku i prvo u drugom.
Veliki hadronski sudarač i Odnoklassniki
Naš sljedeći korak je bio da pregledamo podatke za vrijednosti koje nedostaju. Organizatori su nam dali već pročešljane podatke, gdje je nedostajalo dosta vrijednosti, a zamijenjene su sa -9999.

Pronašli smo vrijednosti koje nedostaju u kolonama 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đe sva 4 detektora i zaustavi se na 3. ili 4. ploči. Podaci su također sadržavali Lextra_{X,Y}[N] kolone, koje očigledno opisuju istu stvar kao MatchedHit_{X,Y,Z}[N], ali koristeći neku vrstu ekstrapolacije. Ova oskudna nagađanja sugerišu da bi Lextra_{X,Y}[N] mogla biti zamijenjena vrijednostima koje nedostaju u MatchedHit_{X,Y,Z}[N] (samo za koordinate X i Y). MatchedHit_Z[N] je dobro popunjen medijanom. Ove manipulacije su nam omogućile da dođemo do 1. srednjeg mjesta u oba zadatka.

Veliki hadronski sudarač i Odnoklassniki

S obzirom na to da nisu ništa dali za pobjedu u prvoj etapi, mogli smo tu stati, ali smo nastavili, nacrtali lijepe slike i osmislili nove karakteristike.

Veliki hadronski sudarač i Odnoklassniki

Na primjer, otkrili smo da ako ucrtamo točke presjeka čestice sa svakom od četiri detektorske ploče, možemo vidjeti da su točke na svakoj ploči grupirane u 5 pravokutnika s omjerom stranica 4 prema 5 i centriranim na tačku (0,0), a u U prvom pravougaoniku nema tačaka.

Dimenzije tablice / pravougaonika 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

Nakon što smo odredili ove dimenzije, dodali smo 4 nove kategoričke karakteristike za svaku česticu - broj pravougaonika u kojem ona siječe svaku ploču.

Veliki hadronski sudarač i Odnoklassniki

Također smo primijetili da se činilo da se čestice raspršuju na strane od centra i pojavila se ideja da se nekako ocijeni “kvalitet” ovog raspršenja. U idealnom slučaju, vjerovatno bi bilo moguće smisliti neku vrstu “idealne” parabole u zavisnosti od tačke polijetanja i procijeniti odstupanje od nje, ali smo se ograničili na “idealnu” pravu liniju. Nakon što smo konstruisali takve idealne prave linije za svaku tačku ulaska, mogli smo da izračunamo standardnu ​​devijaciju putanje svake čestice od ove prave linije. Budući da je prosječno odstupanje za cilj = 1 bilo 152, a za cilj = 0 390, ovu osobinu smo provizorno ocijenili kao dobru. I zaista, ova funkcija je odmah dospjela na vrh najkorisnijih.

Bili smo oduševljeni i dodali smo odstupanje sve 4 tačke preseka za svaku česticu od idealne prave linije kao dodatne 4 karakteristike (i one su takođe dobro radile).

Linkovi na naučne članke na temu takmičenja, koje su nam dali organizatori, potaknuli su na ideju da smo daleko od prvih koji će riješiti ovaj problem i, možda, postoji neka vrsta specijalizovanog softvera. Nakon što smo otkrili spremište na githubu u kojem su implementirane metode IsMuonSimple, IsMuon, IsMuonLoose, prenijeli smo ih na našu stranicu uz manje izmjene. Same metode su bile vrlo jednostavne: na primjer, ako je energija manja od određenog praga, onda to nije mion, inače je mion. Takve jednostavne karakteristike očito ne bi mogle dati povećanje u slučaju korištenja gradijenta pojačanja, pa smo pragu dodali još jednu značajnu „udaljenost“. Ove karakteristike su također malo poboljšane. Možda je, detaljnijom analizom postojećih metoda, bilo moguće pronaći jače metode i dodati ih znakovima.

Na kraju takmičenja smo malo doterali „brzo“ rešenje za drugi problem, koje se na kraju razlikovalo od osnovnog u sledećim tačkama:

  1. U redovima sa negativnom težinom cilj je bio obrnut
  2. Popunjene vrijednosti koje nedostaju 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 funkcija (ne baš uspješno), odabrali parametre i uvježbali catboost, lightgbm i xgboost, isprobali različite kombinacije predviđanja i prije otvaranja privatnog smo samouvjereno pobijedili na drugom zadatku, a na prvom smo bili među lideri.

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

SNA Hackathon 2019 - Tekstovi. Prva faza

Zadatak je bio rangirati postove korisnika na društvenoj mreži Odnoklassniki na osnovu teksta koji su sadržavali; osim teksta, postojalo je još nekoliko karakteristika objave (jezik, vlasnik, datum i vrijeme kreiranja, datum i vrijeme gledanja ).

Kao klasične pristupe radu s tekstom izdvojio bih dvije opcije:

  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 ili pronalaženje prosječne riječi za tekst ili korištenje mehanizama koji uzimaju u obzir relativnu poziciju riječi (CNN, LSTM/GRU).
  2. Korištenje modela koji mogu odmah raditi s cijelim rečenicama. Na primjer, Bert. U teoriji, ovaj pristup bi trebao bolje funkcionirati.

Pošto mi je ovo bilo prvo iskustvo sa tekstovima, bilo bi pogrešno da učim nekoga, pa ću ja da učim sebe. Ovo su savjeti koje bih sebi dao na početku takmičenja:

  1. Prije nego krenete da nešto podučavate, pogledajte podatke! Pored samog teksta, podaci su imali nekoliko kolona i iz njih je bilo moguće izvući mnogo više nego ja. Najjednostavnije je napraviti srednje ciljno kodiranje za neke kolone.
  2. Nemojte učiti iz svih podataka! Bilo je mnogo podataka (oko 17 miliona redova) i apsolutno nije bilo potrebno koristiti ih sve za testiranje hipoteza. Obuka i prethodna obrada bili su prilično spori i očito bih imao vremena da testiram zanimljivije hipoteze.
  3. <Kontroverzni savjet> Nema potrebe tražiti model ubice. Proveo sam dugo vremena shvaćajuć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 embeddinge za ruski jezik. Nisam mogao postići bolju brzinu s Elmom, a još uvijek nisam imao vremena da to shvatim s Bertom.
  4. <Kontroverzni savjet> Nema potrebe da tražite jednu ubojitu karakteristiku. Gledajući podatke, primijetio sam da oko 1 posto tekstova zapravo ne sadrži tekst! Ali postojale su veze do nekih resursa, a ja sam napisao jednostavan parser koji je otvorio stranicu i izvukao naslov i opis. Činilo mi se kao dobra ideja, ali onda sam se zanio i odlučio da raščlanim sve linkove za sve tekstove i opet izgubio dosta vremena. Sve ovo nije dalo značajnije poboljšanje konačnog rezultata (iako sam, na primjer, shvatio stemming).
  5. Klasične karakteristike rade. Mi Google, na primjer, „tekstualne funkcije kaggle“, čitamo i dodajemo sve. TF-IDF je pružio poboljšanje, kao i statističke karakteristike kao što su dužina teksta, riječi i količina interpunkcije.
  6. Ako postoje stupci DateTime, vrijedi ih raščlaniti na nekoliko zasebnih karakteristika (sati, dani u sedmici, itd.). Koje karakteristike treba istaknuti treba analizirati pomoću grafikona/nekih metrika. Ovdje sam, iz hira, uradio sve kako treba i istaknuo potrebne karakteristike, ali normalna analiza ne bi škodila (na primjer, kao što smo uradili u finalu).

Veliki hadronski sudarač i Odnoklassniki

Kao rezultat takmičenja, trenirao sam jedan keras model sa konvolucijom riječi, a drugi baziran na LSTM i GRU. I jedni i drugi su koristili unaprijed obučene FastText ugradnje za ruski jezik (probao sam niz drugih ugradnji, ali ovi su bili oni koji su najbolje funkcionirali). Nakon prosjeka predviđanja, zauzeo sam konačno 7. mjesto od 76 učesnika.

Nakon prve faze je objavljen članak Nikolaja Anohina, koji je zauzeo drugo mjesto (učestvovao je van konkurencije), a njegovo rješenje je do neke faze ponovilo moje, ali je otišao dalje zahvaljujući mehanizmu pažnje upit-ključ-vrijednost.

Druga faza OK & IDAO

Druge faze takmičenja odvijale su se gotovo uzastopno, pa sam odlučio da ih zajedno pogledamo.

Prvo smo ja i novostečeni tim završili u impresivnoj kancelariji kompanije Mail.ru, gde je naš zadatak bio da kombinujemo modele tri numere iz prve faze - tekst, slike i kolab. Za to je bilo predviđeno nešto više od 2 dana, što se pokazalo vrlo malo. U stvari, uspjeli smo samo ponoviti rezultate iz prve faze bez ikakvih dobitaka od spajanja. Na kraju smo zauzeli 5. mjesto, ali nismo uspjeli koristiti tekstualni model. Nakon što smo pogledali rješenja drugih sudionika, čini se da je vrijedilo pokušati grupirati tekstove i dodati ih u model saradnje. Nuspojava ove faze bili su novi utisci, susreti i komunikacija sa cool učesnicima i organizatorima, kao i ozbiljan nedostatak sna, što je moglo uticati na rezultat završne faze IDAO-a.

Zadatak u završnoj fazi IDAO 2019 bio je predvidjeti vrijeme čekanja na narudžbu za Yandex taksiste na aerodromu. U fazi 2 identifikovana su 3 zadatka = 3 aerodroma. Za svaki aerodrom se iz minuta u minut daju podaci o broju taksi naloga za šest mjeseci. A kao testni podaci dati su sljedeći mjesec i podaci iz minuta po minut o narudžbama za protekle 2 sedmice. Vremena je bilo malo (1,5 dana), zadatak je bio prilično specifičan, samo jedna osoba iz tima je došla na takmičenje - i kao rezultat, bilo je tužno mjesto pred kraj. Zanimljive ideje uključivale su pokušaje korištenja eksternih podataka: vremenske prilike, saobraćajne gužve i Yandex statistike narudžbi taksija. Iako organizatori nisu rekli koji su to aerodromi, mnogi učesnici su pretpostavili da su to Šeremetjevo, Domodedovo i Vnukovo. Iako je ova pretpostavka opovrgnuta nakon takmičenja, karakteristike, na primjer, iz moskovskih vremenskih podataka poboljšale su rezultate i na validaciji i na tabeli.

zaključak

  1. ML takmičenja su cool i zanimljiva! Ovdje ćete naći primjenu vještina u analizi podataka, lukavim modelima i tehnikama, a jednostavno zdrav razum je dobrodošao.
  2. ML je već ogromno znanje koje izgleda eksponencijalno raste. Postavio sam sebi cilj da se upoznam sa različitim oblastima (signali, slike, tabele, tekst) i već sam shvatio koliko toga ima za učiti. Na primjer, nakon ovih takmičenja odlučio sam da proučavam: algoritme klasteriranja, napredne tehnike za rad sa bibliotekama za povećanje gradijenta (posebno rad sa CatBoostom na GPU-u), mreže kapsula, mehanizam pažnje za upit-ključ-vrijednost.
  3. Ne samo na licu! Mnogo je drugih takmičenja na kojima je lakše dobiti barem majicu, a više su šanse za druge nagrade.
  4. Komunicirajte! Već postoji velika zajednica u oblasti mašinskog učenja i analize podataka, postoje tematske grupe u telegramu, slacku, a ozbiljni ljudi iz Mail.ru, Yandex i drugih kompanija odgovaraju na pitanja i pomažu početnicima i onima koji nastavljaju svoj put u ovoj oblasti znanja.
  5. Savjetujem svima koji su bili inspirisani prethodnom tačkom da posjete datafest — velika besplatna konferencija u Moskvi, koja će se održati od 10. do 11. maja.

izvor: www.habr.com

Dodajte komentar