Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Volana vitsy lasa izay, ny mpiara-miasa aminay avy amin'ny Google lany ao amin'ny Kaggle fifaninanana hamoronana fanasokajiana ho an'ny sary azo ao amin'ny manaitra ny lalao "Haingana, Draw!" Ny ekipa, izay nahitana ny mpamorona Yandex Roman Vlasov, dia nahazo ny laharana fahefatra tamin'ny fifaninanana. Tamin'ny fanofanana fianarana milina tamin'ny Janoary, nizara ny hevitr'ireo ekipany i Roman, ny fampiharana farany ny fanasokajiana, ary ny fomba mahaliana ataon'ireo mpifanandrina aminy.


- Salama daholo! Roma Vlasov no anarako, anio aho dia hilaza aminao momba ny Quick, Draw! Doodle Recognition Challenge.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Nisy olona dimy tao amin'ny ekipanay. Niditra mialohan'ny fe-potoana fanakambanana aho. Tsy tsara vintana izahay, nihozongozona kely izahay, saingy nihozongozona avy amin'ny toeran'ny vola, ary izy ireo dia nihozongozona avy amin'ny toerana volamena. Ary nahazo ny toerana fahefatra mendrika izahay.

(Nandritra ny fifaninanana, nijery ny tenany tao anaty naoty ireo ekipa, izay natsangana tamin'ny alalan'ny vokatra naseho tamin'ny ampahany amin'ny angon-drakitra natolotra. fa ny mpandray anjara amin'ny fifaninanana dia tsy manitsy ny algorithm amin'ny data manokana. Noho izany, amin'ny famaranana, rehefa mifamadika eo anelanelan'ny naoty, mihozongozona kely ny toerana (avy amin'ny teny anglisy mihozongozona - mampifangaro): amin'ny angona hafa, mety hivoaka ny valiny Ny ekipan'i Roman no voalohany tao amin'ny telo voalohany. Amin'ity tranga ity, ny telo voalohany dia ny vola, ny faritra fanombanana ara-bola, satria ireo toerana telo voalohany ihany no nahazo loka. laharana fahefatra. Toy izany koa, lavon’ny ekipa hafa ny fandresena, ny laharana volamena. - Ed.)

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Ny fifaninanana dia manan-danja ihany koa amin'ny hoe Evgeniy Babakhnin dia nahazo grandmaster, Ivan Sosin nahazo tompo, Roman Soloviev dia nijanona ho grandmaster, Alex Parinov nahazo tompo, lasa manam-pahaizana aho, ary izao dia efa tompo.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Inona ity Quick, Draw ity? Ity dia serivisy avy amin'ny Google. Google dia manana tanjona hampalaza ny AI ary miaraka amin'ity serivisy ity dia te hampiseho ny fomba fiasan'ny tambajotra neural. Mankanesa any ianao, tsindrio Andao hanao sary, ary misy pejy vaovao mipoitra izay ilazana anao: manaova zigzag, manana 20 segondra ianao hanaovana izany. Miezaka manao zigzag ianao ao anatin'ny 20 segondra, toy ny eto, ohatra. Raha tafita ianao dia lazain'ny tambajotra fa zigzag io ary mandroso ianao. Enina ihany ny sary toy izany.

Raha tsy fantatry ny tambajotran'i Google ny zavatra nataonao dia nisy lakroa napetraka tamin'ilay asa. Holazaiko aminao any aoriana izay mety ho dikan'izany amin'ny ho avy raha eken'ny tambajotra na tsia ny sary iray.

Ity serivisy ity dia nanangona mpampiasa marobe, ary ny sary rehetra nataon'ireo mpampiasa dia voarakitra an-tsoratra.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Nahavita nanangona sary efa ho 50 tapitrisa izahay. Avy amin'izany no niforona ny fiaran-dalamby sy ny datin'ny andrana amin'ny fifaninanantsika. Raha ny marina, ny habetsaky ny angon-drakitra ao amin'ny fitsapana sy ny isan'ny kilasy dia asongadin'ny bold noho ny antony iray. Holazaiko aminao ny momba azy ireo aoriana kely.

Ny endrika data dia toy izao manaraka izao. Tsy sary RGB fotsiny ireo, fa, raha lazaina amin'ny teny manodidina, dia diarin'ny zavatra rehetra nataon'ny mpampiasa. Teny no kendrenay, kaodim-pirenena no niavian'ny mpanoratra ny doodle, fotoana ny fotoana. Ny mari-pamantarana fantatra dia mampiseho fotsiny raha fantatry ny tambajotra ny sary avy amin'ny Google na tsia. Ary ny sary dia filaharana, fanombanana ny curve izay ataon'ny mpampiasa amin'ny teboka. Ary ny fotoana. Izao no fotoana hanombohan'ny fanaovana sary.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Naseho tamin'ny endrika roa ny angona. Ity no endrika voalohany, ary ny faharoa dia notsorina. Nokapain'izy ireo ny fotoana avy teo ary notombaniny tamin'ny teboka kely kokoa io andiana teboka io. Ho an'izany dia nampiasain'izy ireo Douglas-Pecker algorithm. Manana teboka marobe ianao izay manakaiky ny tsipika mahitsy, fa raha ny marina dia azonao atao ny manombantombana io tsipika io amin'ny teboka roa monja. Izany no hevitry ny algorithm.

Ny angon-drakitra dia nozaraina toy izao manaraka izao. Ny zava-drehetra dia mitovy, fa misy ny sasany tsy misy dikany. Rehefa namaha ny olana izahay dia tsy nijery izany. Ny tena zava-dehibe dia tsy nisy kilasy izay tena vitsy, tsy voatery nanao samplers mavesatra sy oversampling data izahay.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Nanao ahoana ny endrik'ireo sary? Ity no kilasy "fiaramanidina" sy ohatra avy amin'izany miaraka amin'ny etikety fantatra sy tsy fantatra. Ny tahan'izy ireo dia manodidina ny 1 ka hatramin'ny 9. Araka ny hitanao dia mitabataba ny angon-drakitra. Ataoko fa fiaramanidina io. Raha jerena hoe tsy fantatra dia tabataba fotsiny izany matetika. Nisy nanandrana nanoratra β€œfiaramanidina” mihitsy aza, saingy toa tamin’ny teny frantsay.

Ny ankamaroan'ny mpandray anjara dia naka grids fotsiny, naka angona avy amin'ity filaharan'ny tsipika ity ho sary RGB, ary nanipy azy ireo tao anaty tambajotra. Toy izany koa no nanaovako sary: ​​naka palette misy loko aho, nanao ny tsipika voalohany tamin'ny loko iray, izay teo am-piandohan'ity palette ity, ny andalana farany niaraka tamin'ny iray hafa, izay teo amin'ny faran'ny palette, ary teo anelanelan'izy ireo. Niditra na aiza na aiza aho tamin'ny fampiasana ity palette ity. Teny an-dalana, izany dia nanome vokatra tsara kokoa noho ny manao sary toy ny tamin'ny sary voalohany indrindra - mainty fotsiny.

Ny mpikambana hafa ao amin'ny ekipa, toa an'i Ivan Sosin, dia nanandrana fomba hafa kely amin'ny fanaovana sary. Tamin'ny fantsona iray dia nanao sary volondavenona fotsiny izy, tamin'ny fantsona iray hafa dia nanao gradient tsirairay avy tamin'ny voalohany ka hatramin'ny farany, manomboka amin'ny 32 ka hatramin'ny 255, ary tamin'ny fantsona fahatelo dia nanao gradient tamin'ny tsipika rehetra nanomboka tamin'ny 32 ka hatramin'ny 255.

Ny zavatra mahaliana iray hafa dia ny nandefasan'i Alex Parinov vaovao tao amin'ny tambajotra tamin'ny alΓ lan'ny code country.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Ny metrika ampiasaina amin'ny fifaninanana dia Mean Average Precision. Inona no votoatin'ity metrika ity amin'ny fifaninanana? Afaka manome vinavina telo ianao, ary raha tsy misy vinavina marina amin'ireo telo ireo, dia mahazo 0 ianao. Raha misy marina, dia raisina ny baikony. Ary ny vokatra kendrena dia isaina ho 1 mizara amin'ny filaharan'ny vinavinao. Ohatra, nanao vinavina telo ianao, ary ny marina no voalohany, dia zarao 1 amin'ny 1 ianao dia mahazo 1. Raha marina ny vinavina ary 2 ny filahany, dia zarao ny 1 amin'ny 2 dia mahazo 0,5 ianao. Eny, sns.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Miaraka amin'ny preprocessing data - ny fomba fanaovana sary sy ny sisa - dia nanapa-kevitra kely izahay. Inona no rafitra nampiasaintsika? Niezaka nampiasa rafitra matavy toa ny PNASNet, SENet, ary ny maritrano efa mahazatra toy ny SE-Res-NeXt izahay, dia mihamitombo hatrany ny fifaninanana vaovao. Nisy ihany koa ny ResNet sy DenseNet.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Ahoana no nampianarantsika izany? Ny modely rehetra nalainay dia efa voaofana mialoha tao amin'ny imagenet. Na dia betsaka aza ny angon-drakitra, sary 50 tapitrisa, na izany aza, raha maka tambajotra efa voaofana mialoha amin'ny imagenet ianao, dia nampiseho vokatra tsara kokoa noho ny nampiofanao azy hatrany am-boalohany.

Inona no teknika fampianarana nampiasaintsika? Ity ny Cosing Annealing with Warm Restarts, izay horesahiko ato aoriana kely. Ity dia teknika ampiasaiko amin'ny ankamaroan'ny fifaninanana nataoko vao haingana, ary miaraka amin'izy ireo dia hita fa mampiofana tsara ny grids, mba hahatratrarana ny kely indrindra.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Manaraka Ahena ny tahan'ny fianarana amin'ny Plateau. Manomboka manofana ny tambajotra ianao, mametraka taham-pianarana iray, manohy mampianatra azy, ary ny fahaverezanao dia mivadika tsikelikely amin'ny sanda iray. Jereo izany, ohatra, nandritra ny folo taona dia tsy niova mihitsy ny fatiantoka. Mampihena ny tahan'ny fianaranao amin'ny sanda sasany ianao ary manohy mianatra. Mihena kely indray izy io, mifamatotra amin'ny kely indrindra, ary ampidinao indray ny tahan'ny fianarana, sy ny sisa, mandra-pahatongan'ny tambajotranao amin'ny farany.

Ny manaraka dia teknika mahaliana: Aza simba ny tahan'ny fianarana, ampitomboy ny haben'ny batch. Misy lahatsoratra mitovy anarana. Rehefa manofana tambajotra ianao dia tsy voatery hampihena ny tahan'ny fianarana, azonao atao ny mampitombo ny haben'ny batch.

Ity teknika ity, teny an-dalana, dia nampiasain'i Alex Parinov. Nanomboka tamin'ny andiany mitovy amin'ny 408 izy, ary rehefa tonga tany amin'ny lembalemba sasany ny tambajotrany dia nampitomboiny avo roa heny ny haben'ny batch, sns.

Raha ny marina, tsy tadidiko hoe inona no lanjan'ny batch azony, fa ny mahaliana dia misy ekipa ao amin'ny Kaggle izay nampiasa teknika mitovy, ny haben'ny batch dia tokony ho 10000 XNUMX. Raha ny marina, ny rafitra maoderina ho an'ny fianarana lalina, toy ny PyTorch, ohatra, dia ahafahanao manao izany mora foana. Mamorona ny batch ianao ary manolotra izany amin'ny tambajotra fa tsy amin'ny maha-izy azy, amin'ny ankapobeny, fa zarao amin'ny ampahany mba hifanaraka amin'ny karatra video, kajy ny gradients, ary rehefa vita ny kajy ny gradient ho an'ny batch manontolo, manavao. ny lanja.

Raha ny tokony ho izy, dia mbola nampidirina tamin'ity fifaninanana ity ny haben'ny batch lehibe, satria ny angon-drakitra dia nitabataba be, ary ny haben'ny batch lehibe dia nanampy anao hamantatra tsara kokoa ny gradient.

Nampiasaina koa ny pseudo-labeling, izay nampiasain'i Roman Soloviev ny ankamaroany. Nanao santionany teo amin'ny antsasaky ny angon-drakitra avy amin'ny fitsapana amin'ny andiany izy, ary nampiofana ny grid amin'ny andiany toy izany.

Ny haben'ny sary dia zava-dehibe, fa ny zava-misy dia manana data be dia be ianao, mila miofana mandritra ny fotoana maharitra ianao, ary raha toa ka lehibe ny haben'ny sarinao, dia hiofana mandritra ny fotoana maharitra ianao. Saingy tsy nanampy betsaka ny kalitaon'ny mpanasokajy farany izany, ka mendrika ny hampiasa karazana varotra. Ary sary tsy dia lehibe loatra no nandramanay.

Ahoana no nianarana izany rehetra izany? Voalohany, sary kely no nalaina, vanim-potoana maromaro no natao tamin'izy ireo, naharitra fotoana be izany. Avy eo dia nomena sary lehibe, nampiofanina ny tambajotra, avy eo vao mainka, vao mainka aza, mba tsy hampiofana azy hatrany am-piandohana ary tsy handany fotoana be.

Momba ny optimizers. Nampiasa SGD sy Adam izahay. Amin'izany fomba izany dia azo atao ny mahazo modely tokana, izay nanome ny hafainganam-pandeha 0,941-0,946 eo amin'ny tabilao ho an'ny daholobe, izay tena tsara.

Raha manambatra ireo modely amin'ny fomba sasany ianao dia hahazo toerana manodidina ny 0,951. Raha mampiasa teknika iray hafa ianao, dia hahazo isa farany 0,954 eo amin'ny biraom-panjakana, tahaka ny azonay. Fa bebe kokoa momba izany any aoriana. Avy eo dia holazaiko aminao ny fomba nanangonay ny modely, ary ny fomba nahavitanay ny hafainganam-pandeha farany.

Manaraka aho dia te hiresaka momba ny Cosing Annealing miaraka amin'ny fanombohana mafana na ny fidinana gradient Stochastic miaraka amin'ny fanombohana mafana. Amin'ny ankapobeny, amin'ny ankapobeny, azonao atao ny mampiasa optimizer rehetra, fa ny teboka dia izao: raha manofana tambajotra iray fotsiny ianao ary mivadika tsikelikely amin'ny kely indrindra, dia mety ny zava-drehetra, hahazo tambajotra iray ianao, manao fahadisoana sasany, fa ianao afaka mampiofana azy hafa kely. Hametraka tahan'ny fianarana voalohany ianao, ary hampidina tsikelikely izany araka ity rΓ΄le ity. Ampidinao izany, tonga amin'ny faran'izay kely indrindra ny tambazotranao, avy eo tehirizinao ny lanja, ary apetraho indray ny tahan'ny fianarana teo am-piandohan'ny fiofanana, ka lasa miakatra any amin'io farany ambany io, ary ampidinina indray ny tahan'ny fianaranao.

Noho izany, afaka mitsidika ny kely indrindra ianao indray mandeha, izay ny fahaverezanao dia mitovy, miampy na minus. Saingy ny zava-misy dia ny tambajotra misy ireo lanja ireo dia hanome fahadisoana samihafa amin'ny datyo. Amin'ny alalan'ny salan'izy ireo dia hahazo karazana tombana ianao, ary ho ambony kokoa ny hafainganam-pandehanao.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Momba ny fomba nanangonay ny modely. Tany am-piandohan'ny famelabelarana dia nilaza aho fa tokony handinika ny habetsaky ny angona ao amin'ny fitsapana sy ny isan'ny kilasy. Raha ampiana 1 ny isan'ny kendrena ao amin'ny andrana napetraka ary zarao amin'ny isan'ny kilasy, dia hahazo ny isa 330, ary izany dia nosoratana tao amin'ny forum - fa ny kilasy ao amin'ny fitsapana dia voalanjalanja. Azo ampiasaina io.

Mifototra amin'izany, i Roman Soloviev dia namoaka metrika iray, antsoinay hoe Proxy Score, izay mifandray tsara amin'ny leaderboard. Ny teboka dia: manao vinavina ianao, raiso ny 1 ambony amin'ny vinavinao ary isao ny isan'ny zavatra isaky ny kilasy. Manaraka, esory 330 amin'ny sanda tsirairay ary ampio ny sanda tanteraka.

Ireto sanda manaraka ireto dia azo. Izany dia nanampy anay tsy hamorona filaharana fikarohana, fa hanamarina eo an-toerana sy hifantina coefficients ho an'ny tarikay.

Amin'ny ensemble dia afaka mahazo hafainganam-pandeha toy izany ianao. Inona koa no azoko atao? Eritrereto hoe nampiasa ny fampahalalana ianao fa voalanjalanja ny kilasy amin'ny fitsapanao.

Hafa ny fifandanjana. Ohatra iray amin'izy ireo - fifandanjana avy amin'ireo lehilahy nahazo ny laharana voalohany.

Inona no nataonay? Tsotra ny fifandanjana nataonay, hoy i Evgeny Babakhnin. Nalahatra aloha ny vinavinay tamin'ny 1 voalohany ary nifantina kandidΓ  avy amin'izy ireo - mba tsy hihoatra ny 330 ny isan'ny kilasy. Fa ho an'ny kilasy sasany kosa dia manana vinavina latsaky ny 330 ianao. , ary hifidy kandidΓ  koa izahay.

Inona no maha samy hafa ny fifandanjana amin'ny fifandanjana voalohany? Nampiasa fomba fiasa miverimberina izy ireo, naka ny kilasy malaza indrindra ary nampihena ny mety ho an'io kilasy io amin'ny isa kely mandra-pahafatin'io kilasy io ho malaza indrindra. Nanaraka ny kilasy malaza indrindra izahay. Noho izany dia nampidina azy ireo hatrany izy ireo mandra-pahatongan'ny isan'ny kilasy rehetra.

Ny olona rehetra dia nampiasa fomba plus na minus iray mba hampiofana tambajotra, saingy tsy ny rehetra no nampiasa ny fifandanjana. Amin'ny fampiasana ny fifandanjana dia afaka miditra amin'ny volamena ianao, ary raha tsara vintana ianao, dia amin'ny vola.

Ahoana ny fomba hanoratana daty? Ny olon-drehetra dia nanodina ny daty, miampy na minus, amin'ny fomba mitovy - manao endri-javatra vita amin'ny tanana, miezaka mametaka fotoana amin'ny lokon'ny kapoka samihafa, sns. Izany indrindra no nolazain'i Alexey Nozdrin-Plotnitsky, izay nandray ny laharana faha-8.

Fanasokajiana ny sary sora-tanana. Tatitra ao amin'ny Yandex

Hafa ny nataony. Nilaza izy fa tsy mandeha ireo endri-javatra vita tanana rehetra ireo, tsy mila manao izany ianao, ny tambajotranao dia tokony hianatra samirery izany rehetra izany. Ary ho solon'izay, dia namorona modules fianarana izy izay nanodina ny angonao. Natsipiny tao anatin'izy ireo ny angon-drakitra tany am-boalohany tsy misy fanodinana - fandrindrana teboka sy fotoana.

Avy eo dia noraisiny ny fahasamihafana mifototra amin'ny fandrindrana, ary ny antonony dia mifototra amin'ny fotoana. Ary tonga tamin'ny matrix lava be izy. Nampiasainy imbetsaka ny convolution 1D mba hahazoana matrix habe 64xn, izay n no fitambaran'ny teboka, ary natao ny 64 mba hamelomana ny matrix vokarina amin'ny soson'ny tambajotra convolutional, izay manaiky ny isan'ny fantsona. - 64. Nahazo matrix 64xn izy, avy eo dia ilaina ny mamorona tensor amin'ny habeny sasany mba hitovy amin'ny 64 ny isan'ny fantsona. tensor habe 0x32. Tsy haiko hoe nahoana izy no naniry 32x32, tonga dia toy izany. Ary teo amin'io fandrindrana io no nametrahany sombiny tamin'io matrix io ​​habe 32xn. Noho izany dia niafara tamin'ny tensor 32x64x32 izay azonao apetraka bebe kokoa amin'ny tambajotra neural convolutional anao. Izay ihany no tiako holazaina.

Source: www.habr.com

Add a comment