第 5 章
ディープラーニング モデルのテストと展開
データを分類できるモデルを用意しても、ディープラーニングのワークフローが完了したわけでありません。未知のデータでもモデルが動作すること、他のシステムコンポーネントと期待通りに相互作用することも確認する必要があります。この章では、特定の性能特性を必要とするターゲットデバイスにモデルを展開する方法について説明します。
ネットワークやその他のシステムロジックが機能するかどうかを確認したいというのは当然の要求です。そこで重要になるのがテストです。ハイタッチカウンターについては、ネットワークの学習中に 40 枚の検証画像を使ってモデルの精度を評価させたところ、40 枚のうち 1 枚しかラベル付けに誤りがなかったことから、ネットワークだけでも何らかの形で機能していることがわかります。
幸先の良い結果ですが、40 枚の検証画像に対してこのモデルが機能することはある程度確認できても、未知の画像に対してもこのモデルが確実に機能するとは言い切れません。このため、多くの場合は、学習時に使用する検証データセットに加えて、解空間全体でネットワークの精度が許容範囲内であることを確認するために使用するテストデータセットも用意します。
ハイタッチカウンターの場合、学習中にネットワークが収束していることを検証するには 40 枚の画像で十分でしたが、ネットワークが実際に扱う可能性のある腕の動作をすべて網羅するには不十分でした。このネットワークを現場に展開するには、さらにテストする必要があります。次に、システムをテストして実装に確信が持てたら、Simulink Coder™ を使用して組み込み C コードを構築し、ディープ ニューラル ネットワークを含むこのロジックをすべて腕自体に展開できます。
テストの一環として、刻々と変化するさまざまな腕の動作を、ハイタッチとハイタッチ以外の動作の両方を含めて体系的に試すことができます。そのためにはできるだけ多くの人に参加してもらい、代表的な学習セットを構築し、解空間全体を把握する必要があります。ユーザーの動作をシステムが誤って分類した場合は、そのデータをすべて保存して学習データセットに追加し、ネットワークの再学習と改良を行います。
解空間全体のサブセットをサンプリングしても、ネットワークが完全に機能するようになるとは限らないことに注意が必要ですが、ネットワークが機能すると確信できる範囲を広げることはできます。これは、ディープ ニューラル ネットワークの標準的な手法です。現時点では、ディープ ニューラル ネットワークに適した体系的な検証法は存在しません。そのため、通常はモンテカルロ法などのサンプリング手法に依存して、解空間全体でネットワークの信頼性を高めることになります。
モンテカルロ法によるテストは、物質の欠陥を検出したり、音声中の指示を抽出したり、RF 変調方式を分類したりするプロジェクトにも利用できる可能性があります。このため、学習済みのニューラル ネットワークを完全なシステムに統合し、さまざまな状況でテストすることになります。
重要な点は、テストを何度行っても、解空間にはテストされていない部分が必ず存在するということです。
ここで力を発揮するのが合成データです。第 2 章ではネットワークの学習用に RF データを合成する方法について説明しました。同様に、合成データを使って何百万もの異なるテストケースを生成し、解空間の非常に高密度なサンプリングを行うことができます。これにより、システムに対する信頼性が高まります。
ハイタッチのプロジェクトでは、腕の動作で想定されるすべての加速度パターンを正確にモデル化し、その中でどれがハイタッチなのかを理解することは難しく、データの合成は困難です。このため、プロジェクトによっては、テストデータを合成するよりもネットワークを物理的にテストする方が簡単な場合もあります。
テストデータを合成できるかどうかにかかわらず、最終的には実物のハードウェアで実際のシステムをテストする必要があります。
それでもネットワークが大きすぎる場合は、さらに小さい事前学習済みネットワークを検討するよりも、枝刈りや量子化を行ってネットワークのサイズを縮小してみましょう。
枝刈りとは、ネットワーク内で特定のデータの分類にあまり寄与しないパラメーターを削除することです。
量子化とは、ネットワーク内の単精度または倍精度の重みとバイアスを取得し、8 ビットにスケーリングされた整数データ型に変換することです。つまり、高精度のデータ型を使用しなくても、ネットワークから同等のパフォーマンスを得ることができるということです。詳細については、「int8 量子化の概要と、ディープ ニューラル ネットワークにおけるその人気の理由」を参照してください。
ネットワークの縮小がどのようなものかを理解できるよう、Deep Network Quantizer アプリを使用してハイタッチのネットワークを 8 ビットスケールの整数に量子化した結果をご紹介します。実行には数分かかったものの、その後ネットワークは 75% 圧縮され、精度に測定可能な影響はありませんでした。
事前学習済みネットワーク、転移学習、枝刈り、量子化を上手に利用すれば、用途に応じた十分なサイズと効率性を持つモデルが得られる可能性があることがわかります。
それでもネットワークが大きすぎる場合、最後の手段は独自のネットワーク アーキテクチャをゼロから構築することです。この場合、必要となる学習データと学習時間は最多となります。最初期のネットワークは何の概念も持たないため、すべてを学習する必要があるからです。
もう 1 つの欠点は、効率的なネットワーク アーキテクチャをゼロから構築するには、各種のネットワーク アーキテクチャを十分に理解している必要があることです。
まとめ
アプリケーションへのディープラーニングの導入を検討する際には、ネットワークのアーキテクチャ、学習データへのアクセス、シミュレーションの使用、ネットワークやシステム全体に対する信頼性を確保する方法を考慮する必要があります。
どのプロジェクトも答えは 1 つとは限りませんが、ディープラーニングの利点と可能性に対する理解が深まったのではないでしょうか。今、あなたが取り組んでいるエンジニアリングの問題は、データ内の複雑なパターンを検出し、ラベル付けすることで解決できる可能性があります。その場合は、調査の一環として、ディープラーニングを適用するアプローチを検討してみてはいかがでしょうか。導入は意外と簡単かもしれません。
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)