記事

著者 Laura Martinez Molera


このコラムシリーズでは、毎回 1 つのトピックを取り上げて、その背景について解説します。また、MATLAB® & Simulink® コミュニティからのいくつかの質問にも回答します。

今回のコラムでは、モデル検証について説明するほか、過適合(過学習)やハイパーパラメーターの調整など、いくつかの関連トピックも紹介します。トピックの内容とその重要性を説明してから、次の 4 つの質問を見ていきたいと思います。

  1. モデルの精度が低下するのはなぜですか。
  2. 学習データセットとテストデータセットの違いは何ですか。
  3. 検証データセットを使用する目的は何ですか。
  4. 過適合せずにモデルの精度を高めるにはどうすればよいですか。

モデル検証は、機械学習の基礎となる技術です。正しく使用すれば、お使いの機械学習モデルが新しいデータに対する精度を評価するのに役立ちます。これは次の 2 つの点で有用です。

  • 使用するアルゴリズムやパラメーターを理解するのに役立つ。
  • 学習中の過適合を防ぐことができる。

手持ちのデータセットの問題に取り組む際には、モデルを作成する上で適切な機械学習アルゴリズムを理解することが非常に重要です。モデルにはそれぞれ長所と短所があります。たとえば、小規模データセットに対して許容誤差が大きいアルゴリズムもあれば、膨大な量の高次元データを得意とするアルゴリズムもあります。このような理由により、2 つの異なるモデルで同じデータセットを使用した場合に、結果や精度が異なることが予想されます。

データにとって最適なモデルを見つけることは、モデルの誤差を最小化するためにさまざまなアルゴリズムを試す手順を伴う対話的なプロセスです。機械学習アルゴリズムの動作を制御するパラメーターは、ハイパーパラメーターと呼ばれます。 ハイパーパラメーターとして選択した値によっては、全く別のモデルになる可能性があります。そのため、ハイパーパラメーターの値を調整することで、別の、うまくいけば、より適合するモデルを見つけられる可能性があります。    

モデル検証を行わない場合は、そうと気づかずに過適合するまでモデルを調整してしまう可能性が高くなります。すなわち、お使いの学習アルゴリズムでは損失関数を最小化するためにパラメーターを調整しますが、その度が過ぎてしまうことがあります。その結果、モデルは過適合します。つまり、モデルがあまりに複雑になり、新しいデータを適切に処理することができなくなります。質問 3 で、この点をさらに深く掘り下げて説明します。

新しいデータに対するモデルの動作をテストするには、データセットを分割し、1 つのサブセットを使用してアルゴリズムを学習させて、残りのデータでそれをテストする方法でモデル検証を行います。

モデル検証では、すべてのデータを使用してモデルを作成するわけではないため、学習中の過適合を防ぐためにこの方法がよく使用されます。

では、1 つめの質問です。

MATLAB での交差検証やハイパーパラメーター最適化に関する関数や構文の詳細については、モデルの作成と評価を参照してください。

質問 1

私のモデルは学習データではうまく動作していたのですが、新しいデータでは精度が低下します。どうしたらよいですか。

モデルが過適合しているようですね。これはモデルが学習データセットには完全に適合しているものの、新しい入力やデータに反応できないことを意味します。モデルは、モデルの学習に使用したデータセットに対しては「十分すぎる」反応を示しています。

最初のうちは、学習データセットの誤差が非常に小さいため、過適合したモデルは成功するように見えるかもしれません。しかし、テストデータセットの誤差が大きくなりモデルの精度は低下します。

モデルが過適合する最も一般的な原因は、学習データの不足です。そこで、この問題を適切に解決するには、より多くのデータを収集し、モデルの学習方法を改善する必要があります。ただし、多くのデータを収集するだけでなく、このデータがモデルの複雑度と多様性を十分に表していることを確認した上で、モデルがそれに対して反応する様子を見分ける必要があります。

All About Model Validation Overfitting

質問 2

データをグループに分割する必要があるのは理解していますが、テストデータセットと学習データセットの用途は同じだと考えていました。どのような違いがあるのでしょうか。

テストデータセットと学習データセットは、実際には異なるものです。先ほどモデル検証について紹介した際、モデル検証でデータをこの 2 つのサブセットに分割する方法について説明しましたので、もう少し掘り下げて見てみましょう。

モデル検証では異なるサブセットでランダムに分割されたデータを使用して、新しい入力に適切に反応するようにモデルを調整することでモデルの過適合のリスクを軽減します。データには一般的に、次の 2 つのサブセットがあります。

  • 学習データセット – このデータは、モデルの学習と適合、およびパラメーターの決定に使用されます。通常、データの 60 ~ 70% を使用し、モデルの複雑度と多様性を反映させる必要があります。
  • テストデータセット – このデータは、モデルの性能を評価するために使用されます。通常、データの 30 ~ 40% 程度を使用し、モデルの複雑度や多様性も反映させる必要があります。

両方のデータセットでモデルの複雑度と多様性を反映させなければならないため、いずれもランダムに分割する必要があります。この方法により、モデルの過適合が発生するリスクが抑えられ、研究用の結果を生成するためのより精度が高く、より単純なモデルを得ることができます。

非ランダムに選択されたデータセットでモデルを学習させた場合、そのモデルはデータの特定のサブセットに対して十分に学習されます。問題になるのは、この非ランダムのデータが、モデルを適用する残りのデータや新しいデータを表していないという点です。たとえば、街のエネルギー消費量を分析しているとします。学習やテストに使用するデータセットがランダムではなく、かつ一般的に平日よりも消費量が低い週末のエネルギー消費量のデータのみの場合は、新しい月などの新しいデータにモデルを適用すると週末しか表すことができないため、精度が低くなります。

学習データセットに適応する 2 つのモデルの例を使って説明します。機械学習入門にある基本的な例を使用します。ここに単純なモデルと複雑なモデルがあります。

単純なモデル

84% の精度

Simple Accuracy

複雑なモデル

100% の精度

Complex Accuracy Model

単純なモデルの性能は 84% であるのに対して、複雑なモデルの性能は 100% であり、学習データへの適応性が高いことがわかります。このような場合、複雑なモデルの方が優れていると断言しがちです。そこで、これらのモデルにテストデータセット (学習中に使用していない新しいデータ) を適用した場合の結果を見てみましょう。

単純なモデル

70% の精度

Simple Accuracy Model

複雑なモデル

60% の精度

Complex Accuracy Model

両方のモデルの性能を比較すると、単純なモデルの精度は 84% から 70% に低下しましたが、この変化は複雑なモデルで見られる 40 ポイントの低下 (100% から 60%) よりもはるかに小さくなります。結論として、この分析では単純なモデルの方が優れており、精度が高いだけでなく、モデルを評価するためにテストデータセットを持つことが重要であるということを示しています。

最後に、もう一つお勧めできることがあります。変動性を低減するには、データセットの分割を変更してモデル検証を複数回行い、分析に合わせてモデルをより良く適応させます。この技術は、k 分割交差検証と呼ばれます。交差検証に関するその他の技術の詳細はこちらでご確認ください。

ここで使用した例は、機械学習入門で確認できます。その学習の様子をご紹介します。

ビデオの長さ 2:31

質問 3

学習データセットとテストデータセットのみを用意すればよいと思っていましたが、検証データセットも必要なのでしょうか。また、データを再分割する必要があるのでしょうか。

検証セットは誤解されがちです。これはよくある質問です。一般的に、学習データセットとテストデータセットが必要であることに疑問を持つ人はいませんが、検証データセットも分割する理由は明確ではありません。簡単に言えば、検証データセットは、ハイパーパラメーターを調整する場合に、適切に調整されていることを確認するために使用されます。しかしながら、検証データ セットという用語が、テストデータセットと間違えて使用されることがあります。検証データセットが有用である理由について、詳しく以下に回答します。

  • 検証データセット – このデータセットは、モデルのハイパーパラメーターを調整しながら、モデルの性能を評価するために使用されます。このデータはハイパーパラメーターの更新に使用されるため評価の頻度が高く、モデルは間接的に検証データセットの影響を受けます。モデルのハイパーパラメーター調整は厳密は必要ではありませんが、一般的に推奨されています。
  • テストデータセット – このデータセットは、学習セットでの最終的なモデルの適合度を不偏的に評価するために使用されます。このセットは、モデルが完全に学習された後にのみ使用され、モデルには影響しません。性能測定の目的でのみ使用されます。

まとめると、学習データセットは利用可能なさまざまなアルゴリズムを学習し、検証データセットは (異なるハイパーパラメーターを使用して) さまざまなアルゴリズムの性能を比較し、採用するアルゴリズムを決定します。テストデータセットは、特定のモデルの精度や感度、性能を評価します。

Overfitting Diagram

質問 4

モデルの精度を高めたいのですが、過適合が発生しないか心配です。どうすればいいでしょうか。

これはとても良い質問です。今回のコラムの紹介では、機械学習アルゴリズムの動作を制御するハイパーパラメーターについて簡単に触れました。ここで、もう少し詳しく説明しましょう。

ハイパーパラメーターを、自転車の部品のように、変更する (取り替える) ことができ、システムの性能に影響を与えるものだと考えてください。中古の自転車を購入することを想像してみてください。フレームのサイズは合っていますが、サドルの高さを調整したり、ブレーキを締めたり緩めたりだけでなく、チェーンに油を差したり、地形に合ったタイヤを装着した方が、自転車は効率的に走行できるでしょう。移動には外的な要因も影響しますが、最適化された自転車があれば、A 地点から B 地点に楽に移動できます。同様に、ハイパーパラメーターを調整することは、モデルの改善につながります。

ここで、機械学習の例を紹介します。人工ニューラル ネットワーク (ANN) において、ハイパーパラメーターは、人工ニューロンの隠れ層の数や各層の人工ニューロンの数といった、ネットワークの構造を決定する変数、または学習率 (学習プロセスの速度) などのモデルの学習方法を定義する変数です。

ハイパーパラメーターは、学習プロセスの開始前に定義されます。これに対して、ANN のパラメーターは、人工ニューラル接続の各係数または重みであり、学習プロセスの最中に調整されます。

Neural Network Diagram

ニューラル ネットワークの一般的なアーキテクチャ

ビデオの長さ 4:43

ハイパーパラメーターは、学習プロセスを開始する前に決定されるパラメーターであり、モデルの外部で設定されます。つまり、変更する場合は手動で行う必要があります。自転車のサドルは自動的に調整できないため、出発前に調整する必要があります。機械学習モデルでは、検証データセットで調整されます。一方で、他のパラメーターは、学習データセットを使用した学習プロセス中に決定されます。

モデルの学習およびテストに必要な時間はハイパーパラメーターによって異なり、ハイパーパラメーターが少ないモデルの方が検証や適応が容易であるため、検証データセットのサイズを小さくすることができます。

機械学習の一般的な問題に非凸があります。これは、 ハイパーパラメーターに選択した値次第で全く異なるモデルになる可能性があるため、ハイパーパラメーターの値を変更することで、別の、より適したモデルを見つけられることを意味します。そのため、分析に最適なモデルを見つけるために、さまざまなハイパーパラメーターを使って反復処理を行う場合には、検証データセットが重要になります。

ハイパーパラメーターの詳細については、上記の Adam Filion によるハイパーパラメーター最適化に関するビデオで概要を 5 分以内でわかりやすく説明しています。

Non-convex Surface

非凸面の例