Veľký hadrónový urýchľovač a Odnoklassniki

V pokračovaní témy súťaží strojového učenia na Habré by sme chceli čitateľom predstaviť ďalšie dve platformy. Určite nie sú také obrovské ako kaggle, ale rozhodne si zaslúžia pozornosť.

Veľký hadrónový urýchľovač a Odnoklassniki

Osobne nemám kaggle príliš rád z niekoľkých dôvodov:

  • po prvé, súťaže tam často trvajú niekoľko mesiacov a aktívna účasť si vyžaduje veľa úsilia;
  • po druhé, verejné jadrá (verejné riešenia). Prívrženci Kaggle radia, aby ste sa k nim správali s pokojom tibetských mníchov, no v skutočnosti je škoda, keď sa niečo, na čom pracujete mesiac alebo dva, zrazu ukáže ako na striebornom podnose pre každého.

Našťastie sa súťaže strojového učenia konajú na iných platformách a o niekoľkých z týchto súťaží sa bude diskutovať.

IDAO SNA Hackathon 2019
Úradný jazyk: angličtina,
organizátori: Yandex, Sberbank, HSE
úradný ruský jazyk,
organizátori: Mail.ru Group
Online kolo: 15. januára — 11. februára 2019;
Finále na mieste: 4. – 6. apríla 2019
online - od 7. februára do 15. marca;
offline – od 30. marca do 1. apríla.
Pomocou určitého súboru údajov o častici vo Veľkom hadrónovom urýchľovači (dráha, hybnosť a iné pomerne zložité fyzikálne parametre) určite, či ide o mión alebo nie.
Z tohto vyhlásenia boli identifikované 2 úlohy:
— v jednom ste museli poslať svoju predpoveď,
- a v druhej - kompletný kód a model pre predikciu a vykonávanie podliehalo dosť prísnym obmedzeniam na čas chodu a využitie pamäte
Pre súťaž SNA Hackathon sa zbierali záznamy o zobrazení obsahu z otvorených skupín v informačných kanáloch používateľov za február až marec 2018. Testovacia zostava obsahuje posledný týždeň a pol marca. Každý záznam v protokole obsahuje informácie o tom, čo sa zobrazilo a komu, ako aj o tom, ako používateľ na tento obsah reagoval: ohodnotil ho, komentoval, ignoroval alebo skryl z informačného kanála.
Podstatou úloh SNA Hackathon je zaradiť každého používateľa sociálnej siete Odnoklassniki do svojho informačného kanála a čo najvyššie zvýšiť tie príspevky, ktoré dostanú „triedu“.
V online fáze bola úloha rozdelená na 3 časti:
1. zoraďte pracovné miesta podľa rôznych charakteristík spolupráce
2. zoraďte príspevky podľa obrázkov, ktoré obsahujú
3. zoraďte príspevky podľa textu, ktorý obsahujú
Komplexná vlastná metrika, niečo ako ROC-AUC Priemerná ROC-AUC podľa používateľa
Ceny za prvý stupeň - tričká pre N miest, prechod do druhého stupňa, kde sa hradilo ubytovanie a strava počas súťaže
Druhá fáza - ??? (Z určitých dôvodov som nebol prítomný na odovzdávaní cien a nepodarilo sa mi zistiť, o aké ceny nakoniec išlo). Všetkým členom víťazného tímu sľúbili notebooky
Ceny za prvú etapu - tričká pre 100 najlepších účastníkov, prechod do druhej etapy, kde sa hradilo cestovanie do Moskvy, ubytovanie a strava počas súťaže. Ku koncu prvej fázy boli tiež vyhlásené ceny pre najlepších v 3 úlohách v prvej fáze: každý vyhral grafickú kartu RTX 1 TI!
Druhá fáza bola tímová, tímy pozostávali z 2 až 5 ľudí, ceny:
1. miesto - 300 000 rubľov
2. miesto - 200 000 rubľov
3. miesto - 100 000 rubľov
cena poroty - 100 000 rubľov
Oficiálna telegramová skupina, ~190 účastníkov, komunikácia v angličtine, otázky museli čakať na odpoveď niekoľko dní Oficiálna skupina v telegrame, ~1500 účastníkov, aktívna diskusia o úlohách medzi účastníkmi a organizátormi
Organizátori poskytli dve základné riešenia, jednoduché a pokročilé. Simple vyžadoval menej ako 16 GB RAM a pokročilá pamäť sa do 16 nezmestila. Zároveň s miernym pohľadom dopredu neboli účastníci schopní výrazne prekonať pokročilé riešenie. Pri spustení týchto riešení neboli žiadne ťažkosti. Treba poznamenať, že v pokročilom príklade bol komentár s tipom, kde začať zlepšovať riešenie. Pre každú z úloh boli poskytnuté základné primitívne riešenia, ktoré účastníci ľahko prekonali. V prvých dňoch súťaže sa účastníci stretli s niekoľkými problémami: po prvé, údaje boli poskytnuté vo formáte Apache Parquet a nie všetky kombinácie Pythonu a parketového balíka fungovali bez chýb. Druhým problémom bolo sťahovanie obrázkov z poštového cloudu, v súčasnosti neexistuje jednoduchý spôsob, ako stiahnuť veľké množstvo dát naraz. V dôsledku toho tieto problémy zdržali účastníkov o niekoľko dní.

IDAO. Prvé štádium

Úlohou bolo klasifikovať miónové/nemiónové častice podľa ich charakteristík. Kľúčovým znakom tejto úlohy bola prítomnosť stĺpca hmotnosti v tréningových údajoch, čo samotní organizátori interpretovali ako dôveru v odpoveď pre tento riadok. Problém bol v tom, že pomerne veľa riadkov obsahovalo záporné váhy.

Veľký hadrónový urýchľovač a Odnoklassniki

Po niekoľkých minútach premýšľania o línii s nápovedou (nápoveda jednoducho upozornila na túto vlastnosť stĺpca hmotnosti) a zostavení tohto grafu sme sa rozhodli skontrolovať 3 možnosti:

1) invertujte cieľ čiar so zápornými váhami (a zodpovedajúcimi váhami)
2) posuňte váhy na minimálnu hodnotu tak, aby začínali od 0
3) nepoužívajte strunové závažia

Najhoršie dopadla tretia možnosť, no prvé dve zlepšili výsledok, najlepšia bola možnosť č.1, ktorá nás hneď v prvej úlohe vyniesla na priebežné druhé miesto a v druhej prvé.
Veľký hadrónový urýchľovač a Odnoklassniki
Naším ďalším krokom bolo skontrolovanie chýbajúcich hodnôt v údajoch. Organizátori nám dali už očesané údaje, kde chýbalo dosť hodnôt a nahradili ich -9999.

Našli sme chýbajúce hodnoty v stĺpcoch MatchedHit_{X,Y,Z}[N] a MatchedHit_D{X,Y,Z}[N], a to len vtedy, keď N=2 alebo 3. Ako vieme, niektoré častice nie prejsť všetkými 4 detektormi a zastaviť sa buď na 3. alebo 4. platni. Dáta tiež obsahovali stĺpce Lextra_{X,Y}[N], ktoré zjavne opisujú to isté ako MatchedHit_{X,Y,Z}[N], ale používajú nejaký druh extrapolácie. Tieto skromné ​​odhady naznačujú, že chýbajúce hodnoty v MatchedHit_{X,Y,Z}[N] možno nahradiť Lextra_{X,Y}[N] (iba pre súradnice X a Y). MatchedHit_Z[N] bol dobre vyplnený mediánom. Tieto manipulácie nám umožnili dostať sa na 1. medzimiesto v oboch úlohách.

Veľký hadrónový urýchľovač a Odnoklassniki

Vzhľadom na to, že za víťazstvo v prvej etape nič nedali, mohli sme sa tam zastaviť, ale pokračovali sme, nakreslili krásne obrázky a prišli s novými funkciami.

Veľký hadrónový urýchľovač a Odnoklassniki

Napríklad sme zistili, že ak nakreslíme priesečníky častice s každou zo štyroch detekčných platní, môžeme vidieť, že body na každej z platní sú zoskupené do 5 obdĺžnikov s pomerom strán 4 ku 5 a vycentrované na bod (0,0) a v prvom obdĺžniku nie sú žiadne body.

Číslo taniera / rozmery obdĺžnika 1 2 3 4 5
Doska 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Doska 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Doska 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Doska 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Po určení týchto rozmerov sme pre každú časticu pridali 4 nové kategorické znaky - číslo obdĺžnika, v ktorom pretína každú dosku.

Veľký hadrónový urýchľovač a Odnoklassniki

Tiež sme si všimli, že sa častice akoby rozptyľovali do strán od stredu a vznikol nápad nejako zhodnotiť „kvalitu“ tohto rozptylu. Ideálne by bolo asi vymyslieť nejakú „ideálnu“ parabolu v závislosti od miesta vzletu a odhadnúť odchýlku od nej, ale my sme sa obmedzili na „ideálnu“ priamku. Po skonštruovaní takýchto ideálnych priamych čiar pre každý vstupný bod sme boli schopní vypočítať štandardnú odchýlku trajektórie každej častice od tejto priamky. Keďže priemerná odchýlka pre cieľ = 1 bola 152 a pre cieľ = 0 bola 390, predbežne sme túto vlastnosť vyhodnotili ako dobrú. A skutočne, táto funkcia sa okamžite dostala na vrchol tých najužitočnejších.

Boli sme potešení a pridali sme odchýlku všetkých 4 priesečníkov pre každú časticu od ideálnej priamky ako ďalšie 4 funkcie (a tiež fungovali dobre).

Odkazy na vedecké články na tému súťaže, ktoré nám poskytli organizátori, podnietili myšlienku, že nie sme ani zďaleka prví, ktorí riešia tento problém a možno existuje nejaký špecializovaný softvér. Po objavení úložiska na githube, kde boli implementované metódy IsMuonSimple, IsMuon, IsMuonLoose, sme ich s menšími úpravami preniesli na našu stránku. Samotné metódy boli veľmi jednoduché: ak je napríklad energia nižšia ako určitý prah, potom to nie je mión, inak je to mión. Takéto jednoduché funkcie zjavne nemohli zvýšiť v prípade použitia zosilnenia gradientu, takže sme k prahu pridali ďalšiu významnú „vzdialenosť“. Tieto funkcie boli tiež mierne vylepšené. Možno, že dôkladnejšou analýzou existujúcich metód bolo možné nájsť silnejšie metódy a pridať ich k znakom.

Na konci súťaže sme mierne upravili „rýchle“ riešenie druhého problému, nakoniec sa líšilo od základnej línie v nasledujúcich bodoch:

  1. V riadkoch so zápornou hmotnosťou bol cieľ prevrátený
  2. Doplnené chýbajúce hodnoty v MatchedHit_{X,Y,Z}[N]
  3. Hĺbka znížená na 7
  4. Rýchlosť učenia sa znížila na 0.1 (predtým 0.19)

Výsledkom bolo, že sme vyskúšali viac funkcií (nie veľmi úspešne), vybrali parametre a natrénovali catboost, lightgbm a xgboost, vyskúšali rôzne prelínanie predpovedí a pred otvorením privátu sme suverénne vyhrali na druhej úlohe a na prvej sme boli medzi vodcov.

Po otvorení privátu sme boli na 10. mieste za 1. úlohu a 3. za druhú. Všetci lídri sa poplietli a rýchlosť v súkromí bola vyššia ako na libboarde. Zdá sa, že údaje boli zle rozvrstvené (alebo napríklad v súkromí neboli žiadne riadky so zápornou váhou) a to bolo trochu frustrujúce.

SNA Hackathon 2019 - Texty. Prvé štádium

Úlohou bolo zoradiť príspevky používateľov na sociálnej sieti Odnoklassniki podľa textu, ktorý obsahovali, okrem textu bolo k príspevku ešte niekoľko charakteristík (jazyk, vlastník, dátum a čas vytvorenia, dátum a čas zobrazenia ).

Ako klasické prístupy k práci s textom by som zdôraznil dve možnosti:

  1. Mapovanie každého slova do n-rozmerného vektorového priestoru tak, aby podobné slová mali podobné vektory (viac v náš článok), potom buď nájdenie priemerného slova pre text, alebo pomocou mechanizmov, ktoré zohľadňujú relatívnu polohu slov (CNN, LSTM/GRU).
  2. Používanie modelov, ktoré dokážu okamžite pracovať s celými vetami. Napríklad Bert. Teoreticky by tento prístup mal fungovať lepšie.

Keďže to bola moja prvá skúsenosť s textami, bolo by nesprávne niekoho učiť, tak sa naučím sám. Toto sú tipy, ktoré by som si dal na začiatku súťaže:

  1. Predtým, ako sa rozbehnete niečo učiť, pozrite si údaje! Okrem samotného textu mali dáta niekoľko stĺpcov a dalo sa z nich vyžmýkať oveľa viac ako ja. Najjednoduchšia vec je urobiť stredné cieľové kódovanie pre niektoré stĺpce.
  2. Neučte sa zo všetkých údajov! Dát bolo veľa (asi 17 miliónov riadkov) a absolútne nebolo nutné použiť všetky na testovanie hypotéz. Školenie a predspracovanie boli dosť pomalé a zrejme by som mal čas otestovať zaujímavejšie hypotézy.
  3. <Kontroverzná rada> Netreba hľadať model zabijaka. Strávil som dlhý čas zisťovaním Elma a Berta v nádeji, že ma okamžite dostanú na vysoké miesto, a v dôsledku toho som použil vopred natrénované vloženia FastTextu pre ruský jazyk. S Elmom som nedokázal dosiahnuť lepšiu rýchlosť a s Bertom som na to stále nemal čas prísť.
  4. <Kontroverzná rada> Nie je potrebné hľadať jednu vražednú funkciu. Pri pohľade na údaje som si všimol, že približne 1 percento textov v skutočnosti neobsahuje text! Ale boli tam odkazy na nejaké zdroje a ja som napísal jednoduchý analyzátor, ktorý otvoril stránku a vytiahol názov a popis. Zdalo sa mi to ako dobrý nápad, ale potom som sa nechal uniesť a rozhodol som sa analyzovať všetky odkazy na všetky texty a opäť som stratil veľa času. To všetko neprinieslo výrazné zlepšenie konečného výsledku (aj keď som napríklad prišiel na stemming).
  5. Klasické funkcie fungujú. My Google, napríklad, “text features kaggle”, čítame a pridávame všetko. TF-IDF poskytlo zlepšenie, rovnako ako štatistické funkcie, ako je dĺžka textu, slová a množstvo interpunkcie.
  6. Ak existujú stĺpce DateTime, stojí za to ich analyzovať do niekoľkých samostatných funkcií (hodiny, dni v týždni atď.). Ktoré funkcie by sa mali zvýrazniť, by sa mali analyzovať pomocou grafov/niektorých metrík. Tu som z rozmaru urobil všetko správne a zvýraznil potrebné vlastnosti, ale normálny rozbor by nebol na škodu (napríklad ako sme to urobili vo finále).

Veľký hadrónový urýchľovač a Odnoklassniki

V dôsledku súťaže som trénoval jeden model keras s konvolúciou slov a ďalší založený na LSTM a GRU. Obaja používali predtrénované vloženie FastText pre ruský jazyk (skúsil som množstvo iných vložení, ale tieto fungovali najlepšie). Po spriemerovaní predpovedí som obsadil konečné 7. miesto zo 76 účastníkov.

Po prvej etape bola zverejnená článok Nikolaja Anokhina, ktorý sa umiestnil na druhom mieste (zúčastnil sa mimo súťaže) a jeho riešenie do istej miery opakovalo moje, ale vďaka mechanizmu pozornosti dotaz-kľúč-hodnota zašiel ďalej.

Druhá fáza OK & IDAO

Druhé fázy súťaží prebiehali takmer po sebe, tak som sa rozhodol, že sa na ne pozriem spoločne.

Najprv som ja a novozískaný tím skončil v impozantnej kancelárii spoločnosti Mail.ru, kde bolo našou úlohou spojiť modely troch tratí z prvej etapy - text, obrázky a kolab. Na to bolo vyčlenených niečo viac ako 2 dni, čo sa ukázalo ako veľmi málo. V skutočnosti sme boli schopní len zopakovať naše výsledky z prvej fázy bez toho, aby sme získali nejaké zisky z fúzie. Nakoniec sme obsadili 5. miesto, no nepodarilo sa nám použiť textový model. Po zhliadnutí riešení ostatných účastníkov sa zdá, že stálo za to pokúsiť sa texty zoskupiť a pridať do modelu spolupráce. Vedľajším efektom tejto etapy boli nové dojmy, stretnutia a komunikácia s pohodovými účastníkmi a organizátormi, ako aj vážny nedostatok spánku, ktorý mohol ovplyvniť výsledok záverečnej etapy IDAO.

Úlohou v záverečnej fáze IDAO 2019 bolo predpovedať čakaciu dobu na objednávku pre taxikárov Yandex na letisku. V 2. etape boli identifikované 3 úlohy = 3 letiská. Pre každé letisko sú uvedené minútové údaje o počte objednávok taxíkov za šesť mesiacov. A ako testovacie údaje boli uvedené údaje o ďalšom mesiaci a minútu po minúte o objednávkach za posledné 2 týždne. Času bolo málo (1,5 dňa), úloha bola dosť špecifická, na súťaž prišiel len jeden človek z tímu - a vo výsledku to bolo smutné miesto ku koncu. Medzi zaujímavé nápady patrili pokusy o využitie externých údajov: počasie, dopravné zápchy a štatistiky objednávok taxíkov Yandex. Hoci organizátori neuviedli, o aké letiská ide, mnohí účastníci predpokladali, že išlo o Šeremetevo, Domodedovo a Vnukovo. Hoci bol tento predpoklad po súťaži vyvrátený, funkcie, napríklad údaje o počasí z Moskvy, zlepšili výsledky pri overovaní aj v rebríčku.

Záver

  1. ML súťaže sú skvelé a zaujímavé! Nájdete tu využitie zručností v analýze údajov a v prefíkaných modeloch a technikách a jednoducho zdravý rozum je vítaný.
  2. ML je už obrovské množstvo vedomostí, ktoré, ako sa zdá, exponenciálne rastie. Dal som si za cieľ zoznámiť sa s rôznymi oblasťami (signály, obrázky, tabuľky, text) a už som si uvedomil, koľko je toho na štúdiu. Napríklad po týchto súťažiach som sa rozhodol študovať: klastrovacie algoritmy, pokročilé techniky na prácu s knižnicami zvyšujúcimi gradient (najmä práca s CatBoost na GPU), kapsulové siete, mechanizmus pozornosti na kľúč dotaz-hodnota.
  3. Nie len kaggle! Existuje mnoho ďalších súťaží, kde je jednoduchšie získať aspoň tričko a je viac šancí na ďalšie ceny.
  4. Komunikujte! V oblasti strojového učenia a analýzy údajov už existuje veľká komunita, existujú tematické skupiny v telegrame, slack a seriózni ľudia z Mail.ru, Yandex a ďalších spoločností odpovedajú na otázky a pomáhajú začiatočníkom a tým, ktorí pokračujú vo svojej ceste v tejto oblasti. vedomostí.
  5. Odporúčam navštíviť všetkým, ktorých inšpiroval predchádzajúci bod datafest — veľká bezplatná konferencia v Moskve, ktorá sa bude konať 10. – 11. mája.

Zdroj: hab.com

Pridať komentár