ebook

第 2 章: モデルの学習および検証のための注釈付きデータの作成

第 2 章

モデルの学習および検証のための注釈付きデータの作成


章

学習、検証、テスト用データセット: 違いは何ですか?

有効なディープラーニング モデルを作成するためには、モデルを開発するために少なくとも 3 つの異なるタイプのデータが必要です。具体的には、学習のためのデータ、実際に学習しているかを検証するためのデータ、最終的な性能をテストするためのデータです。

お使いのデータのほとんどを学習用に保存しておくことが必要です。学習セットは、指定された出力注釈に入力データを適合させることによって、大量のネットワークの重みを最適化するために、誤差逆伝播アルゴリズムで使用されます。学習データセットは非常に大容量になる傾向があり、既存のデータやシミュレーション データが含まれることがよくあります。学習データセットは、重みの値を最適化することによってデータを学習および適合させることに使用されます。そのため、モデルは、何を重要とみなすべきなのかを学習していきます。

検証データは、モデルを学習させる場合にも使用されます。このデータは、学習を行う際に、新しいデータに対してモデルがどの程度汎用性を持つかを継続的にチェックするために使用されるので、モデルの選択に役立ちます。検証セットは、データを大量に必要とする最適化アルゴリズムでは使用されず、通常は学習セットよりもはるかに小さくできます。最近のシステムでは、検証データは可能な限り現実的なものとすることが多く、検証データの作成では、多くの場合実世界の新しい信号を取得し、新たに注釈を付けます。

学習が一段階完了した後、モデルの性能を計算するためにテストデータセットを使用します。検証データセットと同様に、テストデータセットは可能な限り現実的なものである場合が多く、最新のデータを作成するには、実世界の新しい信号を取得し、新たに注釈を付けます。

y 軸に精度、x 軸に反復をとり、学習の進捗状況を示すスクリーンショット。青い実線は、当初の 60% の精度からすぐに上昇し、90 ~ 98% の精度を維持。破線は当初の精度 30% から上昇し、90% を維持。

青い実線は、学習データセットで使用したデータの精度を表しています。黒の破線は、検証データセットのデータの精度を表しています。

データセットのインポート

ディープラーニング モデルを 学習させるために必要なデータ量を考えた場合、メモリ制約とデータ管理を検討することが重要です。メモリにすべてのデータを収めることができない場合は、保存データを一括で読み込まずに表現する方法が必要になります。MATLAB でこれを行う方法の 1 つは、 audioDatastore (Audio Toolbox™ が必要) や、 signalDatastore (Signal Processing Toolbox™ および Deep Learning Toolbox™ が必要) などのデータストアを使用することです。これらのデータストアは、メモリ内外の信号を管理し、信号を処理して並列プールを使用した特徴抽出を行うのに役立ちます。

章

ラベル付け

モデルを正しくキャリブレーションするためには、データに正しくラベル付けまたは注釈付けすることが必要です。検証データセットとテストデータセットは、正確なラベルを持つことが重要です。それは、これらのデータセットが、学習中と学習完了後に、モデルの性能を判定する基準となるからです。これらのラベルが正確でない場合は、行き詰まってしまいます。学習データのラベルも重要ですが、学習データセットのサイズを考慮すると、これらのラベルは多くの場合別の手法で処理されます。

このセクションでは、まず検証データセットとテストデータセットのラベルを説明し、次に学習データセットを見ていきます。

検証データとテストデータ

検証データは、ネットワークが最終的なアプリケーションで表示するデータを正確に表現している必要があります。まず、検証データは、解決しようとしている問題をほぼ正確に表現する信号を含んでいなければなりません。音声アプリケーションでは、静かな環境で同じマイクを使用して信号を録音し、その後、ノイズ、エコー、残響のレベルを変えて録音する場合があります。

検証データには、手動で追加される可能性のある、いくつかの高品質なラベルが含まれていなければなりません。これこそ、ネットワークに学習してもらいたい内容です。この例では、上部にプロットされた赤いマスクです。

音声信号の中心に沿って赤線が表示され、信号の各ピークの輪郭を描くように上昇していることを示す、「validation signal example」とラベル付けされたスクリーンショット。

キーワードマスクを付けた領域だけを再生すると、次のように聞こえます。

検証データやテストデータ向けに良質なラベルを実現する方法

実証済みの精度を持つ類似したタスクを実行するように学習を行ったインテリジェント システムを使用してみます。多くの場合、これは手動でラベル付けしたデータ、または事前学習済みの機械学習モデルの使用を意味します。

信号ラベラーのような対話型のアプリを使用することで、手動でのラベル付けを簡単に行うことができます。対話型アプリには、信号内の領域を選択してラベルを割り当てたり、選択したセグメントを調整したり、その他のタスクを行ったりするためのインターフェイスが用意されています。

Signal Processing Toolbox の信号ラベラーアプリのスクリーンショット。各単語の信号は色分けされて表示。

この例で示すように、外部 API を使用して、単語ごとに異なる色で信号をプロットします。

別のオプションとして、ほかの誰かが開発した作業用モデルを使用することもできます。ここでは、Google のクラウド API インターフェイスを通して、Google の有名な音声認識サービスを使用した例をご紹介します。

トリガーワードのマスクラベルを作成するには、ワードラベルを MATLAB コマンドラインにエクスポートし、数行のコードの後に必要なラベルを得ることができます。 この例のコードはこちらでご確認いただけます

以下で注釈付けされたセグメントを再生できます。

章

学習データ

音声録音などの信号データを処理する場合、テラバイトの良質なデータを記録し、手動で正確にラベル付けすることは現実的ではありません。これを回避する方法の 1 つが、類似する課題のためにラベル付けされた既存の録音を使用することです。ライセンスを取得できる研究用のデータセットも良い選択といえます。

学習セットがアプリケーションに合わせて作られたものでなくても問題はありませんが、学習データと検証データの差が大きくなればなるほど、精度の差も大きくなります。

最初は、自動化されたラベル付けアルゴリズムなどの便利な技術をいくつか追加して利用するのがお勧めです。

外部 API を使用した音声信号内の発声単語のラベル付け

IBM® の Watson Speech to Text API を使用して、信号ラベラーアプリをテストしてみましょう。

特に、Audio Toolbox には、detectSpeech、speech2text などの自動ラベリング機能が多くあり、ラベル付けに役立ちます。同様に、Signal Processing Toolbox は、ピークラベラーとカスタム関数を使用した一括自動ラベリングに対応しています。

次の章では、データの拡張や合成など、学習データの品質を向上させ、サイズを拡大させる手法を説明します。

理解度の確認