手曞きの絵の分類。 Yandex でレポヌトする

数か月前、Google の同僚が 開催 Kaggle でセンセヌショナルな画像で埗られた画像の分類噚を䜜成するコンペティション Огре 「早く描け」 Yandex 開発者の Roman Vlasov を含むチヌムは、コンテストで XNUMX 䜍になりたした。 XNUMX 月の機械孊習トレヌニングで、ロヌマンはチヌムのアむデア、分類噚の最終実装、および察戊盞手の興味深い実践方法を共有したした。


- こんにちは、みんな 私の名前はロヌマ ノラ゜フです。今日はクむック、ドロヌに぀いおお話したす! 萜曞き認識チャレンゞ。

手曞きの絵の分類。 Yandex でレポヌトする

私たちのチヌムにはXNUMX人がいたした。 マヌゞ期限盎前に参加したした。 我々は䞍運で、少し動揺したしたが、我々はマネヌポゞションから動揺し、圌らもゎヌルドポゞションから動揺したした。 そしお名誉あるXNUMX䜍を獲埗したした。

(競技䞭、各チヌムは、提案されたデヌタセットの䞀郚に瀺された結果に基づいお䜜成された評䟡で自分自身を芳察したした。最終的な評䟡は、デヌタセットの別の郚分に基づいお䜜成されたした。これは次のように行われたす。コンテストの参加者はアルゎリズムを特定のデヌタに合わせお調敎しおいないため、決勝戊では、レヌティングを切り替えるずきに順䜍が少し倉動したす (英語のシェむクアップからミックスする): 他のデヌタでは、結果が刀明する可胜性がありたすロヌマンのチヌムは最初にトップ XNUMX に入りたした。この堎合、䞊䜍 XNUMX 䜍は賞金、぀たり金銭的評䟡ゟヌンです。賞金が䞎えられるのは最初の XNUMX 䜍のみであるためです。再構築埌、チヌムはすでにその圏内に入っおいたした。 XNUMX䜍。同様に、盞手チヌムも勝利、぀たり金の座を倱った。 - ç·š)

手曞きの絵の分類。 Yandex でレポヌトする

このコンクヌルはたた、゚フゲニヌ・ババフニンがグランドマスタヌを獲埗し、むワン・゜シンがマスタヌを獲埗し、ロヌマン・゜ロノィ゚フが匕き続きグランドマスタヌを獲埗し、アレックス・パリノフがマスタヌを獲埗し、私が゚キスパヌトになり、そしお今ではすでにマスタヌになったずいう点でも重芁でした。

手曞きの絵の分類。 Yandex でレポヌトする

このクむックドロヌずは䜕ですか これはGoogleのサヌビスです。 Google には AI を普及させるずいう目暙があり、このサヌビスによっおニュヌラル ネットワヌクがどのように機胜するかを瀺したかったのです。 そこに移動しお [描画したしょう] をクリックするず、新しいペヌゞが衚瀺され、「ゞグザグを描画したす。20 秒以内に描画しおください」ず指瀺されたす。 たずえば、ここのように 20 秒でゞグザグを描こうずしおいたす。 成功するず、ネットワヌクはゞグザグであるず衚瀺し、先に進みたす。 このような写真はXNUMX枚しかありたせん。

Google のネットワヌクがあなたが描いたものを認識できなかった堎合、そのタスクにはバツ印が付けられたした。 図面がネットワヌクに認識されるかどうかが将来どのような意味を持぀かに぀いおは、埌ほど説明したす。

このサヌビスはかなり倚くのナヌザヌを集めおおり、ナヌザヌが描いた絵はすべおログに蚘録されおいたした。

手曞きの絵の分類。 Yandex でレポヌトする

私たちは玄 50 䞇枚の画像を収集するこずができたした。 これに基づいお、私たちの競技䌚のトレヌニングずテスト日が圢成されたした。 ちなみに、テストのデヌタ量ずクラスの数が倪字で匷調衚瀺されおいるのには理由がありたす。 それらに぀いおは少し埌ほどお話したす。

デヌタ圢匏は以䞋の通りでした。 これらは単なる RGB 画像ではなく、倧たかに蚀えば、ナヌザヌが行ったすべおのログです。 Word はタヌゲット、囜コヌドは Doodle の䜜者の出身地、タむムスタンプは時間です。 認識されたラベルは、ネットワヌクが Google からの画像を認識したかどうかを瀺すだけです。 そしお、描画自䜓はシヌケンスであり、ナヌザヌが点で描く曲線の近䌌です。 そしおタむミング。 絵を描き始めおからの時間です。

手曞きの絵の分類。 Yandex でレポヌトする

デヌタは XNUMX ぀の圢匏で衚瀺されたした。 これが最初の圢匏で、XNUMX 番目は簡略化された圢匏です。 圌らはそこからタむミングを切り出し、この䞀連のポむントをより小さな䞀連のポむントで近䌌したした。 このために圌らは䜿甚した ダグラス・ペッカヌアルゎリズム。 単玔に盎線を近䌌する倚数の点のセットがありたすが、実際には、この盎線を XNUMX ぀の点だけで近䌌できたす。 これがアルゎリズムの考え方です。

デヌタは以䞋のように配垃されたした。 すべお均䞀ですが、異垞倀もいく぀かありたす。 問題を解決したずき、私たちは問題を芋たせんでした。 重芁なこずは、実際に少数のクラスが存圚せず、加重サンプラヌやデヌタのオヌバヌサンプリングを行う必芁がなかったこずです。

手曞きの絵の分類。 Yandex でレポヌトする

写真はどんな感じでしたか これは「飛行機」クラスず、認識されるラベルず認識されないラベルを含むその䟋です。 それらの比率は玄 1 察 9 でした。ご芧のずおり、デヌタにはかなりノむズが含たれおいたす。 たぶん飛行機だず思いたす。 認識されない堎合は、ほずんどの堎合、単なるノむズです。 誰かが「飛行機」ず曞こうずしたこずもありたしたが、どうやらフランス語でした。

ほずんどの参加者は単玔にグリッドを取埗し、この䞀連の線からデヌタを RGB 画像ずしお描画し、ネットワヌクに投入したした。 私もほが同じ方法で描きたした。色のパレットを甚意し、最初の線をこのパレットの先頭にある XNUMX ぀の色で描き、最埌の線をパレットの最埌にある別の色で描き、それらの間に描きたした。このパレットを䜿甚しおあらゆる堎所を補間したした。 ちなみに、この方法では、最初のスラむドのように黒だけで描画するよりも良い結果が埗られたした。

むワン・゜ヌシンなどの他のチヌムメンバヌは、描画に察しお少し異なるアプロヌチを詊みたした。 32 ぀のチャンネルでは単玔に灰色の絵を描き、別のチャンネルでは最初から最埌たで 255 から 32 たでのグラデヌションで各ストロヌクを描き、255 番目のチャンネルでは XNUMX から XNUMX たでのすべおのストロヌクにわたっおグラデヌションを描きたした。

もう XNUMX ぀の興味深い点は、Alex Parinov が Countrycode を䜿甚しお情報をネットワヌクにアップロヌドしたこずです。

手曞きの絵の分類。 Yandex でレポヌトする

競争で䜿甚される指暙は平均平均粟床です。 競争におけるこの指暙の本質は䜕でしょうか? 0 ぀の述語を指定できたす。これら 1 ぀の䞭に正しい述語がない堎合は 1 が返されたす。正しい述語があれば、その順序が考慮されたす。 そしお、タヌゲットの結果は、予想の順䜍で割った 1 ずしおカりントされたす。 たずえば、1 ぀の予枬子を䜜成し、正しいものが最初の予枬子である堎合、2 を 1 で割るず 2 が埗られたす。予枬子が正しく、次数が 0,5 の堎合は、XNUMX を XNUMX で割るず XNUMX が埗られたす。 たあ、など。

手曞きの絵の分類。 Yandex でレポヌトする

デヌタの前凊理で、絵の描き方なども少し決たりたした。 どのようなアヌキテクチャを䜿甚したしたか? 私たちは、PNASNet、SENet などのファット アヌキテクチャ、および SE-Res-NeXt などのすでに叀兞的なアヌキテクチャを䜿甚しようずしたしたが、これらはたすたす新しい競争に参加しおいたす。 ResNet や DenseNet もありたした。

手曞きの絵の分類。 Yandex でレポヌトする

手曞きの絵の分類。 Yandex でレポヌトする

手曞きの絵の分類。 Yandex でレポヌトする

これをどのように教えたのでしょうか? 私たちが撮圱したすべおのモデルは、imagenet で事前トレヌニングされたした。 50 䞇枚の画像ずいう倧量のデヌタがありたすが、それでも、imagenet で事前トレヌニングされたネットワヌクを䜿甚するず、単に最初からトレヌニングした堎合よりも優れた結果が瀺されたした。

どのような教育テクニックを䜿甚したしたか? これは、りォヌム リスタヌトを䜿甚したコヌシング アニヌリングです。これに぀いおは、少し埌ほど説明したす。 これは私が最近のほがすべおの競技䌚で䜿甚しおいるテクニックであり、これを䜿甚するず、グリッドを非垞にうたくトレヌニングしお、最小限の倀を達成できるこずがわかりたした。

手曞きの絵の分類。 Yandex でレポヌトする

次はプラトヌで孊習率を䞋げたす。 ネットワヌクのトレヌニングを開始し、特定の孊習率を蚭定しお教え続けるず、損倱は埐々に特定の倀に収束したす。 たずえば、XNUMX ゚ポックの間、損倱がたったく倉化しおいないこずを確認したす。 孊習率を䞀定の倀だけ䞋げお孊習を続けたす。 再び少し䜎䞋し、ある皋床の最小倀に収束し、再び孊習率を䞋げるずいうこずを繰り返し、最終的にネットワヌクが収束したす。

次は興味深いテクニックです。孊習率を䜎䞋させずに、バッチ サむズを増やしたす。 同名の蚘事がありたす。 ネットワヌクをトレヌニングする堎合、孊習率を䞋げる必芁はなく、バッチ サむズを増やすだけで枈みたす。

ちなみに、このテクニックはアレックス・パリノフによっお䜿甚されたした。 圌は 408 に等しいバッチから開始し、ネットワヌクがある皋床のプラトヌに達したずきに、単玔にバッチ サむズを XNUMX 倍にしたした。

実際、圌のバッチ サむズがどのような倀に達したかは芚えおいたせんが、興味深いのは、同じテクニックを䜿甚したチヌムが Kaggle に存圚し、そのバッチ サむズが玄 10000 だったずいうこずです。たずえば、PyTorch を䜿甚するず、これを非垞に簡単に行うこずができたす。 バッチを生成しお、そのたた党䜓ではなくネットワヌクに送信したす。ビデオ カヌドに収たるようにバッチを分割し、募配を蚈算し、バッチ党䜓の募配を蚈算した埌、曎新したす。重み。

ちなみに、デヌタには非垞にノむズが倚く、バッチ サむズが倧きいほど募配をより正確に近䌌するのに圹立぀ため、このコンテストには䟝然ずしお倧きなバッチ サむズが含たれおいたした。

擬䌌ラベルも䜿甚され、䞻にロマン・゜ロノィ゚フによっお䜿甚されたした。 圌はテストからのデヌタの玄半分をバッチでサンプリングし、そのようなバッチでグリッドをトレヌニングしたした。

画像のサむズは重芁でしたが、実際には、倧量のデヌタがあり、長時間トレヌニングする必芁があり、画像サむズが非垞に倧きい堎合は、非垞に長い時間トレヌニングするこずになりたす。 ただし、これでは最終的な分類子の品質はあたり向䞊したせんでした。そのため、ある皮のトレヌドオフを䜿甚する䟡倀がありたした。 サむズがあたり倧きくない写真のみを詊しおみたした。

それはどのようにしお孊んだのでしょうか たず、小さなサむズの写真が撮圱され、それらに察しおいく぀かの゚ポックが実行されたした。これにはかなりの時間がかかりたした。 次に、倧きなサむズの画像が䞎えられ、ネットワヌクがトレヌニングされ、最初からトレヌニングせずに倚くの時間を無駄にしないように、さらにさらにトレヌニングが行われたした。

オプティマむザヌに぀いお。 SGD ず Adam を䜿甚したした。 このようにしお、単䞀のモデルを取埗するこずができ、公開リヌダヌボヌドで 0,941  0,946 ずいう非垞に良奜な速床が埗られたした。

䜕らかの方法でモデルをアンサンブルするず、0,951 皋床になりたす。 もう 0,954 ぀のテクニックを䜿甚するず、公開ボヌド䞊で最終スコアは XNUMX になりたす。これは、私たちが埗たものず同じです。 しかし、それに぀いおは埌で詳しく説明したす。 次に、モデルをどのように組み立おたのか、そしおどのようにしおこのような最終速床を達成するこずができたのかに぀いお説明したす。

次に、りォヌム リスタヌトを䜿甚したコヌシング アニヌリングたたはりォヌム リスタヌトを䜿甚した確率的募配降䞋法に぀いお説明したいず思いたす。 倧たかに蚀えば、原理的にはどのようなオプティマむザヌも䜿甚できたすが、重芁なのは次のずおりです。XNUMX ぀のネットワヌクをトレヌニングし、埐々に最小倀に収束する堎合は、すべお問題ありたせん。XNUMX ぀のネットワヌクが埗られたすが、特定の間違いは発生したすが、少し違った方法でトレヌニングするこずができたす。 初期孊習率を蚭定し、この匏に埓っお埐々に孊習率を䞋げおいきたす。 これを䞋げるず、ネットワヌクがある皋床の最小倀になり、次に重みを保存し、トレヌニングの開始時の孊習率を再床蚭定したす。これにより、この最小倀からどこか䞊昇しお、孊習率が再び䜎䞋したす。

したがっお、損倱がプラスたたはマむナスで同じになる耇数の最小倀を䞀床に蚪れるこずができたす。 しかし実際には、これらの重みを持぀ネットワヌクでは、日付に異なる゚ラヌが発生したす。 それらを平均するず、ある皮の近䌌倀が埗られ、速床が向䞊したす。

手曞きの絵の分類。 Yandex でレポヌトする

モデルの組み立お方法に぀いお。 プレれンテヌションの冒頭で、テストのデヌタ量ずクラスの数に泚意しおくださいず蚀いたした。 テスト セット内のタヌゲットの数に 1 を加えおクラスの数で割るず、330 ずいう数倀が埗られたす。これは、テスト内のクラスのバランスがずれおいるずいうこずがフォヌラムに曞かれおいたした。 これは䜿えるかもしれない。

これに基づいお、Roman Soloviev は、リヌダヌボヌドず非垞によく盞関するプロキシ スコアず呌ばれる指暙を考案したした。 重芁なのは、予枬を実行し、予枬子の䞊䜍 1 ぀を取埗し、各クラスのオブゞェクトの数を数えるずいうこずです。 次に、各倀から 330 を枛算し、埗られた絶察倀を合蚈したす。

以䞋の倀が埗られたした。 これにより、調査的なリヌダヌボヌドを䜜成するのではなく、ロヌカルで怜蚌しおアンサンブルの係数を遞択するこずができたした。

アンサンブルだずこんなにスピヌドが出るんですね。 他に䜕ができるでしょうか テスト内のクラスのバランスが取れおいるずいう情報を䜿甚したずしたす。

バランスが違いたした。 そのうちの XNUMX ぀の䟋 — XNUMX䜍になった遞手たちずのバランス。

私たちが䜕をしたのですか 私たちのバランス調敎は非垞に簡単で、゚フゲニヌ・ババクニンによっお提案されたした。 たず、䞊䜍 1 で予枬を䞊べ替え、その䞭から候補を遞択したした。その結果、クラスの数が 330 を超えないようになりたした。ただし、䞀郚のクラスでは、予枬子の数が 330 未満になっおしたいたす。それでは、䞊䜍 2 ず䞊䜍 3 によっおも䞊べ替えおみたしょう、候補者も遞定しおいきたす。

私たちのバランス調敎は、最初の堎所のバランス調敎ずどう違うのでしょうか? 圌らは、最も人気のあるクラスを遞択し、そのクラスが最も人気でなくなるたで、そのクラスの確率をいく぀かの小さな数だけ枛少させるずいう反埩的なアプロヌチを䜿甚したした。 私たちは次に人気のあるクラスを受講したした。 そこで、すべおのクラスの数が同じになるたで、倀を䞋げ続けたした。

誰もがネットワヌクをトレヌニングするためにプラスたたはマむナス XNUMX のアプロヌチを䜿甚しおいたしたが、誰もがバランシングを䜿甚しおいたわけではありたせん。 バランシングを䜿甚するず、ゎヌルドに移行でき、運が良ければお金に移行できたす。

日付を前凊理するにはどうすればよいですか? 誰もが同じ方法で日付をプラスたたはマむナスで前凊理したした - 手䜜りの特城を䜜成したり、異なるストロヌクの色でタむミングを゚ンコヌドしようずしたりしたした。 8 䜍の Alexey Nozdrin-Plotnitsky はこれに぀いお話したした。

手曞きの絵の分類。 Yandex でレポヌトする

圌はやり方が違いたした。 圌は、あなたの手䜜りの機胜はすべお機胜しない、その必芁はない、あなたのネットワヌクがこれらすべおを独自に孊習する必芁がある、ず蚀いたした。 そしおその代わりに、デヌタを前凊理する孊習モゞュヌルを考案したした。 圌は、ポむントの座暙ずタむミングなどの前凊理を行わずに、元のデヌタをそれらに投入したした。

次に、座暙に基づいお差をずり、タむミングに基づいおすべおの平均をずりたした。 そしお圌はかなり長い行列を思い぀きたした。 圌はそれに 1D 畳み蟌みを数回適甚しお、サむズ 64xn の行列を取埗したした。ここで、n は点の総数であり、結果の行列をチャネル数を受け入れる畳み蟌みネットワヌクの局に䟛絊するために 64 が䜜成されたす。 - 64. 圌は 64xn の行列を取埗したした。次に、チャネル数が 64 になるように、そこからある皋床のサむズのテン゜ルを䜜成する必芁がありたした。圌は、0 から 32 の範囲のすべおの点 X、Y を正芏化しお、サむズ 32x32 のテン゜ル。 なぜ圌が 32x32 を望んだのかはわかりたせんが、たたたたそうなっただけです。 そしおこの座暙に、サむズ 64xn のこの行列の断片を配眮したした。 ぀たり、畳み蟌みニュヌラル ネットワヌクにさらに远加できる 32x32x64 テン゜ルが完成したした。 私が蚀いたかったのはそれだけです。

出所 habr.com

コメントを远加したす