
人工知能(AI)の運用やデータ分析を行う上で、陥りやすいトラブルが「過学習」です。学習のプロセスは正しくとも、データや運用目的に不備があった場合、適切なアルゴリズムを構築することが難しくなります。
今回は、ポピュラーなトラブルでもある過学習の原因や、過学習を回避するための対策について紹介します。
過学習とは
過学習は、英語でオーバーフィッティング(Overfitting)とも呼ばれる現象で、要は読み込んだデータ「だけ」に過剰に適合してしまう現象です。
本来、人工知能は目的に合わせて様々な未知のデータを読み込ませ、新しい答えをアウトプットすることが求められます。AIが優れたアウトプットを行うためには、それまでに膨大な訓練用のデータを学習し、自律的に判断ができるよう仕上げる必要があります。訓練データから得た経験を生かし、AIというのは未知のデータに対しても優れた判断能力を発揮できるわけです。
しかし、過学習状態の場合、AIが学習プロセスで取得したデータへ過剰にフィットしてしまい、未知のデータ分析が正しく行えなくなってしまいます。学習データは正しく分析できるけれど、そうでないデータは分析できないというのが、過学習と呼ばれる現象です。
過学習で発生するトラブル
AIが過学習に陥ってしまった場合、さまざまなトラブルの発生が想定されます。特に、実用性の面で大いに損なわれてしまうため、過学習が見られた場合には早急な対策が求められます。
新しいデータへの対応力低下
過学習の最大のデメリットが、新しいデータへの対応力が低下してしまう事態です。訓練では適切な値を示していたのにも関わらず、未知のデータを読み込ませると異なる結果を出力してしまう場合、過学習が考えられます。
また、異常なまでに学習データに対して高い精度を誇る場合も、過学習の傾向が見られます。既知のデータのみを良しとし、未知のデータに対しては否定的になってしまう反応は改善すべき現象です。
AIの実用性低下
過学習状態のAIは、訓練データの結果だけを見ると優れたスコアを発揮しますが、未知のデータを扱う実践の現場ではまったく役に立ちません。そもそも、AIを活用する現場は未知のデータを扱うことを前提としているため、学習済みのデータに強いだけでは実用性を確保できないのです。
逆を言えば、AIの良し悪しは未知のデータに対する対応力の高さで決まると言っても過言でもないでしょう。
未知のデータに対する対応力の高さは、「汎化性能」という指標で評価することができます。これは、訓練用のデータを使って構築した学習モデルが、どれだけ未知のデータに対して対応できるかを示すことばです。
過学習の原因
過学習は厄介なトラブルの一つですが、データサイエンティストが陥りやすい現象でもあります。過学習の存在を認知していても、回避できない原因はどこにあるのでしょうか?
学習データ量の不足
過学習の大きな原因の一つが、学習データの絶対数が不足しているケースです。どれだけ優れたアルゴリズムを組むことができても、肝心のデータが不足していると、AIは目的に応じた正しい学習が行えなくなってしまいます。
人間は、業務に必要なデータ以外にも、「常識」や「過去の経験」から柔軟に新しい業務に順応したり、勉強を効率的に進めたりできますが、AIにはそれがありません。
人工知能にとっては、訓練で得られるデータがすべてなので、そこからアルゴリズムを駆使して分析を進めていくほかありません。そのため、目的に合わせた正しいデータ分析を実現できるようになるためには、十分な量のデータを確保し、AIに提供する必要があります。
偏ったデータへの最適化
データ関連でもう一つ注意すべき原因が、偏ったデータをAIに提供してしまう事態です。
AIは、数値情報を元に分析を行うコンピュータープログラムであり、本来はフラットな分析が行える必要があります。しかし、それはあくまで豊富な訓練データを学習できていた場合であり、偏ったデータばかりを与えてしまうと、そのモデルの構築に悪影響を及ぼします。
例えば、適切な売り上げ予測の学習モデルを構築したいケースを考えてみましょう。適切なAIを生み出すためには、過去5~10年の売り上げ動向の数値を読み込ませ、時世や環境の一時的な変化にとらわれないモデルを構築する必要があります。
しかし、閑散期のデータだけを読み込ませたり、世界的な不況が続いている時期のデータだけを読み込ませたりしてしまうと予測結果は変わります。消極的な予測結果しか出力できず、ビジネスチャンスを見いだせるはずが、AIのせいで見逃してしまうという事態を招くことがあるでしょう。
あるいは、その逆も同様です。繁忙期や世界的な好景気に湧いている時期だけのデータを入力すれば、楽観的過ぎる学習モデルが出来上がってしまいます。本来は看過すべきでない売り上げの低下に対しての反応が薄くなり、不況に突入した際の初動が遅れ、大きな損失を被ってしまうケースも考えられます。
学習モデル構築の目的不在
学習モデルを構築する際、「どんなAIを作りたいのか?」という目的意識が不在であることも、過学習をもたらす原因です。AIは、基本的にシングルタスクに特化した実用性しか持たないため、それを扱う人間側で目的をコントロールする必要があります。
上記の例を再び参考にすると、ここでは「正確な売り上げ予測の出力」という目的が存在します。正確な売り上げを予測する目的がはっきりしていれば、幅広いデータを読み込ませようとできます。しかし、この目的が定まっていないと適当なデータを読み込ませてしまい、正しい出力ができなくなります。
また、短期的な目標設定をしてしまうことも、過学習を引き起こす要因となります。本来、AIの活用は企業へさらなる利益をもたらすためのツールであるべきですが、「上司の意向でAIを早く導入しなけれなならない」「AIで手っ取り早く売り上げを伸ばしたい」といった短絡的な使い方に留まってしまうと、良くない結果をもたらしてしまいがちです。
というのも、不十分なデータで学習モデルを構築してしまったり、都合の良いデータだけを読み込ませたりして客観性に欠けるAIが出来上がってしまう可能性があるからです。過学習を回避することも含め、適切なAI活用を行うには正しい目的設定を行うことが大切です。
過学習を回避するための対策
では、AIにおける過学習を回避するためにはどのような手法を採用すべきなのでしょうか?ここでは、実践的な方法について紹介していきます。
バイアスとバリアンスのバランスを定める
まず大切なのは、バイアスとバリアンスのバランスを見極めることです。
学習モデル構築におけるバイアスとは、予測結果と実測値の差を表したものです。二つの値の差分が小さいほど、予測はうまくいっていると考えられます。
一方、バリアンスというのは予測結果のばらつきを表しています。複雑なモデルを組めば、さまざまなデータへの対応力が向上しますが、予測値にばらつきが現れます。
バイアスとバリアンスは、前者が大きくなれば後者は小さくなり、前者が小さくなれば後者は大きくなる関係にあります。
バイアスが小さいければ予測精度は高いといえますが、一方でバリアンスがあまりに大きいと汎用性が低いということになり、過学習が発生している可能性があります。過学習が起こらない適切なAIを構築するためには、バイアスとバリアンスのバランスを一定に保つ必要があるのです。
学習データと検証データを分類する(バリデーション)
学習モデルに読み込ませるデータは、できるだけ多い方がベターですが、データを何でも読み込ませてしまうと後の工程に響きます。そのため、手持ちのデータはまず学習データと検証データに分け、用途に応じて利用することが大切です。
学習データは学習モデルの構築に活用し、検証データを使ってその精度を測定するという使い分けです。学習データを使ったAIがどの程度のパフォーマンスを発揮しているのか、検証データを使って測定することにより、早期の段階で精度の良し悪しや過学習の可能性を検討することができます。
早い段階での過学習の発見、および改善が行えれば、より質の高いAI開発を進められるようになります。データを学習用と検証用に分けるこの手法は、「バリデーション」と呼ばれます。バリデーションにもいくつかの手法があり、用途に応じて、何度も検証を実行することで、AIの実用性を確認します。
学習データを拡張する
高い精度のAIを構築するには十分な量のデータが必要ですが、リサーチ会社や大企業でもなければ、そのようなデータセットを利用するにはコストがかかります。こういった問題に対処するため、既存の学習データを拡張するという方法もあります。
学習データの拡張とは、簡単にいえばデータの水増しです。たとえ一枚のライオンの画像であっても、彩度や明るさを変更したり、画像の方向を変更したり、一部を切り取って形状を変えたりするだけで、多様な画像データとしてAIにはインプットしてもらえます。
最近では、単純なデータ変換のための機械学習モデルを活用するケースも増えており、まさに「AIがAIを作る」ような循環も生まれています。高度なAIを構築するために、シンプルなAIを使ってそのための布石を整えるという手法です。
限られたデータをうまく利用することで、豊富なデータを獲得し、過学習の起きないフラットな学習モデルを構築可能です。新規にデータを購入したり自社で取得したりするよりも、人的・金銭的な負担が小さくコストパフォーマンスに優れる方法でもあります。
正則化する
正則化とは、学習モデルがアウトプットする予測値に対して追加のパラメーターを設け、安定したパフォーマンスを促す方法です。AIが学習を行う際に、構築するモデルが複雑化することに罰則を設け、できる限り汎用性の高さを維持することが目的です。
過学習を防ぐための正則化には、主に「L1正則化」と「L2正則化」という2種類の方法が用いられます。
L1正則化は、あらかじめ選択したデータの重みを0にすることによって、不要なデータを削除するための方法です。
L2正則化は、データの大きさに合わせて0に近づけていくという手法で、滑らかなモデルを構築できることが特徴です。
データ内容に合わせて二つの手法を使い分け、過学習が起こりづらい仕組みを整えていきましょう。
シンプルな手法を導入する
上記でも少し触れましたが、過学習を防ぐために必要なポイントは、シンプルなモデルを構築することです。複雑で高度なアルゴリズムを導入すれば、さまざまなパラメーターが加わり高度な解析を行えるようになる一方、過学習のリスクは大きくなります。
高度なAIを作る難しさは、過学習させずに複雑な仕組みを採用することにありますが、初歩的なAI開発においてはまずシンプルな手法を選ぶようにしましょう。
上で紹介した学習データと検証データを分類するバリデーションも、学習モデルが複雑化してしまうことを避けるための手法の一つです。
AIの挙動を丁寧に検証するのは時間のかかる作業です。それだけに、複雑なAIは検証にさらなる時間を要するため、ノウハウがない状態でこれらに対処するのは難しいのです。
まとめ
人工知能は、長期運用によって驚異的なアウトプットを行えるプログラムへと成長することができます。ただし、過学習のようなトラブルの発生を避けるためにも、人間による適切なチューニングと検証は継続的に行う必要があります。
過学習はアプローチ次第で未然に防ぐこともできますし、発生してからでも正しい方法でトラブルシューティングを行うことで、健全なAIへとアップデートできます。
人工知能開発で起こりやすいトラブルであるぶん、適切な対策方法を確認し、実践できるよう備えておきましょう。