関連キーワードAIソリューション[前後のお話]【第2回】「コンピュータが自分で考える」ってどういうコト?【第3回】機械学習って何を学習しているの?【第5回】教師あり学習で作成した「モデル」の性能を測る一覧はこちら前回に引き続き、「パンの名前を入力すると飲み物の名前を出力するコンピュータ」を例に機械学習について解説していきます。前回は、機械学習を使わずに単純なルールで実現した場合、ルールに無いパターンが入力されると対応できないことを説明しました。今回は、これを機械学習で実現する場合について見ていきましょう。機械学習で使う「モデル」って何?「パンの名前を入力すると飲み物の名前を出力するコンピュータ」を機械学習で実現する場合、パンと飲み物がセットになった正解データを準備し、これを学習させます。前回の繰り返しになりますが、機械学習ではこの正解データを「教師データ」と呼び、教師データを使った機械学習を「教師あり学習」と呼びます。教師あり学習を行う際は、まず最初に、コンピュータが学習する際の「土台」となるものを人が設計し、コンピュータに与えます。この土台を「モデル」と呼び、コンピュータは教師データから学習した内容をモデルに反映させていきます。コンピュータが学習を終えた後のモデルは、未知のデータに対する予測にも使えるようになります。今回の例では、以下のような教師データ(正解データ)を用意しています。コーヒーパンと飲み物の組み合わせに関する教師データ(正解データ)コンピュータは教師データに基づき、与えられたモデル上に「飲み物の名前を出力するためのルール」を自動で構築していきます。出力される飲み物の名前は、教師データにある物のいずれかです。今回の例では、「牛乳」または「コーヒー」と出力します。どんなパンの名前を入力しても、これら以外の飲み物の名前を出力することはありません。重要なのは、機械学習によって抽出されたルールが非常に柔軟であるという点です。教師データに無い組み合わせである「ソーセージパン」と「あんパン」が入力された場合でも、恐らく「牛乳」と出力することができます。これは、機械学習が「『クリームパン』と『あんパン』という入力に対して『○○』を出力する」という固定のルールを作るのではなく、「クリームパン」や「あんパン」といった入力の特徴ごと(この例ではパンごと)にルールを抽出しているからです。コンピュータが学習するイメージをつかんでいただくために、もう少し具体的に説明しましょう。ここでコンピュータが学習したいのは、牛乳とコーヒーに対するパンごとの「結び付きの強さ」です。コンピュータは、与えられた教師データを上から順番に学習していきます。この情報から、コンピュータはあんパンと牛乳に結び付きがあることを学習します。ここでは簡易的に、パンと飲み物に結び付きがあった場合、入力に対する飲み物に●を付けていきましょう。下記では表がモデルに当たり、コンピュータが学習によって表中の●を配置している(ルールを抽出している)というイメージになります。この情報に基づいて、先ほどと同じように、「あんパン」と「クリームパン」がそれぞれ「牛乳」と交わるところに●を付けます。同じ要領で●を付けると、クリームパンに対する牛乳とコーヒーの●が同数になってしまい、「クリームパン」と入力しても「コーヒー」と出力することができません。そこで、学習しようとしている教師データに反さないよう、クリームパンと牛乳の結び付き(●)を減らします。これで、「クリームパン」が入力された場合は「コーヒー」と出力できるようになりました。クリームパンと牛乳の結び付きを弱めれば(●を減らせば)、「コーヒー」と出力できるようになるこのようにしてパンごと(入力の特徴ごと)の値を調整しながら学習し、教師データに基づいたルールを抽出します。教師あり学習とは教師データを順々に学習し、その都度ルールを微調整していく方法なのです。今回の例では、教師データを一通り学習し終えた状態のモデル(表)は次のようになります。教師データを一通り学習し終えた状態のモデル(表)こうしたモデルを保持していれば、教師データには無い未知のデータが入力されても、●の数を比較して多いほうを選ぶことで、妥当な飲み物の名前を出力できるというわけです。「あんパン」と「メロンパン」が入力された場合、牛乳の●が3つなのに対してコーヒーは2つなので、「牛乳」と出力することになります。機械学習の「ホントのところ」ざっくり説明しましたが、教師あり学習の大まかな概念は理解いただけたでしょうか。あまりにも単純な話すぎて「こんなやり方でうまくいくの?」と疑問に思う方もいるかもしれません。そこで、もう少し踏み込んだ「ホントのところ」をちょっとだけお話しさせてください。今回の例では、「牛乳かコーヒーのいずれかを出力する」としましたが、実際には「出力する飲み物が牛乳である確率とコーヒーである確率」を出力するケースも多々あります。「あんパン」と入力された際に「牛乳」と出力するのではなく、「『牛乳』が正しい可能性が80%、『コーヒー』が正しい可能性が20%」といった確率を出力するということです。これは、ピンポイントで飲み物の名前を出力するようにしてしまうと、大量の教師データに合致する柔軟なモデルを作ることが難しくなるためです。学習方法についても、今回は教師データに合致するようにルールを変更(●の数を増やしたり減らしたり)しましたが、実際には、現状のモデルによる予測結果と教師データの差に応じてルールを微調整していくことがほとんどです。これから学習しようとしている入力内容に対して、現状のモデルで予測した結果と教師データに書かれている正解データに大きな差がない場合、モデルにはあまり手を加えませんが、大きく異なっている場合はモデルを大幅に調整(ルールを変更)します。現状のモデルで予測した結果と教師データ(正解データ)の差異の大きさに応じて、モデルを調整する教師あり学習では、1度教師データを学習させて終了する場合もありますが、同じデータを複数回学習させることもあります。2回目は、1回目の学習で出来上がったモデルをより洗練させていくイメージです。パンと飲み物の種類がもっと多く、さらにデータが大量にあれば、より性能の良いモデルを作ることができます。そのため、教師あり学習では「教師データをどのように作るのか」ということと、「どのくらいのデータ量を準備するか」ということが非常に重要です。