Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

Habré'deki makine öğrenimi yarışmaları temasına devam ederek okuyucuları iki platformla daha tanıştırmak istiyoruz. Kesinlikle kaggle kadar büyük değiller ama kesinlikle ilgiyi hak ediyorlar.

Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

Şahsen, birkaç nedenden dolayı kaggle'ı pek sevmiyorum:

  • birincisi, oradaki yarışmalar genellikle birkaç ay sürüyor ve aktif katılım çok çaba gerektiriyor;
  • ikincisi, genel çekirdekler (genel çözümler). Kaggle taraftarları onlara Tibet rahiplerinin sakinliğiyle davranmanızı tavsiye ediyor, ancak gerçekte bir veya iki aydır üzerinde çalıştığınız bir şeyin aniden herkes için gümüş bir tepsiye sunulduğunun ortaya çıkması oldukça utanç verici.

Neyse ki başka platformlarda da makine öğrenimi yarışmaları yapılıyor ve bu yarışmalardan birkaçı ele alınacak.

IDAO SNA Hackathon 2019
Resmi dil: İngilizce,
organizatörler: Yandex, Sberbank, HSE
Resmi Rus dili,
organizatörler: Mail.ru Grubu
Çevrimiçi Tur: 15 Ocak - 11 Şubat 2019;
Yerinde Final: 4-6 Nisan 2019
çevrimiçi - 7 Şubat'tan 15 Mart'a kadar;
çevrimdışı - 30 Mart'tan 1 Nisan'a kadar.
Büyük Hadron Çarpıştırıcısındaki bir parçacık hakkındaki belirli bir dizi veriyi (yörünge, momentum ve diğer oldukça karmaşık fiziksel parametreler) kullanarak, bunun bir müon olup olmadığını belirleyin.
Bu açıklamadan 2 görev belirlendi:
— birinde tahmininizi göndermeniz yeterliydi,
- ve diğerinde - tahmin için tam kod ve model ve yürütme, çalışma süresi ve bellek kullanımı konusunda oldukça katı kısıtlamalara tabiydi
SNA Hackathon yarışması için Şubat-Mart 2018 için kullanıcı haber akışlarında açık gruplardan gösterilen içeriklerin günlükleri toplandı. Test seti Mart ayının son bir buçuk haftasını içermektedir. Günlükteki her giriş, neyin ve kime gösterildiğinin yanı sıra kullanıcının bu içeriğe nasıl tepki verdiğine ilişkin bilgileri içerir: onu derecelendirdi, yorum yaptı, görmezden geldi veya akıştan gizledi.
SNA Hackathon'un görevlerinin özü, Odnoklassniki sosyal ağının her kullanıcısını kendi beslemesinde sıralamak ve bir "sınıf" alacak gönderileri mümkün olduğunca yükseğe çıkarmaktır.
Çevrimiçi aşamada görev 3 bölüme ayrıldı:
1. gönderileri çeşitli işbirlikçi özelliklere göre sıralayın
2. Gönderileri içerdikleri görsellere göre sıralayın
3. Gönderileri içerdikleri metne göre sıralayın
Karmaşık özel metrik, ROC-AUC gibi bir şey Kullanıcıya göre ortalama ROC-EAA
İlk etap ödülleri - N yer için tişört, yarışma sırasında konaklama ve yemeklerin ödendiği ikinci etaba geçiş
İkinci aşama - ??? (Bazı nedenlerden dolayı ödül törenine katılamadım ve sonunda ödüllerin ne olduğunu öğrenemedim). Kazanan takımın tüm üyelerine dizüstü bilgisayar sözü verdiler
İlk aşamanın ödülleri - En iyi 100 katılımcıya tişörtler, Moskova'ya seyahatin, konaklama ve yarışma sırasında yemeklerin ödendiği ikinci aşamaya geçiş. Ayrıca ilk aşamanın sonuna doğru, 3. aşamada 1 görevde en iyi olanlara ödüller açıklandı: Herkes bir RTX 2080 TI ekran kartı kazandı!
İkinci aşama bir takım aşamasıydı, takımlar 2 ila 5 kişiden oluşuyordu, ödüller:
1. sıra - 300 ruble
2. sıra - 200 ruble
3. sıra - 100 ruble
jüri ödülü - 100 ruble
Resmi telgraf grubu, ~190 katılımcı, İngilizce iletişim, soruların yanıtlanması için birkaç gün beklemek gerekti Telegramdaki resmi grup, ~1500 katılımcı, katılımcılar ve organizatörler arasında görevlerin aktif olarak tartışılması
Organizatörler basit ve gelişmiş olmak üzere iki temel çözüm sundu. Basit, 16 GB'tan daha az RAM gerektiriyordu ve gelişmiş bellek 16'ya sığmıyordu. Aynı zamanda, biraz ileriye baktığımızda, katılımcılar gelişmiş çözümden önemli ölçüde daha iyi performans gösteremediler. Bu çözümleri hayata geçirirken hiçbir zorluk yaşanmadı. Gelişmiş örnekte, çözümü iyileştirmeye nereden başlanacağına dair ipucu içeren bir yorumun bulunduğunu belirtmek gerekir. Görevlerin her biri için katılımcılar tarafından kolayca aşılabilecek temel ilkel çözümler sağlandı. Yarışmanın ilk günlerinde katılımcılar çeşitli zorluklarla karşılaştı: birincisi, veriler Apache Parquet formatında veriliyordu ve Python ile parke paketinin tüm kombinasyonları hatasız çalışmıyordu. İkinci zorluk ise posta bulutundan resim indirmekti; şu anda büyük miktarda veriyi aynı anda indirmenin kolay bir yolu yok. Sonuç olarak bu sorunlar katılımcıları birkaç gün geciktirdi.

IDAO. İlk aşama

Görev, müon/müon olmayan parçacıkları özelliklerine göre sınıflandırmaktı. Bu görevin temel özelliği, eğitim verilerinde, organizatörlerin kendilerinin bu satırın cevabına güven olarak yorumladığı bir ağırlık sütununun bulunmasıydı. Sorun, epeyce satırın negatif ağırlıklar içermesiydi.

Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

İpucu içeren çizgi hakkında birkaç dakika düşündükten sonra (ipucu sadece ağırlık sütununun bu özelliğine dikkat çekti) ve bu grafiği oluşturduktan sonra 3 seçeneği kontrol etmeye karar verdik:

1) negatif ağırlıklı satırların hedefini ters çevirin (ve buna göre ağırlıklar)
2) ağırlıkları 0'dan başlayacak şekilde minimum değere kaydırın
3) tel ağırlıkları kullanmayın

Üçüncü seçeneğin en kötüsü olduğu ortaya çıktı, ancak ilk ikisi sonucu iyileştirdi, en iyisi 1 numaralı seçenekti, bu da bizi hemen ilk görevde ikinci, ikincide birinci sıraya getirdi.
Büyük Hadron Çarpıştırıcısı ve Odnoklassniki
Bir sonraki adımımız, verileri eksik değerler açısından gözden geçirmekti. Organizatörler bize zaten çok sayıda eksik değerin bulunduğu taranmış verileri verdi ve bunların yerini -9999 aldı.

MatchedHit_{X,Y,Z}[N] ve MatchedHit_D{X,Y,Z}[N] sütunlarında eksik değerleri bulduk ve yalnızca N=2 veya 3 olduğunda. Anladığımız kadarıyla bazı parçacıklar bulmadı. 4 dedektörün tümünü geçin ve 3. veya 4. plakada durun. Veriler aynı zamanda MatchedHit_{X,Y,Z}[N] ile aynı şeyi tanımlayan ancak bir tür ekstrapolasyon kullanan Lextra_{X,Y}[N] sütunlarını da içeriyordu. Bu yetersiz tahminler, MatchedHit_{X,Y,Z}[N]'deki (yalnızca X ve Y koordinatları için) eksik değerlerin Lextra_{X,Y}[N] ile değiştirilebileceğini öne sürdü. MatchedHit_Z[N] medyanla iyice doluydu. Bu manipülasyonlar her iki görevde de 1. ara sıraya ulaşmamızı sağladı.

Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

İlk etabı kazanmak için hiçbir şey vermediklerini düşünürsek orada durabilirdik ama devam ettik, güzel resimler çizdik ve yeni özellikler ortaya çıkardık.

Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

Örneğin, bir parçacığın dört dedektör plakasının her biriyle kesişme noktalarını çizersek, plakaların her birindeki noktaların 5 ila 4 en boy oranıyla 5 dikdörtgen halinde gruplandırıldığını ve merkezde merkezlendiğini görebileceğimizi bulduk. (0,0) noktası ve İlk dikdörtgende nokta yoktur.

Plaka numarası / dikdörtgen boyutları 1 2 3 4 5
Plaka 1 500h625 1000h1250 2000h2500 4000h5000 8000h10000
Plaka 2 520h650 1040h1300 2080h2600 4160h5200 8320h10400
Plaka 3 560h700 1120h1400 2240h2800 4480h5600 8960h11200
Plaka 4 600h750 1200h1500 2400h3000 4800h6000 9600h12000

Bu boyutları belirledikten sonra, her parçacık için 4 yeni kategorik özellik ekledik - her plakayla kesiştiği dikdörtgenin sayısı.

Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

Ayrıca parçacıkların merkezden yanlara doğru dağıldığını fark ettik ve bu saçılmanın “kalitesini” bir şekilde değerlendirme fikri ortaya çıktı. İdeal durumda, kalkış noktasına bağlı olarak bir tür "ideal" parabol bulmak ve bundan sapmayı tahmin etmek muhtemelen mümkün olacaktır, ancak kendimizi "ideal" düz çizgiyle sınırladık. Her giriş noktası için böylesine ideal düz çizgiler çizdikten sonra, her parçacığın yörüngesinin bu düz çizgiden standart sapmasını hesaplayabildik. Hedef = 1 için ortalama sapma 152 ve hedef = 0 için 390 olduğundan, bu özelliği geçici olarak iyi olarak değerlendirdik. Ve gerçekten de bu özellik onu hemen en kullanışlı özellikler arasında üst sıralara taşıdı.

Çok memnun olduk ve her parçacık için 4 kesişim noktasının ideal düz çizgiden sapmasını ek 4 özellik olarak ekledik (ve ayrıca iyi çalıştılar).

Organizatörler tarafından bize verilen, yarışma konusuyla ilgili bilimsel makalelere bağlantılar, bu sorunu çözen ilk kişi olmadığımız ve belki de bir tür özel yazılımın olduğu fikrini uyandırdı. Github üzerinde IsMuonSimple, IsMuon, IsMuonLoose metodlarının uygulandığı bir repository keşfettik ve bunları ufak değişikliklerle sitemize aktardık. Yöntemlerin kendileri çok basitti: örneğin, eğer enerji belirli bir eşiğin altındaysa bu bir müon değildir, aksi halde bir müondur. Bu kadar basit özellikler, gradyan artırmanın kullanılması durumunda açıkça bir artış sağlayamadı, bu nedenle eşiğe önemli bir "mesafe" daha ekledik. Bu özellikler de biraz geliştirildi. Belki mevcut yöntemleri daha detaylı inceleyerek daha güçlü yöntemler bulup işaretlere eklemek mümkün olabilirdi.

Yarışmanın sonunda, ikinci problem için "hızlı" çözümü biraz değiştirdik; sonuçta, aşağıdaki noktalarda temel çizgiden farklılaştı:

  1. Negatif ağırlığa sahip satırlarda hedef tersine çevrildi
  2. MatchedHit_{X,Y,Z}[N]'deki eksik değerler dolduruldu
  3. Derinlik 7'ye düşürüldü
  4. Öğrenme oranı 0.1'e düşürüldü (0.19'du)

Sonuç olarak, daha fazla özellik denedik (pek başarılı olamadık), seçilen parametreleri ve eğitimli catboost, lightgbm ve xgboost'u denedik, farklı tahmin karışımlarını denedik ve özeli açmadan önce ikinci görevde güvenle kazandık ve ilkinde biz arasında yer aldık. liderler.

Özelin açılmasının ardından 10. görevde 1., ikinci görevde ise 3. sırada yer aldık. Tüm liderlerin kafası karışmıştı ve özelde hız, kütüphanedekinden daha yüksekti. Görünüşe göre veriler zayıf bir şekilde sınıflandırılmıştı (veya örneğin özelde negatif ağırlıklı satırlar yoktu) ve bu biraz sinir bozucuydu.

SNA Hackathon 2019 - Metinler. İlk aşama

Görev, Odnoklassniki sosyal ağındaki kullanıcı gönderilerini içerdikleri metne göre sıralamaktı; metne ek olarak gönderinin birkaç özelliği daha vardı (dil, sahibi, oluşturulma tarihi ve saati, görüntüleme tarihi ve saati). ).

Metinle çalışmaya yönelik klasik yaklaşımlar olarak iki seçeneği vurgulayacağım:

  1. Her kelimeyi, benzer kelimelerin benzer vektörlere sahip olacağı şekilde n boyutlu bir vektör uzayına eşlemek (daha fazlasını okuyun bizim makalemiz), daha sonra ya metin için ortalama kelimeyi buluyor ya da kelimelerin göreceli konumunu dikkate alan mekanizmaları (CNN, LSTM/GRU) kullanıyor.
  2. Tüm cümlelerle anında çalışabilen modeller kullanmak. Mesela Bert. Teorik olarak bu yaklaşımın daha iyi çalışması gerekir.

Bu benim metinlerle ilk deneyimim olduğu için birine öğretmek yanlış olur, o yüzden kendi kendime öğreteceğim. Bunlar yarışmanın başında kendime vereceğim ipuçları:

  1. Bir şeyi öğretmeye koşmadan önce verilere bakın! Metnin kendisine ek olarak, verilerde birkaç sütun vardı ve onlardan benim yaptığımdan çok daha fazlasını çıkarmak mümkündü. En basit şey, bazı sütunlar için ortalama hedef kodlama yapmaktır.
  2. Tüm verilerden ders almayın! Çok fazla veri vardı (yaklaşık 17 milyon satır) ve hipotezleri test etmek için bunların hepsini kullanmak kesinlikle gerekli değildi. Eğitim ve ön işleme oldukça yavaştı ve açıkçası daha ilginç hipotezleri test etmek için zamanım olacaktı.
  3. <Tartışmalı tavsiye> Harika bir model aramaya gerek yok. Beni hemen yüksek bir yere taşıyacaklarını umarak Elmo ve Bert'i bulmak için uzun zaman harcadım ve sonuç olarak FastText'in Rus dili için önceden eğitilmiş yerleştirmelerini kullandım. Elmo'yla daha iyi bir hıza ulaşamadım ve bunu Bert'le çözmeye hâlâ zamanım olmadı.
  4. <Tartışmalı tavsiye> Tek bir mükemmel özellik aramanıza gerek yok. Verilere baktığımda metinlerin yaklaşık yüzde 1'inin aslında metin içermediğini fark ettim! Ancak bazı kaynaklara bağlantılar vardı ve siteyi açıp başlığı ve açıklamayı çıkaran basit bir ayrıştırıcı yazdım. İyi bir fikir gibi göründü, ama sonra kendimi kaptırdım ve tüm metinlerin tüm bağlantılarını ayrıştırmaya karar verdim ve yine çok zaman kaybettim. Bütün bunlar nihai sonuçta önemli bir gelişme sağlamadı (her ne kadar örneğin köklendirmeyi çözmüş olsam da).
  5. Klasik özellikler çalışıyor. Biz Google’da örneğin “metin özellikleri kaggle”, her şeyi okuyup ekliyoruz. TF-IDF, metin uzunluğu, kelimeler ve noktalama işareti miktarı gibi istatistiksel özelliklerde de iyileşme sağladı.
  6. DateTime sütunları varsa, bunları birkaç ayrı özelliğe (saat, haftanın günleri vb.) ayırmaya değer. Hangi özelliklerin öne çıkarılması gerektiği grafikler/bazı metrikler kullanılarak analiz edilmelidir. Burada bir hevesle her şeyi doğru yaptım ve gerekli özellikleri vurguladım, ancak normal bir analizin zararı olmazdı (örneğin finalde yaptığımız gibi).

Büyük Hadron Çarpıştırıcısı ve Odnoklassniki

Yarışma sonucunda bir keras modelini kelime evrişimi ile, diğerini ise LSTM ve GRU tabanlı olarak eğittim. Her ikisi de Rus dili için önceden eğitilmiş FastText yerleştirmelerini kullandı (birkaç başka yerleştirmeyi denedim, ancak bunlar en iyi sonucu verenlerdi). Tahminlerin ortalamasını aldıktan sonra 7 katılımcı arasında son 76. sırayı aldım.

İlk aşamadan sonra yayınlandı Nikolai Anokhin'in makalesiİkinci sırada yer alan (yarışma dışı katıldı) ve çözümü bir aşamaya kadar benimkini tekrarladı, ancak sorgu-anahtar-değer dikkat mekanizması nedeniyle daha da ileri gitti.

İkinci aşama OK ve IDAO

Yarışmaların ikinci aşamaları neredeyse arka arkaya gerçekleşti, ben de onlara birlikte bakmaya karar verdim.

İlk olarak, ben ve yeni satın alınan ekip, Mail.ru şirketinin etkileyici ofisine gittik; burada görevimiz, ilk aşamadan itibaren üç parçanın modellerini (metin, resimler ve ortak çalışma) birleştirmekti. Bunun için 2 günden biraz fazla bir süre ayrıldı ve bunun çok az olduğu ortaya çıktı. Aslında birleşmeden herhangi bir kazanç elde etmeden sadece ilk aşamada elde ettiğimiz sonuçları tekrarlayabildik. Sonuçta 5. sırayı aldık ancak metin modelini kullanamadık. Diğer katılımcıların çözümlerine baktıktan sonra metinleri gruplandırıp ortak çalışma modeline eklemeye çalışmakta fayda var gibi görünüyor. Bu aşamanın bir yan etkisi, yeni izlenimler, havalı katılımcılar ve organizatörlerle tanışma ve iletişim kurmanın yanı sıra, IDAO'nun son aşamasının sonucunu etkilemiş olabilecek ciddi uyku eksikliğiydi.

IDAO 2019 Final etabındaki görev, Yandex taksi şoförlerinin havaalanında sipariş bekleme süresini tahmin etmekti. 2. aşamada 3 görev = 3 havaalanı belirlendi. Her havalimanı için altı aylık taksi siparişlerinin sayısına ilişkin dakika dakika veriler veriliyor. Test verileri olarak ise son 2 haftaya ait siparişlerin bir sonraki aya ve dakika dakika verileri verildi. Çok az zaman vardı (1,5 gün), görev oldukça spesifikti, yarışmaya takımdan sadece bir kişi geldi ve sonuç olarak sonlara doğru üzücü bir yerdi. İlginç fikirler arasında harici verileri kullanma girişimleri vardı: hava durumu, trafik sıkışıklığı ve Yandex taksi siparişi istatistikleri. Organizatörler bu havalimanlarının ne olduğunu söylemese de birçok katılımcı bunların Şeremetyevo, Domodedovo ve Vnukovo olduğunu varsayıyordu. Her ne kadar bu varsayım yarışmadan sonra çürütülmüş olsa da, örneğin Moskova hava durumu verilerinden alınan özellikler, hem doğrulamada hem de sıralamada sonuçları iyileştirdi.

Sonuç

  1. Makine öğrenimi yarışmaları harika ve ilginç! Burada veri analizi, kurnaz modeller ve tekniklerdeki becerilerin kullanımını bulacaksınız ve sağduyuya açığız.
  2. ML halihazırda katlanarak büyüyen devasa bir bilgi birikimidir. Kendime farklı alanlarla (sinyaller, resimler, tablolar, metinler) tanışma hedefi koydum ve üzerinde çalışılacak ne kadar çok şey olduğunu zaten fark ettim. Örneğin, bu yarışmalardan sonra çalışmaya karar verdim: kümeleme algoritmaları, degrade artırıcı kitaplıklarla çalışmak için gelişmiş teknikler (özellikle GPU'da CatBoost ile çalışmak), kapsül ağları, sorgu-anahtar-değer dikkat mekanizması.
  3. Yalnız Kaggle tarafından değil! En azından bir tişört almanın daha kolay olduğu ve diğer ödüller için daha fazla şansın olduğu başka birçok yarışma var.
  4. İletişim! Makine öğrenimi ve veri analizi alanında zaten geniş bir topluluk var, telgrafta tematik gruplar var, slack ve Mail.ru, Yandex ve diğer şirketlerden ciddi insanlar soruları yanıtlıyor ve yeni başlayanlara ve bu alanda yoluna devam edenlere yardımcı oluyor bilginin.
  5. Önceki noktadan ilham alan herkese ziyaret etmelerini tavsiye ederim veri festivali - 10-11 Mayıs'ta Moskova'da gerçekleşecek büyük bir ücretsiz konferans.

Kaynak: habr.com

Yorum ekle