「過学習」とは何か? 〜AIの予測がはずれる理由〜
最近「過学習」と言う言葉をよく耳にするので、AIの予測がはずれる理由と対応方法を「過学習」が原因の場合も含め、説明してみたいと思います。
AIの仕組み超概要
今のAIブームを支えているのは機械学習というテクノロジーです。
機械学習はデータから傾向を導き出し、それを元に予測・分析を行います。
機械学習という名前の由来
データから傾向を導き出す処理を学習と呼びます。コンピューター(機械)がデータから傾向を導き出す(学習)ので機械学習と呼ばれています。
AI(機械学習)で適切な予測を行うためには、人間が適切な設定(分析シナリオ、データ準備、モデル選定)を行う必要があります。
これを怠ると不適切な予測結果が導かれてしまいます。以下、AIの予測が外れる代表的なケースを述べます。
データが偏っている
準備したデータが、予測しようとしている対象のサンプルとして不適切なケースです。
例 : 選挙予測
選挙予測を行いたいのに、特定の候補者が強固な地盤を持ってる場所のヒアリング結果だけ用いると当然ですが適切な予測はできません。
要確認
データは予測対象の母集団のサンプルとして適切か?
(ランダムサンプルになっているか?)
データの傾向をうまくつかめていない
予測モデルが不適切、データが少ないなどの理由で、うまくデータから傾向を導き出せないケースです。
例 : 幹線道路を見つける
下記の図を幹線道路と人の位置情報と思ってください。
曲線が幹線道路です。でも、あなたは離れた場所にいるので幹線道路の形はわかりません。あなたが得ることができるのは○印で表示されている、携帯の位置情報を使って調べた人の位置情報だけです。
幹線道路から近いほど人がいる確率が高いという想定の元、このデータを使って幹線道路の位置を推測するのがあなたの役目です。
あなたは3つの予測モデルを使って幹線道路の位置予測を行い、結果を赤線で記しました。
簡単すぎるモデル
最初に使ったのはこの直線予測モデル、少しシンプルすぎるため、実際の形状をうまく捉える事ができていません。
適切なモデル
次に少しモデルを複雑にしたのがこちら、いい具合に幹線道路の位置を予測できています。
やりすぎモデル
さらに複雑にしたのがこちらのモデル、幹線道路を予測できていません。
よく見ると赤い線は全ての位置情報の上を通っています。与えられたデータに過剰に適合した結果、予測精度が下がっているのです。これが過学習と呼ばれる状況です。
過学習の確認方法
学習に使ったのと違うデータを使って当てはまり具合を確認する。
過学習状態になっている場合、別のデータ(テストデータ)を使って予測を行うと予測精度が大きく下がるので、そこで確認することができます。
過学習への対応方法
学習データを増やす、正則化項を入れる、学習しすぎない、ベイズ推論を使う、など色々な対策があります。
肝心なのは「過学習してる」可能性があることを常に頭に入れ、本番で使う前に適切な対応を取ることです。
そもそもが無理筋である
AIへの誤った理解に基づく過度の期待から、無茶なシナリオ設定をしているケースです。
例 : 過去と違う未来を予測する
これまでずっといい加減な採用基準を踏襲してきた会社が「AIを活用して採用方法を一新するぞ!」と言って、過去の採用データを元に学習をしてもいい加減な採用基準が再現されるだけでしょう。
AIが導き出すのは過去の傾向です。AIが真実を導きだすことはありません。導き出された傾向を人間がうまく活用すれば、そこに価値が生まれます。
上の例の場合「過去のいい加減な採用基準を分析する」というシナリオで分析を行うという方針にし、そこでAIを活用するのであれば、改善のための情報を提供することができるかもしれません。
大切なのは適切なシナリオ、別の言葉で言うと適切な問題設定を人間が行い、それのシナリオ遂行の道具としてAIを活用することです。
AIは大きな可能性を持っているが魔法では無い
AI、ブロックチェーン、量子コンピューターのような新しいテクノロジーは、従来の枠組みを超える革新的な側面を持つため、過度な期待や誤解を生じやすく、それが普及の妨げになる場合があります。
これを避け、新しいテクノロジーの活用を促し、発展させるためには、その分野の専門家でなくても理解できるテクノロジーの説明体系(一般常識)を構築することが重要と筆者は考えます。
テレビが映る仕組みを詳細に知らなくても、中に人が入ってるんじゃないことは一般常識としてみんな知ってます。一方AIはまだ一般常識が作られておらず、鉄腕アトム、ターミネーターのようなものがすでに存在していると思っている人もいます。(具体的には私の親族です。。。)
参考文献
幹線道路の図はこちらの本のp6 図1.4を参考に作成させていただきました。
幹線道路の例をRで記す際プログラムを参考にさせていただきました。
この記事が気に入ったらサポートをしてみませんか?