Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Бир нече ай мурун, Google биздин кесиптештер жүргүзүлгөн сенсациялуу алынган сүрөттөр үчүн классификатор түзүү үчүн Kaggle боюнча конкурс оюн "Тез, тарт!" Яндекстин иштеп чыгуучусу Роман Власов кирген команда сынакта төртүнчү орунду ээледи. Январь айындагы машина үйрөнүү тренингинде Роман өз командасынын идеялары, классификатордун акыркы аткарылышы жана атаандаштарынын кызыктуу тажрыйбалары менен бөлүштү.


- Баарына салам! Менин атым Рома Власов, бүгүн мен сизге Quick, Draw жөнүндө айтып берем! Doodle таануу чакырыгы.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Биздин командада беш киши бар эле. Мен бириктирүү мөөнөтү аяктаганга чейин кошулдум. Жолубуз болбой, бир аз силкиндик, бирок биз акча позициясынан, алар алтын позициядан силкишти. Ал эми ардактуу төртүнчү орунду алдык.

(Сынактын жүрүшүндө командалар сунушталган маалымат топтомунун бир бөлүгүндө көрсөтүлгөн жыйынтыктардын негизинде түзүлгөн рейтингде өздөрүн байкашты. Жыйынтыктоочу рейтинг өз кезегинде маалымат топтомунун башка бөлүгүндө түзүлдү. Бул ушундай жасалат. Конкурстун катышуучулары алгоритмдерин конкреттүү маалыматтарга тууралабайт.Ошондуктан, финалда рейтингдер ортосунда которуштурууда позициялар бир аз солкулдашат (англисчеден shake up - аралаштыруу): башка маалыматтар боюнча жыйынтык чыгышы мүмкүн. Роман командасы биринчи үчтүккө кирди.Мында алдыңкы үчтүк акчалай, акчалай рейтинг зонасы, анткени биринчи үч орунга гана акчалай сыйлык ыйгарылды.Тилкеден кийин команда буга чейин эле кирген. төртүнчү орун.Ошондой эле башка команда жеңишти, алтын позициясын жоготту.- Ред.)

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Мелдеш Евгений Бабахнин гроссмейстер, Иван Сосин мастер, Роман Соловьев гроссмейстер болуп калды, Алекс Паринов мастер болуп калды, мен эксперт болуп калдым, азыр мастер болуп калдым.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Бул эмне Quick, Draw? Бул Google компаниясынын кызматы. Google AIны жайылтуу максатын көздөгөн жана бул кызмат менен нейрон тармактарынын кантип иштээрин көрсөткүсү келген. Сиз ал жакка барасыз, "Келгиле тартабыз" дегенди басыңыз, ошондо сизге айтылган жерде жаңы барак пайда болот: зигзаг тартыңыз, муну жасоо үчүн сизде 20 секунд бар. Сиз, мисалы, бул жердегидей, 20 секунданын ичинде зигзаг тартканга аракет кылып жатасыз. Ийгиликке жетсең, тармак бул зигзаг дейт жана сен андан ары кетесиң. Мындай сүрөттөр алты гана.

Эгер Google тармагы сиз тарткан нерсени тааный албаса, тапшырмага крест коюлган. Тармакта чийме таанылабы же жокпу, бул келечекте эмнени билдирерин кийинчерээк айтып берем.

Бул кызмат колдонуучулардын кыйла көп санын чогултуп, колдонуучулар тарткан бардык сүрөттөр журналга жазылды.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Биз дээрлик 50 миллион сүрөттөрдү чогулта алдык. Ушундан улам биздин мелдештин поезди жана сыноо датасы түзүлдү. Айтмакчы, тесттеги маалыматтардын көлөмү жана класстардын саны кандайдыр бир себептерден улам кара шрифт менен белгиленет. Мен алар жөнүндө бир аздан кийин айтып берем.

Маалымат форматы төмөнкүдөй болгон. Бул жөн гана RGB сүрөттөрү эмес, бирок, болжол менен айтканда, колдонуучу жасаган бардык нерселердин журналы. Word - биздин максат, өлкө коду - дудлдун автору, убакыт белгиси - убакыт. Таанылган энбелги тармактын сүрөттү Google'дан тааныганын же тааныбаганын көрсөтөт. Ал эми чийүүнүн өзү колдонуучу чекиттер менен тарткан ийри сызыктын ырааттуулугу, жакындашуусу. Жана убакыттар. Бул сүрөт тартуу башталгандан берки убакыт.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Маалыматтар эки форматта берилди. Бул биринчи формат, ал эми экинчиси жөнөкөйлөштүрүлгөн. Алар ошол жерден убакыттарды кесип алып, бул пункттардын топтомун азыраак чекиттер менен жакындашты. Бул үчүн алар колдонгон Дуглас-Пеккер алгоритми. Сизде жөн гана түз сызыкты жакындаткан чекиттердин чоң топтому бар, бирок чындыгында сиз бул сызыкты эки эле чекит менен жакындата аласыз. Бул алгоритмдин идеясы.

Маалыматтар төмөнкүдөй бөлүштүрүлдү. Баары бирдей, бирок кээ бир четтөөлөр бар. Көйгөйдү чечкенде биз аны караган жокпуз. Эң негизгиси, чындап эле аз болгон класстар болгон эмес, биз салмактуу үлгү алгычтарды жана маалыматтарды ашыкча тандап алуунун кереги жок болчу.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Сүрөттөр кандай болгон? Бул "самолет" классы жана анын үлгүлөрү таанылган жана таанылбаган этикеткалары бар. Алардын катышы 1ден 9га чейин болгон. Көрүнүп тургандай, маалыматтар абдан ызы-чуу. Мен бул учак деп ойлойм. Эгер таанылбаганын карасаңыз, көпчүлүк учурда бул жөн гана ызы-чуу. Кимдир бирөө "самолет" деп жазууга аракет кылды, бирок, сыягы, француз тилинде.

Көпчүлүк катышуучулар жөн гана торлорду алып, RGB сүрөттөрү катары сызыктардын бул ырааттуулугунан маалыматтарды тартып, аларды тармакка ыргытышты. Мен болжол менен ушундай жол менен тарттым: түстөрдүн палитрасын алдым, биринчи сызыкты бир түс менен тарттым, бул палитранын башында, акыркы сызыгы башка менен, палитранын аягында жана алардын ортосунда. Мен бул палитраны колдонуп бардык жерде интерполяция жасадым. Айтмакчы, бул биринчи слайддагыдай эле кара түстө тартканга караганда жакшыраак натыйжа берди.

Команданын башка мүчөлөрү, мисалы, Иван Сосин сүрөт тартууда бир аз башкача ыкмаларды колдонушкан. Бир канал менен ал жөн эле боз сүрөт тартты, башка канал менен ар бир штрихти башынан аягына чейин градиент менен 32ден 255ке чейин тартты, ал эми үчүнчү канал менен 32ден 255ке чейин бардык штрихтердин үстүнөн градиент тартты.

Дагы бир кызык нерсе, Алекс Паринов маалыматты өлкөнүн кодун колдонуп тармакка жүктөгөн.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Мелдеште колдонулган метрика Орточо орточо тактык болуп саналат. Атаандаштык үчүн бул көрсөткүчтүн маңызы эмнеде? Үч предикти бере аласың, эгер бул үчөөдө туура предикт жок болсо, анда 0 болот, туурасы болсо, анда анын тартиби эске алынат. Ал эми максаттуу натыйжа 1 катары эсептелинет, сиздин божомолуңуздун тартибине бөлүнөт. Мисалы, сиз үч болжолдоочу жасадыңыз, туурасы биринчиси, анда 1ди 1ге бөлүп, 1ди аласыз. Эгерде божомолдоочу туура болсо жана анын тартиби 2 болсо, анда 1ди 2ге бөлүңүз, анда 0,5 аласыз. Мейли, ж.б.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Маалыматтарды алдын ала иштетүү менен - ​​сүрөттөрдү кантип тартуу керек жана башкалар - биз бир аз чечтик. Кандай архитектураларды колдондук? Биз PNASNet, SENet сыяктуу майлуу архитектураларды жана SE-Res-NeXt сыяктуу классикалык архитектураларды колдонууга аракет кылдык, алар барган сайын жаңы сынактарга кирип жатышат. ResNet жана DenseNet да бар болчу.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Муну кантип үйрөттүк? Биз тарткан бардык моделдер imagenetте алдын ала даярдалган. Маалыматтар көп болсо да, 50 миллион сүрөт, бирок баары бир, эгер сиз imagenetте алдын ала даярдалган тармакты алсаңыз, аны нөлдөн баштап үйрөткөнүңүзгө караганда жакшы натыйжаларды көрсөттү.

Биз кандай окутуу ыкмаларын колдондук? Бул жылуу кайра баштоо менен Cosing Annealing, ал жөнүндө мен бир аздан кийин сүйлөшөм. Бул менин акыркы мелдештеримдин дээрлик бардыгында колдонгон ыкма жана алар менен торлорду жакшы машыктырып, жакшы минимумга жетишүүгө жардам берет.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Кийинки Платодо үйрөнүү ылдамдыгын төмөндөтүү. Сиз тармакты машыктыра баштайсыз, белгилүү бир окуу курсун коюп, аны үйрөтүүнү улантасыз жана сиздин жоготууңуз акырындык менен белгилүү бир мааниге жакындайт. Сиз муну текшерип көрүңүз, мисалы, он доордун ичинде жоготуу такыр өзгөргөн жок. Сиз өзүңүздүн окуу курсуңузду кандайдыр бир мааниге азайтып, үйрөнүүнү улантасыз. Ал кайрадан бир аз төмөндөйт, минималдуу түрдө жакындайт, жана сиз дагы бир жолу окуу курсун төмөндөтөсүз, ж.б.у.с.

Кийинки кызыктуу ыкма: үйрөнүү ылдамдыгын азайтпаңыз, партиянын көлөмүн көбөйтүңүз. Ушундай эле ат менен макала бар. Тармакты үйрөткөндө окуу ылдамдыгын азайтуунун кереги жок, жөн гана партиянын көлөмүн көбөйтө аласыз.

Бул ыкма, демек, Alex Parinov тарабынан колдонулган. Ал 408ге барабар партия менен баштады жана анын тармагы кандайдыр бир платого жеткенде, ал жөн гана партиянын өлчөмүн эки эсеге көбөйттү ж.б.

Чынында, анын партиясынын көлөмү кандай мааниге жеткени эсимде жок, бирок кызыгы, Kaggleде ошол эле техниканы колдонгон командалар болгон, алардын пакетинин көлөмү болжол менен 10000 XNUMX. Айтмакчы, терең үйрөнүү үчүн заманбап алкактар, мисалы Мисалы, PyTorch муну оңой жасоого мүмкүндүк берет. Сиз партияңызды түзөсүз жана аны тармакка мурункудай эмес, толугу менен тапшырасыз, бирок видео картаңызга туура келгидей кылып бөлүктөргө бөлүп, градиенттерди эсептеп, бүт партия үчүн градиентти эсептеп чыккандан кийин жаңыртыңыз салмактар.

Айтмакчы, чоң партиялардын өлчөмдөрү дагы эле бул сынакка киргизилген, анткени маалыматтар абдан ызы-чуу болгон жана чоң партия өлчөмү градиентти такыраак болжолдоого жардам берген.

Псевдомаркация да колдонулган, аны көбүнчө Роман Соловьев колдонгон. Ал тесттен алынган маалыматтардын жарымына жакынын партиялар менен тандап алды жана торду ушундай партияларга үйрөттү.

Сүрөттөрдүн өлчөмү маанилүү болчу, бирок сизде көп маалыматтар бар, сиз көпкө машыгышыңыз керек, ал эми сүрөтүңүздүн өлчөмү абдан чоң болсо, анда сиз абдан узак убакытка машыгасыз. Бирок бул сиздин акыркы классификаторуңуздун сапатына көп деле кошумча болгон жок, ошондуктан кандайдыр бир соодалашууну колдонууга арзырлык болду. Ал эми биз көлөмү өтө чоң эмес сүрөттөрдү гана сынап көрдүк.

Мунун баары кантип үйрөнүлгөн? Биринчиден, кичинекей сүрөттөр тартылып, алар боюнча бир нече доорлор тартылган, бул бир топ убакытты алды. Андан кийин чоң өлчөмдөгү сүрөттөр берилди, тармак машыктырылган, андан да көп, андан да көп, аны нөлдөн баштап үйрөтпөө жана көп убакытты текке кетирбөө үчүн.

Оптимизаторлор жөнүндө. Биз SGD жана Адамды колдондук. Ушундай жол менен коомдук лидер тактасында 0,941-0,946 ылдамдыгын берген бирдиктүү моделди алууга мүмкүн болду, бул абдан жакшы.

Эгерде сиз моделдерди кандайдыр бир жол менен бириктирсеңиз, анда сиз 0,951ге жакын жерде аласыз. Эгер сиз дагы бир ыкманы колдонсоңуз, бизде болгондой, коомдук тактада 0,954 жыйынтык упай аласыз. Бирок бул тууралуу кийинчерээк. Эми биз моделдерди кантип чогултканыбызды жана мындай акыркы ылдамдыкка кантип жеткенибизди айтып берем.

Кийинки мен Жылуу кайра баштоо менен Cosing Annealing же Жылуу кайра баштоо менен стохастикалык градиенттин түшүүсү жөнүндө айткым келет. Болжол менен айтканда, принцип боюнча, сиз каалаган оптимизаторду колдоно аласыз, бирок бул жерде: эгер сиз жөн эле бир тармакты машыктырып, акырындык менен ал кандайдыр бир минимумга жакындаса, анда баары жакшы, сиз бир тармак аласыз, ал белгилүү каталарды кетирет, бирок сиз аны бир аз башкача үйрөтө алат. Сиз баштапкы окуу ылдамдыгын орнотосуз жана аны ушул формулага ылайык акырындык менен төмөндөтөсүз. Сиз аны төмөндөтөсүз, тармагыңыз бир аз минимумга жетет, андан кийин сиз салмактарды сактайсыз жана кайрадан машыгуунун башталышында болгон үйрөнүү ылдамдыгын орнотосуз, ошону менен бул минимумдан бир жерге көтөрүлүп, окуу курсуңузду кайрадан төмөндөтөсүз.

Ошентип, сиз бир эле учурда бир нече минимумга бара аласыз, анда сиздин жоготууңуз плюс же минус бирдей болот. Бирок, чындыгында, бул салмагы менен тармактар ​​сиздин күнү ар кандай каталарды берет. Аларды орточо эсепке алуу менен сиз кандайдыр бир жакындоого ээ болосуз жана ылдамдыгыңыз жогору болот.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Моделдерибизди кантип чогултканыбыз жөнүндө. Презентациянын башында мен тесттеги маалыматтардын көлөмүнө жана класстардын санына көңүл бурууну айттым. Эгерде сиз тесттик топтомдогу максаттардын санына 1ди кошуп, класстардын санына бөлсөңүз, 330 санын аласыз, бул форумда жазылган - тесттеги класстар тең салмактуу деп. Муну колдонсо болот.

Мунун негизинде Роман Соловьев метрика ойлоп тапты, биз аны прокси упай деп атадык, ал лидер тактасы менен абдан жакшы корреляцияланган. Кеп мына ушунда: сиз прогноз жасайсыз, алдын ала айтуучулардын эң мыкты 1ин алып, ар бир класс үчүн объекттердин санын эсептейсиз. Андан кийин, ар бир мааниден 330ду алып, натыйжада абсолюттук маанилерди кошуңуз.

Төмөнкү баалуулуктар алынды. Бул бизге лидер тактасын түзүүгө эмес, жергиликтүү деңгээлде текшерүүгө жана ансамблдерибиз үчүн коэффициенттерди тандоого жардам берди.

Ансамбль менен ушундай ылдамдыкка ээ боло аласың. Дагы эмне кылмак элем? Сиз тестиңиздеги класстар тең салмактуу деген маалыматты колдондуңуз дейли.

Тең салмактуулук башкача болгон. Алардын биринин мисалы — биринчи орунду ээлеген жигиттерден салмактуулук.

Биз эмне кылдык? Биздин тең салмактуулук абдан жөнөкөй эле, аны Евгений Бабахнин сунуштаган. Адегенде биз алдын ала божомолдорубузду 1-орун боюнча иргеп, алардын ичинен талапкерлерди тандап алдык – класстардын саны 330дан ашпашы үчүн. Бирок кээ бир класстар үчүн 330дан аз болжолдоочуларга ээ болосуз. Макул, ошондой эле алдыңкы 2 жана эң мыкты 3 боюнча иреттеп көрөлү. , жана биз талапкерлерди да тандайбыз.

Биздин тең салмактуулук биринчи орундагы тең салмактуулуктан эмнеси менен айырмаланды? Алар итеративдик ыкманы колдонушту, эң популярдуу классты алып, ал класс эң популярдуу болбой калганга чейин ал класстын ыктымалдуулугун кичине санга азайтышты. Кийинки эң популярдуу классты алдык. Ошентип, алар бардык класстардын саны бирдей болмоюнча, аларды төмөндөтүштү.

Поезд тармактарына ар бир адам плюс же минус бир ыкманы колдонушкан, бирок баары тең салмактуулукту колдонушкан эмес. Тең салмактуулукту колдонуу менен, сиз алтынга, ал эми бактылуу болсоңуз, акчага кирсеңиз болот.

Датаны кантип алдын ала иштетүү керек? Ар бир адам датаны, плюс же минус, бир эле жол менен алдын ала иштетишкен - колго жасалган функцияларды жасоо, таймингдерди ар кандай штрих түстөр менен коддоо аракети жана башкалар. Бул тууралуу 8-орунду алган Алексей Ноздрин-Плотницкий айтып берди.

Кол жазма чиймелердин классификациясы. Яндексте билдирүү

Ал муну башкача кылды. Анын айтымында, бул сиздин кол менен жасалган бардык өзгөчөлүктөрүңүз иштебейт, мунун кереги жок, сиздин тармагыңыз мунун баарын өз алдынча үйрөнүшү керек. Анын ордуна, ал маалыматыңызды алдын ала иштеткен окуу модулдарын ойлоп тапты. Ал баштапкы маалыматтарды аларга алдын ала иштетилбестен таштады - чекиттин координаттары жана убакыттары.

Андан кийин ал координаттардын негизинде айырманы алып, убакыттын негизинде бардыгын орто эсеп менен эсептеди. Жана ал бир топ узун матрицаны ойлоп тапты. Ал 1xn өлчөмүндөгү матрицаны алуу үчүн ага бир нече жолу 64D конволюциясын колдонгон, мында n - чекиттердин жалпы саны жана 64 алынган матрицаны каналдардын санын кабыл алган ар кандай конволюциялык тармактын катмарына берүү үчүн жасалган. - 64. ал 64xn матрицасын алды, андан кийин каналдардын саны 64кө барабар болушу үчүн кандайдыр бир өлчөмдөгү тензорду түзүү керек болду. Ал бардык X, Y чекиттерин 0дөн 32ге чейинки диапазондо нормалдаштырды. тензор өлчөмү 32x32. Ал эмне үчүн 32x32 каалаганын билбейм, бул жөн эле ушундай болду. Жана бул координатта ал 64xn өлчөмүндөгү бул матрицанын фрагментин койду. Ошентип, ал 32x32x64 тензору менен аяктады, аны сиз конволюциялык нейрон тармагыңызга киргизе аласыз. Меники бүттү.

Source: www.habr.com

Комментарий кошуу