Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Bir neçə ay əvvəl Google-dan olan həmkarlarımız sərf etmişdir Kaggle-da əldə edilən sensasiyalı şəkillər üçün təsnifat yaratmaq üçün müsabiqə oyun "Tez çək, çək!" “Yandeks”in tərtibatçısı Roman Vlasovun daxil olduğu komanda müsabiqədə dördüncü yeri tutub. Yanvar ayında maşın öyrənmə təlimində Roman komandasının fikirlərini, təsnifatın son tətbiqini və rəqiblərinin maraqlı təcrübələrini bölüşdü.


- Hamıya salam! Mənim adım Roma Vlasov, bu gün sizə Quick, Draw haqqında danışacağam! Doodle Tanınma Çağırışı.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Komandamızda beş nəfər var idi. Birləşmənin son tarixindən dərhal əvvəl qoşuldum. Bəxtimiz gətirmədi, bir az sarsıldıq, amma biz pul mövqeyindən, onlar isə qızıl mövqedən sarsıldı. Və şərəfli dördüncü yeri tutduq.

(Müsabiqə zamanı komandalar təklif olunan verilənlər toplusunun bir hissəsində göstərilən nəticələr əsasında formalaşan reytinqdə özlərini müşahidə etdilər. Yekun reytinq isə öz növbəsində verilənlər toplusunun digər hissəsi üzrə formalaşdırıldı. Bu belə edilir. yarış iştirakçıları alqoritmlərini konkret məlumatlara uyğunlaşdırmırlar.Ona görə də finalda reytinqlər arasında keçid edərkən mövqelər bir qədər silkələnir (ingiliscə shake up - qarışdırmaq): digər məlumatlarda nəticə çıxa bilər. fərqli olmaq.Romanın komandası ilk üçlükdə birinci olub.Bu halda ilk üçlük pul,pul reytinq zonasıdır,çünki yalnız ilk üç yer pul mükafatı ilə təltif edilib.Salksdan sonra komanda artıq dördüncü yer.Eyni şəkildə digər komanda da qələbəni, qızıl mövqeyini itirdi.- Red.)

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Müsabiqə həm də onunla əlamətdar idi ki, Yevgeni Babaxnin qrossmeyster, İvan Sosin usta, Roman Solovyev qrossmeyster olaraq qaldı, Aleks Parinov usta aldı, mən ekspert oldum, indi isə artıq ustayam.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Tez bu nədir, Draw? Bu Google-dan bir xidmətdir. Google-un məqsədi süni intellektin populyarlaşdırılması idi və bu xidmətlə neyron şəbəkələrin necə işlədiyini göstərmək istəyirdi. Siz ora gedirsiniz, Let's draw klikləyin və sizə deyilən yerdə yeni bir səhifə açılır: ziqzaq çəkin, bunun üçün 20 saniyəniz var. Siz məsələn burada olduğu kimi 20 saniyəyə ziqzaq çəkməyə çalışırsınız. Əgər uğur qazansanız, şəbəkə bunun ziqzaq olduğunu söyləyir və siz davam edirsiniz. Cəmi altı belə şəkil var.

Əgər Google şəbəkəsi sizin çəkdiyinizi tanıya bilmirsə, tapşırığın üzərinə xaç qoyulub. Rəsmin şəbəkə tərəfindən tanınıb-tanınmamasının gələcəkdə nə demək olduğunu daha sonra sizə deyəcəyəm.

Bu xidmət kifayət qədər çox sayda istifadəçi topladı və istifadəçilərin çəkdiyi bütün şəkillər daxil edildi.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Demək olar ki, 50 milyon şəkil toplamağa nail olduq. Bundan sonra yarışımızın qatarı və sınaq tarixi formalaşdı. Yeri gəlmişkən, testdəki məlumatların miqdarı və siniflərin sayı bir səbəbdən qalın şriftlə vurğulanır. Onlar haqqında bir az sonra sizə məlumat verəcəyəm.

Məlumat formatı aşağıdakı kimi idi. Bunlar sadəcə RGB şəkilləri deyil, kobud desək, istifadəçinin etdiyi hər şeyin qeydidir. Word hədəfimizdir, ölkə kodu doodle müəllifinin harada olduğu, vaxt damğası isə vaxtdır. Tanınmış etiket sadəcə şəbəkənin Google-dan şəkli tanıyıb-tanımadığını göstərir. Rəsmin özü isə istifadəçinin nöqtələrlə çəkdiyi əyrinin ardıcıllığı, yaxınlaşmasıdır. Və vaxtlar. Bu, şəkil çəkməyə başlayan vaxtdır.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Məlumatlar iki formatda təqdim edilmişdir. Bu, birinci formatdır, ikincisi isə sadələşdirilmişdir. Onlar oradan vaxtları kəsdilər və bu nöqtələr dəstini daha kiçik nöqtələr dəsti ilə yaxınlaşdırdılar. Bunun üçün istifadə etdilər Duqlas-Peker alqoritmi. Sizdə sadəcə düz xəttə yaxınlaşan çoxlu nöqtələr dəsti var, amma əslində siz bu xətti cəmi iki nöqtə ilə təxmin edə bilərsiniz. Bu, alqoritmin ideyasıdır.

Məlumatlar aşağıdakı kimi paylandı. Hər şey vahiddir, lakin bəzi kənar məqamlar var. Problemi həll edəndə ona baxmadıq. Əsas odur ki, həqiqətən az olan siniflər yox idi, biz ölçülmüş nümunələr və məlumatların çoxaldılması ilə məşğul olmamalı idik.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Şəkillər nə kimi görünürdü? Bu, "təyyarə" sinfi və ondan tanınan və tanınmayan etiketləri olan nümunələrdir. Onların nisbəti təxminən 1-dən 9-a qədər idi. Gördüyünüz kimi, məlumatlar olduqca səs-küylüdür. Təyyarə olduğunu təxmin edərdim. Tanınmayanlara baxsanız, əksər hallarda bu, sadəcə səs-küydür. Kimsə hətta "təyyarə" yazmağa çalışdı, amma yəqin ki, fransızca.

İştirakçıların çoxu sadəcə şəbəkələri götürdülər, bu xətlər ardıcıllığından məlumatları RGB şəkilləri kimi çəkdilər və şəbəkəyə atdılar. Mən təxminən eyni şəkildə çəkdim: rənglər palitrasını götürdüm, birinci sətri bu palitranın əvvəlində olan bir rənglə, palitranın sonunda olan digəri ilə sonuncu xətti və onların arasında çəkdim. Bu palitradan istifadə edərək hər yerdə interpolasiya etdim. Yeri gəlmişkən, bu, ilk slayddakı kimi - sadəcə qara rəngdə çəkməkdən daha yaxşı nəticə verdi.

İvan Sosin kimi digər komanda üzvləri rəsm çəkməyə bir qədər fərqli yanaşmalar sınadılar. Bir kanalla o, sadəcə olaraq boz şəkil çəkdi, başqa bir kanalla hər bir vuruşu əvvəldən sona, 32-dən 255-ə qədər, üçüncü kanalla isə 32-dən 255-ə qədər bütün vuruşlar üzərində gradient çəkdi.

Digər maraqlı məqam ondan ibarətdir ki, Aleks Parinov ölkə kodundan istifadə edərək məlumatı şəbəkəyə yükləyib.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Müsabiqədə istifadə olunan metrik Orta Orta Dəqiqlikdir. Rəqabət üçün bu metrikanın mahiyyəti nədir? Siz üç predik verə bilərsiniz və əgər bu üçlükdə düzgün proqnoz yoxdursa, onda siz 0 alırsınız. Əgər düzgün olan varsa, onun sırası nəzərə alınır. Və hədəf nəticə proqnozunuzun sırasına bölünərək 1 kimi hesablanacaq. Məsələn, siz üç proqnozlaşdırdınız və düzgün olan birincidir, onda 1-i 1-ə bölüb 1-i alırsınız. Əgər proqnozlaşdırıcı düzgündürsə və onun sırası 2-dirsə, 1-i 2-yə bölmək, 0,5 alırsınız. Yaxşı və s.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Məlumatların əvvəlcədən işlənməsi ilə - şəkilləri necə çəkmək və s. - biz bir az qərar verdik. Hansı memarlıqlardan istifadə etdik? Biz PNASNet, SENet kimi yağlı arxitekturalardan və SE-Res-NeXt kimi artıq klassik arxitekturalardan istifadə etməyə çalışdıq, onlar getdikcə daha çox yeni müsabiqələrə daxil olurlar. ResNet və DenseNet də var idi.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Bunu necə öyrətdik? Çəkdiyimiz bütün modellər imagenet-də əvvəlcədən təlim keçmişdi. Baxmayaraq ki, çoxlu məlumat, 50 milyon şəkil var, amma yenə də imagenet-də əvvəlcədən hazırlanmış bir şəbəkə götürsəniz, onu sadəcə sıfırdan öyrətdiyinizdən daha yaxşı nəticələr göstərdi.

Hansı tədris üsullarından istifadə etdik? Bu, bir az sonra haqqında danışacağam İsti Yenidən Başlama ilə Cosing Annealingdir. Bu, demək olar ki, bütün son yarışlarımda istifadə etdiyim bir texnikadır və onlarla birlikdə yaxşı minimuma nail olmaq üçün torları kifayət qədər yaxşı məşq etmək olur.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Sonrakı Yaylada Öyrənmə dərəcəsini azaldın. Siz şəbəkəni məşq etməyə başlayırsınız, müəyyən bir öyrənmə dərəcəsi təyin edirsiniz, onu öyrətməyə davam edirsiniz və itkiniz tədricən müəyyən bir dəyərə yaxınlaşır. Siz bunu yoxlayın, məsələn, on dövr ərzində itki heç dəyişməyib. Öyrənmə sürətinizi bir qədər azaldıb öyrənməyə davam edirsiniz. O, yenidən bir az azalır, minimumda birləşir və siz yenidən öyrənmə sürətini aşağı salırsınız və s., nəhayət şəbəkəniz birləşənə qədər.

Sonrakı bir maraqlı texnikadır: Öyrənmə sürətini azaltmayın, partiyanın ölçüsünü artırın. Eyni adlı məqalə var. Şəbəkəni məşq edərkən, öyrənmə sürətini azaltmaq lazım deyil, sadəcə olaraq partiyanın ölçüsünü artıra bilərsiniz.

Bu texnika, yeri gəlmişkən, Alex Parinov tərəfindən istifadə edilmişdir. O, 408-ə bərabər bir partiya ilə başladı və şəbəkəsi bəzi platoya çatdıqda, sadəcə olaraq partiyanın ölçüsünü ikiqat artırdı və s.

Əslində, onun toplu ölçüsünün hansı dəyərə çatdığını xatırlamıram, amma maraqlısı odur ki, Kaggle-da eyni texnikadan istifadə edən komandalar var idi, onların toplu ölçüsü təxminən 10000 idi. Yeri gəlmişkən, dərin öyrənmə üçün müasir çərçivələr, məsələn Məsələn, PyTorch bunu çox asanlıqla etməyə imkan verir. Siz partiyanızı yaradır və şəbəkəyə olduğu kimi deyil, bütövlükdə təqdim edirsiniz, ancaq onu hissələrə ayırırsınız ki, video kartınıza uyğun olsun, gradientləri hesablayın və bütün partiya üçün gradienti hesabladıqdan sonra yeniləyin. çəkilər.

Yeri gəlmişkən, böyük partiya ölçüləri hələ də bu müsabiqəyə daxil edilmişdir, çünki məlumatlar kifayət qədər səs-küylü idi və böyük partiya ölçüsü gradienti daha dəqiq təxmin etməyə kömək etdi.

Pseudo-etiketləmə də istifadə edildi, daha çox Roman Solovyev istifadə etdi. O, sınaqdan əldə edilən məlumatların təxminən yarısını partiyalarda seçdi və bu cür partiyalar üzrə şəbəkəni öyrətdi.

Şəkillərin ölçüsü əhəmiyyətli idi, amma fakt odur ki, çoxlu məlumatınız var, uzun müddət məşq etməlisiniz və şəkil ölçüsü kifayət qədər böyükdürsə, o zaman çox uzun müddət məşq edəcəksiniz. Ancaq bu, son təsnifatınızın keyfiyyətinə çox şey əlavə etmədi, ona görə də bir növ mübadilədən istifadə etməyə dəyərdi. Və biz yalnız ölçüləri çox da böyük olmayan şəkilləri sınadıq.

Hamısı necə öyrənildi? Əvvəlcə kiçik ölçülü şəkillər çəkildi, onların üzərində bir neçə epoxa çəkildi, bu çox vaxt apardı. Sonra böyük ölçülü şəkillər verildi, şəbəkə öyrədildi, daha sonra sıfırdan məşq etməmək və çox vaxt itirməmək üçün daha da çox.

Optimizatorlar haqqında. SGD və Adamdan istifadə etdik. Bu yolla ictimai liderlər lövhəsində 0,941-0,946 sürət verən tək modeli əldə etmək mümkün oldu ki, bu da kifayət qədər yaxşıdır.

Modelləri bir şəkildə birləşdirsəniz, 0,951 ətrafında bir yerə çatacaqsınız. Daha bir texnikadan istifadə etsəniz, əldə etdiyimiz kimi ictimai lövhədə 0,954 yekun bal alacaqsınız. Ancaq bu barədə daha sonra. Sonra sizə modelləri necə yığdığımızı və belə bir son sürətə necə nail olduğumuzu söyləyəcəyəm.

Sonra mən İsti Yenidən Başlamalarla Cosing Annealing və ya İsti Yenidən Başlamalarla Stokastik Qradient Eniş haqqında danışmaq istərdim. Kobud desək, prinsipcə, hər hansı bir optimallaşdırıcıdan istifadə edə bilərsiniz, amma əsas budur: əgər siz sadəcə bir şəbəkə məşq etsəniz və tədricən minimuma yaxınlaşsanız, hər şey qaydasındadır, bir şəbəkə əldə edəcəksiniz, müəyyən səhvlərə yol verir, ancaq siz bir az fərqli məşq edə bilər. Siz bəzi ilkin öyrənmə dərəcəsini təyin edəcəksiniz və bu düstura uyğun olaraq onu tədricən aşağı salacaqsınız. Siz onu aşağı salırsınız, şəbəkəniz bir az minimuma enir, sonra çəkiləri saxlayırsınız və yenidən məşqin əvvəlində olan öyrənmə sürətini təyin edirsiniz, bununla da bu minimumdan bir yerə yüksəlir və yenidən öyrənmə sürətinizi azaldırsınız.

Beləliklə, siz eyni anda bir neçə minimuma baş çəkə bilərsiniz, bu zaman itkiniz artı və ya mənfi eyni olacaq. Ancaq fakt budur ki, bu çəkilərə malik şəbəkələr tarixinizdə fərqli səhvlər verəcəkdir. Onları orta hesabla alaraq, bir növ yaxınlaşma əldə edəcəksiniz və sürətiniz daha yüksək olacaq.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

Modellərimizi necə yığdığımız haqqında. Təqdimatın əvvəlində dedim ki, testdəki məlumatların miqdarına və dərslərin sayına diqqət yetirin. Test setindəki hədəflərin sayına 1 əlavə edib siniflərin sayına bölsəniz, 330 rəqəmini alacaqsınız və bu forumda yazılmışdı - testdəki siniflər balanslıdır. Bu istifadə edilə bilər.

Buna əsaslanaraq Roman Solovyev bir metrik hazırladı, biz onu Proxy Score adlandırdıq ki, bu da liderlər lövhəsi ilə kifayət qədər uyğunlaşdı. Məsələ ondadır: siz proqnoz verirsiniz, proqnozlaşdırıcılarınızdan ilk 1-i götürün və hər sinif üçün obyektlərin sayını hesablayın. Sonra, hər bir dəyərdən 330 çıxın və nəticədə mütləq dəyərləri əlavə edin.

Aşağıdakı dəyərlər əldə edildi. Bu, bizə yoxlama üzrə liderlər lövhəsi yaratmağa deyil, yerli olaraq təsdiq etməyə və ansambllarımız üçün əmsalları seçməyə kömək etdi.

Ansambl ilə belə bir sürət əldə edə bilərsiniz. Başqa nə edə bilərdim? Tutaq ki, siz testinizdəki siniflərin balanslaşdırılmış olması məlumatından istifadə etdiniz.

Balans fərqli idi. Onlardan birinin nümunəsi — birinci yeri tutan uşaqlardan balans.

Biz nə etdik? Bizim balanslaşdırmamız olduqca sadə idi, bunu Evgeni Babaxnin təklif etdi. Biz ilk öncə proqnozlarımızı ilk 1-ə görə çeşidlədik və onlardan namizədləri seçdik - siniflərin sayı 330-u keçməsin. Lakin bəzi siniflər üçün 330-dan az proqnozlaşdırıcı ilə nəticələnirsiniz. Yaxşı, gəlin həmçinin ilk 2 və ilk 3-ə görə sıralayaq. , və biz də namizədləri seçəcəyik.

Bizim tarazlığımız birinci yerdəki balanslaşdırmadan nə ilə fərqlənirdi? Onlar iterativ yanaşmadan istifadə etdilər, ən populyar sinfi götürdülər və həmin sinif daha populyar olmayana qədər həmin sinif üçün ehtimalları bir az az saydılar. Növbəti ən populyar dərsi keçdik. Beləliklə, bütün siniflərin sayı bərabər olana qədər onları aşağı salmağa davam etdilər.

Şəbəkələri hazırlamaq üçün hər kəs müsbət və ya mənfi bir yanaşmadan istifadə etdi, lakin hamı balanslaşdırmadan istifadə etmədi. Balanslaşdırmadan istifadə edərək qızıla, şanslı olsaydınız, pula gedə bilərsiniz.

Tarixi necə əvvəlcədən emal etmək olar? Hər kəs tarixi, müsbət və ya mənfi, eyni şəkildə əvvəlcədən emal etdi - əl işi xüsusiyyətləri hazırladı, müxtəlif ştrix rəngləri ilə xronometrajları kodlaşdırmağa çalışdı və s. Bu barədə 8-ci yeri tutan Aleksey Nozdrin-Plotnitski danışdı.

Əlyazma təsvirlərinin təsnifatı. Yandex-də hesabat verin

O, bunu başqa cür etdi. Dedi ki, sizin bütün bu əl işi xüsusiyyətləriniz işləmir, buna ehtiyac yoxdur, şəbəkəniz bütün bunları öz-özünə öyrənməlidir. Bunun əvəzinə o, məlumatlarınızı əvvəlcədən emal edən öyrənmə modulları ilə gəldi. O, orijinal məlumatları əvvəlcədən emal etmədən onlara atdı - nöqtə koordinatları və vaxtlar.

Sonra koordinatlara əsaslanaraq fərqi götürdü və bütün vaxtlara əsaslanaraq orta hesabla götürdü. Və o, kifayət qədər uzun bir matrislə gəldi. O, 1xn ölçülü matris əldə etmək üçün ona bir neçə dəfə 64D bükülmə tətbiq etdi, burada n nöqtələrin ümumi sayıdır və nəticədə alınan matrisi kanalların sayını qəbul edən hər hansı bir konvolyusiya şəbəkəsinin təbəqəsinə qidalandırmaq üçün 64 edilir. - 64. o, 64xn matrisi əldə etdi, sonra bundan müəyyən ölçülü tenzor yaratmaq lazım idi ki, kanalların sayı 64-ə bərabər olsun. O, 0-dan 32-ə qədər diapazonda bütün X, Y nöqtələrini normallaşdırdı. 32x32 ölçülü tensor. Bilmirəm niyə 32x32 istəyirdi, sadəcə belə oldu. Və bu koordinatda o, 64xn ölçülü bu matrisin fraqmentini yerləşdirdi. Beləliklə, o, 32x32x64 tensorla başa çatdı ki, onu konvolyusiya neyron şəbəkəsinə əlavə edə bilərsiniz. Bütün demək istədiyim bu idi.

Mənbə: www.habr.com

Добавить комментарий