Үлкен адрон коллайдері және Одноклассники

Хабредегі машиналық оқыту жарыстарының тақырыбын жалғастыра отырып, біз оқырмандарды тағы екі платформамен таныстырғымыз келеді. Олар, әрине, каггл сияқты үлкен емес, бірақ олар сөзсіз назар аударуға лайық.

Үлкен адрон коллайдері және Одноклассники

Жеке өзім бірнеше себептерге байланысты каглды ұнатпаймын:

  • біріншіден, ондағы жарыстар көбінесе бірнеше айға созылады, ал белсенді қатысу көп күш жұмсауды талап етеді;
  • екіншіден, қоғамдық ядролар (қоғамдық шешімдер). Kaggle жақтастары оларға тибет монахтарының сабырлылығымен қарауға кеңес береді, бірақ шын мәнінде сіз бір-екі ай бойы жұмыс істеп келген нәрсенің кенеттен барлығына күміс табаққа салынып кетуі өте ұят.

Бақытымызға орай, машинаны үйрену жарыстары басқа платформаларда өткізіледі және осы жарыстардың бірнешеуі талқыланады.

IDAO SNA Hackathon 2019
Ресми тілі: ағылшын,
ұйымдастырушылар: Яндекс, Сбербанк, HSE
Ресми орыс тілі,
Ұйымдастырушылар: Mail.ru Group
Онлайн раунд: 15 қаңтар - 11 ақпан 2019 ж.;
Сайттағы финал: 4-6 сәуір, 2019 ж
онлайн – 7 ақпаннан 15 наурызға дейін;
офлайн – 30 наурыздан 1 сәуірге дейін.
Үлкен адрон коллайдеріндегі (траектория, импульс және басқа да күрделі физикалық параметрлер) бөлшек туралы белгілі бір деректер жинағын пайдалана отырып, оның мюон немесе емес екенін анықтаңыз.
Осы мәлімдемеден 2 міндет анықталды:
— бірінде сіз өз болжамыңызды жіберуіңіз керек еді,
- ал екіншісінде - болжауға арналған толық код пен модель және орындау жұмыс уақыты мен жадты пайдалану бойынша айтарлықтай қатаң шектеулерге ұшырады.
SNA Hackathon байқауы үшін 2018 жылдың ақпан-наурыз айлары үшін пайдаланушы жаңалықтар арнасындағы ашық топтардан мазмұнды көрсету журналдары жиналды. Сынақ жинағы наурыз айының соңғы бір жарым аптасын қамтиды. Журналдағы әрбір жазбада не және кімге көрсетілгені, сондай-ақ пайдаланушының осы мазмұнға қалай әрекет еткені туралы ақпарат бар: оны бағалады, түсініктеме берді, елемеді немесе арнадан жасырды.
SNA Hackathon міндеттерінің мәні Одноклассники әлеуметтік желісіндегі әрбір пайдаланушыны «сынып» алатын жазбаларды мүмкіндігінше жоғарылатып, өз арнасының рейтингін қою болып табылады.
Онлайн кезеңде тапсырма 3 бөлікке бөлінді:
1. лауазымдарды әртүрлі бірлескен сипаттамаларға сәйкес дәрежелеу
2. жазбаларды құрамындағы суреттерге қарай бағалаңыз
3. жазбаларды құрамындағы мәтінге қарай бағалаңыз
ROC-AUC сияқты күрделі теңшелетін метрика Пайдаланушы бойынша орташа ROC-AUC
Бірінші кезеңнің жүлделері - N орынға футболкалар, екінші кезеңге өту, онда тұру және тамақтану жарыс кезінде төленді.
Екінші кезең - ??? (Белгілі бір себептермен мен марапаттау рәсіміне қатыспадым және соңында жүлделердің не екенін біле алмадым). Олар жеңімпаз команданың барлық мүшелеріне ноутбуктерді уәде етті
Бірінші кезеңнің жүлделері – 100 үздік қатысушының футболкалары, Мәскеуге бару, жарыс кезінде тұру және тамақтану ақысы төленетін екінші кезеңге өту. Сондай-ақ, бірінші кезеңнің соңына қарай 3-кезеңдегі 1 тапсырма бойынша үздіктерге сыйлықтар жарияланды: барлығы RTX 2080 TI бейне картасын ұтып алды!
Екінші кезең командалық кезең болды, командалар 2-ден 5 адамға дейін, жүлделі орындар:
1 орын - 300 000 рубль
2 орын - 200 000 рубль
3 орын - 100 000 рубль
қазылар алқасының жүлдесі - 100 000 рубль
Ресми жеделхат тобы, ~190 қатысушы, ағылшын тілінде сөйлесу, сұрақтарға жауап алу үшін бірнеше күн күтуге тура келді Telegram-дағы ресми топ, ~1500 қатысушы, қатысушылар мен ұйымдастырушылар арасындағы тапсырмаларды белсенді талқылау
Ұйымдастырушылар қарапайым және кеңейтілген екі негізгі шешімді ұсынды. Қарапайым 16 ГБ-тан аз жедел жады қажет болды, ал кеңейтілген жад 16 ГБ-ға сыймайды. Сонымен қатар, сәл алға қарайтын болсақ, қатысушылар озық шешімнен айтарлықтай асып түсе алмады. Бұл шешімдерді іске қосуда қиындықтар болған жоқ. Жетілдірілген мысалда шешімді жақсартуды қайдан бастау керектігі туралы түсініктеме бар екенін атап өткен жөн. Тапсырмалардың әрқайсысы үшін қарапайым қарапайым шешімдер ұсынылды, оларды қатысушылар оңай жеңді. Байқаудың алғашқы күндерінде қатысушылар бірнеше қиындықтарға тап болды: біріншіден, деректер Apache Parquet форматында берілді және Python және паркет пакетінің барлық комбинациялары қатесіз жұмыс істемеді. Екінші қиындық пошта бұлтынан суреттерді жүктеп алу болды, қазіргі уақытта үлкен көлемдегі деректерді бірден жүктеп алудың оңай жолы жоқ. Нәтижесінде бұл мәселелер қатысушыларды бір-екі күнге кешіктірді.

IDAO. Бірінші кезең

Тапсырма мюонды/мюонды емес бөлшектерді сипаттамаларына қарай жіктеу болды. Бұл тапсырманың негізгі ерекшелігі жаттығу деректерінде салмақ бағанының болуы болды, оны ұйымдастырушылардың өздері осы жолдың жауабына сенімділік деп түсінді. Мәселе мынада, бірнеше жолдарда теріс салмақтар болды.

Үлкен адрон коллайдері және Одноклассники

Анықтамасы бар сызық туралы бірнеше минут ойланғаннан кейін (кеңес салмақ бағанының осы ерекшелігіне назар аударды) және осы графикті құрастырғаннан кейін біз 3 нұсқаны тексеруді шештік:

1) теріс салмақтары (және тиісінше салмақтары) бар сызықтардың нысанасын төңкеріңіз
2) салмақтарды 0-ден басталатындай ең төменгі мәнге ауыстырыңыз
3) жол салмақтарын қолданбаңыз

Үшінші нұсқа ең нашар болып шықты, бірақ алғашқы екеуі нәтижені жақсартты, ең жақсысы №1 нұсқа болды, ол бізді бірден бірінші тапсырмада ағымдағы екінші орынға және екінші орында бірінші орынға жеткізді.
Үлкен адрон коллайдері және Одноклассники
Біздің келесі қадамымыз жетіспейтін мәндер үшін деректерді қарау болды. Ұйымдастырушылар бізге бірнеше жетіспейтін мәндер бар тарақталған деректерді берді және оларды -9999 ауыстырды.

Біз MatchedHit_{X,Y,Z}[N] және MatchedHit_D{X,Y,Z}[N] бағандарында жетіспейтін мәндерді таптық, тек N=2 немесе 3 болғанда ғана. Біз түсінгеніміздей, кейбір бөлшектер бұлай емес. барлық 4 детектордан өтіп, 3-ші немесе 4-ші пластинада тоқтаңыз. Деректер сонымен қатар MatchedHit_{X,Y,Z}[N] сияқты бірдей нәрсені сипаттайтын, бірақ экстраполяцияның қандай да бір түрін қолданатын Lextra_{X,Y}[N] бағандарын қамтиды. Бұл шамалы болжамдар MatchedHit_{X,Y,Z}[N] ішіндегі жетіспейтін мәндерді Lextra_{X,Y}[N] ауыстыруға болатынын көрсетті (тек X және Y координаттары үшін). MatchedHit_Z[N] медианамен жақсы толтырылды. Бұл манипуляциялар екі тапсырмада да 1-орынға жетуге мүмкіндік берді.

Үлкен адрон коллайдері және Одноклассники

Бірінші кезеңде жеңіске жету үшін олар ештеңе бермегенін ескерсек, біз осымен тоқтап қалуымыз мүмкін еді, бірақ біз жалғастырып, әдемі суреттер салдық және жаңа мүмкіндіктер ойлап таптық.

Үлкен адрон коллайдері және Одноклассники

Мысалы, біз төрт детекторлық пластиналардың әрқайсысымен бөлшектің қиылысу нүктелерін сызатын болсақ, онда әрбір пластинадағы нүктелердің арақатынасы 5-тен 4-ке дейінгі арақатынасы бар 5 тіктөртбұрышқа топтастырылғанын және центрінде орналасқанын көреміз. нүктесі (0,0) және бірінші төртбұрышта нүктелер жоқ.

Пластина нөмірі / тіктөртбұрыш өлшемдері 1 2 3 4 5
Пластина 1 500 × 625 1000 × 1250 2000 × 2500 4000 × 5000 8000 × 10000
Пластина 2 520 × 650 1040 × 1300 2080 × 2600 4160 × 5200 8320 × 10400
Пластина 3 560 × 700 1120 × 1400 2240 × 2800 4480 × 5600 8960 × 11200
Пластина 4 600 × 750 1200 × 1500 2400 × 3000 4800 × 6000 9600 × 12000

Осы өлшемдерді анықтай отырып, біз әрбір бөлшек үшін 4 жаңа категориялық белгілерді қостық - ол әрбір пластинамен қиылысатын тіктөртбұрыштың нөмірі.

Үлкен адрон коллайдері және Одноклассники

Біз сондай-ақ бөлшектердің орталықтан екі жаққа шашырап жатқанын байқадық және бұл шашыраудың «сапасын» қандай да бір түрде бағалау идеясы пайда болды. Ең дұрысы, ұшу нүктесіне байланысты қандай да бір «идеалды» параболаны ойлап табуға және одан ауытқуды бағалауға болатын шығар, бірақ біз «идеалды» түзу сызықпен шектелдік. Әрбір кіру нүктесі үшін осындай идеалды түзу сызықтарды құрастыра отырып, біз әрбір бөлшектің траекториясының осы түзу сызықтан стандартты ауытқуын есептей алдық. Мақсат = 1 үшін орташа ауытқу 152, ал мақсат = 0 үшін 390 болғандықтан, біз бұл мүмкіндікті алдын ала жақсы деп бағаладық. Шынында да, бұл мүмкіндік оны бірден ең пайдалыларының жоғарғы жағына шығарды.

Біз қуандық және қосымша 4 мүмкіндік ретінде әрбір бөлшек үшін идеалды түзу сызықтан барлық 4 қиылысу нүктесінің ауытқуын қостық (және олар да жақсы жұмыс істеді).

Ұйымдастырушылар бізге берген байқау тақырыбы бойынша ғылыми мақалаларға сілтемелер біз бұл мәселені шешуде біріншілерден алыспыз және, мүмкін, қандай да бір арнайы бағдарламалық қамтамасыз ету бар деген ойға түрткі болды. Github жүйесінде IsMuonSimple, IsMuon, IsMuonLoose әдістері енгізілген репозиторийді тауып, біз оларды аздаған өзгертулермен сайтымызға көшірдік. Әдістердің өзі өте қарапайым болды: мысалы, энергия белгілі бір табалдырықтан аз болса, онда ол мюон емес, әйтпесе бұл мюон. Мұндай қарапайым мүмкіндіктер градиентті күшейтуді пайдалану жағдайында өсуді қамтамасыз ете алмайтыны анық, сондықтан біз шекті мәнге тағы бір маңызды «қашықтықты» қостық. Бұл мүмкіндіктер де аздап жақсартылды. Мүмкін, бар әдістерді тереңірек талдау арқылы күшті әдістерді тауып, белгілерге қосуға болатын шығар.

Байқау соңында біз екінші мәселенің «жылдам» шешімін сәл өзгерттік; соңында ол келесі тармақтар бойынша бастапқы деңгейден ерекшеленді:

  1. Теріс салмағы бар қатарларда нысана төңкерілді
  2. MatchedHit_{X,Y,Z}[N] ішіндегі жетіспейтін мәндер толтырылды
  3. Тереңдігі 7-ге дейін азайтылды
  4. Оқу жылдамдығы 0.1-ге дейін төмендеді (0.19 болды)

Нәтижесінде біз көбірек мүмкіндіктерді қолданып көрдік (өте сәтті емес), параметрлерді таңдадық және catboost, lightgbm және xgboost оқыттық, әртүрлі болжамдарды араластырып көрдік және жекені ашпас бұрын біз екінші тапсырманы сенімді түрде жеңіп алдық, ал біріншісінде біз көшбасшылар.

Қатар ашқаннан кейін 10-ші тапсырма бойынша 1-шы, екінші тапсырма бойынша 3-ші орында болдық. Көшбасшылардың бәрі араласып кетті, ал оңашадағы жылдамдық либордан жоғары болды. Деректер нашар стратификацияланған сияқты (немесе, мысалы, жекеде теріс салмақтары бар жолдар жоқ) және бұл біраз көңілсіз болды.

SNA Hackathon 2019 - Мәтіндер. Бірінші кезең

Тапсырма «Одноклассники» әлеуметтік желісіндегі қолданушылардың жазбаларын олардағы мәтінге қарай бағалау болды; мәтіннен басқа, жазбаның тағы бірнеше сипаттамалары (тілі, иесі, жасалған күні мен уақыты, қаралған күні мен уақыты) болды. ).

Мәтінмен жұмыс істеудің классикалық тәсілдері ретінде мен екі нұсқаны атап өткім келеді:

  1. Ұқсас сөздердің ұқсас векторлары болатындай етіп әрбір сөзді n өлшемді векторлық кеңістікке салу (толығырақ біздің мақаламыз), содан кейін мәтін үшін орташа сөзді табу немесе сөздердің салыстырмалы орнын ескеретін механизмдерді пайдалану (CNN, LSTM/GRU).
  2. Бүкіл сөйлеммен бірден жұмыс істей алатын үлгілерді пайдалану. Мысалы, Берт. Теориялық тұрғыдан бұл тәсіл жақсырақ жұмыс істеуі керек.

Бұл менің мәтіндермен алғашқы тәжірибем болғандықтан, біреуді үйрету дұрыс емес еді, сондықтан мен өзім үйретемін. Жарыстың басында мен өзіме берер кеңестер:

  1. Бір нәрсені үйрету үшін жүгірмес бұрын, деректерге қараңыз! Мәтіннің өзінен басқа, деректерде бірнеше бағандар болды және олардан маған қарағанда әлдеқайда көп сығып алуға болады. Ең қарапайым нәрсе - кейбір бағандар үшін мақсатты кодтауды жасау.
  2. Барлық деректерден сабақ алмаңыз! Деректер көп болды (шамамен 17 миллион жол) және гипотезаларды тексеру үшін олардың барлығын пайдалану мүлдем қажет емес еді. Жаттығу және алдын ала өңдеу өте баяу болды, менде қызықты гипотезаларды сынауға уақыт болғаны анық.
  3. <Даулы кеңес> Өлтіруші модельді іздеудің қажеті жоқ. Мен Эльмо ​​мен Бертті тез арада биік орынға алып шығады деп ұзақ уақыт тауып, нәтижесінде орыс тіліне арналған FastText алдын ала дайындалған кірістірулерді қолдандым. Мен Эльмомен жақсырақ жылдамдыққа жете алмадым, ал менде оны Бертпен анықтауға әлі уақыт болмады.
  4. <Даулы кеңес> Бір өлтіретін мүмкіндікті іздеудің қажеті жоқ. Деректерге қарап, мен мәтіндердің шамамен 1 пайызында мәтін жоқ екенін байқадым! Бірақ кейбір ресурстарға сілтемелер болды, мен сайтты ашып, тақырып пен сипаттаманы шығаратын қарапайым талдаушы жаздым. Бұл жақсы идея сияқты көрінді, бірақ содан кейін мен барлық мәтіндерге барлық сілтемелерді талдауды шештім және қайтадан көп уақытты жоғалттым. Мұның бәрі түпкілікті нәтиженің айтарлықтай жақсаруын қамтамасыз етпеді (бірақ мен, мысалы, стемпингті анықтадым).
  5. Классикалық мүмкіндіктер жұмыс істейді. Біз Google, мысалы, «мәтін мүмкіндіктері kaggle», бәрін оқып, қосамыз. TF-IDF мәтін ұзындығы, сөздер және тыныс белгілерінің саны сияқты статистикалық мүмкіндіктерді жақсартуды қамтамасыз етті.
  6. DateTime бағандары болса, оларды бірнеше бөлек мүмкіндіктерге (сағаттарға, апта күндеріне және т.б.) талдау керек. Қандай мүмкіндіктерді бөлектеу керек екенін графиктер/кейбір көрсеткіштер арқылы талдау керек. Міне, мен өз қалауым бойынша бәрін дұрыс жасадым және қажетті мүмкіндіктерді атап өттім, бірақ қалыпты талдау зиян тигізбес еді (мысалы, финалда жасағандай).

Үлкен адрон коллайдері және Одноклассники

Байқау нәтижесінде мен бір керас үлгісін сөзді айналдырумен, екіншісін LSTM және GRU негізінде дайындадым. Олардың екеуі де орыс тіліне арналған алдын ала дайындалған FastText ендірулерді пайдаланды (мен бірқатар басқа ендірулерді қолданып көрдім, бірақ бұл ең жақсы жұмыс істегендер болды). Болжамдарды орташа есептеп, 7 қатысушының ішінен қорытынды 76-орынға ие болдым.

Бірінші кезеңнен кейін ол жарық көрді Николай Анохиннің мақаласы, ол екінші орынға ие болды (ол конкурстан тыс қатысты) және оның шешімі қандай да бір кезеңге дейін мені қайталады, бірақ ол сұрау-кілт-мәнді назар аудару механизмінің арқасында одан әрі кетті.

Екінші кезең OK & IDAO

Жарыстың екінші кезеңдері дерлік қатарынан өтті, сондықтан мен оларды бірге қарауды жөн көрдім.

Біріншіден, мен және жаңадан алынған команда Mail.ru компаниясының әсерлі кеңсесіне келдік, мұнда біздің міндетіміз бірінші кезеңдегі үш тректің үлгілерін - мәтінді, суреттерді және бірлескен жұмысты біріктіру болды. Бұл үшін 2 күннен сәл артық уақыт бөлінді, бұл өте аз болып шықты. Шындығында, біз біріктіруден ешқандай пайда алмай, бірінші кезеңдегі нәтижелерімізді қайталай алдық. Қорытындысында 5-орынға ие болдық, бірақ мәтіндік үлгіні пайдалана алмадық. Басқа қатысушылардың шешімдерін қарастырғаннан кейін, мәтіндерді кластерлеуге және оларды бірлескен модельге қосуға тырысқан жөн сияқты. Бұл кезеңнің жанама әсері жаңа әсерлер, салқын қатысушылармен және ұйымдастырушылармен кездесу және қарым-қатынас, сондай-ақ IDAO қорытынды кезеңінің нәтижесіне әсер еткен қатты ұйқының болмауы болды.

IDAO 2019 қорытынды кезеңіндегі тапсырма Яндекс такси жүргізушілерінің әуежайда тапсырысты күту уақытын болжау болды. 2-кезеңде 3 тапсырма = 3 әуежай анықталды. Әр әуежай үшін алты айдағы такси тапсырыстарының саны туралы минут сайын деректер беріледі. Ал сынақ деректері ретінде соңғы 2 аптадағы тапсырыстар бойынша келесі ай және минут сайын деректер берілді. Уақыт аз болды (1,5 күн), тапсырма айтарлықтай нақты болды, командадан жарысқа бір ғана адам келді - нәтижесінде бұл ақырына қарай қайғылы орын болды. Қызықты идеялар сыртқы деректерді пайдалану әрекеттерін қамтиды: ауа-райы, кептелістер және Яндекс таксиге тапсырыс беру статистикасы. Ұйымдастырушылар бұл қандай әуежайлар екенін айтпаса да, қатысушылардың көбі Шереметьево, Домодедово және Внуково деп болжаған. Бұл болжам жарыстан кейін жоққа шығарылғанымен, мүмкіндіктер, мысалы, Мәскеудегі ауа-райы деректері валидацияда да, көшбасшылар тақтасында да нәтижелерді жақсартты.

қорытынды

  1. ML жарыстары керемет және қызықты! Мұнда сіз деректерді талдау дағдыларын, сондай-ақ айлакер модельдер мен әдістерді пайдалана аласыз және қарапайым ақылға қонымды.
  2. ML - қазірдің өзінде экспоненциалды түрде өсіп келе жатқан үлкен білім жиынтығы. Әртүрлі салалармен (сигналдар, суреттер, кестелер, мәтін) танысуды мақсат етіп қойдым және оқудың қаншалықты көп екенін түсіндім. Мысалы, осы жарыстардан кейін мен: кластерлеу алгоритмдерін, градиентті күшейтетін кітапханалармен жұмыс істеудің озық әдістерін (атап айтқанда, GPU-да CatBoost-пен жұмыс істеу), капсула желілерін, сұраныс-кілт-мәнге назар аудару механизмін зерттеуді шештім.
  3. Тек Кагглмен емес! Басқа да көптеген жарыстар бар, оларда кем дегенде футболка алу оңайырақ, ал басқа жүлделерге көбірек мүмкіндік бар.
  4. Хабарласыңыз! Қазірдің өзінде машиналық оқыту және деректерді талдау саласында үлкен қауымдастық бар, телеграммада тақырыптық топтар бар, Mail.ru, Яндекс және басқа компаниялардағы салиқалы адамдар сұрақтарға жауап береді және жаңадан бастаушыларға және осы салада өз жолын жалғастырушыларға көмектеседі. білімнің.
  5. Мен алдыңғы нүктеден шабыттанғандардың барлығына баруға кеңес беремін datafest — 10-11 мамырда Мәскеуде өтетін ірі тегін конференция.

Ақпарат көзі: www.habr.com

пікір қалдыру