Përplasësi i madh Hadron dhe Odnoklassniki

Duke vazhduar temën e konkurseve të mësimit të makinerive në Habré, ne dëshirojmë t'i prezantojmë lexuesit me dy platforma të tjera. Ata sigurisht që nuk janë aq të mëdhenj sa kaggle, por ata patjetër meritojnë vëmendje.

Përplasësi i madh Hadron dhe Odnoklassniki

Personalisht, nuk më pëlqen shumë kaggle për disa arsye:

  • së pari, garat atje shpesh zgjasin disa muaj dhe pjesëmarrja aktive kërkon shumë përpjekje;
  • së dyti, bërthamat publike (zgjidhjet publike). Adhuruesit e Kaggle këshillojnë t'i trajtoni me qetësinë e murgjve tibetianë, por në realitet është shumë turp kur diçka për të cilën keni punuar për një ose dy muaj, befas del se është e shtruar në një pjatë argjendi për të gjithë.

Për fat të mirë, konkurset e mësimit të makinerive mbahen në platforma të tjera dhe do të diskutohen disa nga këto gara.

IDAO SNA Hackathon 2019
Gjuha zyrtare: Anglisht,
organizatorët: Yandex, Sberbank, HSE
Gjuha zyrtare ruse,
organizatorët: Mail.ru Group
Raundi Online: 15 janar - 11 shkurt 2019;
Finalja në vend: 4-6 prill 2019
online - nga 7 shkurt deri më 15 mars;
offline - nga 30 mars deri më 1 prill.
Duke përdorur një grup të caktuar të dhënash për një grimcë në përplasësin e madh të Hadronit (trajektorja, momenti dhe parametra të tjerë fizikë mjaft kompleksë), përcaktoni nëse është një muon apo jo
Nga kjo deklaratë, u identifikuan 2 detyra:
- në një ju thjesht duhet të dërgoni parashikimin tuaj,
- dhe në anën tjetër - kodi dhe modeli i plotë për parashikimin, dhe ekzekutimi iu nënshtrua kufizimeve mjaft të rrepta në kohën e funksionimit dhe përdorimin e kujtesës
Për konkursin SNA Hackathon, u mblodhën regjistrat e shfaqjeve të përmbajtjes nga grupet e hapura në burimet e lajmeve të përdoruesve për shkurt-mars 2018. Seti testues përmban javën e fundit e gjysmë të marsit. Çdo hyrje në regjistër përmban informacion në lidhje me atë që u shfaq dhe kujt, si dhe se si përdoruesi reagoi ndaj kësaj përmbajtjeje: e vlerësoi atë, komentoi, e injoroi ose e fshehu atë nga furnizimi.
Thelbi i detyrave të SNA Hackathon është të renditë çdo përdorues të rrjetit social Odnoklassniki burimin e tij, duke ngritur sa më lart ato postime që do të marrin një "klasë".
Në fazën online, detyra u nda në 3 pjesë:
1. rendit postet sipas karakteristikave të ndryshme të bashkëpunimit
2. renditni postimet në bazë të imazheve që ato përmbajnë
3. rendit postimet sipas tekstit që përmbajnë
Metrikë komplekse me porosi, diçka si ROC-AUC ROC-AUC mesatare sipas përdoruesit
Çmimet për fazën e parë - bluza për N vende, kalimi në fazën e dytë, ku u pagua akomodimi dhe ushqimi gjatë konkursit.
Faza e dytë - ??? (Për disa arsye, nuk isha i pranishëm në ceremoninë e ndarjes së çmimeve dhe nuk munda të zbuloja se cilat ishin çmimet në fund). Ata u premtuan laptopë të gjithë anëtarëve të ekipit fitues
Çmimet për fazën e parë - bluza për 100 pjesëmarrësit më të mirë, kalimi në fazën e dytë, ku u paguan udhëtimi për në Moskë, akomodimi dhe ushqimi gjatë konkursit. Gjithashtu, në fund të fazës së parë, u shpallën çmime për më të mirët në 3 detyra në fazën 1: të gjithë fituan një kartë video RTX 2080 TI!
Faza e dytë ishte një fazë ekipore, ekipet përbëheshin nga 2 deri në 5 persona, çmimet:
Vendi i parë - 1 rubla
Vendi i parë - 2 rubla
Vendi i parë - 3 rubla
çmimi i jurisë - 100 rubla
Grupi zyrtar i telegramit, ~190 pjesëmarrës, komunikimi në anglisht, pyetjet duhej të prisnin disa ditë për një përgjigje Grupi zyrtar në telegram, ~1500 pjesëmarrës, diskutim aktiv i detyrave ndërmjet pjesëmarrësve dhe organizatorëve
Organizatorët dhanë dy zgjidhje bazë, të thjeshta dhe të avancuara. Simple kërkon më pak se 16 GB RAM dhe memoria e avancuar nuk përshtatej në 16. Në të njëjtën kohë, duke parë pak përpara, pjesëmarrësit nuk ishin në gjendje të tejkalonin ndjeshëm zgjidhjen e avancuar. Nuk ka pasur vështirësi në lançimin e këtyre zgjidhjeve. Duhet të theksohet se në shembullin e avancuar kishte një koment me një aluzion se ku të filloni të përmirësoni zgjidhjen. Për secilën nga detyrat u dhanë zgjidhje primitive bazë, të cilat u tejkaluan lehtësisht nga pjesëmarrësit. Në ditët e para të konkursit, pjesëmarrësit hasën disa vështirësi: së pari, të dhënat u dhanë në formatin Apache Parket, dhe jo të gjitha kombinimet e Python dhe paketës së parketit funksionuan pa gabime. Vështirësia e dytë ishte shkarkimi i fotografive nga reja e postës; për momentin nuk ka asnjë mënyrë të lehtë për të shkarkuar një sasi të madhe të dhënash menjëherë. Si rezultat, këto probleme i vonuan pjesëmarrësit për disa ditë.

IDAO. Faza e parë

Detyra ishte klasifikimi i grimcave muon/jo-muon sipas karakteristikave të tyre. Karakteristika kryesore e kësaj detyre ishte prania e një kolone peshe në të dhënat e stërvitjes, të cilën vetë organizatorët e interpretuan si besim në përgjigjen për këtë linjë. Problemi ishte se mjaft rreshta përmbanin pesha negative.

Përplasësi i madh Hadron dhe Odnoklassniki

Pasi menduam për disa minuta për vijën me aluzion (indikimi thjesht tërhoqi vëmendjen te kjo veçori e kolonës së peshës) dhe ndërtuam këtë grafik, vendosëm të kontrollojmë 3 opsione:

1) përmbys objektivin e linjave me pesha negative (dhe peshat në përputhje me rrethanat)
2) zhvendosni peshat në vlerën minimale në mënyrë që ato të fillojnë nga 0
3) mos përdorni peshat e vargjeve

Opsioni i tretë rezultoi më i keqi, por dy të parët përmirësonin rezultatin, më i miri ishte opsioni nr. 1, i cili na çoi menjëherë në vendin e dytë aktual në detyrën e parë dhe të parën në të dytën.
Përplasësi i madh Hadron dhe Odnoklassniki
Hapi ynë i ardhshëm ishte rishikimi i të dhënave për vlerat që mungojnë. Organizatorët na dhanë të dhëna tashmë të krehura, ku mungonin mjaft vlera dhe ato u zëvendësuan me -9999.

Ne gjetëm vlera që mungojnë në kolonat MatchedHit_{X,Y,Z}[N] dhe MatchedHit_D{X,Y,Z}[N] dhe vetëm kur N=2 ose 3. Siç e kuptojmë, disa grimca nuk kaloni të 4 detektorët dhe ndaloi ose në pllakën e tretë ose të 3-të. Të dhënat përmbanin gjithashtu kolona Lextra_{X,Y}[N], të cilat me sa duket përshkruajnë të njëjtën gjë si MatchedHit_{X,Y,Z}[N], por duke përdorur një lloj ekstrapolimi. Këto supozime të pakta sugjeruan që Lextra_{X,Y}[N] mund të zëvendësohej për vlerat që mungojnë në MatchedHit_{X,Y,Z}[N] (vetëm për koordinatat X dhe Y). MatchedHit_Z[N] ishte e mbushur mirë me mesataren. Këto manipulime na lejuan të arrijmë vendin e parë të ndërmjetëm në të dyja detyrat.

Përplasësi i madh Hadron dhe Odnoklassniki

Duke pasur parasysh se ata nuk dhanë asgjë për të fituar fazën e parë, ne mund të ndaleshim me kaq, por vazhduam, bëmë disa foto të bukura dhe dolëm me karakteristika të reja.

Përplasësi i madh Hadron dhe Odnoklassniki

Për shembull, zbuluam se nëse vizatojmë pikat e kryqëzimit të një grimce me secilën nga katër pllakat e detektorit, mund të shohim se pikat në secilën prej pllakave janë grupuar në 5 drejtkëndësha me një raport pamjeje 4 deri në 5 dhe të përqendruara në pika (0,0), dhe në Nuk ka pikë në drejtkëndëshin e parë.

Nr pllakë / dimensionet drejtkëndësh 1 2 3 4 5
Pllaka 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Pllaka 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Pllaka 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Pllaka 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Pasi përcaktuam këto dimensione, shtuam 4 veçori të reja kategorike për secilën grimcë - numrin e drejtkëndëshit në të cilin kryqëzon secilën pllakë.

Përplasësi i madh Hadron dhe Odnoklassniki

Ne vumë re gjithashtu se grimcat dukej se shpërndaheshin anash nga qendra dhe lindi ideja për të vlerësuar disi "cilësinë" e kësaj shpërndarjeje. Në mënyrë ideale, ndoshta do të ishte e mundur të dilnim me një lloj parabole "ideale" në varësi të pikës së ngritjes dhe të vlerësojmë devijimin prej saj, por ne e kufizuam veten në vijën e drejtë "ideale". Duke ndërtuar vija të tilla ideale të drejta për çdo pikë hyrjeje, ne ishim në gjendje të llogarisnim devijimin standard të trajektores së secilës grimcë nga kjo vijë e drejtë. Meqenëse devijimi mesatar për objektivin = 1 ishte 152, dhe për objektivin = 0 ishte 390, ne e vlerësuam paraprakisht këtë veçori si të mirë. Dhe me të vërtetë, kjo veçori u ngjit menjëherë në krye të atyre më të dobishmeve.

Ne u kënaqëm dhe shtuam devijimin e të 4 pikave të kryqëzimit për secilën grimcë nga vija e drejtë ideale si 4 veçori shtesë (dhe ato gjithashtu funksionuan mirë).

Lidhjet me artikujt shkencorë mbi temën e konkursit, të dhëna nga organizatorët, nxitën idenë se ne jemi larg nga të parët për të zgjidhur këtë problem dhe, ndoshta, ekziston një lloj softueri i specializuar. Pasi zbuluam një depo në github ku u zbatuan metodat IsMuonSimple, IsMuon, IsMuonLoose, ne i transferuam ato në faqen tonë me modifikime të vogla. Vetë metodat ishin shumë të thjeshta: për shembull, nëse energjia është më pak se një prag i caktuar, atëherë nuk është një muon, përndryshe është një muon. Karakteristika të tilla të thjeshta padyshim që nuk mund të jepnin një rritje në rastin e përdorimit të rritjes së gradientit, kështu që ne shtuam një "distancë" tjetër të rëndësishme në prag. Këto karakteristika janë përmirësuar gjithashtu pak. Ndoshta, duke analizuar më hollësisht metodat ekzistuese, ishte e mundur të gjenin metoda më të forta dhe t'i shtonin ato në shenja.

Në fund të konkursit, ne shkulëm pak zgjidhjen "e shpejtë" për problemin e dytë; në fund, ajo ndryshoi nga vija bazë në pikat e mëposhtme:

  1. Në rreshtat me peshë negative objektivi ishte i përmbysur
  2. Plotësohen vlerat që mungojnë në MatchedHit_{X,Y,Z}[N]
  3. Thellësia e reduktuar në 7
  4. Shkalla e të mësuarit e reduktuar në 0.1 (ishte 0.19)

Si rezultat, ne provuam më shumë veçori (jo shumë me sukses), parametra të zgjedhur dhe trajnuar catboost, lightgbm dhe xgboost, provuam përzierje të ndryshme parashikimesh dhe përpara se të hapnim privatin fituam me besim në detyrën e dytë dhe në të parën ishim ndër udhëheqësit.

Pas hapjes së privatit ishim në vendin e 10-të për detyrën e parë dhe të 1-tin për të dytën. Të gjithë drejtuesit u ngatërruan dhe shpejtësia në privat ishte më e lartë se në tabelë. Duket se të dhënat ishin të shtresuara dobët (ose për shembull nuk kishte rreshta me peshë negative në privat) dhe kjo ishte pak zhgënjyese.

SNA Hackathon 2019 - Tekste. Faza e parë

Detyra ishte të renditeshin postimet e përdoruesve në rrjetin social Odnoklassniki bazuar në tekstin që përmbanin; përveç tekstit, kishte edhe disa karakteristika të tjera të postimit (gjuha, pronari, data dhe ora e krijimit, data dhe ora e shikimit ).

Si qasje klasike për të punuar me tekst, unë do të theksoja dy opsione:

  1. Harta e secilës fjalë në një hapësirë ​​vektoriale n-dimensionale në mënyrë që fjalët e ngjashme të kenë vektorë të ngjashëm (lexoni më shumë në artikullin tonë), pastaj ose gjetja e fjalës mesatare për tekstin ose përdorimi i mekanizmave që marrin parasysh pozicionin relativ të fjalëve (CNN, LSTM/GRU).
  2. Përdorimi i modeleve që mund të punojnë menjëherë me fjali të tëra. Për shembull, Berti. Në teori, kjo qasje duhet të funksionojë më mirë.

Duke qenë se kjo ishte përvoja ime e parë me tekste, do të ishte gabim të mësoja dikë, ndaj do të mësoja vetë. Këto janë këshillat që do t'i jepja vetes në fillim të konkursit:

  1. Para se të vraponi për të mësuar diçka, shikoni të dhënat! Përveç vetë tekstit, të dhënat kishin disa kolona dhe ishte e mundur të nxirreshin shumë më tepër prej tyre sesa unë. Gjëja më e thjeshtë është të bëni kodimin e synuar për disa nga kolonat.
  2. Mos mësoni nga të gjitha të dhënat! Kishte shumë të dhëna (rreth 17 milion rreshta) dhe nuk ishte absolutisht e nevojshme të përdoreshin të gjitha për të testuar hipotezat. Trajnimi dhe përpunimi paraprak ishin mjaft të ngadalta, dhe padyshim që do të kisha kohë të testoja hipoteza më interesante.
  3. <Këshilla e diskutueshme> Nuk ka nevojë të kërkoni një model vrasës. Kalova një kohë të gjatë duke gjetur Elmo dhe Bert, duke shpresuar se ata do të më çonin menjëherë në një vend të lartë, dhe si rezultat përdora ngulitje të para-trajnuara FastText për gjuhën ruse. Nuk mund të arrija shpejtësi më të mirë me Elmon dhe nuk pata ende kohë ta kuptoja me Bertin.
  4. <Këshilla e diskutueshme> Nuk ka nevojë të kërkoni një veçori vrasëse. Duke parë të dhënat, vura re se rreth 1 për qind e teksteve në fakt nuk përmbajnë tekst! Por kishte lidhje me disa burime, dhe unë shkrova një analizues të thjeshtë që hapi faqen dhe nxori titullin dhe përshkrimin. Më dukej një ide e mirë, por më pas u largova dhe vendosa të analizoj të gjitha lidhjet për të gjitha tekstet dhe përsëri humba shumë kohë. E gjithë kjo nuk siguroi një përmirësim të konsiderueshëm në rezultatin përfundimtar (edhe pse e kuptova që rrjedhin, për shembull).
  5. Karakteristikat klasike funksionojnë. Ne Google, për shembull, "karakteristikat e tekstit kaggle", lexojmë dhe shtojmë gjithçka. TF-IDF ofroi një përmirësim, siç bënë veçoritë statistikore si gjatësia e tekstit, fjalët dhe sasia e shenjave të pikësimit.
  6. Nëse ka kolona DateTime, ia vlen t'i analizoni ato në disa veçori të veçanta (orë, ditë të javës, etj.). Cilat veçori duhet të theksohen duhet të analizohen duke përdorur grafikët/disa metrikë. Këtu, për një tekë, bëra gjithçka në mënyrë korrekte dhe theksova tiparet e nevojshme, por një analizë normale nuk do të dëmtonte (për shembull, siç bëmë në finale).

Përplasësi i madh Hadron dhe Odnoklassniki

Si rezultat i konkursit, kam trajnuar një model keras me përmbysje fjalësh dhe një tjetër të bazuar në LSTM dhe GRU. Të dy përdorën ngulitje të FastText të para-trajnuara për gjuhën ruse (provova një sërë ngulitjesh të tjera, por këto ishin ato që funksionuan më mirë). Pas mesatares së parashikimeve, unë zura vendin e 7-të të fundit nga 76 pjesëmarrës.

Pas fazës së parë u botua artikull nga Nikolai Anokhin, i cili zuri vendin e dytë (ai mori pjesë jashtë konkurrencës), dhe zgjidhja e tij deri në një fazë përsëriti timen, por ai shkoi më tej për shkak të mekanizmit të vëmendjes query-key-value.

Faza e dytë OK & IDAO

Fazat e dyta të garave u zhvilluan pothuajse radhazi, kështu që vendosa t'i shikojmë së bashku.

Së pari, unë dhe ekipi i sapo fituar përfunduam në zyrën mbresëlënëse të kompanisë Mail.ru, ku detyra jonë ishte të kombinonim modelet e tre pistave nga faza e parë - teksti, fotografitë dhe bashkëpunimi. Për këtë u ndanë pak më shumë se 2 ditë, të cilat doli të ishin shumë pak. Në fakt, ne ishim në gjendje të përsërisnim rezultatet tona vetëm nga faza e parë pa marrë asnjë përfitim nga bashkimi. Në fund zumë vendin e 5-të, por nuk mundëm të përdornim modelin e tekstit. Pas shikimit të zgjidhjeve të pjesëmarrësve të tjerë, duket se ia vlente të përpiqeshim për të grumbulluar tekstet dhe për t'i shtuar ato në modelin e bashkëpunimit. Një efekt anësor i kësaj faze ishin përshtypjet e reja, takimi dhe komunikimi me pjesëmarrësit dhe organizatorët e lezetshëm, si dhe mungesa e madhe e gjumit, e cila mund të ketë ndikuar në rezultatin e fazës finale të IDAO.

Detyra në fazën përfundimtare të IDAO 2019 ishte të parashikonte kohën e pritjes për një porosi për shoferët e taksive Yandex në aeroport. Në fazën 2, u identifikuan 3 detyra = 3 aeroporte. Për çdo aeroport jepen të dhëna minutë pas minutë për numrin e porosive taksi për gjashtë muaj. Dhe si të dhëna testimi, u dhanë të dhënat e muajit të ardhshëm dhe minutë pas minutë për porositë për 2 javët e fundit. Kishte pak kohë (1,5 ditë), detyra ishte mjaft specifike, vetëm një person nga ekipi erdhi në konkurs - dhe si rezultat, ishte një vend i trishtuar drejt fundit. Idetë interesante përfshinin përpjekjet për të përdorur të dhëna të jashtme: motin, bllokimet e trafikut dhe statistikat e porosive të taksive Yandex. Edhe pse organizatorët nuk thanë se cilat ishin këto aeroporte, shumë pjesëmarrës supozuan se ata ishin Sheremetyevo, Domodedovo dhe Vnukovo. Edhe pse ky supozim u hodh poshtë pas konkursit, veçoritë, për shembull, nga të dhënat e motit në Moskë përmirësuan rezultatet si në vlerësim ashtu edhe në tabelën e drejtuesve.

Përfundim

  1. Garat ML janë të lezetshme dhe interesante! Këtu do të gjeni përdorimin e aftësive në analizën e të dhënave, dhe në modele dhe teknika dinake, dhe thjesht sensi i përbashkët është i mirëpritur.
  2. ML është tashmë një grup i madh njohurish që duket se po rritet në mënyrë eksponenciale. I vura vetes një synim për t'u njohur me fusha të ndryshme (sinjale, foto, tabela, tekst) dhe tashmë e kuptova se sa shumë ka për të studiuar. Për shembull, pas këtyre konkurseve vendosa të studioj: algoritmet e grupimit, teknikat e avancuara për të punuar me bibliotekat e rritjes së gradientit (në veçanti, duke punuar me CatBoost në GPU), rrjetet e kapsulave, mekanizmin e vëmendjes pyetje-kyç-vlerë.
  3. Jo vetëm me kapelë! Ka shumë gara të tjera ku është më e lehtë të marrësh të paktën një bluzë, dhe ka më shumë shanse për çmime të tjera.
  4. Komunikoni! Tashmë ekziston një komunitet i madh në fushën e mësimit të makinerive dhe analizës së të dhënave, ka grupe tematike në telegram, slack dhe njerëz seriozë nga Mail.ru, Yandex dhe kompani të tjera u përgjigjen pyetjeve dhe ndihmojnë fillestarët dhe ata që vazhdojnë rrugën e tyre në këtë fushë. të dijes.
  5. Unë këshilloj të gjithë ata që janë frymëzuar nga pika e mëparshme të vizitojnë datafesti — një konferencë e madhe falas në Moskë, e cila do të zhvillohet më 10-11 maj.

Burimi: www.habr.com

Shto një koment