Kubwa Hadron Collider na Odnoklassniki

Tukiendelea na mada ya mashindano ya kujifunza mashine kwenye HabrΓ©, tungependa kuwajulisha wasomaji mifumo miwili zaidi. Kwa hakika sio kubwa kama kaggle, lakini hakika wanastahili kuzingatiwa.

Kubwa Hadron Collider na Odnoklassniki

Binafsi, sipendi kaggle sana kwa sababu kadhaa:

  • kwanza, mashindano huko mara nyingi hudumu kwa miezi kadhaa, na ushiriki hai unahitaji juhudi nyingi;
  • pili, punje za umma (suluhisho za umma). Wafuasi wa Kaggle wanashauri kuwatendea kwa utulivu wa watawa wa Tibet, lakini kwa kweli ni aibu sana wakati kitu ambacho umekuwa ukifanya kazi kwa mwezi mmoja au mbili ghafla kinageuka kuwa kimewekwa kwenye sinia ya fedha kwa kila mtu.

Kwa bahati nzuri, mashindano ya kujifunza mashine hufanyika kwenye majukwaa mengine, na mashindano kadhaa haya yatajadiliwa.

IDAO SNA Hackathon 2019
Lugha rasmi: Kiingereza,
waandaaji: Yandex, Sberbank, HSE
Lugha rasmi ya Kirusi,
waandaaji: Mail.ru Group
Raundi ya Mtandaoni: Januari 15 - Feb 11, 2019;
Fainali ya Tovuti: Aprili 4-6, 2019
mtandaoni - kutoka Februari 7 hadi Machi 15;
nje ya mtandao - kuanzia Machi 30 hadi Aprili 1.
Kwa kutumia seti fulani ya data kuhusu chembe kwenye Kolida Kubwa ya Hadron (mwelekeo, kasi, na vigezo vingine vya kimwili), amua ikiwa ni muon au la.
Kutokana na taarifa hii, kazi 2 zilitambuliwa:
- katika moja ulilazimika kutuma utabiri wako,
- na kwa upande mwingine - nambari kamili na mfano wa utabiri, na utekelezaji ulikuwa chini ya vizuizi vikali vya matumizi ya wakati na kumbukumbu.
Kwa ajili ya shindano la SNA Hackathon, kumbukumbu za maonyesho ya maudhui kutoka kwa vikundi vilivyo wazi katika mipasho ya habari za watumiaji kwa Februari-Machi 2018 zilikusanywa. Seti ya majaribio ina wiki ya mwisho na nusu ya Machi. Kila ingizo kwenye kumbukumbu lina maelezo kuhusu kile kilichoonyeshwa na kwa nani, na vilevile jinsi mtumiaji alijibu maudhui haya: aliikadiria, alitoa maoni, alipuuza, au aliificha kutoka kwa mipasho.
Kiini cha kazi za SNA Hackathon ni kuweka kila mtumiaji wa mtandao wa kijamii wa Odnoklassniki malisho yake, kuinua juu iwezekanavyo machapisho hayo ambayo yatapata "darasa".
Katika hatua ya mtandaoni, kazi iligawanywa katika sehemu 3:
1. vyeo vyeo kulingana na sifa mbalimbali za ushirikiano
2. machapisho ya cheo kulingana na picha zilizomo
3. vyeo vyeo kulingana na maandishi yaliyomo
Kipimo maalum cha tata, kitu kama ROC-AUC Wastani wa ROC-AUC kwa mtumiaji
Zawadi kwa hatua ya kwanza - T-shirts kwa nafasi za N, kupita kwa hatua ya pili, ambapo malazi na chakula vililipwa wakati wa mashindano.
Awamu ya pili -??? (Kwa sababu fulani, sikuwapo kwenye sherehe ya tuzo na sikuweza kujua ni zawadi gani mwishoni). Waliahidi laptops kwa washiriki wote wa timu iliyoshinda
Zawadi kwa hatua ya kwanza - T-shirt kwa washiriki 100 bora, kifungu hadi hatua ya pili, ambapo kusafiri kwenda Moscow, malazi na chakula wakati wa ushindani zililipwa. Pia, kuelekea mwisho wa hatua ya kwanza, zawadi zilitangazwa kwa walio bora zaidi katika kazi 3 kwenye hatua ya 1: kila mtu alishinda kadi ya video ya RTX 2080 TI!
Hatua ya pili ilikuwa hatua ya timu, timu zilijumuisha watu 2 hadi 5, zawadi:
Nafasi ya 1 - rubles 300
Nafasi ya 2 - rubles 200
Nafasi ya 3 - rubles 100
tuzo ya jury - rubles 100
Kikundi rasmi cha telegram, ~ washiriki 190, mawasiliano kwa Kiingereza, maswali ilibidi kusubiri siku kadhaa kwa jibu. Kikundi rasmi katika telegramu, ~ washiriki 1500, majadiliano ya kazi kati ya washiriki na waandaaji.
Waandaaji walitoa suluhisho mbili za msingi, rahisi na za juu. Rahisi ilihitaji chini ya GB 16 ya RAM, na kumbukumbu ya hali ya juu haikutosha kwenye 16. Wakati huo huo, wakiangalia mbele kidogo, washiriki hawakuweza kushinda kwa kiasi kikubwa ufumbuzi wa juu. Hakukuwa na shida katika kuzindua suluhisho hizi. Ikumbukwe kwamba katika mfano wa juu kulikuwa na maoni yenye maoni juu ya wapi kuanza kuboresha suluhisho. Suluhu za kimsingi za kimsingi zilitolewa kwa kila moja ya kazi, ambazo zilizidiwa kwa urahisi na washiriki. Katika siku za mwanzo za shindano, washiriki walikutana na shida kadhaa: kwanza, data ilitolewa katika muundo wa Apache Parquet, na sio mchanganyiko wote wa Python na kifurushi cha parquet kilifanya kazi bila makosa. Ugumu wa pili ulikuwa kupakua picha kutoka kwa wingu la barua; kwa sasa hakuna njia rahisi ya kupakua idadi kubwa ya data mara moja. Matokeo yake, matatizo haya yalichelewesha washiriki kwa siku kadhaa.

IDAO. Hatua ya kwanza

Kazi ilikuwa kuainisha chembe za muon/non-muon kulingana na sifa zao. Kipengele muhimu cha kazi hii ilikuwa uwepo wa safu ya uzani katika data ya mafunzo, ambayo waandaaji wenyewe walitafsiri kama ujasiri katika jibu la mstari huu. Shida ilikuwa kwamba safu kadhaa zilikuwa na uzani hasi.

Kubwa Hadron Collider na Odnoklassniki

Baada ya kufikiria kwa dakika chache juu ya mstari na kidokezo (kidokezo kilivutia tu kipengele hiki cha safu ya uzani) na kujenga grafu hii, tuliamua kuangalia chaguzi 3:

1) Geuza lengo la mistari iliyo na uzani hasi (na uzani ipasavyo)
2) badilisha uzani hadi thamani ya chini ili waanze kutoka 0
3) usitumie uzani wa kamba

Chaguo la tatu liligeuka kuwa mbaya zaidi, lakini mbili za kwanza ziliboresha matokeo, bora zaidi ilikuwa chaguo Nambari 1, ambayo mara moja ilituleta kwenye nafasi ya pili ya sasa katika kazi ya kwanza na ya kwanza kwa pili.
Kubwa Hadron Collider na Odnoklassniki
Hatua yetu iliyofuata ilikuwa kukagua data kwa thamani zinazokosekana. Waandaaji walitupa data iliyochanwa tayari, ambapo kulikuwa na maadili machache sana, na yalibadilishwa na -9999.

Tulipata thamani zinazokosekana katika safu wima za MatchedHit_{X,Y,Z}[N] na MatchedHit_D{X,Y,Z}[N] na wakati N=2 au 3 pekee. Kama tunavyoelewa, baadhi ya chembe hazikufanya hivyo. kupitisha vigunduzi vyote 4 , na kusimamishwa ama kwenye sahani ya 3 au ya 4. Data pia ilikuwa na safu wima za Lextra_{X,Y}[N], ambayo inaonekana inaelezea kitu sawa na MatchedHit_{X,Y,Z}[N], lakini kwa kutumia aina fulani ya maelezo. Makadirio haya machache yalipendekeza kuwa Lextra_{X,Y}[N] inaweza kubadilishwa kwa thamani zinazokosekana katika MatchedHit_{X,Y,Z}[N] (kwa viwianishi vya X na Y pekee). MatchedHit_Z[N] ilijazwa vyema na wastani. Udanganyifu huu ulituruhusu kufikia nafasi ya 1 ya kati katika majukumu yote mawili.

Kubwa Hadron Collider na Odnoklassniki

Kwa kuzingatia kwamba hawakutoa chochote kwa kushinda hatua ya kwanza, tungeweza kuacha hapo, lakini tuliendelea, tukachora picha nzuri na tukaja na vipengele vipya.

Kubwa Hadron Collider na Odnoklassniki

Kwa mfano, tuligundua kwamba ikiwa tunapanga pointi za makutano ya chembe na kila sahani nne za detector, tunaweza kuona kwamba pointi kwenye kila sahani zimepangwa katika mistatili 5 yenye uwiano wa 4 hadi 5 na kuzingatia. uhakika (0,0), na katika Hakuna pointi katika mstatili wa kwanza.

Nambari ya sahani / vipimo vya mstatili 1 2 3 4 5
Bamba 1 500Ρ…625 1000Ρ…1250 2000Ρ…2500 4000Ρ…5000 8000Ρ…10000
Bamba 2 520Ρ…650 1040Ρ…1300 2080Ρ…2600 4160Ρ…5200 8320Ρ…10400
Bamba 3 560Ρ…700 1120Ρ…1400 2240Ρ…2800 4480Ρ…5600 8960Ρ…11200
Bamba 4 600Ρ…750 1200Ρ…1500 2400Ρ…3000 4800Ρ…6000 9600Ρ…12000

Baada ya kuamua vipimo hivi, tuliongeza vipengele 4 vipya vya kategoria kwa kila chembe - nambari ya mstatili ambamo inakatiza kila bati.

Kubwa Hadron Collider na Odnoklassniki

Pia tuliona kwamba chembe zilionekana kutawanyika kwa kando kutoka katikati na wazo likatokea kwa namna fulani kutathmini "ubora" wa kutawanyika huku. Kwa hakika, pengine ingewezekana kuja na aina fulani ya parabola "bora" kulingana na hatua ya kuingia na kukadiria kupotoka kutoka kwayo, lakini tulijiwekea mipaka kwa mstari "bora" wa moja kwa moja. Baada ya kuunda mistari bora iliyonyooka kwa kila sehemu ya kuingilia, tuliweza kukokotoa mkengeuko wa kawaida wa trajectory ya kila chembe kutoka kwa mstari huu ulionyooka. Kwa kuwa mkengeuko wa wastani wa lengo = 1 ulikuwa 152, na kwa lengo = 0 ilikuwa 390, tulitathmini kipengele hiki kuwa kizuri. Na hakika, kipengele hiki mara moja kiliifanya kuwa ya juu zaidi ya muhimu zaidi.

Tulifurahishwa na kuongeza mkengeuko wa sehemu zote 4 za makutano kwa kila chembe kutoka kwa laini iliyonyooka bora kama vipengele 4 vya ziada (na pia vilifanya kazi vizuri).

Viungo kwa makala ya kisayansi juu ya mada ya ushindani, tuliyopewa na waandaaji, ilisababisha wazo kwamba sisi ni mbali na wa kwanza kutatua tatizo hili na, labda, kuna aina fulani ya programu maalumu. Baada ya kugundua hazina kwenye github ambapo njia za IsMuonSimple, IsMuon, IsMuonLoose zilitekelezwa, tulizihamisha kwenye tovuti yetu na marekebisho madogo. Njia wenyewe zilikuwa rahisi sana: kwa mfano, ikiwa nishati ni chini ya kizingiti fulani, basi sio muon, vinginevyo ni muon. Vipengee rahisi kama hivyo havingeweza kuongeza ongezeko la matumizi ya upinde rangi, kwa hivyo tuliongeza "umbali" mwingine muhimu kwenye kizingiti. Vipengele hivi pia vimeboreshwa kidogo. Labda, kwa kuchambua njia zilizopo kwa undani zaidi, iliwezekana kupata njia zenye nguvu na kuziongeza kwa ishara.

Mwisho wa shindano, tulibadilisha kidogo suluhisho la "haraka" kwa shida ya pili; mwishowe, ilitofautiana na msingi katika mambo yafuatayo:

  1. Katika safu mlalo zenye uzito hasi lengo liligeuzwa kinyume
  2. Imejaza thamani zinazokosekana katika MatchedHit_{X,Y,Z}[N]
  3. Kupungua kwa kina hadi 7
  4. Kiwango cha kujifunza kilichopunguzwa hadi 0.1 (ilikuwa 0.19)

Kama matokeo, tulijaribu huduma zaidi (sio kwa mafanikio sana), vigezo vilivyochaguliwa na catboost iliyofunzwa, lightgbm na xgboost, tulijaribu mchanganyiko tofauti wa utabiri na kabla ya kufungua ya kibinafsi tulishinda kwa ujasiri kwenye kazi ya pili, na kwa mara ya kwanza tulikuwa miongoni mwa viongozi.

Baada ya kufungua faragha tulikuwa katika nafasi ya 10 kwa kazi ya 1 na ya 3 kwa pili. Viongozi wote walichanganyikiwa, na kasi ya faragha ilikuwa kubwa kuliko kwenye libboard. Inaonekana kwamba data haikuwa na mpangilio mzuri (au kwa mfano hakukuwa na safu zilizo na uzani hasi kwa faragha) na hii ilikuwa ya kufadhaisha kidogo.

SNA Hackathon 2019 - Maandishi. Hatua ya kwanza

Kazi ilikuwa kuorodhesha machapisho ya watumiaji kwenye mtandao wa kijamii wa Odnoklassniki kulingana na maandishi yaliyomo; pamoja na maandishi, kulikuwa na sifa chache zaidi za chapisho (lugha, mmiliki, tarehe na wakati wa uundaji, tarehe na wakati wa kutazama. )

Kama mbinu za kitamaduni za kufanya kazi na maandishi, ningeangazia chaguzi mbili:

  1. Kupanga kila neno katika nafasi ya vekta ya n-dimensional ili maneno yanayofanana yawe na vekta zinazofanana (soma zaidi katika makala yetu), kisha kutafuta neno la wastani la maandishi au kutumia njia zinazozingatia nafasi ya maneno (CNN, LSTM/GRU).
  2. Kutumia mifano ambayo inaweza kufanya kazi mara moja na sentensi nzima. Kwa mfano, Bert. Kwa nadharia, mbinu hii inapaswa kufanya kazi vizuri zaidi.

Kwa kuwa hii ilikuwa uzoefu wangu wa kwanza na maandiko, itakuwa mbaya kumfundisha mtu, kwa hiyo nitajifundisha mwenyewe. Hivi ndivyo vidokezo ambavyo ningejipa mwanzoni mwa shindano:

  1. Kabla ya kukimbia kufundisha kitu, angalia data! Kwa kuongezea maandishi yenyewe, data ilikuwa na safu wima kadhaa na iliwezekana kufinya zaidi kutoka kwao kuliko mimi. Jambo rahisi zaidi ni kumaanisha usimbaji unaolenga kwa baadhi ya safu wima.
  2. Usijifunze kutoka kwa data zote! Kulikuwa na data nyingi (kama safu milioni 17) na haikuwa lazima kabisa kuzitumia zote kujaribu nadharia. Mafunzo na usindikaji wa awali ulikuwa wa polepole sana, na kwa kweli ningekuwa na wakati wa kujaribu nadharia za kupendeza zaidi.
  3. <Ushauri wenye utata> Hakuna haja ya kutafuta mfano muuaji. Nilitumia muda mrefu kuwatafuta Elmo na Bert, nikitumaini kwamba wangenipeleka mara moja mahali pa juu, na kwa sababu hiyo nilitumia upachikaji wa FastText uliofunzwa awali kwa lugha ya Kirusi. Sikuweza kufikia kasi bora nikiwa na Elmo, na bado sikuwa na wakati wa kufahamu jambo hilo na Bert.
  4. <Ushauri wenye utata> Hakuna haja ya kutafuta kipengele kimoja cha muuaji. Kuangalia data, niligundua kuwa karibu asilimia 1 ya maandishi hayana maandishi! Lakini kulikuwa na viungo kwa rasilimali zingine, na niliandika kichanganuzi rahisi ambacho kilifungua tovuti na kutoa kichwa na maelezo. Ilionekana kama wazo zuri, lakini basi nilichukuliwa na kuamua kuchanganua viungo vyote vya maandishi yote na tena nikapoteza muda mwingi. Haya yote hayakutoa uboreshaji mkubwa katika matokeo ya mwisho (ingawa nilifikiria kuibuka, kwa mfano).
  5. Vipengele vya kawaida hufanya kazi. Sisi Google, kwa mfano, "vipengele vya maandishi kaggle", tunasoma na kuongeza kila kitu. TF-IDF ilitoa uboreshaji, kama vile vipengele vya takwimu kama vile urefu wa maandishi, maneno na kiasi cha uakifishaji.
  6. Ikiwa kuna safu wima za DateTime, inafaa kuzichanganua katika vipengele kadhaa tofauti (saa, siku za wiki, n.k.). Ni vipengele vipi vinafaa kuangaziwa vinapaswa kuchanganuliwa kwa kutumia grafu/baadhi ya vipimo. Hapa, kwa hiari, nilifanya kila kitu kwa usahihi na nilionyesha sifa zinazohitajika, lakini uchambuzi wa kawaida haungeumiza (kwa mfano, kama tulivyofanya kwenye fainali).

Kubwa Hadron Collider na Odnoklassniki

Kama matokeo ya shindano hilo, nilifunza modeli ya keras kwa ubadilishaji wa maneno, na mwingine kulingana na LSTM na GRU. Wote wawili walitumia upachikaji wa FastText uliofunzwa mapema kwa lugha ya Kirusi (nilijaribu upachikaji zingine, lakini hizi ndizo zilizofanya kazi vizuri zaidi). Baada ya kukadiria utabiri, nilichukua nafasi ya mwisho ya 7 kati ya washiriki 76.

Baada ya hatua ya kwanza ilichapishwa makala ya Nikolai Anokhin, ambaye alichukua nafasi ya pili (alishiriki nje ya shindano), na suluhisho lake hadi hatua fulani lilirudiwa yangu, lakini alikwenda mbali zaidi kwa sababu ya utaratibu wa umakini wa hoja-ufunguo-thamani.

Hatua ya pili Sawa & IDAO

Hatua za pili za mashindano zilifanyika karibu mfululizo, kwa hivyo niliamua kuziangalia pamoja.

Kwanza, mimi na timu mpya iliyopatikana tuliishia katika ofisi ya kuvutia ya kampuni ya Mail.ru, ambapo kazi yetu ilikuwa kuchanganya mifano ya nyimbo tatu kutoka hatua ya kwanza - maandishi, picha na ushirikiano. Zaidi ya siku 2 zilitengwa kwa hili, ambayo iligeuka kuwa kidogo sana. Kwa kweli, tuliweza tu kurudia matokeo yetu kutoka kwa hatua ya kwanza bila kupata faida yoyote kutoka kwa muunganisho. Mwishowe, tulichukua nafasi ya 5, lakini hatukuweza kutumia mfano wa maandishi. Baada ya kuangalia masuluhisho ya washiriki wengine, inaonekana kwamba ilifaa kujaribu kuunganisha maandiko na kuyaongeza kwenye mfano wa ushirikiano. Athari ya upande wa hatua hii ilikuwa hisia mpya, kukutana na kuwasiliana na washiriki wa baridi na waandaaji, pamoja na ukosefu mkubwa wa usingizi, ambao unaweza kuwa umeathiri matokeo ya hatua ya mwisho ya IDAO.

Kazi katika hatua ya Mwisho ya IDAO 2019 ilikuwa kutabiri wakati wa kungojea kwa agizo la madereva wa teksi ya Yandex kwenye uwanja wa ndege. Katika hatua ya 2, kazi 3 = viwanja vya ndege 3 vilitambuliwa. Kwa kila uwanja wa ndege, data ya dakika kwa dakika juu ya idadi ya maagizo ya teksi kwa miezi sita inatolewa. Na kama data ya jaribio, mwezi uliofuata na data ya dakika kwa dakika ya maagizo ya wiki 2 zilizopita ilitolewa. Kulikuwa na wakati mdogo (siku 1,5), kazi hiyo ilikuwa maalum, mtu mmoja tu kutoka kwa timu alifika kwenye mashindano - na kwa sababu hiyo, ilikuwa mahali pa kusikitisha kuelekea mwisho. Mawazo ya kuvutia yalijumuisha majaribio ya kutumia data ya nje: hali ya hewa, foleni za magari na takwimu za agizo la teksi ya Yandex. Ingawa waandaaji hawakusema viwanja vya ndege hivi ni nini, washiriki wengi walidhani kuwa walikuwa Sheremetyevo, Domodedovo na Vnukovo. Ingawa dhana hii ilikataliwa baada ya shindano, vipengele, kwa mfano, kutoka kwa data ya hali ya hewa ya Moscow iliboresha matokeo kwenye uthibitishaji na kwenye ubao wa wanaoongoza.

Hitimisho

  1. Mashindano ya ML ni ya kupendeza na ya kuvutia! Hapa utapata matumizi ya ujuzi katika uchambuzi wa data, na katika mifano ya hila na mbinu, na akili ya kawaida tu inakaribishwa.
  2. ML tayari ni kundi kubwa la maarifa ambalo linaonekana kukua kwa kasi. Nilijiwekea lengo la kufahamiana na maeneo tofauti (ishara, picha, meza, maandishi) na tayari niligundua ni kiasi gani cha kusoma. Kwa mfano, baada ya mashindano haya niliamua kujifunza: algorithms ya kuunganisha, mbinu za juu za kufanya kazi na maktaba ya kukuza gradient (haswa, kufanya kazi na CatBoost kwenye GPU), mitandao ya capsule, utaratibu wa tahadhari ya hoja-ufunguo-thamani.
  3. Si kwa kaggle peke yake! Kuna mashindano mengine mengi ambapo ni rahisi kupata angalau T-shati, na kuna nafasi zaidi za zawadi nyingine.
  4. Wasiliana! Tayari kuna jamii kubwa katika uwanja wa kujifunza mashine na uchambuzi wa data, kuna vikundi vya mada katika telegraph, slack, na watu wakubwa kutoka Mail.ru, Yandex na makampuni mengine hujibu maswali na waanzilishi wa msaada na wale wanaoendelea na njia yao katika uwanja huu. ya maarifa.
  5. Ninashauri kila mtu ambaye aliongozwa na hatua iliyopita kutembelea datafest - mkutano mkubwa wa bure huko Moscow, ambao utafanyika Mei 10-11.

Chanzo: mapenzi.com

Kuongeza maoni