Lielais hadronu paātrinātājs un Odnoklassniki

Turpinot tēmu par maŔīnmācÄ«Å”anās konkursiem vietnē HabrĆ©, mēs vēlamies iepazÄ«stināt lasÄ«tājus ar vēl divām platformām. Tie noteikti nav tik milzÄ«gi kā kaggle, taču tie noteikti ir pelnÄ«juÅ”i uzmanÄ«bu.

Lielais hadronu paātrinātājs un Odnoklassniki

Personīgi man pārāk nepatīk kaggle vairāku iemeslu dēļ:

  • pirmkārt, sacensÄ«bas tur bieži ilgst vairākus mēneÅ”us, un aktÄ«va piedalÄ«Å”anās prasa daudz pūļu;
  • otrkārt, publiskie kodoli (publiskie risinājumi). Kaggle piekritēji iesaka pret viņiem izturēties ar Tibetas mÅ«ku mierÄ«gumu, taču patiesÄ«bā ir ļoti žēl, ja kaut kas, pie kā tu esi strādājis mēnesi vai divus, pēkŔņi izrādās, ka visiem ir nolikts uz sudraba Ŕķīvja.

Par laimi, maŔīnmācības sacensības notiek citās platformās, un dažas no Ŕīm sacensībām tiks apspriestas.

IDAO SNA Hakatons 2019
Oficiālā valoda: angļu,
organizatori: Yandex, Sberbank, HSE
Oficiālā krievu valoda,
organizatori: Mail.ru grupa
TieÅ”saistes kārta: 15. gada 11. janvārisā€“2019. februāris;
Fināls uz vietas: 4. gada 6.ā€“2019. aprÄ«lÄ«
tieÅ”saistē - no 7. februāra lÄ«dz 15. martam;
bezsaistē ā€“ no 30. marta lÄ«dz 1. aprÄ«lim.
Izmantojot noteiktu datu kopu par daļiņu lielajā hadronu paātrinātājā (trajektoriju, impulsu un citus diezgan sarežģītus fiziskos parametrus), nosakiet, vai tas ir mūons vai nē.
No Ŕī paziņojuma tika noteikti 2 uzdevumi:
ā€” vienā jums vienkārÅ”i bija jānosÅ«ta sava prognoze,
- un otrā - pilns prognozÄ“Å”anas kods un modelis, un izpilde tika pakļauta diezgan stingriem darbÄ«bas laika un atmiņas izmantoÅ”anas ierobežojumiem
SNA Hackathon konkursam tika apkopoti satura attēlojuma žurnāli no atvērtajām grupām lietotāju ziņu plÅ«smās par 2018. gada februāri-martu. Testu komplektā ir marta pēdējā pusotra nedēļa. Katrs ieraksts žurnālā satur informāciju par to, kas tika rādÄ«ts un kam, kā arÄ« par to, kā lietotājs reaģēja uz Å”o saturu: novērtēja to, komentēja, ignorēja vai paslēpa to no plÅ«smas.
SNA Hackathon uzdevumu bÅ«tÄ«ba ir ranžēt katru sociālā tÄ«kla Odnoklassniki lietotāju viņa plÅ«smu, paaugstinot pēc iespējas augstāk tos ierakstus, kas saņems ā€œklasiā€.
TieŔsaistes posmā uzdevums tika sadalīts 3 daļās:
1. sarindojiet amatus pēc dažādām sadarbības pazīmēm
2. ierindojiet ziņas, pamatojoties uz tajos esoÅ”ajiem attēliem
3. sarindojiet amatus atbilstoŔi tajos esoŔajam tekstam
Sarežģīta pielāgota metrika, piemēram, ROC-AUC Lietotāja vidējais ROC-AUC
Pirmā posma balvas - T-krekli par N vietām, pāreja uz otro posmu, kur sacensÄ«bu laikā tika apmaksāta naktsmÄ«tne un ēdināŔana
Otrā fāze - ??? (Noteiktu iemeslu dēļ es nebiju klāt apbalvoÅ”anas ceremonijā un nevarēju noskaidrot, kas beigās bija balvas). Viņi solÄ«ja klēpjdatorus visiem uzvarētāju komandas dalÄ«bniekiem
Pirmā posma balvas - T-krekli 100 labākajiem dalÄ«bniekiem, pāreja uz otro posmu, kur tika apmaksāts brauciens uz Maskavu, naktsmÄ«tne un ēdināŔana sacensÄ«bu laikā. Tāpat, tuvojoties pirmā posma beigām, tika paziņotas balvas 3. posma labākajiem 1 uzdevumos: katrs ieguva RTX 2080 TI videokarti!
Otrais posms bija komandu posms, komandas sastāvēja no 2 līdz 5 cilvēkiem, balvas:
1. vieta - 300 000 rubļu
2. vieta - 200 000 rubļu
3. vieta - 100 000 rubļu
žūrijas balva - 100 000 rubļu
Oficiālā telegrammu grupa, ~190 dalÄ«bnieki, saziņa angļu valodā, uz jautājumiem bija jāgaida vairākas dienas uz atbildi Oficiālā grupa telegrammā, ~1500 dalÄ«bnieki, aktÄ«va uzdevumu apsprieÅ”ana starp dalÄ«bniekiem un organizatoriem
Organizatori piedāvāja divus pamata risinājumus ā€” vienkārÅ”us un progresÄ«vus. VienkārÅ”ajai atmiņai bija nepiecieÅ”ams mazāk nekā 16 GB RAM, un uzlabotā atmiņa neietilpa 16. Tajā paŔā laikā, nedaudz skatoties uz priekÅ”u, dalÄ«bnieki nespēja ievērojami pārspēt progresÄ«vo risinājumu. Å o risinājumu ievieÅ”anā nebija nekādu grÅ«tÄ«bu. Jāpiebilst, ka uzlabotajā piemērā bija komentārs ar mājienu, kur sākt risinājuma uzlaboÅ”anu. Katram no uzdevumiem tika sniegti elementāri primitÄ«vi risinājumi, kurus dalÄ«bnieki viegli pārspēja. SacensÄ«bu sākuma dienās dalÄ«bnieki saskārās ar vairākām grÅ«tÄ«bām: pirmkārt, dati tika sniegti Apache Parquet formātā, un ne visas Python un parketa paketes kombinācijas darbojās bez kļūdām. Otra grÅ«tÄ«ba bija attēlu lejupielāde no pasta mākoņa, Å”obrÄ«d nav vienkārÅ”a veida, kā vienlaikus lejupielādēt lielu datu apjomu. Rezultātā Ŕīs problēmas dalÄ«bniekus aizkavēja uz pāris dienām.

IDAO. Pirmais posms

Uzdevums bija klasificēt miona/ne-muona daļiņas pēc to Ä«paŔībām. Å Ä« uzdevuma galvenā iezÄ«me bija svara kolonnas klātbÅ«tne treniņu datos, ko paÅ”i organizatori interpretēja kā pārliecÄ«bu par atbildi uz Å”o rindu. Problēma bija tā, ka diezgan daudzās rindās bija negatÄ«vi svari.

Lielais hadronu paātrinātājs un Odnoklassniki

Dažas minÅ«tes domājuÅ”i par lÄ«niju ar mājienu (padoms vienkārÅ”i pievērsa uzmanÄ«bu Å”ai svara kolonnas funkcijai) un izveidojot Å”o grafiku, mēs nolēmām pārbaudÄ«t 3 iespējas:

1) apgriezt mērķi līnijas ar negatīvu svaru (un attiecīgi svaru)
2) pārvietojiet svarus uz minimālo vērtību, lai tie sāktu no 0
3) neizmantojiet stīgu atsvarus

TreÅ”ais variants izrādÄ«jās vissliktākais, bet pirmie divi uzlaboja rezultātu, labākais bija variants Nr.1, kas mÅ«s uzreiz atveda uz paÅ”reizējo otro vietu pirmajā uzdevumā un pirmo otrajā.
Lielais hadronu paātrinātājs un Odnoklassniki
MÅ«su nākamais solis bija datu pārskatÄ«Å”ana, lai noteiktu trÅ«kstoŔās vērtÄ«bas. Organizatori mums iedeva jau izÄ·emmētus datus, kur bija diezgan daudz trÅ«kstoÅ”o vērtÄ«bu, un tās tika aizstātas ar -9999.

Mēs atradām trÅ«kstoŔās vērtÄ«bas kolonnās MatchedHit_{X,Y,Z}[N] un MatchedHit_D{X,Y,Z}[N], un tikai tad, ja N=2 vai 3. Kā mēs saprotam, dažas daļiņas to nedarÄ«ja. iziet visus 4 detektorus un apstājās uz 3. vai 4. plāksnes. Datos bija arÄ« Lextra_{X,Y}[N] kolonnas, kas acÄ«mredzot apraksta to paÅ”u, ko MatchedHit_{X,Y,Z}[N], bet izmantojot kaut kādu ekstrapolāciju. Å ie niecÄ«gie minējumi liecināja, ka Lextra_{X,Y}[N] varētu aizstāt trÅ«kstoŔās vērtÄ«bas MatchedHit_{X,Y,Z}[N] (tikai X un Y koordinātām). MatchedHit_Z[N] bija labi aizpildÄ«ts ar mediānu. Å Ä«s manipulācijas ļāva sasniegt 1. starpvietu abos uzdevumos.

Lielais hadronu paātrinātājs un Odnoklassniki

Ņemot vērā, ka viņi neko nedeva par uzvaru pirmajā posmā, varējām pie tā apstāties, bet turpinājām, uzzīmējām skaistas bildes un izdomājām jaunas iespējas.

Lielais hadronu paātrinātājs un Odnoklassniki

Piemēram, mēs atklājām, ka, ja mēs attēlosim daļiņas krustoÅ”anās punktus ar katru no četrām detektora plāksnēm, mēs varam redzēt, ka punkti uz katras plāksnes ir sagrupēti 5 taisnstÅ«ros ar malu attiecÄ«bu no 4 lÄ«dz 5 un centrēti punkts (0,0), un in Pirmajā taisnstÅ«rÄ« nav punktu.

Plāksnītes nr./taisnstūra izmēri 1 2 3 4 5
1. plāksne 500х625 1000х1250 2000х2500 4000х5000 8000х10000
2. plāksne 520х650 1040х1300 2080х2600 4160х5200 8320х10400
3. plāksne 560х700 1120х1400 2240х2800 4480х5600 8960х11200
4. plāksne 600х750 1200х1500 2400х3000 4800х6000 9600х12000

Nosakot Å”os izmērus, katrai daļiņai pievienojām 4 jaunas kategoriskas pazÄ«mes - taisnstÅ«ra numuru, kurā tā krusto katru plāksni.

Lielais hadronu paātrinātājs un Odnoklassniki

Tāpat novērojām, ka daļiņas it kā izkliedējas uz sāniem no centra un radās doma kaut kā novērtēt Ŕīs izkliedes ā€œkvalitātiā€. Ideālā variantā, iespējams, bÅ«tu iespējams izdomāt kādu ā€œideāluā€ parabolu atkarÄ«bā no pacelÅ”anās punkta un novērtēt novirzi no tā, bet mēs aprobežojāmies ar ā€œideāloā€ taisni. Konstruējot Ŕādas ideālas taisnes katram ieejas punktam, mēs varējām aprēķināt katras daļiņas trajektorijas standarta novirzi no Ŕīs taisnes. Tā kā mērÄ·a = 1 vidējā novirze bija 152, bet mērÄ·im = 0 tā bija 390, mēs provizoriski novērtējām Å”o funkciju kā labu. Un patieŔām Ŕī funkcija uzreiz iekļuva visnoderÄ«gāko topu sarakstā.

Mēs bijām priecÄ«gi un pievienojām visu 4 krustoÅ”anās punktu novirzi katrai daļiņai no ideālās taisnes kā papildu 4 pazÄ«mes (un tās arÄ« darbojās labi).

Saites uz zinātniskiem rakstiem par konkursa tēmu, ko mums iedeva organizatori, radÄ«ja domu, ka mēs nebÅ«t neesam pirmie, kas Å”o problēmu atrisina un, iespējams, ir kāda specializēta programmatÅ«ra. Atklājot github repozitoriju, kurā tika ieviestas metodes IsMuonSimple, IsMuon, IsMuonLoose, mēs tās pārnesām uz mÅ«su vietni ar nelielām izmaiņām. PaÅ”as metodes bija ļoti vienkārÅ”as: piemēram, ja enerÄ£ija ir mazāka par noteiktu slieksni, tad tas nav mions, pretējā gadÄ«jumā tas ir mions. Šādas vienkārÅ”as funkcijas acÄ«mredzami nevarēja palielināt gradienta palielināŔanas gadÄ«jumā, tāpēc slieksnim pievienojām vēl vienu nozÄ«mÄ«gu ā€œattālumuā€. Å Ä«s funkcijas ir arÄ« nedaudz uzlabotas. Iespējams, rÅ«pÄ«gāk analizējot esoŔās metodes, izdevās atrast spēcÄ«gākas metodes un pievienot tās zÄ«mēm.

Konkursa beigās mēs nedaudz pielabojām otrās problēmas ā€œÄtroā€ risinājumu, kas galu galā atŔķīrās no bāzes lÄ«nijas Ŕādos punktos:

  1. Rindās ar negatīvu svaru mērķis tika apgriezts otrādi
  2. AizpildÄ«tas trÅ«kstoŔās vērtÄ«bas MatchedHit_{X,Y,Z}[N]
  3. Samazināts dziļums līdz 7
  4. Samazināts mācīŔanās līmenis līdz 0.1 (bija 0.19)

Rezultātā mēs izmēģinājām vairāk funkciju (ne pārāk veiksmÄ«gi), izvēlējāmies parametrus un trenējām catboost, lightgbm un xgboost, izmēģinājām dažādus prognožu sajaukumus un pirms privātā atvērÅ”anas pārliecinoÅ”i uzvarējām otrajā uzdevumā, un pirmajā bijām starp lÄ«deriem.

Pēc privātā atvērÅ”anas bijām 10. vietā 1. uzdevumā un 3. otrajā vietā. Visi lÄ«deri sajaucās, un ātrums privātajā bija lielāks nekā uz libboard. Å Ä·iet, ka dati bija slikti stratificēti (vai, piemēram, privātajā nebija rindu ar negatÄ«vu svaru), un tas bija nedaudz nomākta.

SNA Hackathon 2019 ā€” teksti. Pirmais posms

Uzdevums bija sarindot lietotāju ziņas Odnoklassniki sociālajā tÄ«klā, pamatojoties uz tajos ietverto tekstu; papildus tekstam bija vēl dažas ziņas pazÄ«mes (valoda, Ä«paÅ”nieks, izveides datums un laiks, apskates datums un laiks ).

Kā klasiskās pieejas darbam ar tekstu es izceltu divas iespējas:

  1. Katra vārda kartÄ“Å”ana n-dimensiju vektoru telpā tā, lai lÄ«dzÄ«giem vārdiem bÅ«tu lÄ«dzÄ«gi vektori (vairāk lasiet mÅ«su raksts), pēc tam meklējot teksta vidējo vārdu vai izmantojot mehānismus, kas ņem vērā vārdu relatÄ«vo pozÄ«ciju (CNN, LSTM/GRU).
  2. Izmantot modeļus, kas var nekavējoties strādāt ar veseliem teikumiem. Piemēram, Bērts. Teorētiski Å”ai pieejai vajadzētu darboties labāk.

Tā kā Ŕī bija mana pirmā pieredze ar tekstiem, bÅ«tu nepareizi kādu mācÄ«t, tāpēc mācÄ«Å”u pati. Å ie ir padomi, ko es sev dotu konkursa sākumā:

  1. Pirms skrien ko mācÄ«t, paskaties datus! Papildus paÅ”am tekstam datos bija vairākas kolonnas un no tām varēja izspiest daudz vairāk nekā es. VisvienkārŔākā lieta ir dažām kolonnām nozÄ«mēt mērÄ·a kodējumu.
  2. Nemācieties no visiem datiem! Datu bija daudz (apmēram 17 miljoni rindu), un absolÅ«ti nebija nepiecieÅ”ams tos visus izmantot, lai pārbaudÄ«tu hipotēzes. ApmācÄ«ba un priekÅ”apstrāde bija diezgan lēna, un man acÄ«mredzot bÅ«tu bijis laiks pārbaudÄ«t interesantākas hipotēzes.
  3. <StrÄ«dÄ«gs padoms> Nav jāmeklē slepkava modelis. Es ilgi izdomāju Elmo un Bertu, cerot, ka viņi mani uzreiz aizvedÄ«s uz augstu vietu, un rezultātā es izmantoju FastText iepriekÅ” apmācÄ«tus iegultus krievu valodai. Es nevarēju sasniegt labāku ātrumu ar Elmo, un man joprojām nebija laika to izdomāt ar Bertu.
  4. <StrÄ«dÄ«gs padoms> Nav jāmeklē viena slepkava funkcija. Apskatot datus, es pamanÄ«ju, ka aptuveni 1 procents tekstu faktiski nesatur tekstu! Bet tur bija saites uz dažiem resursiem, un es uzrakstÄ«ju vienkārÅ”u parsētāju, kas atvēra vietni un izvilka virsrakstu un aprakstu. Å Ä·ita laba ideja, bet tad es aizrāvos un nolēmu parsēt visas saites visiem tekstiem un atkal zaudēju daudz laika. Tas viss nenodroÅ”ināja bÅ«tisku gala rezultāta uzlabojumu (lai gan es izdomāju, piemēram, atvasinājumu).
  5. Klasiskās funkcijas darbojas. Mēs Google, piemēram, ā€œtext features kaggleā€, lasām un pievienojam visu. TF-IDF nodroÅ”ināja uzlabojumus, tāpat kā statistikas funkcijas, piemēram, teksta garums, vārdi un pieturzÄ«mju daudzums.
  6. Ja ir kolonnas DateTime, ir vērts tās parsēt vairākos atseviŔķos objektos (stundas, nedēļas dienas utt.). Kuras funkcijas ir jāizceļ, jāanalizē, izmantojot grafikus/dažus rādÄ«tājus. LÅ«k, pēc iegribas es visu izdarÄ«ju pareizi un izcēlu nepiecieÅ”amās funkcijas, taču parasta analÄ«ze nebÅ«tu skājusi (piemēram, kā mēs to izdarÄ«jām finālā).

Lielais hadronu paātrinātājs un Odnoklassniki

SacensÄ«bu rezultātā trenēju vienu keras modeli ar vārdu konvolÅ«ciju, otru uz LSTM un GRU bāzes. Abi izmantoja iepriekÅ” apmācÄ«tus FastText iegulÅ”anas veidus krievu valodai (izmēģināju vairākas citas iegulÅ”anas, bet Ŕīs bija tās, kas darbojās vislabāk). Pēc prognožu vidusmēra ieņēmu noslēdzoÅ”o 7.vietu no 76 dalÄ«bniekiem.

Pēc pirmā posma tas tika publicēts Nikolaja Anohina raksts, kurÅ” ieņēma otro vietu (viņŔ piedalÄ«jās ārpus konkursa), un viņa risinājums lÄ«dz kādam posmam atkārtoja manējo, taču viņŔ gāja tālāk, pateicoties query-key-value uzmanÄ«bas mehānismam.

Otrais posms OK & IDAO

Otrie sacensību posmi norisinājās gandrīz pēc kārtas, tāpēc nolēmu tos apskatīt kopā.

Vispirms es un jauniegÅ«tā komanda nokļuvām iespaidÄ«gajā kompānijas Mail.ru birojā, kur mÅ«su uzdevums bija apvienot trÄ«s celiņu modeļus no pirmā posma - tekstu, attēlus un colab. Tam tika atvēlētas nedaudz vairāk par 2 dienām, kas izrādÄ«jās ļoti maz. Faktiski mēs varējām tikai atkārtot savus rezultātus no pirmā posma, nesaņemot nekādus ieguvumus no apvienoÅ”anās. Beigās ieņēmām 5.vietu, taču nevarējām izmantot teksta modeli. Apskatot citu dalÄ«bnieku risinājumus, Ŕķiet, ka bija vērts mēģināt sagrupēt tekstus un pievienot tos sadarbÄ«bas modelim. Å Ä« posma blakusefekts bija jauni iespaidi, tikÅ”anās un komunikācija ar forÅ”iem dalÄ«bniekiem un organizatoriem, kā arÄ« pamatÄ«gs miega trÅ«kums, kas, iespējams, ietekmēja IDAO pēdējā posma rezultātu.

IDAO 2019 fināla posma uzdevums bija paredzēt Yandex taksometru vadÄ«tāju pasÅ«tÄ«juma gaidÄ«Å”anas laiku lidostā. 2. posmā tika identificēti 3 uzdevumi = 3 lidostas. Par katru lidostu tiek sniegti dati par taksometru pasÅ«tÄ«jumu skaitu par seÅ”iem mēneÅ”iem pa minÅ«ti. Un kā testa dati tika doti nākamā mēneÅ”a un minÅ«tes pēc minÅ«tes dati par pasÅ«tÄ«jumiem pēdējo 2 nedēļu laikā. Laika bija maz (1,5 dienas), uzdevums bija diezgan konkrēts, uz sacensÄ«bām ieradās tikai viens cilvēks no komandas - un rezultātā tā bija bēdÄ«ga vieta uz beigām. Interesantas idejas ietvēra mēģinājumus izmantot ārējos datus: laikapstākļus, satiksmes sastrēgumus un Yandex taksometru pasÅ«tÄ«jumu statistiku. Lai gan organizatori neteica, kas ir Ŕīs lidostas, daudzi dalÄ«bnieki pieļāva, ka tās ir Å eremetjevo, Domodedovo un Vnukovo. Lai gan pēc sacensÄ«bām Å”is pieņēmums tika atspēkots, iezÄ«mes, piemēram, no Maskavas laikapstākļu datiem, uzlaboja rezultātus gan validācijā, gan lÄ«deru sarakstā.

Secinājums

  1. ML sacensÄ«bas ir forÅ”as un interesantas! Å eit jÅ«s atradÄ«sit prasmju izmantoÅ”anu datu analÄ«zē un viltÄ«gos modeļos un paņēmienos, un vienkārÅ”i veselais saprāts ir apsveicams.
  2. ML jau ir milzÄ«gs zināŔanu kopums, kas, Ŕķiet, pieaug eksponenciāli. Es izvirzÄ«ju sev mērÄ·i iepazÄ«ties ar dažādām jomām (signāli, attēli, tabulas, teksts) un jau sapratu, cik daudz ir jāmācās. Piemēram, pēc Ŕīm sacensÄ«bām es nolēmu izpētÄ«t: klasterizācijas algoritmus, uzlabotas metodes darbam ar gradientu paaugstināŔanas bibliotēkām (jo Ä«paÅ”i, strādājot ar CatBoost GPU), kapsulu tÄ«klus, vaicājuma atslēgas vērtÄ«bas uzmanÄ«bas mehānismu.
  3. Ne ar kaggle vien! Ir daudz citu konkursu, kur vieglāk iegūt vismaz T-kreklu, un ir lielākas iespējas tikt pie citām balvām.
  4. Sazinieties! MaŔīnmācÄ«Å”anās un datu analÄ«zes jomā jau ir liela kopiena, ir tematiskās grupas telegrammā, slack, un nopietni cilvēki no Mail.ru, Yandex un citiem uzņēmumiem atbild uz jautājumiem un palÄ«dz iesācējiem un tiem, kas turpina savu ceļu Å”ajā jomā. zināŔanas.
  5. Iesaku apmeklēt visiem, kas iedvesmojuÅ”ies no iepriekŔējā punkta datu festivāls ā€” liela bezmaksas konference Maskavā, kas notiks 10.ā€“11.

Avots: www.habr.com

Pievieno komentāru