Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Virun e puer Méint hunn eis Kollege vu Google ausginn op Kaggle engem Concours engem Classeuren fir Biller ze schafen, déi am sensationelle kritt d 'Spill "Schnell, Zeechnen!" D'Equipe, déi Yandex Entwéckler Roman Vlasov abegraff, huet véiert Plaz am Concours. Um Januar Maschinn Léieren Training, Roman gedeelt seng Equipe Iddien, déi lescht Ëmsetzung vun der Classeuren, an interessant Praktike vu senge Géigner.


- Moien alleguer! Mäin Numm ass Roma Vlasov, haut wäert ech Iech soen iwwer Quick, Draw! Doodle Unerkennung Challenge.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Et waren fënnef Leit an eiser Equipe. Ech sinn direkt virun der Fusiounsfrist ugeschloss. Mir waren onglécklech, mir waren e bësse gerëselt, awer mir goufen aus der Geldpositioun gerëselt, a si goufen aus der Goldpositioun gerëselt. A mir hunn eng éierlech véiert Plaz geholl.

(Wärend dem Concours hunn d'Equipen sech selwer an enger Bewäertung observéiert, déi op Basis vun de Resultater op engem Deel vum proposéierten Dateset gezeechent gouf. Déi lescht Bewäertung gouf am Tour op engem aneren Deel vun der Dataset geformt. Dëst gëtt esou gemaach. datt d'Participanten d'Konkurrenz hir Algorithmen net op spezifesch Donnéeën upassen.Dofir an der Finall, beim Wiessel tëscht Bewäertungen, rëselen d'Positiounen e bëssen (vum englesche shake up - to mix): op aner Donnéeën kann d'Resultat erauskommen. anescht ze sinn.Equipe vum Roman war éischt an den Top XNUMX. An dësem Fall sinn déi XNUMX Top Suen, monetär Bewäertungszone, well nëmmen déi éischt dräi Plazen e Cashpräis ausgezeechent goufen.No der Shake-up war d'Equipe schonn an XNUMX. Plaz, grad esou verléiert déi aner Equipe d'Victoire, d'Goldpositioun. - Ed.)

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

D'Konkurrenz war och bedeitend datt Evgeniy Babakhnin e Groussmeeschter krut, Ivan Sosin e Meeschter krut, Roman Soloviev blouf e Groussmeeschter, Alex Parinov krut e Meeschter, ech gouf en Expert, an elo sinn ech schonn e Meeschter.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Wat ass dëst Quick, Draw? Dëst ass e Service vu Google. Google hat d'Zil fir AI ze populariséieren a wollt mat dësem Service weisen wéi neural Netzwierker funktionnéieren. Dir gitt dohinner, klickt op Loosst eis zéien, da kënnt eng nei Säit op, wou Dir gesot kritt: Zeechnen e Zickzack, Dir hutt 20 Sekonnen fir dëst ze maachen. Dir probéiert e Zickzack an 20 Sekonnen ze zéien, wéi zum Beispill hei. Wann Dir et fäerdeg bréngt, seet d'Netz datt et e Zickzack ass an Dir gitt weider. Et gi just sechs esou Biller.

Wann de Google Netzwierk net erkennt wat Dir gezeechent hutt, gouf e Kräiz op d'Aufgab gesat. Spéider wäert ech Iech soen wat et an Zukunft bedeit, ob eng Zeechnung vum Netz unerkannt gëtt oder net.

Dëse Service huet eng zimlech grouss Zuel vu Benotzer gesammelt, an all d'Biller, déi d'Benotzer gezeechent hunn, goufen protokolléiert.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Mir hunn et fäerdeg bruecht bal 50 Millioune Biller ze sammelen. Doraus gouf den Zuch an den Testdatum fir eise Concours entstanen. Iwwregens, d'Quantitéit vun den Donnéeën am Test an d'Zuel vun de Klassen sinn aus engem Grond fett markéiert. Ech wäert Iech e bësse méi spéit iwwer si soen.

D'Datenformat war wéi follegt. Dëst sinn net nëmmen RGB Biller, mee, ongeféier geschwat, e Log vun alles wat de Benotzer gemaach huet. Wuert ass eist Zil, Landcode ass wou den Auteur vum Doodle hierkënnt, Zäitstempel ass Zäit. Den unerkannten Label weist just ob d'Netzwierk d'Bild vu Google erkannt huet oder net. An d'Zeechnung selwer ass eng Sequenz, eng Approximatioun vun enger Curve déi de Benotzer mat Punkten zitt. An Timings. Dëst ass d'Zäit vum Ufank vum Zeechnen vum Bild.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Daten goufen an zwee Formater presentéiert. Dëst ass dat éischt Format, an dat zweet ass vereinfacht. Si hunn d'Zäite vun do ausgeschnidden an hunn dës Set vu Punkte mat engem méi klenge Set vu Punkte geschätzt. Fir dës benotzt se Douglas-Pecker Algorithmus. Dir hutt e grousse Set vu Punkten, déi einfach eng riicht Linn approximéieren, awer tatsächlech kënnt Dir dës Linn mat nëmmen zwee Punkten upassen. Dëst ass d'Iddi vum Algorithmus.

D'Donnéeën goufen wéi follegt verdeelt. Alles ass eenheetlech, awer et ginn e puer Auslänner. Wa mir de Problem geléist hunn, hu mir et net gekuckt. Den Haapt Saach ass datt et keng Klassen waren déi wierklech wéineg waren, mir hu keng Gewiicht Sampler an Dateniwwersampling gemaach.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Wéi hunn d'Biller ausgesinn? Dëst ass d'Klass "Fliger" a Beispiller dovun mat den Etiketten unerkannt an net unerkannt. Hir Verhältnis war iergendwou ronderëm 1 ze 9. Wéi Dir gesitt kann, sinn d'Donnéeën zimlech Kaméidi. Ech géif mengen et ass e Fliger. Wann Dir kuckt net unerkannt, am meeschte Fäll ass et just Kaméidi. Een huet souguer probéiert "Airplane" ze schreiwen, awer anscheinend op Franséisch.

Déi meescht Participanten hunn einfach Gitter geholl, Daten aus dëser Sequenz vu Linnen als RGB Biller gezunn an se an d'Netz geheit. Ech hunn ongeféier déiselwecht Manéier gezeechent: Ech hunn eng Palette vu Faarwen geholl, déi éischt Zeil mat enger Faarf gezeechent, déi am Ufank vun dëser Palette war, déi lescht Zeil mat enger anerer, déi um Enn vun der Palette war, an tëscht hinnen Ech interpoléiert iwwerall mat dëser Palette. Dëst huet iwwregens e bessert Resultat ginn wéi wann Dir wéi op der alleréischt Rutsch zeechnet - just schwaarz.

Aner Teammemberen, wéi den Ivan Sosin, hu liicht ënnerschiddlech Approche fir Zeechnen probéiert. Mat engem Kanal huet hien einfach e groe Bild gezeechent, mat engem anere Kanal huet hien all Schlag mat engem Gradient vun Ufank bis Enn, vun 32 op 255 gezeechent, a mam drëtte Kanal huet hien e Gradient iwwer all Schlag vun 32 op 255 gezeechent.

Eng aner interessant Saach ass datt den Alex Parinov d'Informatioun an d'Netz eropgelueden huet mam Landcode.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

D'Metrik, déi am Concours benotzt gëtt, ass mëttlerer Duerchschnëtt Präzisioun. Wat ass d'Essenz vun dëser Metrik fir Konkurrenz? Dir kënnt dräi Viraussoen ginn, a wann et keng korrekt Prädikatioun an dësen dräi gëtt, da kritt Dir 0. Wann et e richtege gëtt, da gëtt seng Uerdnung berücksichtegt. An d'Zilresultat gëtt als 1 gezielt gedeelt duerch d'Uerdnung vun Ärer Prognose. Zum Beispill hutt Dir dräi Prädiktoren gemaach, an dee richtegen ass deen Éischten, da deelt Dir 1 mat 1 a kritt 1. Wann de Prädiktor richteg ass a seng Uerdnung 2 ass, da deelt 1 op 2, kritt Dir 0,5. Well, etc.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Mat Datevirveraarbechtung - wéi Biller ze zéien an sou weider - hu mir e bëssen decidéiert. Wéi eng Architekturen hu mir benotzt? Mir hu probéiert Fettarchitekturen wéi PNASNet, SENet, an esou scho klassesch Architekturen wéi SE-Res-NeXt ze benotzen, si ginn ëmmer méi nei Concoursen un. Et waren och ResNet an DenseNet.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Wéi hu mir dat geléiert? All d'Modeller, déi mir geholl hunn, goufen op imagenet viraus trainéiert. Obwuel et vill Donnéeën, 50 Millioune Biller, awer nach ëmmer, wann Dir e Netzwierk op Imagenet pre-trainéiert hutt, huet et besser Resultater gewisen wéi wann Dir et einfach vun Null trainéiert.

Wéi eng Léiertechnike hu mir benotzt? Dëst ass Cosing Annealing mat Warm Restarts, iwwer déi ech e bësse méi spéit schwätzen. Dëst ass eng Technik déi ech a bal all vu menge rezente Concoursen benotzen, a mat hinnen stellt et sech eraus fir d'Gitter zimlech gutt ze trainéieren, fir e gudde Minimum ze erreechen.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Nächst Reduzéiere Léierrate op Plateau. Dir fänkt un d'Netz ze trainéieren, setzt e bestëmmte Léierquote fest, setzt se weider, an Äre Verloscht konvergéiert graduell op e bestëmmte Wäert. Dir kontrolléiert dëst, zum Beispill, fir zéng Epochen huet de Verloscht guer net geännert. Dir reduzéiert Äre Léierquote mat e puer Wäert a léiert weider. Et fällt erëm e bëssen, konvergéiert op e Minimum, an Dir senkt de Léierrate erëm, a sou weider, bis Äert Netzwierk endlech konvergéiert.

Als nächst ass eng interessant Technik: Zerfall de Léierrate net, erhéicht d'Batchgréisst. Et gëtt en Artikel mam selwechten Numm. Wann Dir en Netzwierk trainéiert, musst Dir de Léierrate net reduzéieren, Dir kënnt einfach d'Batchgréisst erhéijen.

Dës Technik, iwwregens, gouf vum Alex Parinov benotzt. Hien huet ugefaang mat enger Partie gläich wéi 408, a wann säi Netzwierk e Plateau erreecht huet, huet hien einfach d'Batchgréisst verduebelt, etc.

Tatsächlech erënnere mech net wat de Wäert seng Batchgréisst erreecht huet, awer wat interessant ass datt et Teams op Kaggle waren déi déiselwecht Technik benotzt hunn, hir Batchgréisst war ongeféier 10000 XNUMX. Iwwregens, modern Kaderen fir déif Léieren, wéi z. PyTorch, zum Beispill, erlaabt Iech dëst ganz einfach ze maachen. Dir generéiert Är Batch a schéckt se un d'Netzwierk net wéi et ass, a senger Ganzheet, awer deelt se a Stécker sou datt et an Är Videokaart passt, berechent d'Gradienten, an nodeems Dir de Gradient fir de ganze Batch berechent hutt, aktualiséieren d'Gewichte.

Iwwregens, grouss Batchgréissten waren nach ëmmer an dësem Concours abegraff, well d'Donnéeën zimmlech laut waren, an eng grouss Batchgréisst huet Iech gehollef de Gradient méi präzis unzeschätzen.

Pseudo-Etikettéierung gouf och benotzt, meeschtens vum Roman Soloviev benotzt. Hien huet ongeféier d'Halschent vun den Daten aus dem Test a Chargen geprobéiert, an huet d'Gitter op esou Chargen trainéiert.

D'Gréisst vun de Biller ass wichteg, awer de Fakt ass datt Dir vill Daten hutt, Dir musst laang trainéieren, a wann Är Bildgréisst zimlech grouss ass, da wäert Dir ganz laang trainéieren. Awer dëst huet net vill zu der Qualitéit vun Ärem leschte Klassifizéierer bäigefüügt, sou datt et derwäert war eng Aart Ofhandlung ze benotzen. A mir hu just Biller probéiert déi net ganz grouss an der Gréisst waren.

Wéi gouf dat alles geléiert? Fir d'éischt goufe kleng Fotoe gemaach, e puer Epoche sinn drop gelaf, dat huet zimlech vill Zäit gedauert. Duerno goufe grouss Biller gegeben, d'Netzwierk gouf trainéiert, dann nach méi, nach méi, fir et net vun Null ze trainéieren an net vill Zäit ze verschwenden.

Iwwer Optimizer. Mir hunn SGD an Adam benotzt. Op dës Manéier war et méiglech en eenzege Modell ze kréien, deen eng Geschwindegkeet vun 0,941-0,946 op der ëffentlecher Leaderboard huet, wat zimlech gutt ass.

Wann Dir d'Modeller op iergendeng Manéier ensemblet, kritt Dir iergendwou ronderëm 0,951. Wann Dir nach eng Technik benotzt, kritt Dir e Schlussscore vun 0,954 op der ëffentlecher Verwaltungsrot, sou wéi mir. Awer méi iwwer dat méi spéit. Als nächst wäert ech Iech soen wéi mir d'Modeller zesummegesat hunn a wéi mir et fäerdeg bruecht hunn esou eng final Geschwindegkeet z'erreechen.

Als nächst géif ech gär iwwer Cosing Annealing mat Warm Restarts oder Stochastic Gradient Descent mat Warm Restarts schwätzen. Grof geschwat, am Prinzip, kënnt Dir all Optimizer benotzen, awer de Punkt ass dëst: wann Dir just en Netz trainéiert a lues a lues op e Minimum konvergéiert, dann ass alles an der Rei, Dir kritt een Netz, et mécht verschidde Feeler, awer Dir kann et e bëssen anescht trainéieren. Dir wäert e puer initial Léierquote setzen, a lues a lues erofsetzen no dëser Formel. Dir senkt et, Äert Netz kënnt op e Minimum, da späichert Dir d'Gewiichter, a setzt erëm de Léierrate fest, deen am Ufank vum Training war, doduerch iergendwou no uewen vun dësem Minimum, an erëm Är Léierrate erofsetzen.

Also kënnt Dir e puer Minimum gläichzäiteg besichen, an deem Äre Verloscht, plus oder minus, d'selwecht ass. Awer de Fakt ass datt Netzwierker mat dëse Gewiichter verschidde Feeler op Ärem Datum ginn. Andeems Dir se duerchschnëtt, kritt Dir eng Aart Approximatioun, an Är Geschwindegkeet wäert méi héich sinn.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Iwwer wéi mir eis Modeller zesummegesat hunn. Am Ufank vun der Presentatioun sot ech op d'Quantitéit vun Daten am Test an d'Zuel vun de Klassen oppassen. Wann Dir 1 op d'Zuel vun den Ziler am Testset bäidréit an duerch d'Zuel vun de Klassen deelt, kritt Dir d'Zuel 330, an dëst gouf um Forum geschriwwen - datt d'Klassen am Test equilibréiert sinn. Dëst kéint benotzt ginn.

Baséierend op dësem ass de Roman Soloviev mat enger Metrik erauskomm, mir hunn et Proxy Score genannt, wat zimmlech gutt mam Leaderboard korreléiert. De Punkt ass: Dir maacht eng Prognose, huelt den Top 1 vun Äre Prognosen a zielt d'Zuel vun den Objeten fir all Klass. Als nächst, subtrahéiert 330 vun all Wäert an addéiert déi resultéierend absolut Wäerter.

Déi folgend Wäerter goufen kritt. Dëst huet eis gehollef net e probéiere Leaderboard ze kreéieren, mee lokal ze validéieren an Koeffizienten fir eis Ensemblen ze wielen.

Mat engem Ensembel kéint een esou eng Vitesse kréien. Wat soss konnt ech maachen? Ugeholl Dir hutt d'Informatioun benotzt datt d'Klassen an Ärem Test equilibréiert sinn.

D'Balance war anescht. E Beispill vun engem vun hinnen - Gläichgewiicht vun de Kärelen déi éischt Plaz huet.

Wat hu mir gemaach? Eis Gläichgewiicht war ganz einfach, et gouf vum Evgeny Babakhnin proposéiert. Mir hunn eis Prognosen fir d'éischt no Top 1 zortéiert an Kandidaten dovun erausgesicht - sou datt d'Zuel vun de Klassen net méi wéi 330 ass. Mee fir e puer Klassen schléisst Dir mat manner wéi 330 Prediktoren. Okay, loosst eis och no Top 2 an Top 3 sortéieren , a mir wäerten och Kandidaten wielen.

Wéi huet eis Equiliber vun der Equiliber vun der éischter Plaz ënnerscheet? Si hunn eng iterativ Approche benotzt, déi populärste Klass geholl an d'Wahrscheinlechkeeten fir dës Klass mat enger klenger Zuel erofgesat bis et net méi déi populärste Klass war. Mir hunn déi nächst beléifste Klass. Also si si weider erofgaang bis d'Zuel vun alle Klassen gläich gouf.

Jiddereen huet plus oder minus eng Approche benotzt fir Netzwierker ze trainéieren, awer net jiddereen huet Balance benotzt. Mat Hëllef vu Balance kënnt Dir a Gold goen, a wann Dir Gléck hutt, dann a Suen.

Wéi preprocessen engem Datum? Jiddereen huet den Datum, plus oder minus, op déiselwecht Manéier virveraarbecht - handgemaachte Features gemaach, probéiert Timings mat verschiddene Strichfaarwen ze codéieren, asw Alexey Nozdrin-Plotnitsky, deen 8. Plaz geholl huet, iwwer dëst geschwat.

Klassifikatioun vun handgeschriwwe Zeechnungen. Rapport zu Yandex

Hien huet et anescht gemaach. Hien huet gesot datt all dës handgemaachte Fonctiounen vun Iech net funktionnéieren, Dir musst dat net maachen, Äert Netzwierk soll dat alles selwer léieren. An amplaz ass hien mat Léiermoduler komm, déi Är Donnéeën virveraarbecht hunn. Hien huet déi ursprénglech Donnéeën an hinnen geheit ouni Virveraarbechtung - Punkt Koordinaten an Timings.

Dunn huet hien den Ënnerscheed op Basis vun de Koordinaten geholl, an huet alles op Basis vun den Timings duerchschnëttlech gemaach. An hien ass mat enger zimlech laanger Matrix komm. Hien huet e puer Mol 1D Konvolutioun applizéiert fir eng Matrix vun der Gréisst 64xn ze kréien, wou n d'Gesamtzuel vun de Punkten ass, a 64 ass gemaach fir déi resultéierend Matrix op d'Schicht vun all Konvolutiounsnetz ze fidderen, wat d'Zuel vun de Kanäl akzeptéiert. - 64. hien huet eng 64xn Matrix kritt, duerno war et néideg fir en Tensor vun enger Gréisst ze kreéieren, sou datt d'Zuel vun de Kanäl gläich ass wéi 64. Hien huet all Punkten X, Y am Beräich vun 0 bis 32 normaliséiert fir eng ze kreéieren Tensor vun der Gréisst 32x32. Ech weess net firwat hien 32x32 wollt, et ass just esou geschitt. A bei dëser Koordinat huet hien e Fragment vun dëser Matrix vu Gréisst 64xn gesat. Also ass et just mat engem 32x32x64 Tensor opgehalen, deen Dir weider an Äert konvolutionalt neuralt Netzwierk setzen konnt. Dat war alles wat ech wollt soen.

Source: will.com

Setzt e Commentaire