Introduction
機械学習分野の開発において避けなければならないのが、過学習の問題です。過学習が起きることで、学習モデルの精度が下がることもあります。偏ったデータに引っ張られて起きる過学習により、機械学習による開発がうまくいかなくなることもあるため、十分な対策が必要です。
この記事では、過学習の定義、原因と対策、早期に発見する方法と解決方法について解説します。
目次
過学習とは
過学習とは、統計や機械学習の分野で発生する問題のことです。
ここでは、過学習の定義や具体例、過学習が発生するとどうなるのかについて解説します。
学習データへの適合はよくなる一方で、未知のデータへの予測精度が落ちること
過学習とは、統計や機械学習において、学習したデータに対しての精度は高いものの、未知のデータに対しては同様の精度が出せない問題のことです。
総務省統計局の資料によると、次のように定義されています。
過学習
過学習(あるいはovertraining, 過適合(overfitting)) とは学習データに対する適合は良くなる一方で、テストデータに対しての予測精度は落ちてしまうことを言います。
過学習は、特定のデータの学習が過剰に行われたり、データが偏ったりすることで生じます。学習するデータの選び方や性質に問題があると、過学習が起きます。過学習が起きると、データに過度にフィットしすぎてしまい、汎用性が失われてしまうでしょう。個々のデータにフィットしすぎることで、データ全体の傾向や特徴をつかめず、未知のデータに適応できなくなってしまいます。
過学習の具体例
過学習は、特定のデータの学習が過剰に行われることで、未知のデータやデータ全体に適応できない問題です。しかし、この説明ではどのような問題なのかわかりづらいため、過学習の問題の具体例をあげてご説明します。
たとえば、大学受験をする生徒の集団に対して、生徒たちの勉強時間と定期テストの点数のデータから、大学受験の合否を予想するとします。一般的には勉強時間が長く、定期テストの点数が高い生徒の方が、高い合格率になることが予想できるでしょう。
一方で、なかには勉強時間が短く、テストの点数がそこまで高くなくても、うまい勉強の仕方をして合格する生徒もいます。しかし、そのような生徒のデータも個別にとり入れて予想に反映したところで、全体の予想にはあまり意味のないデータになってしまいます。
勉強時間が短く、テストの点数が低くても大学に合格する生徒という特異なデータを学習しすぎても、予想の精度を高めることにはならないのです。特異なデータに着目しすぎて厳密なモデルを目指してしまうと、予想の精度が落ちてしまいます。これが過学習です。
過学習が発生するとどうなる?
過学習が発生すると、予測の精度が落ちるなど、機械学習によるデータ分析の目的が果たせなくなってしまいます。
上記の例だと、特異なデータに着目しすぎることで、肝心の目的である生徒の合格予測の精度が落ちてしまいます。具体的には、勉強時間が少なく、テストの点数が低い生徒の合格率があがってしまい、予測と実際の結果が乖離してしまう恐れがあるでしょう。あまり勉強せず、テストの点数が低くても合格できるという予想だったため、あまり勉強しなかったら受験に失敗したといったケースが起きるかもしれません。
このように、個々のデータがもつ偏りに予測モデルが適合してしまうことで、全体の傾向があいまいになってしまいます。
過学習が起きる原因と対策
過学習が起きる背景には、どのような原因があるのでしょうか?ここでは、原因と対策についてご説明します。
データ量が不足している
過学習という言葉から、データが過剰にあることが原因で起こると思われるかもしれませんが、多くの場合の原因はデータ不足です。学習データが少ないと、個々の結果に引っ張られがちなため、結果に偏りが出てしまいます。
機械学習ではデータがもっとも重要なので、十分な量のデータを確保し、偏りのない状態にする必要があります。また、説明変数が多すぎるとモデルが複雑になるため、できるだけ少なくする必要もあるでしょう。
データが偏っている
学習データが偏りすぎることでも、過学習が起こります。機械学習は学習データによって決まってしまうため、偏ったデータを与えると、そのデータを元にして分析することで結果も偏ってしまいます。
たとえば、売上予測を行うために、売上データを学習データとして用意する場合、そのデータは季節や世界情勢などの偏りのないデータでなければなりません。閑散期のデータや、戦争が起こって物価が高騰している時期のデータなどは偏りがあり、正しい結果を生み出すことがむずかしいでしょう。
モデルが複雑すぎる
パラメータが多すぎて複雑なモデルだと、過学習が起きることがあります。
パラメータを減らす、正規化するなどの方法によってモデルを単純化することで、この問題を解決することが可能です。また、学習する際に、一部のモデルやデータを使用して小さいサイズのモデルをいくつもつくり、統合するという方法もあります。複雑なモデルを分割して、個々のサイズを小さくすることで、複雑さを回避できます。
不必要な長時間の学習をさせている
不要なデータを長時間学習させると、不要なデータに引っ張られて過学習が起こることがあります。本来の目的にそぐわないデータが多いと、予測精度が下がってしまいます。
このような不具合を起こさないためには、機械学習を行う前のデータ収集、分析段階で、目的にあったデータを選別する必要があるでしょう。学習すべきデータかを検証し、適切なデータを選ぶ工程が必要です。
目的が不明瞭のまま学習させている
機械学習開発を行う際には目的を明確にし、その目的にあったデータを選ぶ必要があります。しかし、目的が不明瞭だと、データの選別方針がまとまらず、適したデータを選べません。そもそも目的が明確でないので、適したデータも存在しないのです。そのため、学習モデルもあいまいなものとなってしまいます。
まずは学習モデルの目的を明確にし、その目的にあったデータを収集する必要があります。
学習方法の改善を行っていない
一度機械学習を行い、学習モデルを構築した後に結果を分析して学習方法の改善を行わないと、過学習が起こることがあります。モデルが改善されず、状況が変わり、データが変わった場合にも適応できないでしょう。
このような問題を防ぐためには、PDCAを回して、学習方法の改善を行う必要があります。結果を受けてデータの過不足はないか、データの選別方法に問題はないかなどを検証することで、その後の偏りや不足を防ぐことが可能です。
過学習を早期に認識するための方法
過学習が発生したら、早期に認識して対処する必要があります。ここでは、過学習が発生したことを、早期に認識するための方法について解説します。
訓練データ・検証データ・テストデータの区別
データには、訓練データ、検証データ、テストデータがあり、それぞれ目的が以下のように異なります。
・訓練データ:モデル構築のため
・検証データ:構築したモデルの精度の検証のため
・テストデータ:最終的に予測モデルをテストするため
これらの目的の異なる3種類のデータを用意し、検証を重ねることで、それぞれのフェーズで問題をとり除くことが可能です。訓練データでモデル構築し、検証データで問題を見つけて対策を講じます。最後にテストデータでテストを行い、最終確認します。
大量のデータで一度にモデルを構築すると、最後まで過学習が起きていることに気づけません。データを分割して、その都度検証することが重要です。このように、フェーズわけしてモデルを検証することで、早期に過学習が起きていることを検知できるでしょう。
ホールドアウト法で検証する
ホールドアウト法とは、データを分割して、モデルを構築していくたびに検証を行う方法です。分割した二つのデータから、平均値、中央値、標準偏差などを比較し、どちらも同じ傾向になっていれば、過学習は起きていないことがわかります。
この方法だと対応が比較的簡単で、コンピューターの計算の負荷を軽減できるというメリットがある一方、データに偏りが出やすいというデメリットもあります。また、分割時にデータに偏りが出るとうまく検証ができないため、注意が必要です。
交差検証法で検証する
交差検証法とは、ホールドアウト法と同様に、データを分割して検証を行う方法です。ホールドアウト法と違うのは、データの分割方法です。ホールドアウト法では、データを1とおりの方法で分割するのみでしたが、交差検証法では複数の分割方法で何度か検証し、その平均をとります。ホールドアウト法よりも信頼性が高くなりますが、その一方で計算量が多く負荷がかかり、作業の手間も増えてしまうことが特徴です。
交差検証法のなかのK-分割交差検証という手法では、データをK個のデータセットにわけて、1つはテストデータ、残りを訓練データとします。この方法により、より効率的に検証が可能です。
学習曲線を確認する
学習曲線とは、訓練データへの精度と、検証データへの精度を表すものです。学習曲線を検証することで、過学習が起きていないかを検証することが可能です。
この方法で検証することによるデメリットはとくにないため、機械学習を行う際に対応すべき方法です。
過学習が発生した場合の解決方法
過学習が発生した際に行うべき解決方法について、解説します。また、これらの方法を行うことで、過学習が起きる前に回避することも可能です。
正則化
正規化とは、複雑なモデルを単純なモデルに直す手法です。主に、L1正規化とL2正規化があり、それぞれの手法は以下のとおりです。
・L1正規化:不要な説明変数を減らす
・L2正規化:複雑化を引き起こしている要素を抑える
説明変数やデータ数が多すぎる場合は、L1正規化によって過学習を防げます。データ数や説明変数が多くないのに複雑化している場合には、L2正規化が有効です。
ハイパーパラメーターチューニング
ハイパーパラメーターとは、機械学習のアルゴリズム設定のことです。この設定により、学習モデルの精度や学習効率が変わってきます。ハイパーパラメーターチューニングとは、予測モデルの自由度を決める際の設定の最適化のことです。
たとえば、樹木のような木の形の樹形図でデータ分析を行う「決定木分析」という手法があります。この方法では、木の構成が深ければ深いほどモデルが複雑化するのが特徴です。この木の深さが、モデルのハイパーパラメーターとなります。もっとも適切な設定にすることで、過学習を防ぐことが可能です。
アンサンブルモデル
アンサンブルモデルとは、複数の基本的な予測モデルを組み合わせ、それぞれの予測結果から最終予測を導き出す方法です。複数の異なるモデルから多数決的に結果を出すことで、偏りを防げます。
アンサンブルモデルの方法には、以下のようないくつかの種類があります。
・バギング:データを分割してそれぞれ異なる手法で予測し、それらの結果から最終予測を行う
・ブースティング:複数のデータに対して、前回の学習結果を次の学習結果に影響させる
・スタッキング:1回目のモデルの予測を2回目のモデルの予測に使い、複数のモデルを積みあげていく
これらの方法を活用することで、効率的に学習データを学習でき、予測精度を向上させることが可能です。
ドロップアウト
ドロップアウトとは、繰り返し学習を行うことでモデルが複雑になるのを防ぎ、シンプルなモデルにする方法です。すべてのデータを学習すると複雑になる場合は、データの一部のみを抽出して学習します。これにより、過学習を防ぐことが可能です。
AIシステムの品質保証
本資料は、AIシステムの品質保証をテーマに、 SHIFTで実施しているノウハウを紹介しながら具体的な手法や進め方などを説明しています。
AIシステムの安全性と信頼性を確保することで、ユーザーに安心感を提供し、その結果、より広範囲での利用を促進いただけます。品質が確保されたAIシステムは、予測精度が高まり、ビジネスの意思決定や社会問題の解決に大きく貢献します。ぜひご覧ください。
本資料は、AIシステムの品質保証をテーマに、 SHIFTで実施しているノウハウを紹介しながら具体的な手法や進め方などを説明しています。
AIシステムの安全性と信頼性を確保することで、ユーザーに安心感を提供し、その結果、より広範囲での利用を促進いただけます。品質が確保されたAIシステムは、予測精度が高まり、ビジネスの意思決定や社会問題の解決に大きく貢献します。ぜひご覧ください。
関連サービスについて
まとめ
この記事では、過学習の定義、原因と対策、早期に発見する方法と解決方法について解説しました。
過学習は、機械学習を行ううえで避けられない問題です。データの選び方や学習方法によって起きることがあり、学習モデルによる予測結果の精度が下がってしまうことがあります。データの選別方法、分割方法などを改善することで過学習を防ぎ、機械学習の精度をあげる必要があるでしょう。
SHIFTでは、機械学習の方法の改善なども含め、AI特化型品質保証サービスを提供しています。機械学習の精度をあげたい、AI品質を向上させたいという場合には、お気軽にご相談ください。
>>AI特化型品質保証サービスのページへ
>>お問い合わせページへ
>>料金についてページへ