1. 序章

このチュートリアルでは、ニューラルネットワークのトレーニング、検証、およびテストの側面について説明します。 これらの概念は機械学習に不可欠であり、モデルの成熟度のさまざまなフェーズを適切に表しています。 これらのアイデアは、相互検証、バッチ最適化、正則化など、他の多くのアイデアに隣接していることに注意することも重要です。

2. コンセプト

機械学習の分野は、ニューラルネットワークのおかげで大幅に拡大しました。 これらのニューラルネットは、タイムリーにトレーニングするのに十分なコンピューティングリソースがあれば、ほぼすべての種類のデータに適合する非常に柔軟なモデルであるため、さまざまな理由で採用されています。これらの学習構造を効率的に活用するため、モデルが処理中の情報を一般化することを確認する必要があります。

ここでの問題は、モデルがトレーニングするために持っているすべてのデータをフィードすると、モデルが情報から関数を正しく抽出したかどうかをテストする方法がないことです。 このメトリックは精度と呼ばれ、モデルのパフォーマンスを評価するために不可欠です。

2.1. トレーニングvs. テスト

さて、トレーニングセットとテストセットを作成することから始めることができます。 これで、モデルをトレーニングし、テストセットを使用してその精度を検証できます。 モデルは、トレーニング中にテストデータを見たことがありません。 したがって、取得する精度の結果は有効です。 さまざまな手法を使用してニューラルネットワークモデルをトレーニングできますが、理解して実装するのが最も簡単なのはバックプロパゲーションです。 ここで、トレーニングテストのアプローチから得られるパフォーマンスがあまり良くないとしましょう。 モデルからいくつかのハイパーパラメータを変更して、再試行することができます。

ただし、そうする場合は、テストセットの結果を使用してモデルのトレーニングを調整します。 テストセットからフィードバックループを追加しているため、理論的にはこのアプローチに問題があります。 これにより、達成した結果に基づいてパラメーターを変更するため、生成する精度の結果が改ざんされます。 つまり、モデルを最適化するためにテストセットのデータを使用しています。

2.1. 検証セットの目的

これを回避するために、最後にのみ一種の「ブラインドテスト」を実行します。 対照的に、モデルの開発全体を通じて反復および変更を行うために、検証セットを使用します。 これで、この検証セットを使用してさまざまなハイパーパラメーターを微調整し、モデルがデータに適合するようにすることができます。 さらに、このセットは、モデルの実際のテスト精度の一種のインデックスとして機能します。 これが、検証データセットを持つことが重要である理由です。

これで、モデルをトレーニングし、検証し、さまざまなハイパーパラメーターを変更してパフォーマンスを最適化し、モデルを1回テストして結果を報告できます。

これを例に適用できるかどうか見てみましょう。

3. 実装

これらの概念を古典的な教師あり学習の方法で実装するには、最初に、使用するラベル付きデータセットを取得する必要があります。 座標を単一の機能として使用する2つのクラスを持つ例を以下に示します。

最初に注意することは、データに外れ値があることです。 一般的な統計手法を使用してこれらを見つけ、調べてから、モデルに情報を追加しないものを削除することをお勧めします。 これはデータ前処理と呼ばれる重要なステップの一部です:

3.1. データセットの分割

データの準備ができたので、データをトレーニング、検証、テストのセットに分割できます。 次の図では、データセットに列を追加していますが、3つの別々のセットを作成することもできます。

モデルの偏りが少なくなるように、これらのグループのバランスをとる必要があります。 これは、各ラベルからほぼ同じ量の例が必要であることを意味します。 バランス調整に失敗すると、モデルに正確に学習するのに十分なクラスの例がない可能性があります。 これはまた、テスト結果を危険にさらす可能性があります。

この二項分類の例では、トレーニングセットに2つの「1」ラベルと1つの「0」ラベルのみがあります。 ただし、検証セットにはそれぞれ1つがあり、テストセットには2つの「0」ラベルと1つの「1」ラベルしかありません。 私たちのデータは最小限なので、これで十分です。

ただし、定義したグループを変更し、最適な構成を選択して、テストでモデルがどのように機能するかを確認することもできます。 これは相互検証と呼ばれます。 K分割交差検定は、MLで広く使用されています。 ただし、このチュートリアルでは取り上げていません。

3.2. モデルのトレーニングとテスト

次に、モデルをトレーニングできます。 フィードフォワードニューラルネットの場合、バックプロパゲーションアルゴリズムを使用してこれを行うことができます。 このアルゴリズムは、トレーニング例ごとにエラーを計算し、それを使用してニューラルネットの接続の重みを微調整します。 このアルゴリズムを可能な限り多くの反復で実行し、データが過剰適合しそうになるまで実行すると、次のモデルが得られます。

モデルの正しいトレーニングを検証するために、トレーニングされたモデルに検証データセットをフィードし、さまざまな例を分類するように依頼します。 これにより、検証の精度が向上します。

検証フェーズでエラーが発生した場合は、ハイパーパラメータを変更して、モデルのパフォーマンスを向上させ、再試行することができます。 たぶん、隠しレイヤーを追加したり、変更したりできますバッチサイズまたは、最適化方法に応じて学習率を調整することもできます。

モデルがデータに過剰適合するのを防ぐために、早期停止に検証データセットを使用することもできます。 これは正則化の形式になります。空想のモデルができたので、検証データセットを使用して結果を報告します。検証データセットは、のハイパーパラメータの調整にすでに使用されています。私たちのネットワーク。

4. 結論

この記事では、機械学習におけるトレーニング、テスト、検証のさまざまな概念について説明しました。