Large Hadron Collider ja Odnoklassniki

Jatkamme Habrén koneoppimiskilpailujen teemaa, haluamme esitellä lukijoille kaksi muuta alustaa. Ne eivät todellakaan ole niin suuria kuin kaggle, mutta ne ansaitsevat ehdottomasti huomion.

Large Hadron Collider ja Odnoklassniki

Henkilökohtaisesti en pidä kagglesta liikaa useista syistä:

  • Ensinnäkin kilpailut siellä kestävät usein useita kuukausia, ja aktiivinen osallistuminen vaatii paljon vaivaa;
  • toiseksi julkiset ytimet (julkiset ratkaisut). Kagglen kannattajat neuvovat kohtelemaan heitä tiibetiläisten munkkien rauhallisesti, mutta todellisuudessa on todella sääli, kun jokin, jonka eteen olet työskennellyt kuukauden tai kaksi, yhtäkkiä osoittautuu kaikille hopeavadille asetettavaksi.

Onneksi koneoppimiskilpailuja järjestetään muilla alustoilla ja pari näistä kilpailuista tulee keskusteluun.

IDAO SNA Hackathon 2019
Virallinen kieli: englanti,
järjestäjät: Yandex, Sberbank, HSE
Virallinen venäjän kieli,
järjestäjät: Mail.ru Group
Online-kierros: 15.–11;
Finaali paikan päällä: 4.-6
verkossa - 7. helmikuuta - 15. maaliskuuta;
offline-tilassa – 30. maaliskuuta – 1. huhtikuuta.
Käyttämällä tiettyä tietojoukkoa suuressa hadronitörmäyttimessä olevasta hiukkasesta (rata, liikemäärä ja muut melko monimutkaiset fysikaaliset parametrit) määritä, onko se myoni vai ei
Tästä lausunnosta tunnistettiin 2 tehtävää:
- yhdessä sinun piti vain lähettää ennustuksesi,
- ja toisessa - täydellinen koodi ja malli ennustamista varten, ja suoritus oli melko tiukkojen ajoajan ja muistin käytön rajoitusten alainen
SNA Hackathon -kilpailua varten kerättiin lokit käyttäjien uutissyötteiden avoimien ryhmien sisältönäytöistä helmi-maaliskuulta 2018. Testisarja sisältää maaliskuun viimeisen puolitoista viikon. Jokainen lokin merkintä sisältää tietoa siitä, mitä näytettiin ja kenelle, sekä kuinka käyttäjä reagoi tähän sisältöön: arvioi sen, kommentoi, jätti sen huomiotta tai piilotti sen syötteestä.
SNA Hackathonin tehtävien ydin on luokitella jokainen sosiaalisen verkoston Odnoklassniki käyttäjä syötteensä ja nostaa mahdollisimman korkealle ne viestit, jotka saavat "luokan".
Verkkovaiheessa tehtävä jaettiin kolmeen osaan:
1. Sijoita virat eri yhteistyöominaisuuksien mukaan
2. Sijoita viestit niiden sisältämien kuvien perusteella
3. rankaise virat niiden sisältämän tekstin mukaan
Monimutkainen mukautettu mittari, kuten ROC-AUC Keskimääräinen ROC-AUC käyttäjän mukaan
Ensimmäisen vaiheen palkinnot - T-paidat N sijalle, pääsy toiseen vaiheeseen, jossa majoitus ja ruokailut maksettiin kilpailun aikana
Toinen vaihe - ??? (Tietyistä syistä en ollut läsnä palkintojenjakotilaisuudessa, enkä voinut saada selville, mitä palkintoja lopulta oli). He lupasivat kannettavat tietokoneet kaikille voittajatiimin jäsenille
Ensimmäisen vaiheen palkinnot - T-paidat 100 parhaalle osallistujalle, pääsy toiseen vaiheeseen, jossa maksettiin matka Moskovaan, majoitus ja ruokailut kilpailun aikana. Lisäksi ensimmäisen vaiheen loppupuolella jaettiin palkinnot 3:n tehtävän parhaille vaiheessa 1: jokainen voitti RTX 2080 TI -näytönohjaimen!
Toinen vaihe oli joukkuevaihe, 2-5 hengen joukkueet, palkinnot:
1. sija - 300 000 ruplaa
2. sija - 200 000 ruplaa
3. sija - 100 000 ruplaa
tuomariston palkinto - 100 000 ruplaa
Virallinen sähkeryhmä, ~190 osallistujaa, kommunikointi englanniksi, kysymyksiin jouduttiin odottamaan vastausta useita päiviä Virallinen ryhmä sähkeessä, ~1500 osallistujaa, aktiivinen keskustelu tehtävistä osallistujien ja järjestäjien välillä
Järjestäjät tarjosivat kaksi perusratkaisua, yksinkertaisen ja edistyneen. Yksinkertainen vaati alle 16 Gt RAM-muistia, ja edistynyt muisti ei mahtunut 16:een. Samaan aikaan, kun katsot hieman eteenpäin, osallistujat eivät pystyneet merkittävästi ylittämään edistynyttä ratkaisua. Näiden ratkaisujen käynnistäminen ei aiheuttanut vaikeuksia. On huomattava, että edistyneessä esimerkissä oli kommentti, jossa oli vihje siitä, mistä aloittaa ratkaisun parantaminen. Jokaiseen tehtävään tarjottiin primitiivisiä perusratkaisuja, jotka osallistujat ylittivät helposti. Kilpailun alkuaikoina osallistujat kohtasivat useita vaikeuksia: ensinnäkin tiedot annettiin Apache Parquet -muodossa, eivätkä kaikki Pythonin ja parkettipaketin yhdistelmät toimineet virheettömästi. Toinen vaikeus oli kuvien lataaminen sähköpostipilvestä, tällä hetkellä ei ole helppoa tapaa ladata suuria määriä dataa kerralla. Tämän seurauksena nämä ongelmat viivästyttivät osallistujia parilla päivällä.

IDAO. Ensimmäinen taso

Tehtävänä oli luokitella myon/ei-muonihiukkaset niiden ominaisuuksien mukaan. Tämän tehtävän keskeinen piirre oli painosarakkeen läsnäolo harjoitustiedoissa, jonka järjestäjät itse tulkitsivat luottamukseksi tämän rivin vastaukseen. Ongelmana oli, että melko monet rivit sisälsivät negatiivisia painoja.

Large Hadron Collider ja Odnoklassniki

Pohdittuamme muutaman minuutin vihjeen sisältävää viivaa (vihje vain kiinnitti huomion tähän painosarakkeen ominaisuuteen) ja luotuamme tämän kaavion, päätimme tarkistaa kolme vaihtoehtoa:

1) käännä negatiivisten linjojen kohde (ja painotukset vastaavasti)
2) siirrä painot minimiarvoon niin, että ne alkavat nollasta
3) älä käytä narupainoja

Kolmas vaihtoehto osoittautui huonoimmaksi, mutta kaksi ensimmäistä paransivat tulosta, paras oli vaihtoehto nro 1, joka toi meidät heti ensimmäisessä tehtävässä toiseksi ja toisessa ensimmäiselle.
Large Hadron Collider ja Odnoklassniki
Seuraava askel oli tarkistaa tiedot puuttuvien arvojen varalta. Järjestäjät antoivat meille jo kammattua dataa, josta puuttui melkoisesti arvoja ja ne korvattiin -9999:lla.

Löysimme puuttuvia arvoja MatchedHit_{X,Y,Z}[N]- ja MatchedHit_D{X,Y,Z}[N]-sarakkeista ja vain kun N=2 tai 3. Kuten ymmärrämme, jotkin hiukkaset eivät ohittaa kaikki 4 ilmaisinta ja pysähtyy joko 3. tai 4. levylle. Data sisälsi myös Lextra_{X,Y}[N] sarakkeita, jotka ilmeisesti kuvaavat samaa kuin MatchedHit_{X,Y,Z}[N], mutta käyttämällä jonkinlaista ekstrapolaatiota. Nämä niukat arvaukset viittasivat siihen, että Lextra_{X,Y}[N] voitaisiin korvata MatchedHit_{X,Y,Z}[N]:n puuttuvat arvot (vain X- ja Y-koordinaateille). MatchedHit_Z[N] oli hyvin täytetty mediaanilla. Näiden manipulaatioiden ansiosta pääsimme molemmissa tehtävissä ykkössijalle.

Large Hadron Collider ja Odnoklassniki

Ottaen huomioon, että he eivät antaneet mitään ensimmäisen vaiheen voitosta, olisimme voineet pysähtyä tähän, mutta jatkoimme, piirsimme kauniita kuvia ja keksimme uusia ominaisuuksia.

Large Hadron Collider ja Odnoklassniki

Havaitsimme esimerkiksi, että jos piirrämme hiukkasen leikkauspisteet kunkin neljän ilmaisinlevyn kanssa, voimme nähdä, että kunkin levyn pisteet on ryhmitelty viiteen suorakulmioon, joiden kuvasuhde on 5:4 ja keskipisteenä piste (5), ja in Ensimmäisessä suorakulmiossa ei ole pisteitä.

Kilven nro / suorakulmion mitat 1 2 3 4 5
Levy 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Levy 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Levy 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Levy 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Kun olet määrittänyt nämä mitat, lisäsimme 4 uutta kategorista ominaisuutta jokaiselle hiukkaselle - sen suorakulmion numeron, jossa se leikkaa jokaisen levyn.

Large Hadron Collider ja Odnoklassniki

Huomasimme myös, että hiukkaset näyttivät leviävän sivuille keskeltä ja syntyi ajatus jollakin tavalla arvioida tämän sironnan "laatua". Ihannetapauksessa olisi luultavasti mahdollista keksiä jonkinlainen "ihanteellinen" paraabeli riippuen lentoonlähdöstä ja arvioida poikkeama siitä, mutta rajoittuimme "ideaaliseen" suoraan. Kun olemme rakentaneet tällaiset ihanteelliset suorat kullekin tulopisteelle, pystyimme laskemaan kunkin hiukkasen liikeradan keskihajonnan tästä suorasta. Koska keskimääräinen poikkeama tavoite = 1 oli 152 ja tavoite = 0 se oli 390, arvioimme tämän ominaisuuden alustavasti hyväksi. Ja todellakin, tämä ominaisuus pääsi välittömästi hyödyllisimpien joukossa.

Olimme iloisia ja lisäsimme jokaisen hiukkasen kaikkien 4 leikkauspisteen poikkeaman ihanteellisesta suorasta 4 lisäominaisuudena (ja ne myös toimivat hyvin).

Järjestäjien meille antamat linkit kilpailua käsitteleviin tieteellisiin artikkeleihin saivat aikaan ajatuksen, että emme ole kaukana ensimmäisistä, jotka ratkaisivat tämän ongelman, ja ehkä on olemassa jonkinlainen erikoisohjelmisto. Kun löysimme githubista arkiston, jossa menetelmät IsMuonSimple, IsMuon, IsMuonLoose toteutettiin, siirsimme ne sivuillemme pienin muutoksin. Itse menetelmät olivat hyvin yksinkertaisia: esimerkiksi jos energia on pienempi kuin tietty kynnys, se ei ole myoni, muuten se on myoni. Tällaiset yksinkertaiset ominaisuudet eivät tietenkään pystyneet lisäämään gradienttitehostusta, joten lisäsimme kynnykseen toisen merkittävän "etäisyyden". Näitä ominaisuuksia on myös hieman paranneltu. Ehkä olemassa olevia menetelmiä perusteellisemmin analysoimalla oli mahdollista löytää vahvempia menetelmiä ja lisätä niitä merkkeihin.

Kilpailun päätteeksi muokkasimme hieman toisen ongelman ”nopeaa” ratkaisua, joka loppujen lopuksi erosi lähtötilanteesta seuraavissa kohdissa:

  1. Riveillä, joiden paino oli negatiivinen, kohde käännettiin ylösalaisin
  2. Täytetty puuttuvat arvot MatchedHit_{X,Y,Z}[N]
  3. Pienennetty syvyys 7
  4. Alennettu oppimisaste 0.1:een (oli 0.19)

Tämän seurauksena kokeilimme lisää ominaisuuksia (ei kovin onnistuneesti), valitsimme parametreja ja harjoittelimme catboostia, lightgbm:ää ja xgboostia, kokeilimme erilaisia ​​ennusteiden sekoituksia ja ennen yksityisen avaamista voitimme luottavaisesti toisessa tehtävässä, ja ensimmäisessä olimme joukossa johtajia.

Yksityisen avaamisen jälkeen olimme 10. sijalla ensimmäisessä tehtävässä ja 1. sijalla toisessa. Kaikki johtajat menivät sekaisin, ja yksityisessä vauhti oli suurempi kuin libboardissa. Näyttää siltä, ​​että tiedot olivat huonosti ositettuja (tai esimerkiksi yksityisessä ei ollut negatiivisia painoja sisältäviä rivejä) ja tämä oli hieman turhauttavaa.

SNA Hackathon 2019 - Tekstit. Ensimmäinen taso

Tehtävänä oli asettaa Odnoklassniki-sosiaalisen verkoston käyttäjien julkaisut paremmuusjärjestykseen niiden sisältämän tekstin perusteella; tekstin lisäksi julkaisussa oli muutamia muita ominaisuuksia (kieli, omistaja, luomispäivämäärä ja -aika, katselupäivämäärä ja -aika) ).

Klassisina lähestymistavoina tekstin kanssa työskentelemiseen korostan kahta vaihtoehtoa:

  1. Jokaisen sanan yhdistäminen n-ulotteiseen vektoriavaruuteen siten, että samanlaisilla sanoilla on samanlaiset vektorit (lue lisää kohdasta artikkelimme), sitten joko etsimällä tekstin keskimääräinen sana tai käyttämällä mekanismeja, jotka ottavat huomioon sanojen suhteellisen sijainnin (CNN, LSTM/GRU).
  2. Käyttää malleja, jotka voivat toimia välittömästi kokonaisten lauseiden kanssa. Esimerkiksi Bert. Teoriassa tämän lähestymistavan pitäisi toimia paremmin.

Koska tämä oli ensimmäinen kokemukseni teksteistä, olisi väärin opettaa jotakuta, joten opetan itse. Nämä ovat vinkit, jotka annan itselleni kilpailun alussa:

  1. Ennen kuin juokset opettamaan jotain, katso dataa! Itse tekstin lisäksi tiedoissa oli useita sarakkeita ja niistä oli mahdollista puristaa paljon enemmän irti kuin minä. Yksinkertaisin asia on tehdä joidenkin sarakkeiden kohdekoodaus.
  2. Älä opi kaikesta tiedosta! Dataa oli paljon (noin 17 miljoonaa riviä), eikä niitä kaikkia tarvinnut käyttää hypoteesien testaamiseen. Harjoittelu ja esikäsittely olivat melko hidasta, ja minulla olisi ilmeisesti ollut aikaa testata mielenkiintoisempia hypoteeseja.
  3. <Kiistanalainen neuvo> Ei tarvitse etsiä tappajamallia. Selvitin Elmoa ja Bertiä pitkään, toivoen, että he vievät minut heti korkealle, ja sen seurauksena käytin FastTextillä esiopetettuja venäjän kielen upotuksia. En voinut saavuttaa parempaa nopeutta Elmon kanssa, enkä vieläkään ehtinyt selvittää sitä Bertin kanssa.
  4. <Kiistanalainen neuvo> Ei tarvitse etsiä yhtä tappavaa ominaisuutta. Tietoja tarkastellessani huomasin, että noin 1 prosentti teksteistä ei sisällä tekstiä! Mutta siellä oli linkkejä joihinkin resursseihin, ja kirjoitin yksinkertaisen jäsentimen, joka avasi sivuston ja otti otsikon ja kuvauksen. Se vaikutti hyvältä ajatukselta, mutta sitten innostuin ja päätin jäsentää kaikki linkit kaikkiin teksteihin ja menetin taas paljon aikaa. Kaikki tämä ei tuonut merkittävää parannusta lopputulokseen (vaikka keksin esimerkiksi stemmingin).
  5. Klassiset ominaisuudet toimivat. Google esimerkiksi "teksti ominaisuuksia kaggle", lue ja lisää kaiken. TF-IDF tarjosi parannusta, samoin kuin tilastolliset ominaisuudet, kuten tekstin pituus, sanat ja välimerkkien määrä.
  6. Jos DateTime-sarakkeita on, kannattaa ne jäsentää useiksi erillisiksi ominaisuuksiksi (tunnit, viikonpäivät jne.). Mitä ominaisuuksia tulisi korostaa, kannattaa analysoida kaavioiden/joidenkin mittareiden avulla. Täällä tein mielijohteesta kaiken oikein ja korostin tarvittavat ominaisuudet, mutta normaali analyysi ei olisi haitannut (esimerkiksi kuten teimme finaalissa).

Large Hadron Collider ja Odnoklassniki

Kilpailun tuloksena harjoittelin yhden keras-mallin sanakäänteellä ja toisen LSTM- ja GRU-pohjaisen. Molemmat käyttivät valmiiksi koulutettuja FastText-upotuksia venäjän kielelle (yritin useita muita upotuksia, mutta nämä toimivat parhaiten). Ennusteiden keskiarvon jälkeen sijoitin 7 osallistujan joukosta 76. sijan.

Ensimmäisen vaiheen jälkeen se julkaistiin Nikolai Anokhinin artikkeli, joka sijoittui toiseksi (hän ​​osallistui kilpailun ulkopuolella), ja hänen ratkaisunsa johonkin vaiheeseen asti toisti minun, mutta hän meni pidemmälle kysely-avain-arvo huomiomekanismin ansiosta.

Toinen vaihe OK & IDAO

Kilpailujen toiset vaiheet pelattiin lähes peräkkäin, joten päätin katsoa niitä yhdessä.

Ensin minä ja vastikään hankittu tiimi päädyimme Mail.ru-yrityksen vaikuttavaan toimistoon, jossa tehtävämme oli yhdistää kolmen kappaleen mallit ensimmäisestä vaiheesta - teksti, kuvat ja yhteistyö. Tähän oli varattu hieman yli 2 päivää, mikä osoittautui erittäin vähäiseksi. Itse asiassa pystyimme toistamaan tuloksemme vain ensimmäisestä vaiheesta saamatta yhtään voittoa sulautumisesta. Lopulta saimme 5. sijan, mutta emme päässeet käyttämään tekstimallia. Muiden osallistujien ratkaisuja tarkasteltuna vaikutti siltä, ​​että tekstit kannatti ryhmitellä ja lisätä ne yhteistyömalliin. Tämän vaiheen sivuvaikutuksena olivat uudet vaikutelmat, kohtaaminen ja kommunikointi siistien osallistujien ja järjestäjien kanssa sekä vakava unenpuute, joka saattoi vaikuttaa IDAO:n viimeisen vaiheen tulokseen.

IDAO 2019 -finaalivaiheen tehtävänä oli ennustaa Yandex-taksinkuljettajien tilauksen odotusaika lentokentällä. Vaiheessa 2 tunnistettiin 3 tehtävää = 3 lentokenttää. Jokaiselta lentoasemalta annetaan minuuttikohtaiset tiedot taksitilausten määrästä kuuden kuukauden ajalta. Ja testitietoina annettiin seuraavan kuukauden ja minuuttikohtaiset tiedot viimeisten 2 viikon tilauksista. Aikaa oli vähän (1,5 vuorokautta), tehtävä oli varsin spesifinen, kilpailuun tuli vain yksi henkilö joukkueesta - ja loppua kohden se oli surullinen paikka. Mielenkiintoisiin ideoihin sisältyi yrityksiä käyttää ulkoisia tietoja: sää, liikenneruuhkat ja Yandexin taksitilaustilastot. Vaikka järjestäjät eivät kertoneet, mitä nämä lentokentät olivat, monet osallistujat olettivat niiden olevan Sheremetyevo, Domodedovo ja Vnukovo. Vaikka tämä oletus kumottiin kilpailun jälkeen, esimerkiksi Moskovan säätiedoista saadut ominaisuudet paransivat tuloksia sekä validoinnissa että tulostaulukossa.

Johtopäätös

  1. ML-kilpailut ovat siistejä ja mielenkiintoisia! Täältä löydät taitojen käyttöä data-analyysissä ja ovelissa malleissa ja tekniikoissa, ja pelkkä maalaisjärki on tervetullutta.
  2. ML on jo valtava tietojoukko, joka näyttää kasvavan eksponentiaalisesti. Asetin itselleni tavoitteeksi tutustua eri osa-alueisiin (signaalit, kuvat, taulukot, teksti) ja tajusin jo kuinka paljon opittavaa on. Esimerkiksi näiden kilpailujen jälkeen päätin opiskella: klusterointialgoritmeja, edistyneitä tekniikoita työskentelyyn gradienttia tehostavien kirjastojen kanssa (erityisesti CatBoostin kanssa GPU:ssa), kapseliverkkoja, kysely-avain-arvo huomiomekanismia.
  3. Ei yksin kaggleilla! On monia muita kilpailuja, joissa on helpompi saada ainakin T-paita, ja muita palkintoja on enemmän.
  4. Kommunikoi! Koneoppimisen ja data-analyysin alalla on jo laaja yhteisö, sähkeissä on temaattisia ryhmiä, slack ja vakavat ihmiset Mail.ru:sta, Yandexistä ja muista yrityksistä vastaavat kysymyksiin ja auttavat aloittelijoita ja polkuaan tällä alalla jatkavia. tiedosta.
  5. Suosittelen kaikkia edellisestä pisteestä inspiroituneita käymään datafest — suuri ilmainen konferenssi Moskovassa, joka pidetään 10.-11. toukokuuta.

Lähde: will.com

Lisää kommentti